summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/directives/graphs-v2/composition-graph/utils/composition-graph-zone-utils.ts
blob: 28f2dc85d23041b5b061cfb9b626796bbfc1efdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { PolicyInstance } from "app/models/graph/zones/policy-instance";
import { ZoneConfig, ZoneInstanceConfig } from "app/models/graph/zones/zone-child";
import { DynamicComponentService } from "app/ng2/services/dynamic-component.service";
import { PaletteAnimationComponent } from "app/ng2/components/ui/palette-animation/palette-animation.component";
import { Point } from "../../../../models";

export class CompositionGraphZoneUtils {

    constructor(private dynamicComponentService: DynamicComponentService) {}

    public createCompositionZones(){
        let zones = {
            'policy': new ZoneConfig('Policies', 'P', 'policy', false),
            'group': new ZoneConfig('Groups', 'G', 'group', false)
        };
        return zones;
    }

    public initPolicyInstances(policyZone:ZoneConfig, policies:Array<PolicyInstance>) {
        if(policies && policies.length){
            policyZone.showZone = true;
        }
        _.forEach(policies, (policy:PolicyInstance) => {
            policyZone.instances.push(new ZoneInstanceConfig(policy));
        });
    }

    public addInstanceToZone(zone:ZoneConfig, instance:PolicyInstance){
        zone.instances.push(new ZoneInstanceConfig(instance));
    };

    private findZoneCoordinates(zoneType):Point{
        let point:Point = new Point(0,0);
        let zone = angular.element(document.querySelector('.' + zoneType + '-zone'));
        let wrapperZone = zone.offsetParent();  
        point.x = zone.prop('offsetLeft') + wrapperZone.prop('offsetLeft'); 
        point.y =  zone.prop('offsetTop') + wrapperZone.prop('offsetTop');        
        return point;
    }

    public showAnimationToZone = (startPoint:Point, zoneType:string) => {
        
        let paletteToZoneAnimation = this.dynamicComponentService.createDynamicComponent(PaletteAnimationComponent);
        paletteToZoneAnimation.instance.from = startPoint;
        paletteToZoneAnimation.instance.to = this.findZoneCoordinates(zoneType);
        paletteToZoneAnimation.instance.iconName = zoneType;
        paletteToZoneAnimation.instance.runAnimation();
    }

    
}

CompositionGraphZoneUtils.$inject = [
    'DynamicComponentService'
];