Sync Integ to Master
[sdc.git] / catalog-ui / src / app / directives / graphs-v2 / composition-graph / utils / composition-graph-zone-utils.ts
1 import { PolicyInstance } from "app/models/graph/zones/policy-instance";
2 import { ZoneConfig, ZoneInstanceConfig } from "app/models/graph/zones/zone-child";
3 import { DynamicComponentService } from "app/ng2/services/dynamic-component.service";
4 import { PaletteAnimationComponent } from "app/ng2/components/ui/palette-animation/palette-animation.component";
5 import { Point } from "../../../../models";
6
7 export class CompositionGraphZoneUtils {
8
9     constructor(private dynamicComponentService: DynamicComponentService) {}
10
11     public createCompositionZones(){
12         let zones = {
13             'policy': new ZoneConfig('Policies', 'P', 'policy', false),
14             'group': new ZoneConfig('Groups', 'G', 'group', false)
15         };
16         return zones;
17     }
18
19     public initPolicyInstances(policyZone:ZoneConfig, policies:Array<PolicyInstance>) {
20         if(policies && policies.length){
21             policyZone.showZone = true;
22         }
23         _.forEach(policies, (policy:PolicyInstance) => {
24             policyZone.instances.push(new ZoneInstanceConfig(policy));
25         });
26     }
27
28     public addInstanceToZone(zone:ZoneConfig, instance:PolicyInstance){
29         zone.instances.push(new ZoneInstanceConfig(instance));
30     };
31
32     private findZoneCoordinates(zoneType):Point{
33         let point:Point = new Point(0,0);
34         let zone = angular.element(document.querySelector('.' + zoneType + '-zone'));
35         let wrapperZone = zone.offsetParent();  
36         point.x = zone.prop('offsetLeft') + wrapperZone.prop('offsetLeft'); 
37         point.y =  zone.prop('offsetTop') + wrapperZone.prop('offsetTop');        
38         return point;
39     }
40
41     public showAnimationToZone = (startPoint:Point, zoneType:string) => {
42         
43         let paletteToZoneAnimation = this.dynamicComponentService.createDynamicComponent(PaletteAnimationComponent);
44         paletteToZoneAnimation.instance.from = startPoint;
45         paletteToZoneAnimation.instance.to = this.findZoneCoordinates(zoneType);
46         paletteToZoneAnimation.instance.iconName = zoneType;
47         paletteToZoneAnimation.instance.runAnimation();
48     }
49
50     
51 }
52
53 CompositionGraphZoneUtils.$inject = [
54     'DynamicComponentService'
55 ];