blob: 254f17647ce336f043fbfe6cef602e417154db80 [file] [log] [blame]
Simon Huntd5b96732016-07-08 13:22:27 -07001/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 ONOS GUI -- Topology Force Module.
19 Visualization of the topology in an SVG layer, using a D3 Force Layout.
20 */
21
22(function () {
23 'use strict';
24
25 // injected refs
26 var $log, wss;
27
28 // ========================== Helper Functions
29
30 function init() {
31 $log.debug('Initialize topo force layout');
32 }
33
34 function destroy() {
35 $log.debug('Destroy topo force layout');
36 }
37
Simon Hunt98189192016-07-29 19:02:27 -070038 // ========================== Temporary Code (to be deleted later)
39
40 function request(dir, rid) {
41 wss.sendEvent('topo2navRegion', {
42 dir: dir,
43 rid: rid
44 });
45 }
46
47 function doTmpCurrentLayout(data) {
48 var topdiv = d3.select('#topo2tmp');
49 var parentRegion = data.parent;
50 var span = topdiv.select('.parentRegion').select('span');
51 span.text(parentRegion || '[no parent]');
52 span.classed('nav-me', !!parentRegion);
53 }
54
55 function doTmpCurrentRegion(data) {
56 var topdiv = d3.select('#topo2tmp');
57 var span = topdiv.select('.thisRegion').select('span');
58 var div;
59
60 span.text(data.id);
61
62 div = topdiv.select('.subRegions').select('div');
63 data.subregions.forEach(function (r) {
64
65 function nav() {
66 request('down', r.id);
67 }
68
69 div.append('p')
70 .classed('nav-me', true)
71 .text(r.id)
72 .on('click', nav);
73 });
74
75 div = topdiv.select('.devices').select('div');
76 data.layerOrder.forEach(function (tag, idx) {
77 var devs = data.devices[idx];
78 devs.forEach(function (d) {
79 div.append('p')
80 .text('[' + tag + '] ' + d.id);
81 });
82
83 });
84
85 div = topdiv.select('.hosts').select('div');
86 data.layerOrder.forEach(function (tag, idx) {
87 var hosts = data.hosts[idx];
88 hosts.forEach(function (h) {
89 div.append('p')
90 .text('[' + tag + '] ' + h.id);
91 });
92 });
93
94 div = topdiv.select('.links').select('div');
95 var links = data.links;
96 links.forEach(function (lnk) {
97 div.append('p')
98 .text(lnk.id);
99 });
100 }
101
102 function doTmpPeerRegions(data) {
103
104 }
105
Simon Huntd5b96732016-07-08 13:22:27 -0700106 // ========================== Event Handlers
107
108 function allInstances(data) {
109 $log.debug('>> topo2AllInstances event:', data)
Simon Hunt98189192016-07-29 19:02:27 -0700110 doTmpCurrentLayout(data);
Simon Huntd5b96732016-07-08 13:22:27 -0700111 }
112
113 function currentLayout(data) {
114 $log.debug('>> topo2CurrentLayout event:', data)
115 }
116
117 function currentRegion(data) {
118 $log.debug('>> topo2CurrentRegion event:', data)
Simon Hunt98189192016-07-29 19:02:27 -0700119 doTmpCurrentRegion(data);
120 }
121
122 function topo2PeerRegions(data) {
123 $log.debug('>> topo2PeerRegions event:', data)
124 doTmpPeerRegions(data);
125 }
126
127 function topo2PeerRegions(data) {
128 $log.debug('>> topo2PeerRegions event:', data)
Simon Huntd5b96732016-07-08 13:22:27 -0700129 }
130
131 function startDone(data) {
132 $log.debug('>> topo2StartDone event:', data)
133 }
134
135 // ========================== Main Service Definition
136
137 angular.module('ovTopo2')
138 .factory('Topo2ForceService',
139 ['$log', 'WebSocketService',
140
141 function (_$log_, _wss_) {
142 $log = _$log_;
143 wss = _wss_;
144
145 return {
146 init: init,
147 destroy: destroy,
148 topo2AllInstances: allInstances,
149 topo2CurrentLayout: currentLayout,
150 topo2CurrentRegion: currentRegion,
Simon Hunt98189192016-07-29 19:02:27 -0700151 topo2PeerRegions: topo2PeerRegions,
Simon Huntd5b96732016-07-08 13:22:27 -0700152 topo2StartDone: startDone
153 };
154 }]);
155}());