blob: 0523f33761b5c60ca45d56feac756be69c12032e [file] [log] [blame]
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +05301/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +05303 *
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/*PCE topology overlay web application implementation.*/
18
19(function () {
20 'use strict';
21
22 // injected refs
23 var $log, fs, flash, wss, tps, ns, tds, ds;
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +053024 var tunnelNameData, tunnelNameDataRemove, tunnelDataUpdateInfo, tunnelIdUpd, tunnelNameDataQuery;
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +053025 // constants
26 var srcMessage = 'pceTopovSetSrc',
27 dstMessage = 'pceTopovSetDst',
28 clearMessage = 'pceTopovClear',
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +053029 setPathmsg = 'pceTopovSetMode',
30 updatePathmsgQuery = 'pceTopovUpdateQuery',
31 remPathmsgQuery = 'pceTopovRemQuery',
32 updatePathmsg = 'pceTopovUpdate',
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +053033 updatePathmsgInfo = 'updatePathmsgInfo',
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +053034 remPathmsg = 'pceTopovRem',
35 showTunnelInfoMsg = 'pceTopovShowTunnels',
36 queryDisplayTunnelMsg = 'pceTopovTunnelDisplay',
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +053037 showTunnelInfoRemoveMsg = 'pceTopovShowTunnelsRem',
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +053038 showTunnelInfoUpdateMsg = 'pceTopovShowTunnelsUpdate',
39 showTunnelInfoQuery = 'pceTopovShowTunnelsQuery',
40 showTunnelHighlightMsg = 'pceTopovshowTunnelHighlightMsg';
41
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +053042 // internal state
43 var currentMode = null;
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +053044 var handlerMap = {},
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +053045 handlerMapRem = {},
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +053046 handlerMapshowQuery = {},
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +053047 handlerMapShowUpdate = {};
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +053048 // === ---------------------------
49 // === Helper functions
50
51 // === ---------------------------
52 // === Main API functions
53
54 function setSrc(node) {
55 wss.sendEvent(srcMessage, {
56 id: node.id,
57 type: node.type
58 });
59 flash.flash('Source node: ' + node.id);
60 }
61
62 function setDst(node) {
63 wss.sendEvent(dstMessage, {
64 id: node.id,
65 type: node.type
66 });
67 flash.flash('Destination node: ' + node.id);
68 }
69
70 function clear() {
71 wss.sendEvent(clearMessage);
72 flash.flash('Cleared source and destination');
73 }
74
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +053075 function dClose() {
76 $log.debug('Dialog Close button clicked (or Esc pressed)');
77 }
78
79 function createUserText() {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +053080 var content = ds.createDiv('constraints-input'),
81 form = content.append('form'),
82 p = form.append('p');
83
84 function addAttribute(name, id, nameField, type) {
Mahesh Raju-Huawei0f977ef2016-06-14 17:26:22 +053085 if (type == 'radio') {
MaheshRaju-Huaweiaec67f82016-07-18 16:39:25 +053086 if (id == 'pce-lsp-type-cr') {
87 p.append('input').attr({
88 type: type,
89 name: name,
90 id: id,
91 checked: 'checked',
92 class: 'radioButtonSpace'
93 });
94 } else {
95 p.append('input').attr({
96 type: type,
97 name: name,
98 id: id,
99 class: 'radioButtonSpace'
100 });
101 }
Mahesh Raju-Huawei0f977ef2016-06-14 17:26:22 +0530102 } else {
103 p.append('input').attr({
104 type: type,
105 name: name,
106 id: id
107 });
108 }
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530109
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530110 p.append('span').text(nameField);
111 p.append('br');
112 }
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530113
114 //Add the bandwidth related inputs.
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530115 addAttribute('band-width-name', 'band-width-box', 'Band Width', 'checkbox');
116 addAttribute('band-width-value-name', 'band-width-value', null, 'number');
117 addAttribute('pce-band-type', 'band-kpbs-val', 'kbps', 'radio');
118 addAttribute('pce-band-type', 'band-mpbs-val', 'mbps', 'radio');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530119 addAttribute('pce-band-type', 'band-bps-val', 'bps', 'radio');
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530120 //Add the cost type related inputs.
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530121 addAttribute('pce-cost-type-name', 'pce-cost-type', 'Cost Type', 'checkbox');
122 addAttribute('pce-cost-type-valname', 'pce-cost-type-igp', 'IGP', 'radio');
123 addAttribute('pce-cost-type-valname', 'pce-cost-type-te', 'TE', 'radio');
Satish Kba1c9122017-04-05 15:27:23 +0530124
125 //Add the load balancing related inputs.
126 addAttribute('pce-load-balancing-option-name', 'pce-load-balance', 'Load balancing', 'checkbox');
127
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530128 //Add the LSP type related inputs.
MaheshRaju-Huaweiaec67f82016-07-18 16:39:25 +0530129 p.append('span').text("Lsp Type *");
130 p.append('br');
Mahesh Raju-Huawei31d31c02016-06-04 17:20:57 +0530131 addAttribute('pce-lsp-type-valname', 'pce-lsp-type-cr', 'With signalling', 'radio');
132 addAttribute('pce-lsp-type-valname', 'pce-lsp-type-srbe', 'Without SR without signalling', 'radio');
133 addAttribute('pce-lsp-type-valname', 'pce-lsp-type-srte', 'With SR without signalling', 'radio');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530134 //Add the tunnel name
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530135 p.append('span').text("Tunnel Name *");
136 p.append('br');
137 addAttribute('pce-tunnel-name', 'pce-tunnel-name-id', null, 'text');
138 p.append('span').text("* indicates mandatory fields");
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530139 return content;
140 }
141
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530142 function createUserTextUpdate(data) {
143 var content = ds.createDiv(),
144 form = content.append('form'),
145 p = form.append('p');
146
147 p.append('span').text('Tunnel IDs');
148 p.append('br');
149
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530150 for (var idx = 0; idx < data.a.length; idx++) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530151 p.append('input').attr({
152 id: 'tunnel-id-'+idx,
153 type: 'radio',
154 name: 'tunnel-id-name',
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530155 value: data.a[idx]
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530156 });
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530157 idx++;
158 p.append('span').text(data.a[idx]);
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530159 p.append('br');
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530160 }
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530161 return content;
162 }
163
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530164 function createUserTextUpdatePathEvent(data) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530165 var content = ds.createDiv(),
166 form = content.append('form'),
167 p = form.append('p');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530168 var constType;
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530169
170 function addAttribute(name, id, nameField, type) {
Mahesh Raju-Huawei0f977ef2016-06-14 17:26:22 +0530171 if (type == 'radio') {
172 p.append('input').attr({
173 type: type,
174 name: name,
175 id: id,
176 class: 'radioButtonSpace'
177 });
178 }
179 else {
180 p.append('input').attr({
181 type: type,
182 name: name,
183 id: id
184 });
185 }
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530186
187 p.append('span').text(nameField);
188 p.append('br');
189 }
190
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530191 data.a.forEach( function (val, idx) {
192 if (val == 'Tunnel') {
193 constType = 'TUNNEL';
194 return;
195 }
196
197 if (val == 'BandWidth') {
198 constType = 'BW';
199 return;
200 }
201
202 if (val == 'CostType') {
203 constType = 'CT';
204 return;
205 }
206
Satish Kba1c9122017-04-05 15:27:23 +0530207 if (val == 'LoadBalancing') {
208 constType = 'LB';
209 return;
210 }
211
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530212 if (constType == 'TUNNEL') {
213 p.append('span').text('Tunnel Id: ');
214 p.append('span').text(val);
215 p.append('br');
216 tunnelIdUpd = val;
217 }
218
219 if (constType == 'BW') {
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530220 //addAttribute('band-width-name', 'update-band-width-box', 'Band Width', 'checkbox');
221 p.append('span').text('Band Width');
222 p.append('br');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530223 p.append('input').attr({
224 id: 'update-band-width-value',
225 type: 'number',
226 name: 'band-width-value-name',
227 value: val
228 });
229 p.append('br');
230 p.append('input').attr({
231 id: 'update-band-bps-val',
232 type: 'radio',
233 name: 'pce-band-type',
234 checked: 'checked',
235 class: 'radioButtonSpace'
236 });
237 p.append('span').text('bps');
238 p.append('br');
239 addAttribute('pce-band-type', 'update-band-kbps-val', 'kbps', 'radio');
240 addAttribute('pce-band-type', 'update-band-mbps-val', 'mbps', 'radio');
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530241 addAttribute('pce-band-type', 'update-band-none-val', 'none', 'radio');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530242 }
243
244 if (constType == 'CT') {
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530245 //addAttribute('pce-cost-type', 'update-pce-cost-type', 'Cost Type', 'checkbox');
246 p.append('span').text('Cost Type');
247 p.append('br');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530248 if (val == 'COST') {
249 p.append('input').attr({
250 id: 'update-pce-cost-type-igp',
251 type: 'radio',
252 name: 'pce-cost-type-value',
253 checked: 'checked',
254 class: 'radioButtonSpace'
255 });
256 p.append('span').text('IGP');
257 p.append('br');
258 addAttribute('pce-cost-type-value', 'update-pce-cost-type-te', 'TE', 'radio');
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530259 addAttribute('pce-cost-type-value', 'update-pce-cost-type-none', 'none', 'radio');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530260
261 } else {
262 addAttribute('pce-cost-type-value', 'update-pce-cost-type-igp', 'IGP', 'radio');
263 p.append('input').attr({
264 id: 'update-pce-cost-type-te',
265 type: 'radio',
266 name: 'pce-cost-type-value',
267 checked: 'checked',
268 class: 'radioButtonSpace'
269 });
270 p.append('span').text('TE');
271 p.append('br');
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530272 addAttribute('pce-cost-type-value', 'update-pce-cost-type-none', 'none', 'radio');
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530273 }
274 }
275 } );
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530276
277 return content;
278 }
279
280 function createUserTextRemove(data) {
281
282 var content = ds.createDiv(),
283 form = content.append('form'),
284 p = form.append('p');
285
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530286 p.append('span').text('Tunnels');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530287 p.append('br');
288
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530289 for (var idx = 0; idx < data.a.length; idx++) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530290 p.append('input').attr({
291 id: 'tunnel-id-remove-'+idx,
292 type: 'checkbox',
293 name: 'tunnel-id-name-remove',
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530294 value: data.a[idx]
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530295 });
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530296 idx++;
297 p.append('span').text(data.a[idx]);
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530298 p.append('br');
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530299 }
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530300
301 return content;
302 }
303
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530304 function createUserTextQuery(data) {
305
306 var content = ds.createDiv(),
307 form = content.append('form'),
308 p = form.append('p');
309
310 p.append('span').text('Tunnels');
311 p.append('br');
312
313 for (var idx =0; idx < data.a.length; idx++) {
314 p.append('input').attr({
315 id: 'tunnel-id-query-'+idx,
316 type: 'radio',
317 name: 'tunnel-id-name-query',
318 value: data.a[idx]
319 });
320 idx++;
321 p.append('span').text(data.a[idx]);
322 p.append('br');
323 }
324 return content;
325 }
326
Mahesh Raju-Huawei31d31c02016-06-04 17:20:57 +0530327 function isChecked(cboxId) {
328 return d3.select('#' + cboxId).property('checked');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530329 }
330
Mahesh Raju-Huawei31d31c02016-06-04 17:20:57 +0530331 function getCheckedValue(cboxId) {
332 return d3.select('#' + cboxId).property('value');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530333 }
334
335 function showTunnelInformation(data) {
336 wss.unbindHandlers(handlerMap);
337 tunnelNameData = data;
338
339 function dOkUpdate() {
340 var tdString = '' ;
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530341 for (var idx = 0; idx < tunnelNameData.a.length; idx++) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530342 var tunnelName = isChecked('tunnel-id-'+idx);
Mahesh Raju-Huawei31d31c02016-06-04 17:20:57 +0530343 if (tunnelName) {
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530344 tdString = tunnelNameData.a[idx];
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530345 }
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530346 idx++;
347 }
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530348 //send event to server for getting the tunnel information.
349 if (tdString != null) {
350 handlerMapShowUpdate[showTunnelInfoUpdateMsg] = showTunnelInfoUpdateMsgHandle;
351 wss.bindHandlers(handlerMapShowUpdate);
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530352
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530353 wss.sendEvent(updatePathmsgInfo, {
354 tunnelid: tdString
355 });
356 }
357 //constraintsUpdateDialog(tdString);
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530358 $log.debug('Dialog OK button clicked');
359 }
360
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530361 tds.openDialog()
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530362 .setTitle('Available LSPs with selected device')
363 .addContent(createUserTextUpdate(data))
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530364 .addOk(dOkUpdate, 'OK')
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530365 .addCancel(dClose, 'Close')
366 .bindKeys();
367 }
368
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530369 function dOkUpdateEvent() {
370 $log.debug('Select constraints for update path Dialog OK button pressed');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530371
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530372 var bandValue = null,
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530373 bandType = null;
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530374
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530375 bandValue = getCheckedValue('update-band-width-value');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530376
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530377 if (isChecked('update-band-kbps-val')) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530378 bandType = 'kbps';
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530379 } else if (isChecked('update-band-mbps-val')) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530380 bandType = 'mbps';
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530381 } else if (isChecked('update-band-bps-val')) {
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530382 bandType = 'bps';
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530383 } else if (isChecked('update-band-none-val')) {
384 bandType = null;
385 bandValue = null;
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530386 }
387
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530388 var costTypeVal = null;
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530389
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530390 if (isChecked('update-pce-cost-type-igp')) {
391 costTypeVal = 'igp';
392 } else if (isChecked('update-pce-cost-type-te')) {
393 costTypeVal = 'te';
394 } else if (isChecked('update-pce-cost-type-none')) {
395 costTypeVal = null;
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530396 }
397
398 wss.sendEvent(updatePathmsg, {
399 bw: bandValue,
400 bwtype: bandType,
401 ctype: costTypeVal,
MaheshRaju-Huaweibb591072016-06-17 17:47:16 +0530402 tunnelid: tunnelIdUpd
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530403 });
404
405 flash.flash('update path message');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530406
407 }
408
409 function showTunnelInformationRemove(data) {
410
411 wss.unbindHandlers(handlerMapRem);
412 tunnelNameDataRemove = data;
413 tds.openDialog()
414 .setTitle('Available Tunnels for remove')
415 .addContent(createUserTextRemove(data))
Mahesh Raju-Huawei31d31c02016-06-04 17:20:57 +0530416 .addOk(dOkRemove, 'OK')
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530417 .addCancel(dClose, 'Close')
418 .bindKeys();
419 }
420
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530421 function showTunnelInformationQuery(data) {
422
423 wss.unbindHandlers(handlerMapshowQuery);
424 tunnelNameDataQuery = data;
425 tds.openDialog()
426 .setTitle('Available Tunnels for highlight')
427 .addContent(createUserTextQuery(data))
428 .addOk(dOkQuery, 'OK')
429 .addCancel(dClose, 'Close')
430 .bindKeys();
431 }
432
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530433 function showTunnelInfoUpdateMsgHandle(data) {
434
435 wss.unbindHandlers(handlerMapShowUpdate);
436 tunnelDataUpdateInfo = data;
437 tds.openDialog()
438 .setTitle('Constrainst selection for update')
439 .addContent(createUserTextUpdatePathEvent(data))
440 .addOk(dOkUpdateEvent, 'OK')
441 .addCancel(dClose, 'Close')
442 .bindKeys();
443 }
444
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530445 //setup path
Mahesh Raju-Huawei0f977ef2016-06-14 17:26:22 +0530446 function setMode(node) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530447
448 function dOk() {
449 var bandWidth = isChecked('band-width-box'),
450 bandValue = null,
451 bandType = null;
452
453 if (bandWidth) {
454 bandValue = getCheckedValue('band-width-value');
455
456 if (isChecked('band-kpbs-val')) {
457 bandType = 'kbps';
458 } else if (isChecked('band-mpbs-val')) {
459 bandType = 'mbps';
Mahesh Raju-Huaweid8eaf972016-06-16 19:08:24 +0530460 } else if (isChecked('band-bps-val')) {
461 bandType = 'bps';
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530462 }
463 }
464
465 var costType = isChecked('pce-cost-type'),
466 costTypeVal = null;
467
468 if (costType) {
469 if (isChecked('pce-cost-type-igp')) {
470 costTypeVal = 'igp';
471 } else if (isChecked('pce-cost-type-te')) {
472 costTypeVal = 'te';
473 }
474 }
475
Satish Kba1c9122017-04-05 15:27:23 +0530476 var loadBalancedOption = isChecked('pce-load-balance');
477
MaheshRaju-Huaweiaec67f82016-07-18 16:39:25 +0530478 var lspTypeVal = null;
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530479
MaheshRaju-Huaweiaec67f82016-07-18 16:39:25 +0530480 if (isChecked('pce-lsp-type-cr')) {
481 lspTypeVal = 'cr';
482 } else if (isChecked('pce-lsp-type-srbe')) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530483 lspTypeVal = 'srbe';
MaheshRaju-Huaweiaec67f82016-07-18 16:39:25 +0530484 } else if (isChecked('pce-lsp-type-srte')) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530485 lspTypeVal = 'srte';
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530486 }
487
488 wss.sendEvent(setPathmsg, {
Mahesh Raju-Huawei0f977ef2016-06-14 17:26:22 +0530489 srid: node[0],
490 dsid: node[1],
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530491 bw: bandValue,
492 bwtype: bandType,
493 ctype: costTypeVal,
Satish Kba1c9122017-04-05 15:27:23 +0530494 lb: loadBalancedOption,
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530495 lsptype: lspTypeVal,
496 tunnelname: getCheckedValue('pce-tunnel-name-id')
497 });
498
499 flash.flash('create path message');
500 $log.debug('Dialog OK button clicked');
501 }
502
503 tds.openDialog()
504 .setTitle('constraints selection')
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530505 .addContent(createUserText())
506 .addOk(dOk, 'OK')
507 .addCancel(dClose, 'Close')
508 .bindKeys();
509 }
510
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530511 function updatePath(node) {
512
513 wss.sendEvent(updatePathmsgQuery, {
514 srid: node[0],
515 dsid: node[1]
516 });
517
518 handlerMap[showTunnelInfoMsg] = showTunnelInformation;
519 wss.bindHandlers(handlerMap);
520
521 flash.flash('update path message');
522 }
523
524 function dOkRemove() {
525
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530526 for (var idx = 0; idx < tunnelNameDataRemove.a.length; idx++) {
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530527 var tunnelNameVal = isChecked('tunnel-id-remove-'+idx);
528 if (tunnelNameVal) {
529 wss.sendEvent(remPathmsg, {
Satish Kba1c9122017-04-05 15:27:23 +0530530 tunnelid: tunnelNameDataRemove.a[idx],
531 tunnelname: tunnelNameDataRemove.a[++idx]
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530532 });
533 }
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530534 idx++;
535 }
536
537 flash.flash('remove path message');
538 }
539
540 function dOkQuery() {
541
542 for (var idx = 0; idx < tunnelNameDataQuery.a.length; idx++) {
543 var tunnelNameVal = isChecked('tunnel-id-query-'+idx);
544 if (tunnelNameVal) {
545 wss.sendEvent(showTunnelHighlightMsg, {
Satish Kba1c9122017-04-05 15:27:23 +0530546 tunnelid: tunnelNameDataQuery.a[idx],
547 tunnelname: tunnelNameDataQuery.a[++idx]
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530548 });
549 }
550 idx++;
551 }
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530552
MaheshRaju-Huaweiaec67f82016-07-18 16:39:25 +0530553 flash.flash('query path message');
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530554 }
555
556 function remPath(node) {
557 wss.sendEvent(remPathmsgQuery, {
558 srid: node[0],
559 dsid: node[1]
560 });
561
562 handlerMapRem[showTunnelInfoRemoveMsg] = showTunnelInformationRemove;
563 wss.bindHandlers(handlerMapRem);
564 }
565
566 function queryTunnelDisplay() {
MaheshRaju-Huawei4bf9f2d2016-07-01 19:03:18 +0530567 handlerMapshowQuery[showTunnelInfoQuery] = showTunnelInformationQuery;
568 wss.bindHandlers(handlerMapshowQuery);
569
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530570 wss.sendEvent(queryDisplayTunnelMsg);
571 }
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530572 // === ---------------------------
573 // === Module Factory Definition
574
575 angular.module('ovPcewebTopov', [])
576 .factory('PcewebTopovDemoService',
577 ['$log', 'FnService', 'FlashService', 'WebSocketService',
578 'TopoPanelService', 'NavService', 'TopoDialogService', 'DialogService',
579
580 function (_$log_, _fs_, _flash_, _wss_, _tps_, _ns_,_tds_, _ds_) {
581 $log = _$log_;
582 fs = _fs_;
583 flash = _flash_;
584 wss = _wss_;
585 tps = _tps_;
586 ns = _ns_;
587 tds = _tds_;
588 ds = _ds_;
589
590 return {
591 setSrc: setSrc,
592 setDst: setDst,
593 clear: clear,
Mahesh Raju-Huawei2cfa5352016-05-27 20:09:51 +0530594 setMode: setMode,
595 updatePath: updatePath,
596 remPath: remPath,
597 queryTunnelDisplay: queryTunnelDisplay
Mahesh Raju-Huawei85930052016-04-26 21:09:57 +0530598 };
599 }]);
600}());