2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
12 // specify dashlets and layouts
17 name : 'Nodes Learned'
20 id : 'staticRouteConfig',
21 name : 'Static Route Configuration'
23 subnetGatewayConfig : {
24 id : 'subnetGatewayConfig',
25 name : 'Subnet Gateway Configuration'
28 id : 'spanPortConfig',
29 name : 'SPAN Port Configuration'
36 one.f.dashlet.nodesLearnt
39 one.f.dashlet.staticRouteConfig
45 one.f.dashlet.subnetGatewayConfig,
46 one.f.dashlet.spanPortConfig
52 one.f.switchmanager = {
53 rootUrl: "controller/web/devices",
54 createTable: function(columnNames, body) {
55 var tableAttributes = ["table-striped", "table-bordered", "table-condensed"];
56 var $table = one.lib.dashlet.table.table(tableAttributes);
57 var tableHeaders = columnNames;
58 var $thead = one.lib.dashlet.table.header(tableHeaders);
59 var $tbody = one.lib.dashlet.table.body(body, tableHeaders);
64 validateName: function(name) {
65 return (name.length < 256);
69 one.f.switchmanager.nodesLearnt = {
72 popout: "one_f_switchmanager_nodesLearnt_id_dashlet_popout",
73 datagrid: "one_f_switchmanager_nodesLearnt_id_dashlet_datagrid"
76 modal: "one_f_switchmanager_nodesLearnt_id_modal_modal",
77 configure: "one_f_switchmanager_nodesLearnt_id_modal_configure",
78 ports: "one_f_switchmanager_nodesLearnt_id_modal_ports",
79 save: "one_f_switchmanager_nodesLearnt_id_modal_save",
80 datagrid: "one_f_switchmanager_nodesLearnt_id_modal_datagrid",
81 portsDatagrid: "one_f_switchmanager_nodesLearnt_id_modal_portsDatagrid",
83 nodeId: "one_f_switchmanager_nodesLearnt_id_modal_form_nodeid",
84 nodeName : "one_f_switchmanager_nodesLearnt_id_modal_form_nodename",
85 portStatus : "one_f_switchmanager_nodesLearnt_id_modal_form_portstatus",
86 tier: "one_f_switchmanager_nodesLearnt_id_modal_form_tier",
87 operationMode: "one_f_switchmanager_nodesLearnt_id_modal_form_opmode"
91 dashlet: function($dashlet) {
92 var url = one.f.switchmanager.rootUrl + "/nodesLearnt";
93 one.lib.dashlet.empty($dashlet);
94 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.nodesLearnt.name));
96 one.f.switchmanager.nodesLearnt.ajax.main(url, function(content) {
97 var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.nodesLearnt.id.dashlet.datagrid, {
101 flexibleRowsPerPage: true
102 }, "table-striped table-condensed");
103 $dashlet.append($gridHTML);
104 var dataSource = one.f.switchmanager.nodesLearnt.data.gridDataSource.abridged(content);
105 $("#" + one.f.switchmanager.nodesLearnt.id.dashlet.datagrid).datagrid({dataSource: dataSource}).on("loaded", function() {
106 $(this).find("tbody a").click(one.f.switchmanager.nodesLearnt.modal.initialize.updateNode);
109 $("#" + one.f.switchmanager.nodesLearnt.id.dashlet.datagrid).datagrid({dataSource: dataSource}).on("loaded", function() {
110 $(this).find("tbody span").click(function(){
111 one.f.switchmanager.nodesLearnt.modal.initialize.displayPorts($(this));
118 main : function(url, callback) {
119 $.getJSON(url, function(data) {
126 updateNode: function(evt) {
127 one.f.switchmanager.nodesLearnt.ajax.main(one.f.switchmanager.rootUrl + "/tiers", function(tiers) {
129 var nodeId = decodeURIComponent(evt.target.id);
132 var $body = one.f.switchmanager.nodesLearnt.modal.body.updateNode(nodeId, JSON.parse(decodeURIComponent(evt.target.getAttribute("switchDetails"))), tiers);
133 if (evt.target.getAttribute("privilege") == 'WRITE'){
134 h3 = "Update Node Information";
135 footer = one.f.switchmanager.nodesLearnt.modal.footer.updateNode();
136 } else { //disable node edit
137 $body.find('*').attr('disabled', 'disabled');
138 h3 = 'Node Information';
141 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.configure, h3, "", footer);
143 $('#' + one.f.switchmanager.nodesLearnt.id.modal.save, $modal).click(function() {
144 one.f.switchmanager.nodesLearnt.modal.save($modal);
147 // inject body (nodePorts)
148 one.lib.modal.inject.body($modal, $body);
153 var h3 = "Nodes Learned";
154 var footer = one.f.switchmanager.nodesLearnt.modal.footer.popout();
155 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
156 var $body = one.f.switchmanager.nodesLearnt.modal.body.popout($modal);
159 displayPorts: function(ports) {
160 var content = JSON.parse(decodeURIComponent(ports.attr("ports")));
162 var h3 = ((ports.attr("nodeName") == "None")? ports.attr("nodeId") : ports.attr("nodeName"))
164 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.ports, h3, "", footer);
166 var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.nodesLearnt.id.modal.portsDatagrid, {
170 flexibleRowsPerPage: true,
172 }, "table-striped table-condensed");
173 one.lib.modal.inject.body($modal, $gridHTML);
174 $modal.on("shown", function() {
175 var dataSource = one.f.switchmanager.nodesLearnt.data.gridDataSource.displayPorts(content);
176 $("#" + one.f.switchmanager.nodesLearnt.id.modal.portsDatagrid).datagrid({
177 dataSource: dataSource,
185 updateNode: function(nodeId, switchDetails, tiers) {
186 var $form = $(document.createElement('form'));
187 var $fieldset = $(document.createElement('fieldset'));
188 // node ID. not editable.
189 var $label = one.lib.form.label("Node ID");
190 var $input = one.lib.form.input("node id");
191 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeId);
192 $input.attr("disabled", true);
193 $input.attr("value", nodeId);
194 $fieldset.append($label).append($input);
196 var $label = one.lib.form.label("Node Name");
197 var $input = one.lib.form.input("Node Name");
198 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeName);
199 if(switchDetails["nodeName"] != null) {
200 $input.attr('value', switchDetails["nodeName"]);
202 $fieldset.append($label).append($input);
204 var $label = one.lib.form.label("Tier");
205 var $select = one.lib.form.select.create(tiers);
206 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.tier);
207 $select.val(switchDetails["tier"]);
208 $fieldset.append($label).append($select);
210 var $label = one.lib.form.label("Operation Mode");
211 var $select = one.lib.form.select.create(
212 ["Allow reactive forwarding", "Proactive forwarding only"]);
213 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.operationMode);
214 if ((one.main.registry != undefined) && (one.main.registry.container != 'default')) {
215 $select.attr("disabled", true);
217 $select.val(switchDetails["mode"]);
218 $fieldset.append($label).append($select);
219 $form.append($fieldset);
222 popout: function($modal) {
223 var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.nodesLearnt.id.modal.datagrid, {
227 flexibleRowsPerPage: true,
229 }, "table-striped table-condensed");
230 one.lib.modal.inject.body($modal, $gridHTML);
231 // attach to shown event of modal
232 $modal.on("shown", function() {
233 var url = one.f.switchmanager.rootUrl + "/nodesLearnt";
234 one.f.switchmanager.nodesLearnt.ajax.main(url, function(content) {
235 var dataSource = one.f.switchmanager.nodesLearnt.data.gridDataSource.popout(content);
236 $("#" + one.f.switchmanager.nodesLearnt.id.modal.datagrid).datagrid({
237 dataSource: dataSource,
240 .on("loaded", function() {
241 $("#" + one.f.switchmanager.nodesLearnt.id.modal.datagrid).find("tbody span").click(function(){
242 one.f.switchmanager.nodesLearnt.modal.initialize.displayPorts($(this));
249 save: function($modal) {
251 result['nodeName'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeName, $modal).val();
252 if(!one.f.switchmanager.validateName(result['nodeName'])) {
253 alert("Node name can contain upto 255 characters");
256 result['nodeId'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeId, $modal).val();
257 result['tier'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.tier, $modal).val();
258 result['operationMode'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.operationMode, $modal).val();
259 one.f.switchmanager.nodesLearnt.modal.ajax(result,
261 if(response.status == true) {
262 $modal.modal('hide');
263 one.topology.update(); // refresh visual topology with new name
264 // TODO: Identify dashlet by inserting a nodesLearnt div
265 // in the dashlet() instead
266 one.f.switchmanager.nodesLearnt.dashlet($("#left-top .dashlet"));
268 alert(response.message);
273 ajax: function(requestData, callback) {
274 $.getJSON(one.f.switchmanager.rootUrl + "/nodesLearnt/update", requestData, function(response) {
279 updateNode: function() {
281 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.nodesLearnt.id.modal.save, "btn-primary", "");
282 var $saveButton = one.lib.dashlet.button.button(saveButton);
283 footer.push($saveButton);
288 // TODO: Maybe put a close button in the footer?
296 abridged: function(data) {
297 var source = new StaticDataSource({
300 property: 'nodeName',
316 formatter: function(items) {
317 $.each(items, function (index, item) {
318 var nodeName = item.nodeName;
319 var nodeNameEntry = item.nodeName ? item.nodeName : "Click to update";
320 item.nodeName = '<a href="#" id="' + item.nodeId + '" switchDetails=' + encodeURIComponent(JSON.stringify(item)) +
321 ' privilege=' + data.privilege + '>' + nodeNameEntry + '</a>';
323 var ports = item.ports;
324 var portsMatch = ports.match(/<\/span>/g);
326 if (portsMatch != null) {
327 portsLength = portsMatch.length;
329 item.ports = '<span class="nodePorts" style="cursor:pointer;color: #08c" ports='+encodeURIComponent(JSON.stringify(item.ports)) + ' nodeId="' + item.nodeId
330 + '" nodeName="' + nodeName
331 + '">' + portsLength +'</span>';
339 popout: function(data) {
340 var source = new StaticDataSource({
343 property: 'nodeName',
353 property: 'tierName',
359 label: 'MAC Address',
369 formatter: function(items) {
370 $.each(items, function (index, item) {
371 var ports = item.ports;
372 var portsMatch = ports.match(/<\/span>/g);
374 if (portsMatch != null) {
375 portsLength = portsMatch.length;
377 item.ports = '<span class="nodePorts" style="cursor: pointer;color: #08c" ports='+encodeURIComponent(JSON.stringify(item.ports)) + ' nodeId="' + item.nodeId
378 + '" nodeName="' + item.nodeName
379 + '">' + portsLength +'</span>';
386 displayPorts: function(content){
389 var finish=content.indexOf("<br>",start);
391 data.push({"ports":content.substring(start,finish)});
393 finish=content.indexOf("<br>",start);
395 var source = new StaticDataSource({
410 abridged : function(data) {
412 $.each(data.nodeData, function(key, value) {
415 var nodeNameEntry = value["nodeName"] ? value["nodeName"] : "Click to update";
417 // TODO: Move anchor tag creation to one.lib.form.
419 aTag = document.createElement("a");
420 aTag.privilege = data.privilege;
421 aTag.addEventListener("click", one.f.switchmanager.nodesLearnt.modal.initialize.updateNode);
422 aTag.addEventListener("mouseover", function(evt) {
423 evt.target.style.cursor = "pointer";
425 aTag.setAttribute("id", encodeURIComponent(value["nodeId"]));
426 aTag.switchDetails = value;
427 aTag.innerHTML = nodeNameEntry;
429 entry.push(value["nodeId"]);
430 entry.push(value["ports"]);
436 popout : function(data) {
438 $.each(data.nodeData, function(key, value) {
440 // fill up all the td's
442 var nodenameentry = value["nodeName"] ? value["nodeName"] : "No name provided";
443 entry.push(nodenameentry);
444 entry.push(value["nodeId"]);
445 entry.push(value["tierName"]);
446 entry.push(value["mac"]);
447 entry.push(value["ports"]);
456 one.f.switchmanager.subnetGatewayConfig = {
459 addIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addIP",
460 addPorts: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addPorts",
461 removeIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_removeIP",
462 datagrid: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_datagrid",
463 selectAll: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_selectAll"
466 modal: "one_f_switchmanager_subnetGatewayConfig_id_modal_modal",
467 ports : "one_f_switchmanager_subnetGatewayConfig_id_modal_ports",
468 save: "one_f_switchmanager_subnetGatewayConfig_id_modal_save",
469 remove: "one_f_switchmanager_subnetGatewayConfig_id_modal_remove",
470 cancel: "one_f_switchmanager_subnetGatewayConfig_id_modal_cancel",
472 name : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayname",
473 gatewayIPAddress : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayipaddress",
474 nodeId: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_nodeid",
475 ports: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_ports"
480 dashlet: function($dashlet) {
481 one.lib.dashlet.empty($dashlet);
482 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.subnetGatewayConfig.name));
483 // Add gateway IP Address button
484 var url = one.f.switchmanager.rootUrl + "/subnets";
485 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, {}, function(content) {
487 if (content.privilege === 'WRITE') {
488 var button = one.lib.dashlet.button.single("Add Gateway IP Address",
489 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addIPAddress, "btn-primary", "btn-mini");
490 var $button = one.lib.dashlet.button.button(button);
491 $button.click(function() {
492 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.gateway();
495 $dashlet.append($button);
497 // Delete gateway ip address button
498 var button = one.lib.dashlet.button.single("Remove Gateway IP Address",
499 one.f.switchmanager.subnetGatewayConfig.id.dashlet.removeIPAddress, "btn-danger", "btn-mini");
500 var $button = one.lib.dashlet.button.button(button);
501 $button.click(function() {
502 var gatewaysToDelete = [];
503 var checkedCheckBoxes = $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).find("tbody input:checked")
504 checkedCheckBoxes.each(function(index, value) {
505 gatewaysToDelete.push(checkedCheckBoxes[index].id);
507 if (checkedCheckBoxes.size() === 0) {
510 one.f.switchmanager.subnetGatewayConfig.modal.removeMultiple.dialog(gatewaysToDelete)
512 $dashlet.append($button);
515 var button = one.lib.dashlet.button.single("Add Ports",
516 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addPorts, "btn-primary", "btn-mini");
517 var $button = one.lib.dashlet.button.button(button);
518 $button.click(function() {
519 if (one.f.switchmanager.subnetGatewayConfig.registry.gateways.length === 0) {
520 alert('No Gateways Exist');
523 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.ports();
526 $dashlet.append($button);
528 var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid, {
532 flexibleRowsPerPage: true
533 }, "table-striped table-condensed");
534 $dashlet.append($gridHTML);
535 var dataSource = one.f.switchmanager.subnetGatewayConfig.data.devicesgrid(content);
536 $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource})
537 .on("loaded", function() {
538 $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll).click(function() {
539 $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).find(':checkbox').prop('checked',
540 $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll).is(':checked'));
542 $(".subnetGatewayConfig").click(function(e){
543 if (!$('.subnetGatewayConfig[type=checkbox]:not(:checked)').length) {
544 $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll)
548 $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll)
558 main : function(url, requestData, callback) {
559 $.getJSON(url, requestData, function(data) {
567 gateway: function() {
568 var h3 = "Add Gateway IP Address";
569 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
570 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
572 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
573 one.f.switchmanager.subnetGatewayConfig.modal.save.gateway($modal);
575 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.gateway();
576 one.lib.modal.inject.body($modal, $body);
580 var h3 = "Add Ports";
581 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
582 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.ports, h3, "", footer);
584 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
585 one.f.switchmanager.subnetGatewayConfig.modal.save.ports($modal);
588 // TODO: Change to subnetGateway instead.
589 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
590 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.ports(nodes, nodeports);
591 one.lib.modal.inject.body($modal, $body);
597 gateway: function($modal) {
599 result['gatewayName'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
600 if(!one.f.switchmanager.validateName(result['gatewayName'])) {
601 alert("Gateway name can contain upto 255 characters");
604 result['gatewayIPAddress'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress, $modal).val();
605 one.f.switchmanager.subnetGatewayConfig.modal.ajax.gateway(result,
607 if(response.status == true) {
608 $modal.modal('hide');
609 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
611 alert(response.message);
615 ports: function($modal) {
617 var gatewayRegistryIndex = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
618 result['portsName'] = one.f.switchmanager.subnetGatewayConfig.registry.gateways[gatewayRegistryIndex];
619 result['nodeId'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId, $modal).val();
620 result['ports'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports, $modal).val();
621 if(!result['portsName'] || result['portsName'] == "") {
622 alert("No gateway chosen. Cannot add port");
625 if(!result['nodeId'] || result['nodeId'] == "") {
626 alert("Please select a node.");
629 if(!result['ports'] || result['ports'] == "") {
630 alert("Please choose a port.");
633 one.f.switchmanager.subnetGatewayConfig.modal.ajax.ports(result,
635 if(response.status == true) {
636 $modal.modal('hide');
637 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
639 alert(response.message);
645 gateway: function() {
646 var $form = $(document.createElement('form'));
647 var $fieldset = $(document.createElement('fieldset'));
649 var $label = one.lib.form.label("Name");
650 var $input = one.lib.form.input("Name");
651 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
652 $fieldset.append($label).append($input);
654 var $label = one.lib.form.label("Gateway IP Address/Mask");
655 var $input = one.lib.form.input("Gateway IP Address/Mask");
656 var $help = one.lib.form.help('Example: 192.168.10.254/16');
657 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress);
658 $fieldset.append($label).append($input).append($help);
660 $form.append($fieldset);
663 ports: function(nodes, nodeports) {
664 var $form = $(document.createElement('form'));
665 var $fieldset = $(document.createElement('fieldset'));
666 // gateways drop down
667 var $label = one.lib.form.label("Gateway Name");
668 var $select = one.lib.form.select.create(one.f.switchmanager.subnetGatewayConfig.registry.gateways);
669 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
670 one.lib.form.select.prepend($select, { '' : 'Please Select a Gateway' });
671 $select.val($select.find("option:first").val());
672 $fieldset.append($label).append($select);
675 var $label = one.lib.form.label("Node ID");
676 var $select = one.lib.form.select.create(nodes);
677 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId);
678 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
679 $select.val($select.find("option:first").val());
680 $fieldset.append($label).append($select);
683 $select.change(function() {
684 // retrieve port value
685 var node = $(this).find('option:selected').attr('value');
686 one.f.switchmanager.subnetGatewayConfig.registry['currentNode'] = node;
687 var $ports = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
688 var ports = nodeports[node];
690 $(ports).each(function(idx, val) {
691 options[val.internalPortName] = val.portName+' ('+val.portId+')';
693 one.lib.form.select.inject($ports, options);
694 one.lib.form.select.prepend($ports, { '' : 'Please Select a Port' });
695 $ports.val($ports.find("option:first").val());
699 var $label = one.lib.form.label("Select Port");
700 var $select = one.lib.form.select.create();
701 one.lib.form.select.prepend($select, { '' : 'Please Select a Port' });
702 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
703 $fieldset.append($label).append($select);
705 $form.append($fieldset);
710 gateway: function(requestData, callback) {
711 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/add", requestData, function(data) {
715 ports: function(requestData, callback) {
716 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/ports/add", requestData, function(data) {
721 footer : function() {
723 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.subnetGatewayConfig.id.modal.save, "btn-primary", "");
724 var $saveButton = one.lib.dashlet.button.button(saveButton);
725 footer.push($saveButton);
729 dialog: function(gatewaysToDelete) {
730 var h3 = 'Remove Gateway IP Address';
732 var footer = one.f.switchmanager.subnetGatewayConfig.modal.removeMultiple.footer();
733 var $body = one.f.switchmanager.subnetGatewayConfig.modal.removeMultiple.body(gatewaysToDelete);
734 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, $body, footer);
737 $('#'+one.f.switchmanager.subnetGatewayConfig.id.modal.cancel, $modal).click(function() {
738 $modal.modal('hide');
741 // bind remove rule button
742 $('#'+one.f.switchmanager.subnetGatewayConfig.id.modal.remove, $modal).click(this, function(e) {
743 var requestData = {};
744 if (gatewaysToDelete.length > 0) {
745 requestData["gatewaysToDelete"] = gatewaysToDelete.toString();
746 var url = one.f.switchmanager.rootUrl + "/subnetGateway/delete";
747 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
748 $modal.modal('hide');
749 if (response.status == true) {
750 // refresh dashlet by passing dashlet div as param
751 one.lib.alert("Gateway IP Address(es) successfully removed");
753 alert(response.message);
755 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
761 footer : function() {
763 var remove = one.lib.dashlet.button.single('Remove Gateway IP Address',one.f.switchmanager.subnetGatewayConfig.id.modal.remove, 'btn-danger', '');
764 var $remove = one.lib.dashlet.button.button(remove);
765 footer.push($remove);
767 var cancel = one.lib.dashlet.button.single('Cancel', one.f.switchmanager.subnetGatewayConfig.id.modal.cancel, '', '');
768 var $cancel = one.lib.dashlet.button.button(cancel);
769 footer.push($cancel);
773 body : function (gatewayList) {
774 var $p = $(document.createElement('p'));
775 var p = 'Remove the following Gateway IP Address(es)?';
776 //creata a BS label for each rule and append to list
777 $(gatewayList).each(function(){
778 var $span = $(document.createElement('span'));
780 p += '<br/>' + $span[0].outerHTML;
789 devicesgrid: function(data) {
790 one.f.switchmanager.subnetGatewayConfig.registry.gateways = [];
791 var source = new StaticDataSource({
794 property: 'selector',
795 label: "<input type='checkbox' id='"
796 +one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll+"'/>",
806 label: 'Gateway IP Address/Mask',
810 property: 'nodePorts',
816 formatter: function(items) {
817 $.each(items, function(index, tableRow) {
818 tableRow["selector"] = '<input type="checkbox" class="subnetGatewayConfig" id="'
819 + tableRow["name"] + '"></input>';
820 var json = tableRow["nodePorts"];
821 var nodePorts = JSON.parse(json);
822 var nodePortHtml = "<div>";
823 $.each(nodePorts, function(index, nodePort) {
824 nodePortHtml += nodePort["nodePortName"] + " @ " + nodePort["nodeName"];
825 nodePortHtml += " ";
826 nodePortHtml += '<a href="#" id="' + encodeURIComponent(nodePort["nodePortId"]) +
827 '" gatewayName="' + tableRow["name"] +
828 '" onclick="javascript:one.f.switchmanager.subnetGatewayConfig.actions.deleteNodePort(this);">Remove</a>';
829 nodePortHtml += "<br/>";
831 nodePortHtml += "</div>";
832 tableRow["nodePorts"] = nodePortHtml;
838 // populate the registry with subnet names
839 one.f.switchmanager.subnetGatewayConfig.registry.gateways = [];
840 $.each(data.nodeData, function(key, value) {
841 one.f.switchmanager.subnetGatewayConfig.registry.gateways.push(value["name"]);
845 devices : function(data) {
847 one.f.switchmanager.subnetGatewayConfig.registry.gateways = [];
848 $.each(data.nodeData, function(key, value) {
850 // fill up all the td's
851 var subnetConfigObject = $.parseJSON(value["json"]);
852 var nodePorts = subnetConfigObject.nodePorts;
853 var $nodePortsContainer = $(document.createElement("div"));
855 for(var i = 0; i < nodePorts.length; i++) {
856 var nodePort = nodePorts[i];
857 $nodePortsContainer.append(nodePort + " ");
858 // add delete anchor tag to delete ports
859 var aTag = document.createElement("a");
860 aTag.setAttribute("id", encodeURIComponent(nodePort));
861 aTag.gatewayName = value["name"];
862 aTag.addEventListener("click", function(evt) {
863 var htmlPortAnchor = evt.target;
864 var requestData = {};
865 requestData["gatewayName"] = evt.target.gatewayName;
866 requestData["nodePort"] = decodeURIComponent(evt.target.id);
867 // make ajax call to delete port
868 var url = one.f.switchmanager.rootUrl + "/subnetGateway/ports/delete";
869 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
870 if(response.status == true) {
871 // refresh dashlet by passing dashlet div as param
872 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
874 alert(response.message);
879 aTag.addEventListener("mouseover", function(evt) {
880 evt.target.style.cursor = "pointer";
882 aTag.innerHTML = "Remove";
883 $nodePortsContainer.append(aTag);
884 $nodePortsContainer.append("<br/>");
887 // store gateways in the registry so that they can be used in the add ports popup
888 one.f.switchmanager.subnetGatewayConfig.registry.gateways.push(value["name"]);
890 var checkbox = document.createElement("input");
891 checkbox.setAttribute("type", "checkbox");
892 checkbox.setAttribute("id", value["name"]);
893 entry.push(checkbox);
894 entry.push(value["name"]);
895 entry.push(value["subnet"]);
896 entry.push($nodePortsContainer);
904 deleteNodePort: function(htmlPortAnchor) {
905 var requestData = {};
906 requestData["gatewayName"] = htmlPortAnchor.getAttribute("gatewayName");
907 requestData["nodePort"] = decodeURIComponent(htmlPortAnchor.id);
908 // make ajax call to delete port
909 var url = one.f.switchmanager.rootUrl + "/subnetGateway/ports/delete";
910 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
911 if(response.status == true) {
912 // refresh dashlet by passing dashlet div as param
913 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
915 alert(response.message);
922 one.f.switchmanager.staticRouteConfig = {
925 add: "one_f_switchmanager_staticRouteConfig_id_dashlet_add",
926 remove: "one_f_switchmanager_staticRouteConfig_id_dashlet_remove",
927 datagrid: "one_f_switchmanager_staticRouteConfig_id_dashlet_datagrid",
928 selectAll: "one_f_switchmanager_staticRouteConfig_id_dashlet_selectAll"
931 modal: "one_f_switchmanager_staticRouteConfig_id_modal_modal",
932 save: "one_f_switchmanager_staticRouteConfig_id_modal_save",
933 cancel: "one_f_switchmanager_staticRouteConfig_id_modal_cancel",
934 remove: "one_f_switchmanager_staticRouteConfig_id_modal_remove",
936 routeName : "one_f_switchmanager_staticRouteConfig_id_modal_form_routename",
937 staticRoute : "one_f_switchmanager_staticRouteConfig_id_modal_form_staticroute",
938 nextHop : "one_f_switchmanager_staticRouteConfig_id_modal_form_nexthop",
942 dashlet: function($dashlet) {
943 one.lib.dashlet.empty($dashlet);
944 var url = one.f.switchmanager.rootUrl + "/staticRoutes";
945 one.f.switchmanager.staticRouteConfig.ajax.main(url, {}, function(content) {
947 if (content.privilege === 'WRITE') {
948 // Add static route button
949 var button = one.lib.dashlet.button.single("Add Static Route", one.f.switchmanager.staticRouteConfig.id.dashlet.add, "btn-primary", "btn-mini");
950 var $button = one.lib.dashlet.button.button(button);
951 $button.click(function() {
952 var $modal = one.f.switchmanager.staticRouteConfig.modal.initialize();
955 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.staticRouteConfig.name));
956 $dashlet.append($button);
958 // Delete static route button
959 var button = one.lib.dashlet.button.single("Remove Static Route", one.f.switchmanager.staticRouteConfig.id.dashlet.remove, "btn-danger", "btn-mini");
960 var $button = one.lib.dashlet.button.button(button);
961 $button.click(function() {
962 var routesToDelete = [];
963 var checkedCheckBoxes = $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).find("tbody input:checked");
964 checkedCheckBoxes.each(function(index, value) {
965 routesToDelete.push(checkedCheckBoxes[index].id);
967 if (checkedCheckBoxes.size() === 0) {
970 one.f.switchmanager.staticRouteConfig.modal.removeMultiple.dialog(routesToDelete);
972 $dashlet.append($button);
974 var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid, {
978 flexibleRowsPerPage: true
979 }, "table-striped table-condensed");
980 $dashlet.append($gridHTML);
981 var dataSource = one.f.switchmanager.staticRouteConfig.data.staticRouteConfigGrid(content);
982 $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource})
983 .on("loaded", function() {
984 $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll).click(function() {
985 $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).find(':checkbox').prop('checked',
986 $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll).is(':checked'));
988 $(".staticRoute").click(function(e){
989 if (!$('.staticRoute[type=checkbox]:not(:checked)').length) {
990 $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll)
994 $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll)
1003 // device ajax calls
1005 main : function(url, requestData, callback) {
1006 $.getJSON(url, requestData, function(data) {
1013 initialize: function() {
1014 var h3 = "Add Static Route";
1015 var footer = one.f.switchmanager.staticRouteConfig.modal.footer();
1016 var $modal = one.lib.modal.spawn(one.f.switchmanager.staticRouteConfig.id.modal.modal, h3, "", footer);
1018 $('#' + one.f.switchmanager.staticRouteConfig.id.modal.save, $modal).click(function() {
1019 one.f.switchmanager.staticRouteConfig.modal.save($modal);
1021 var $body = one.f.switchmanager.staticRouteConfig.modal.body();
1022 one.lib.modal.inject.body($modal, $body);
1025 save: function($modal) {
1027 result['routeName'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.routeName, $modal).val();
1028 result['staticRoute'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute, $modal).val();
1029 result['nextHop'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop, $modal).val();
1030 one.f.switchmanager.staticRouteConfig.modal.ajax.staticRouteConfig(result, function(response) {
1031 if(response.status == true) {
1032 $modal.modal('hide');
1033 // refresh dashlet by passing dashlet div as param
1034 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
1036 // TODO: Show error message in a error message label instead.
1037 alert(response.message);
1042 var $form = $(document.createElement('form'));
1043 var $fieldset = $(document.createElement('fieldset'));
1044 // static route name
1045 var $label = one.lib.form.label("Name");
1046 var $input = one.lib.form.input("Name");
1047 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.routeName);
1048 $fieldset.append($label).append($input);
1049 // static route IP Mask
1050 var $label = one.lib.form.label("Static Route");
1051 var $input = one.lib.form.input("Static Route");
1052 var $help = one.lib.form.help('Example: 53.55.0.0/16');
1053 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute);
1054 $fieldset.append($label).append($input).append($help);
1055 // static route IP Mask
1056 var $label = one.lib.form.label("Next Hop");
1057 var $input = one.lib.form.input("Next Hop");
1058 var $help = one.lib.form.help('Example: 192.168.10.254');
1059 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop);
1060 $fieldset.append($label).append($input).append($help);
1062 $form.append($fieldset);
1066 staticRouteConfig: function(requestData, callback) {
1067 $.getJSON(one.f.switchmanager.rootUrl + "/staticRoute/add", requestData, function(data) {
1075 footer : function() {
1077 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.staticRouteConfig.id.modal.save, "btn-primary", "");
1078 var $saveButton = one.lib.dashlet.button.button(saveButton);
1079 footer.push($saveButton);
1083 dialog: function(routesToDelete) {
1084 var h3 = 'Remove Static Route';
1086 var footer = one.f.switchmanager.staticRouteConfig.modal.removeMultiple.footer();
1087 var $body = one.f.switchmanager.staticRouteConfig.modal.removeMultiple.body(routesToDelete);
1088 var $modal = one.lib.modal.spawn(one.f.switchmanager.staticRouteConfig.id.modal.modal, h3, $body, footer);
1090 // bind close button
1091 $('#'+one.f.switchmanager.staticRouteConfig.id.modal.cancel, $modal).click(function() {
1092 $modal.modal('hide');
1095 // bind remove rule button
1096 $('#'+one.f.switchmanager.staticRouteConfig.id.modal.remove, $modal).click(this, function(e) {
1097 if (routesToDelete.length > 0) {
1098 var requestData = {};
1099 requestData["routesToDelete"] = routesToDelete.toString();
1100 var url = one.f.switchmanager.rootUrl + "/staticRoute/delete";
1101 one.f.switchmanager.staticRouteConfig.ajax.main(url, requestData, function(response) {
1102 $modal.modal('hide');
1103 if (response.status == true) {
1104 // refresh dashlet by passing dashlet div as param
1105 one.lib.alert("Static Route(s) successfully removed");
1107 alert(response.message);
1109 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
1115 footer : function() {
1117 var remove = one.lib.dashlet.button.single('Remove Static Route',one.f.switchmanager.staticRouteConfig.id.modal.remove, 'btn-danger', '');
1118 var $remove = one.lib.dashlet.button.button(remove);
1119 footer.push($remove);
1121 var cancel = one.lib.dashlet.button.single('Cancel', one.f.switchmanager.staticRouteConfig.id.modal.cancel, '', '');
1122 var $cancel = one.lib.dashlet.button.button(cancel);
1123 footer.push($cancel);
1127 body : function (staticRouteList) {
1128 var $p = $(document.createElement('p'));
1129 var p = 'Remove the following Static Route(s)?';
1130 //creata a BS label for each rule and append to list
1131 $(staticRouteList).each(function(){
1132 var $span = $(document.createElement('span'));
1134 p += '<br/>' + $span[0].outerHTML;
1143 staticRouteConfigGrid: function(data) {
1144 var source = new StaticDataSource({
1147 property: 'selector',
1148 label: "<input type='checkbox' id='"
1149 +one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll+"'/>",
1158 property: 'staticRoute',
1159 label: 'Static Route',
1163 property: 'nextHop',
1164 label: 'Next Hop Address',
1168 data: data.nodeData,
1169 formatter: function(items) {
1170 $.each(items, function(index, item) {
1171 item["selector"] = '<input type="checkbox" class="staticRoute" id="' + item["name"] + '"></input>';
1179 staticRouteConfig : function(data) {
1181 $.each(data.nodeData, function(key, value) {
1183 // fill up all the td's
1185 var checkbox = document.createElement("input");
1186 checkbox.setAttribute("type", "checkbox");
1187 checkbox.setAttribute("id", value["name"]);
1188 entry.push(checkbox);
1189 entry.push(value["name"]);
1190 entry.push(value["staticRoute"]);
1191 entry.push(value["nextHop"]);
1200 one.f.switchmanager.spanPortConfig = {
1203 add: "one_f_switchmanager_spanPortConfig_id_dashlet_add",
1204 remove: "one_f_switchmanager_spanPortConfig_id_dashlet_remove",
1205 datagrid: "one_f_switchmanager_spanPortConfig_id_dashlet_datagrid",
1206 selectAllFlows: "one_f_switchmanager_spanPortConfig_id_dashlet_selectAllFlows"
1209 modal: "one_f_switchmanager_spanPortConfig_id_modal_modal",
1210 save: "one_f_switchmanager_spanPortConfig_id_modal_save",
1211 cancel: "one_f_switchmanager_spanPortConfig_id_modal_cancel",
1212 remove: "one_f_switchmanager_spanPortConfig_id_modal_remove",
1214 name : "one_f_switchmanager_spanPortConfig_id_modal_form_name",
1215 nodes : "one_f_switchmanager_spanPortConfig_id_modal_form_nodes",
1216 port : "one_f_switchmanager_spanPortConfig_id_modal_form_port",
1220 dashlet: function($dashlet) {
1221 one.lib.dashlet.empty($dashlet);
1223 //populate table in dashlet
1224 var url = one.f.switchmanager.rootUrl + "/spanPorts";
1225 one.f.switchmanager.spanPortConfig.ajax.main(url, {}, function(content) {
1227 if (content.privilege === 'WRITE') {
1229 // Add span port button
1230 var button = one.lib.dashlet.button.single("Add SPAN Port", one.f.switchmanager.spanPortConfig.id.dashlet.add, "btn-primary", "btn-mini");
1231 var $button = one.lib.dashlet.button.button(button);
1233 $button.click(function() {
1234 var $modal = one.f.switchmanager.spanPortConfig.modal.initialize();
1237 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.spanPortConfig.name));
1238 $dashlet.append($button);
1240 // Delete span port button
1241 var button = one.lib.dashlet.button.single("Remove SPAN Port", one.f.switchmanager.spanPortConfig.id.dashlet.remove, "btn-danger", "btn-mini");
1242 var $button = one.lib.dashlet.button.button(button);
1243 $button.click(function() {
1244 var spanPortsToDelete = [];
1245 var checkedCheckBoxes = $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).find("tbody input:checked");
1247 if (checkedCheckBoxes.size() === 0) {
1250 checkedCheckBoxes.each(function(index, value) {
1251 var spanPortObj = {};
1252 spanPortObj['spanPortJson'] = decodeURIComponent(checkedCheckBoxes[index].getAttribute("spanPort"));
1253 spanPortObj['spanPortNodeName'] = checkedCheckBoxes[index].getAttribute("spanPortNode");
1254 spanPortObj['spanPortPortName'] = checkedCheckBoxes[index].getAttribute("spanPortPort");
1256 spanPortsToDelete.push(spanPortObj);
1258 one.f.switchmanager.spanPortConfig.modal.removeMultiple.dialog(spanPortsToDelete);
1260 $dashlet.append($button);
1262 var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.spanPortConfig.id.dashlet.datagrid, {
1266 flexibleRowsPerPage: true
1267 }, "table-striped table-condensed");
1268 $dashlet.append($gridHTML);
1269 var dataSource = one.f.switchmanager.spanPortConfig.data.spanPortConfigGrid(content);
1270 $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource})
1271 .on("loaded", function() {
1272 $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll).click(function() {
1273 $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).find(':checkbox').prop('checked',
1274 $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll).is(':checked'));
1276 $(".spanPortConfig").click(function(e){
1277 if (!$('.spanPortConfig[type=checkbox]:not(:checked)').length) {
1278 $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll)
1282 $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll)
1286 e.stopPropagation();
1291 // device ajax calls
1293 main : function(url, requestData, callback) {
1294 $.getJSON(url, requestData, function(data) {
1301 initialize: function() {
1302 var h3 = "Add SPAN Port";
1303 var footer = one.f.switchmanager.spanPortConfig.modal.footer();
1304 var $modal = one.lib.modal.spawn(one.f.switchmanager.spanPortConfig.id.modal.modal, h3, "", footer);
1306 $('#' + one.f.switchmanager.spanPortConfig.id.modal.save, $modal).click(function() {
1307 one.f.switchmanager.spanPortConfig.modal.save($modal);
1310 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
1311 var $body = one.f.switchmanager.spanPortConfig.modal.body(nodes, nodeports);
1312 one.lib.modal.inject.body($modal, $body);
1316 save: function($modal) {
1318 result['nodeId'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.nodes, $modal).val();
1319 result['spanPort'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port, $modal).val();
1320 one.f.switchmanager.spanPortConfig.modal.ajax.saveSpanPortConfig(result,
1321 function(response) {
1322 if(response.status == true) {
1323 $modal.modal('hide');
1324 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
1326 alert(response.message);
1331 body: function(nodes, nodeports) {
1332 var $form = $(document.createElement('form'));
1333 var $fieldset = $(document.createElement('fieldset'));
1335 var $label = one.lib.form.label("Node");
1336 var $select = one.lib.form.select.create(nodes);
1337 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
1338 $select.val($select.find("option:first").val());
1339 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.nodes);
1342 $select.change(function() {
1343 // retrieve port value
1344 var nodeId = $(this).find('option:selected').attr('value');
1345 one.f.switchmanager.spanPortConfig.registry['currentNode'] = nodeId;
1346 var $ports = $('#'+one.f.switchmanager.spanPortConfig.id.modal.form.port);
1347 var ports = one.f.switchmanager.spanPortConfig.registry['nodePorts'][nodeId]
1349 $(ports).each(function(idx, val) {
1350 options[val.internalPortName] = val.portName+' ('+val.portId+')';
1352 one.lib.form.select.inject($ports, options);
1353 one.lib.form.select.prepend($ports, {'':'Please Select a Port'});
1354 $ports.val($ports.find('option:first').val());
1357 $fieldset.append($label).append($select);
1359 var $label = one.lib.form.label("Input Port");
1360 var $select = one.lib.form.select.create();
1361 one.lib.form.select.prepend($select, {'':'None'});
1362 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.port);
1363 $select.val($select.find('option:first').val());
1364 $fieldset.append($label).append($select);
1367 $form.append($fieldset);
1371 nodes: function(callback) {
1372 $.getJSON(one.f.switchmanager.rootUrl + "/nodeports", function(data) {
1375 $(data).each(function(index, node) {
1376 nodes[node.nodeId] = node.nodeName;
1377 nodePorts[node.nodeId] = node.nodePorts;
1379 one.f.switchmanager.spanPortConfig.registry['nodePorts'] = nodePorts;
1380 callback(nodes, nodePorts);
1383 saveSpanPortConfig: function(requestData, callback) {
1385 resource["jsonData"] = JSON.stringify(requestData);
1386 $.getJSON(one.f.switchmanager.rootUrl + "/spanPorts/add", resource, function(data) {
1391 footer : function() {
1393 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.spanPortConfig.id.modal.save, "btn-primary", "");
1394 var $saveButton = one.lib.dashlet.button.button(saveButton);
1395 footer.push($saveButton);
1399 dialog: function(spanPortsToDelete) {
1400 var h3 = 'Remove SPAN Port';
1402 var footer = one.f.switchmanager.spanPortConfig.modal.removeMultiple.footer();
1403 var $body = one.f.switchmanager.spanPortConfig.modal.removeMultiple.body(spanPortsToDelete);
1404 var $modal = one.lib.modal.spawn(one.f.switchmanager.spanPortConfig.id.modal.modal, h3, $body, footer);
1406 // bind close button
1407 $('#'+one.f.switchmanager.spanPortConfig.id.modal.cancel, $modal).click(function() {
1408 $modal.modal('hide');
1411 // bind remove rule button
1412 $('#'+one.f.switchmanager.spanPortConfig.id.modal.remove, $modal).click(this, function(e) {
1413 var requestData = {};
1415 $(spanPortsToDelete).each(function(index, spanPort) {
1416 spanPorts.push(JSON.parse(spanPort.spanPortJson));
1418 requestData["spanPortsToDelete"] = JSON.stringify(spanPorts);
1420 var url = one.f.switchmanager.rootUrl + "/spanPorts/delete";
1421 one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) {
1422 $modal.modal('hide');
1423 if (response.status == true) {
1424 // refresh dashlet by passing dashlet div as param
1425 one.lib.alert("Span Port(s) successfully removed");
1427 alert(response.message);
1429 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
1434 footer : function() {
1436 var remove = one.lib.dashlet.button.single('Remove SPAN Port',one.f.switchmanager.spanPortConfig.id.modal.remove, 'btn-danger', '');
1437 var $remove = one.lib.dashlet.button.button(remove);
1438 footer.push($remove);
1440 var cancel = one.lib.dashlet.button.single('Cancel', one.f.switchmanager.spanPortConfig.id.modal.cancel, '', '');
1441 var $cancel = one.lib.dashlet.button.button(cancel);
1442 footer.push($cancel);
1446 body : function (spanPortToDelete) {
1447 var $p = $(document.createElement('p'));
1448 var p = 'Remove the following Span Port(s)?';
1449 //creata a BS label for each rule and append to list
1451 $(spanPortToDelete).each(function(index, spanPortItem) {
1452 var $span = $(document.createElement('span'));
1453 $span.append(this.spanPortNodeName+"-"+this.spanPortPortName);
1454 p += '<br/>' + $span[0].outerHTML;
1463 spanPortConfigGrid: function(data) {
1464 var source = new StaticDataSource({
1467 property: 'selector',
1468 label: "<input type='checkbox' id='"
1469 +one.f.switchmanager.spanPortConfig.id.dashlet.selectAll+"'/>",
1473 property: 'nodeName',
1478 property: 'spanPortName',
1483 data: data.nodeData,
1484 formatter: function(items) {
1485 $.each(items, function(index, item) {
1486 item["selector"] = '<input type="checkbox" class="spanPortConfig" spanPort=' + encodeURIComponent(item["json"]) + ' spanPortNode="' + item["nodeName"] + '" spanPortPort="' + item["spanPortName"] + '"></input>';
1493 devices : function(data) {
1495 $.each(data.nodeData, function(key, value) {
1497 // fill up all the td's
1499 var checkbox = document.createElement("input");
1500 checkbox.setAttribute("type", "checkbox");
1501 checkbox.spanPort = value.json;
1502 entry.push(checkbox);
1503 entry.push(value["nodeName"]);
1504 entry.push(value["spanPort"]);
1514 // populate nav tabs
1515 $(one.f.menu.left.top).each(function(index, value) {
1516 var $nav = $(".nav", "#left-top");
1517 one.main.page.dashlet($nav, value);
1520 $(one.f.menu.left.bottom).each(function(index, value) {
1521 var $nav = $(".nav", "#left-bottom");
1522 one.main.page.dashlet($nav, value);
1525 $(one.f.menu.right.bottom).each(function(index, value) {
1526 var $nav = $(".nav", "#right-bottom");
1527 one.main.page.dashlet($nav, value);
1530 one.f.addPopOut = function() {
1531 $img1 = $(document.createElement("img"));
1532 $img1.attr("src", "/img/Expand16T.png");
1533 $img1.attr("style", "float: right;");
1534 $img1.hover(function() {
1535 $img1.css("cursor", "pointer");
1537 $img1.click(function() {
1538 var $modal = one.f.switchmanager.nodesLearnt.modal.initialize.popout();
1540 'margin-left': '-45%',
1541 'margin-top': '-3%',
1542 'width':$(document).width() * 0.8,
1543 'height':$(document).height() * 0.9
1545 $(".modal-body", $modal).css({
1546 "max-height": $(document).height() * 0.75,
1550 $dash1 = $($("#left-top .nav")[0]);
1551 $dash1.append($img1);
1556 $('.dash .nav a', '#main').click(function() {
1558 var $li = $(this).parent();
1559 var $ul = $li.parent();
1560 one.lib.nav.unfocus($ul);
1561 $li.addClass('active');
1562 // clear respective dashlet
1563 var $dashlet = $ul.parent().find('.dashlet');
1564 one.lib.dashlet.empty($dashlet);
1566 // callback based on menu
1567 var id = $(this).attr('id');
1568 var menu = one.f.dashlet;
1570 case menu.nodesLearnt.id:
1571 one.f.switchmanager.nodesLearnt.dashlet($dashlet);
1573 case menu.staticRouteConfig.id:
1574 one.f.switchmanager.staticRouteConfig.dashlet($dashlet);
1576 case menu.subnetGatewayConfig.id:
1577 one.f.switchmanager.subnetGatewayConfig.dashlet($dashlet);
1579 case menu.spanPortConfig.id:
1580 one.f.switchmanager.spanPortConfig.dashlet($dashlet);
1585 // activate first tab on each dashlet
1586 $('.dash .nav').each(function(index, value) {
1587 $($(value).find('li')[0]).find('a').click();