1 import {PropertyModel} from "app/models";
2 import {CommonUtils} from "app/utils";
3 import {IZoneInstanceAssignment} from "./zone-instance";
4 import {ComponentInstance} from "../../componentsInstances/componentInstance";
5 import {MemberUiObject} from "../../ui-models/ui-member-object";
6 import * as _ from "lodash";
8 export class GroupInstance {
10 public artifacts:Array<string>;
11 public artifactsUuid:Array<string>;
12 public description:string;
14 public groupUUID:string;
15 public invariantUUID:string;
16 public members:Array<string>;
18 public ownerId:string;
19 public properties:Array<PropertyModel>;
20 public propertyValueCounter:number;
22 public typeUid:string;
23 public uniqueId:string;
24 public version:string;
25 public iconSprite:string;
27 public originArchived?:boolean;
30 constructor(group:GroupInstance) {
32 this.name = group.name;
33 this.groupUUID = group.groupUUID;
34 this.invariantUUID = group.invariantUUID;
35 this.propertyValueCounter = group.propertyValueCounter;
36 this.type = group.type;
37 this.typeUid = group.typeUid;
38 this.uniqueId = group.uniqueId;
39 this.version = group.version;
40 this.artifacts = group.artifacts;
41 this.artifactsUuid = group.artifactsUuid;
42 this.properties = CommonUtils.initProperties(group.properties);
43 this.members = _.values(group.members);
44 this.description = group.description;
45 this.empty = group.empty;
46 this.ownerId = group.ownerId;
49 this.icon = 'icon-group';
52 public getMembersAsUiObject(componentInstances?:Array<ComponentInstance>):Array<MemberUiObject> {
53 let savedItems:Array<MemberUiObject> = [];
54 if (!_.isEmpty(this.members)) {
55 _.forEach(this.members, (memberId:string)=> {
56 let componentInstance:ComponentInstance;
57 if (componentInstances) {
58 componentInstance = _.find(componentInstances, function (_componentInstance:ComponentInstance) {
59 return _componentInstance.uniqueId === memberId;
62 savedItems.push(new MemberUiObject(memberId, componentInstance ? componentInstance.name : undefined));
68 public setMembers = (newMembers:Array<MemberUiObject>):void => {
69 this.members = newMembers.map(member => member.uniqueId);
72 // This function is used for the zone
73 public getSavedAssignments = ():Array<IZoneInstanceAssignment> => {
74 return this.getMembersAsUiObject();
77 public setSavedAssignments = (newMembers:Array<IZoneInstanceAssignment>):void => {
78 this.setMembers(newMembers);
81 public get iconClass() {
82 return this.iconSprite + ' ' + this.icon;