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";
7 export class CompositionGraphZoneUtils {
9 constructor(private dynamicComponentService: DynamicComponentService) {}
11 public createCompositionZones(){
13 'policy': new ZoneConfig('Policies', 'P', 'policy', false),
14 'group': new ZoneConfig('Groups', 'G', 'group', false)
19 public initPolicyInstances(policyZone:ZoneConfig, policies:Array<PolicyInstance>) {
20 if(policies && policies.length){
21 policyZone.showZone = true;
23 _.forEach(policies, (policy:PolicyInstance) => {
24 policyZone.instances.push(new ZoneInstanceConfig(policy));
28 public addInstanceToZone(zone:ZoneConfig, instance:PolicyInstance){
29 zone.instances.push(new ZoneInstanceConfig(instance));
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');
41 public showAnimationToZone = (startPoint:Point, zoneType:string) => {
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();
53 CompositionGraphZoneUtils.$inject = [
54 'DynamicComponentService'