re base code
[sdc.git] / catalog-ui / src / app / models / graph / zones / group-instance.ts
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";
7
8 export class GroupInstance {
9
10     public artifacts:Array<string>;
11     public artifactsUuid:Array<string>;
12     public description:string;
13     public empty:boolean;
14     public groupUUID:string;
15     public invariantUUID:string;
16     public members:Array<string>;
17     public name:string;
18     public ownerId:string;
19     public properties:Array<PropertyModel>;
20     public propertyValueCounter:number;
21     public type:string;
22     public typeUid:string;
23     public uniqueId:string;
24     public version:string;
25     public iconSprite:string;
26     public icon:string;
27     public originArchived?:boolean;
28
29
30     constructor(group:GroupInstance) {
31
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;
47
48         this.iconSprite = '';
49         this.icon = 'icon-group';
50     }
51
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;
60                     })
61                 }
62                 savedItems.push(new MemberUiObject(memberId, componentInstance ? componentInstance.name : undefined));
63             });
64         }
65         return savedItems;
66     };
67
68     public setMembers = (newMembers:Array<MemberUiObject>):void => {
69         this.members = newMembers.map(member => member.uniqueId);
70     };
71
72     // This function is used for the zone
73     public getSavedAssignments = ():Array<IZoneInstanceAssignment> => {
74         return this.getMembersAsUiObject();
75     };
76
77     public setSavedAssignments = (newMembers:Array<IZoneInstanceAssignment>):void => {
78         this.setMembers(newMembers);
79     };
80
81     public get iconClass() {
82         return this.iconSprite + ' ' + this.icon;
83     }
84
85 }