re base code
[sdc.git] / catalog-ui / src / app / models / graph / zones / zone.ts
1 /**
2  * Created by ob0695 on 10.04.2018.
3  */
4 import {ZoneInstanceType, ZoneInstance, IZoneInstanceAssignment} from "./zone-instance";
5 import {Observable} from "rxjs/Rx";
6 import { CANVAS_TAG_MODE } from "app/utils/constants";
7
8 export class Zone {
9     title:string;
10     type:ZoneInstanceType;
11     defaultIconText:string;
12     instances:Array<ZoneInstance>;
13     visible:boolean;
14     minimized:boolean;
15
16     constructor(title:string, defaultText:string, type:ZoneInstanceType) {
17         this.title = title;
18         this.defaultIconText = defaultText;
19         this.type = type;
20         this.instances = [];
21         this.visible = false;
22         this.minimized = false;
23     }
24
25
26     public getTagModeId = () => {
27         let tagModeId = ZoneInstanceType[this.type].toUpperCase();
28         return CANVAS_TAG_MODE[tagModeId + "_TAGGING"];
29     }
30
31     public getHoverTagModeId = () => {
32         let tagModeId = ZoneInstanceType[this.type].toUpperCase();
33         return CANVAS_TAG_MODE[tagModeId + "_TAGGING_HOVER"];
34     }
35
36     public removeInstance = (instanceId:string) => {
37         this.instances = this.instances.filter(instance => instance.instanceData.uniqueId != instanceId);
38     };
39 }
40
41
42 export interface IZoneService {
43     updateZoneInstanceAssignments(topologyTemplateType:string, topologyTemplateId:string, zoneInstanceId:string, assignments:Array<IZoneInstanceAssignment>):Observable<any>;
44     updateName(topologyTemplateType:string, topologyTemplateId:string, zoneInstanceId:string, newName:string):Observable<any>;
45     deleteZoneInstance(topologyTemplateType:string, topologyTemplateId:string, zoneInstanceId:string):Observable<any>;
46 }