blob: ed1fcbbe9d6ed6826d4067cff29f2c40da0a41af [file] [log] [blame]
Matteo Scandolo735606c2016-02-09 09:13:30 -08001(function () {
2 'use strict';
3 angular.module('xos.serviceTopology')
4 .directive('logicTopology', function(){
5 return {
6 restrict: 'E',
7 scope: {
Matteo Scandoloeeb9c082016-02-09 11:19:22 -08008 subscribers: '=',
9 selected: '='
Matteo Scandolo735606c2016-02-09 09:13:30 -080010 },
11 bindToController: true,
12 controllerAs: 'vm',
13 template: '',
Matteo Scandoloedd3d6f2016-02-16 15:06:11 -080014 controller: function($element, $log, $scope, $rootScope, d3, LogicTopologyHelper, Node){
Matteo Scandolo735606c2016-02-09 09:13:30 -080015 $log.info('Logic Plane');
16
Matteo Scandoloeeb9c082016-02-09 11:19:22 -080017 var svg;
18
Matteo Scandolo594dfbc2016-02-11 17:37:08 -080019
20 const handleSvg = (el) => {
21
22 svg = d3.select(el)
23 .append('svg')
24 .style('width', `${el.clientWidth}px`)
25 .style('height', `${el.clientHeight}px`);
26 }
27
Matteo Scandoloeeb9c082016-02-09 11:19:22 -080028 $scope.$watch(() => this.subscribers, (subscribers) => {
29 if(subscribers){
Matteo Scandolo594dfbc2016-02-11 17:37:08 -080030
Matteo Scandolo7fd4d042016-02-16 14:44:51 -080031 LogicTopologyHelper.addSubscribers(angular.copy(subscribers));
Matteo Scandolo594dfbc2016-02-11 17:37:08 -080032
Matteo Scandolo7fd4d042016-02-16 14:44:51 -080033 Node.queryWithInstances().$promise
34 .then((computeNodes) => {
35 LogicTopologyHelper.addComputeNodes(computeNodes);
36 LogicTopologyHelper.updateTree(svg);
37 });
38
Matteo Scandoloeeb9c082016-02-09 11:19:22 -080039 }
40 });
41
42 $scope.$watch(() => this.selected, (selected) => {
43 if(selected){
44 $log.info(`Update logic layer for subscriber ${selected.humanReadableName}`);
45 }
46 });
47
Matteo Scandoloedd3d6f2016-02-16 15:06:11 -080048 $rootScope.$on('instance.detail', (evt, instance) => {
49
50 $log.info(`Highlight instance; ${instance.id}`)
51
52 LogicTopologyHelper.getInstanceStatus(instance.id);
53 LogicTopologyHelper.updateTree(svg);
54 })
55
Matteo Scandoloeeb9c082016-02-09 11:19:22 -080056 handleSvg($element[0]);
Matteo Scandolo7fd4d042016-02-16 14:44:51 -080057 LogicTopologyHelper.setupTree(svg);
Matteo Scandolo735606c2016-02-09 09:13:30 -080058 }
59 };
60 });
61})();