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
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"
75 modal: "one_f_switchmanager_nodesLearnt_id_modal_modal",
76 save: "one_f_switchmanager_nodesLearnt_id_modal_save",
78 nodeId: "one_f_switchmanager_nodesLearnt_id_modal_form_nodeid",
79 nodeName : "one_f_switchmanager_nodesLearnt_id_modal_form_nodename",
80 portStatus : "one_f_switchmanager_nodesLearnt_id_modal_form_portstatus",
81 tier: "one_f_switchmanager_nodesLearnt_id_modal_form_tier",
82 operationMode: "one_f_switchmanager_nodesLearnt_id_modal_form_opmode"
86 dashlet: function($dashlet) {
87 var url = one.f.switchmanager.rootUrl + "/nodesLearnt";
88 one.lib.dashlet.empty($dashlet);
89 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.nodesLearnt.name));
91 one.f.switchmanager.nodesLearnt.ajax.main(url, function(content) {
92 var body = one.f.switchmanager.nodesLearnt.data.abridged(content);
93 var $table = one.f.switchmanager.createTable(["Node Name", "Node ID", "Ports"], body);
94 $dashlet.append($table);
98 main : function(url, callback) {
99 $.getJSON(url, function(data) {
106 updateNode: function(evt) {
107 one.f.switchmanager.nodesLearnt.ajax.main(one.f.switchmanager.rootUrl + "/tiers", function(tiers) {
109 var nodeId = decodeURIComponent(evt.target.id);
112 var $body = one.f.switchmanager.nodesLearnt.modal.body.updateNode(nodeId, evt.target.switchDetails, tiers);
113 if (evt.target.privilege == 'WRITE'){
114 h3 = "Update Node Information";
115 footer = one.f.switchmanager.nodesLearnt.modal.footer.updateNode();
116 } else { //disable node edit
117 $body.find('*').attr('disabled', 'disabled');
118 h3 = 'Node Information';
121 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
123 $('#' + one.f.switchmanager.nodesLearnt.id.modal.save, $modal).click(function() {
124 one.f.switchmanager.nodesLearnt.modal.save($modal);
127 // inject body (nodePorts)
128 one.lib.modal.inject.body($modal, $body);
133 var h3 = "Nodes Learnt";
134 var footer = one.f.switchmanager.nodesLearnt.modal.footer.popout();
135 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
136 var $body = one.f.switchmanager.nodesLearnt.modal.body.popout($modal);
141 updateNode: function(nodeId, switchDetails, tiers) {
142 var $form = $(document.createElement('form'));
143 var $fieldset = $(document.createElement('fieldset'));
144 // node ID. not editable.
145 var $label = one.lib.form.label("Node ID");
146 var $input = one.lib.form.input("node id");
147 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeId);
148 $input.attr("disabled", true);
149 $input.attr("value", nodeId);
150 $fieldset.append($label).append($input);
152 var $label = one.lib.form.label("Node Name");
153 var $input = one.lib.form.input("Node Name");
154 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeName);
155 if(switchDetails["nodeName"] != null) {
156 $input.attr('value', switchDetails["nodeName"]);
158 $fieldset.append($label).append($input);
160 var $label = one.lib.form.label("Tier");
161 var $select = one.lib.form.select.create(tiers);
162 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.tier);
163 $select.val(switchDetails["tier"]);
164 $fieldset.append($label).append($select);
166 var $label = one.lib.form.label("Operation Mode");
167 var $select = one.lib.form.select.create(
168 ["Allow reactive forwarding", "Proactive forwarding only"]);
169 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.operationMode);
170 if ((one.main.registry != undefined) && (one.main.registry.container != 'default')) {
171 $select.attr("disabled", true);
173 $select.val(switchDetails["mode"]);
174 $fieldset.append($label).append($select);
175 $form.append($fieldset);
178 popout: function($modal) {
179 var url = one.f.switchmanager.rootUrl + "/nodesLearnt";
180 one.f.switchmanager.nodesLearnt.ajax.main(url, function(content) {
181 var tableContent = one.f.switchmanager.nodesLearnt.data.popout(content);
182 var $table = one.f.switchmanager.createTable(content.columnNames, tableContent);
183 one.lib.modal.inject.body($modal, $table);
187 save: function($modal) {
189 result['nodeName'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeName, $modal).val();
190 if(!one.f.switchmanager.validateName(result['nodeName'])) {
191 alert("Node name can contain upto 255 characters");
194 result['nodeId'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeId, $modal).val();
195 result['tier'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.tier, $modal).val();
196 result['operationMode'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.operationMode, $modal).val();
197 one.f.switchmanager.nodesLearnt.modal.ajax(result,
199 if(response.status == true) {
200 $modal.modal('hide');
201 one.topology.update(); // refresh visual topology with new name
202 // TODO: Identify dashlet by inserting a nodesLearnt div
203 // in the dashlet() instead
204 one.f.switchmanager.nodesLearnt.dashlet($("#left-top .dashlet"));
206 alert(response.message);
211 ajax: function(requestData, callback) {
212 $.getJSON(one.f.switchmanager.rootUrl + "/nodesLearnt/update", requestData, function(response) {
217 updateNode: function() {
219 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.nodesLearnt.id.modal.save, "btn-success", "");
220 var $saveButton = one.lib.dashlet.button.button(saveButton);
221 footer.push($saveButton);
226 // TODO: Maybe put a close button in the footer?
233 abridged : function(data) {
235 $.each(data.nodeData, function(key, value) {
238 var nodenameentry = value["nodeName"] ? value["nodeName"] : "Click to update";
240 // TODO: Move anchor tag creation to one.lib.form.
242 aTag = document.createElement("a");
243 aTag.privilege = data.privilege;
244 aTag.addEventListener("click", one.f.switchmanager.nodesLearnt.modal.initialize.updateNode);
245 aTag.addEventListener("mouseover", function(evt) {
246 evt.target.style.cursor = "pointer";
248 aTag.setAttribute("id", encodeURIComponent(value["nodeId"]));
249 aTag.switchDetails = value;
250 aTag.innerHTML = nodenameentry;
252 entry.push(value["nodeId"]);
253 entry.push(value["ports"]);
259 popout : function(data) {
261 $.each(data.nodeData, function(key, value) {
263 // fill up all the td's
265 var nodenameentry = value["nodeName"] ? value["nodeName"] : "No name provided";
266 entry.push(nodenameentry);
267 entry.push(value["nodeId"]);
268 entry.push(value["tierName"]);
269 entry.push(value["mac"]);
270 entry.push(value["ports"]);
271 entry.push(value["portStatus"]);
280 one.f.switchmanager.subnetGatewayConfig = {
283 addIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addIP",
284 addPorts: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addPorts",
285 removeIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_removeIP"
288 modal: "one_f_switchmanager_subnetGatewayConfig_id_modal_modal",
289 save: "one_f_switchmanager_subnetGatewayConfig_id_modal_save",
291 name : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayname",
292 gatewayIPAddress : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayipaddress",
293 nodeId: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_nodeid",
294 ports: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_ports"
299 dashlet: function($dashlet) {
300 one.lib.dashlet.empty($dashlet);
301 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.subnetGatewayConfig.name));
302 // Add gateway IP Address button
303 var url = one.f.switchmanager.rootUrl + "/subnets";
304 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, {}, function(content) {
306 if (content.privilege === 'WRITE') {
307 var button = one.lib.dashlet.button.single("Add Gateway IP Address",
308 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addIPAddress, "btn-primary", "btn-mini");
309 var $button = one.lib.dashlet.button.button(button);
310 $button.click(function() {
311 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.gateway();
314 $dashlet.append($button);
316 // Delete gateway ip address button
317 var button = one.lib.dashlet.button.single("Delete Gateway IP Address(es)",
318 one.f.switchmanager.subnetGatewayConfig.id.dashlet.removeIPAddress, "btn-primary", "btn-mini");
319 var $button = one.lib.dashlet.button.button(button);
320 $button.click(function() {
321 var requestData = {};
322 var gatewaysToDelete = [];
323 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
324 checkedCheckBoxes.each(function(index, value) {
325 gatewaysToDelete.push(checkedCheckBoxes[index].id);
327 if (gatewaysToDelete.length > 0) {
328 requestData["gatewaysToDelete"] = gatewaysToDelete.toString();
329 var url = one.f.switchmanager.rootUrl + "/subnetGateway/delete";
330 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
331 if (response.status == true) {
332 // refresh dashlet by passing dashlet div as param
333 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
335 alert(response.message);
340 $dashlet.append($button);
343 var button = one.lib.dashlet.button.single("Add Ports",
344 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addPorts, "btn-primary", "btn-mini");
345 var $button = one.lib.dashlet.button.button(button);
346 $button.click(function() {
347 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.ports();
350 $dashlet.append($button);
353 var body = one.f.switchmanager.subnetGatewayConfig.data.devices(content);
354 // first column contains checkbox. no need for header
355 content.columnNames.splice(0,0," ");
356 var $table = one.f.switchmanager.createTable(content.columnNames, body);
357 $dashlet.append($table);
361 main : function(url, requestData, callback) {
362 $.getJSON(url, requestData, function(data) {
370 gateway: function() {
371 var h3 = "Add Gateway IP Address";
372 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
373 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
375 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
376 one.f.switchmanager.subnetGatewayConfig.modal.save.gateway($modal);
378 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.gateway();
379 one.lib.modal.inject.body($modal, $body);
383 var h3 = "Add Ports";
384 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
385 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
387 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
388 one.f.switchmanager.subnetGatewayConfig.modal.save.ports($modal);
391 // TODO: Change to subnetGateway instead.
392 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
393 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.ports(nodes, nodeports);
394 one.lib.modal.inject.body($modal, $body);
400 gateway: function($modal) {
402 result['gatewayName'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
403 if(!one.f.switchmanager.validateName(result['gatewayName'])) {
404 alert("Gateway name can contain upto 255 characters");
407 result['gatewayIPAddress'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress, $modal).val();
408 one.f.switchmanager.subnetGatewayConfig.modal.ajax.gateway(result,
410 if(response.status == true) {
411 $modal.modal('hide');
412 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
414 alert(response.message);
418 ports: function($modal) {
420 var gatewayRegistryIndex = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
421 result['portsName'] = one.f.switchmanager.subnetGatewayConfig.registry.gateways[gatewayRegistryIndex];
422 result['nodeId'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId, $modal).val();
423 result['ports'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports, $modal).val();
424 if(!result['portsName'] || result['portsName'] == "") {
425 alert("No gateway chosen. Cannot add port");
428 if(!result['nodeId'] || result['nodeId'] == "") {
429 alert("Please select a node.");
432 if(!result['ports'] || result['ports'] == "") {
433 alert("Please choose a port.");
436 one.f.switchmanager.subnetGatewayConfig.modal.ajax.ports(result,
438 if(response.status == true) {
439 $modal.modal('hide');
440 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
442 alert(response.message);
448 gateway: function() {
449 var $form = $(document.createElement('form'));
450 var $fieldset = $(document.createElement('fieldset'));
452 var $label = one.lib.form.label("Name");
453 var $input = one.lib.form.input("Name");
454 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
455 $fieldset.append($label).append($input);
457 var $label = one.lib.form.label("Gateway IP Address/Mask");
458 var $input = one.lib.form.input("Gateway IP Address/Mask");
459 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress);
460 $fieldset.append($label).append($input);
462 $form.append($fieldset);
465 ports: function(nodes, nodeports) {
466 var $form = $(document.createElement('form'));
467 var $fieldset = $(document.createElement('fieldset'));
468 // gateways drop down
469 var $label = one.lib.form.label("Gateway Name");
470 var $select = one.lib.form.select.create(one.f.switchmanager.subnetGatewayConfig.registry.gateways);
471 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
472 $select.val($select.find("option:first").val());
473 $fieldset.append($label).append($select);
476 var $label = one.lib.form.label("Node ID");
477 var $select = one.lib.form.select.create(nodes);
478 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId);
479 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
480 $select.val($select.find("option:first").val());
481 $fieldset.append($label).append($select);
484 $select.change(function() {
485 // retrieve port value
486 var node = $(this).find('option:selected').attr('value');
487 one.f.switchmanager.subnetGatewayConfig.registry['currentNode'] = node;
488 var $ports = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
489 var ports = nodeports[node];
490 one.lib.form.select.inject($ports, ports);
491 one.lib.form.select.prepend($ports, { '' : 'Please Select a Port' });
492 $ports.val($ports.find("option:first").val());
496 var $label = one.lib.form.label("Select Port");
497 var $select = one.lib.form.select.create();
498 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
499 $fieldset.append($label).append($select);
501 $form.append($fieldset);
506 gateway: function(requestData, callback) {
507 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/add", requestData, function(data) {
511 ports: function(requestData, callback) {
512 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/ports/add", requestData, function(data) {
517 footer : function() {
519 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.subnetGatewayConfig.id.modal.save, "btn-success", "");
520 var $saveButton = one.lib.dashlet.button.button(saveButton);
521 footer.push($saveButton);
527 devices : function(data) {
529 one.f.switchmanager.subnetGatewayConfig.registry.gateways = [];
530 $.each(data.nodeData, function(key, value) {
532 // fill up all the td's
533 var subnetConfigObject = $.parseJSON(value["json"]);
534 var nodePorts = subnetConfigObject.nodePorts;
535 var $nodePortsContainer = $(document.createElement("div"));
537 for(var i = 0; i < nodePorts.length; i++) {
538 var nodePort = nodePorts[i];
539 $nodePortsContainer.append(nodePort + " ");
540 // add delete anchor tag to delete ports
541 var aTag = document.createElement("a");
542 aTag.setAttribute("id", encodeURIComponent(nodePort));
543 aTag.gatewayName = value["name"];
544 aTag.addEventListener("click", function(evt) {
545 var htmlPortAnchor = evt.target;
546 var requestData = {};
547 requestData["gatewayName"] = evt.target.gatewayName;
548 requestData["nodePort"] = decodeURIComponent(evt.target.id);
549 // make ajax call to delete port
550 var url = one.f.switchmanager.rootUrl + "/subnetGateway/ports/delete";
551 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
552 if(response.status == true) {
553 // refresh dashlet by passing dashlet div as param
554 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
556 alert(response.message);
561 aTag.addEventListener("mouseover", function(evt) {
562 evt.target.style.cursor = "pointer";
564 aTag.innerHTML = "Delete";
565 $nodePortsContainer.append(aTag);
566 $nodePortsContainer.append("<br/>");
569 // store gateways in the registry so that they can be used in the add ports popup
570 one.f.switchmanager.subnetGatewayConfig.registry.gateways.push(value["name"]);
572 var checkbox = document.createElement("input");
573 checkbox.setAttribute("type", "checkbox");
574 checkbox.setAttribute("id", value["name"]);
575 entry.push(checkbox);
576 entry.push(value["name"]);
577 entry.push(value["subnet"]);
578 entry.push($nodePortsContainer);
587 one.f.switchmanager.staticRouteConfig = {
590 add: "one_f_switchmanager_staticRouteConfig_id_dashlet_add",
591 remove: "one_f_switchmanager_staticRouteConfig_id_dashlet_remove"
594 modal: "one_f_switchmanager_staticRouteConfig_id_modal_modal",
595 save: "one_f_switchmanager_staticRouteConfig_id_modal_save",
597 routeName : "one_f_switchmanager_staticRouteConfig_id_modal_form_routename",
598 staticRoute : "one_f_switchmanager_staticRouteConfig_id_modal_form_staticroute",
599 nextHop : "one_f_switchmanager_staticRouteConfig_id_modal_form_nexthop",
603 dashlet: function($dashlet) {
604 one.lib.dashlet.empty($dashlet);
607 var url = one.f.switchmanager.rootUrl + "/staticRoutes";
608 one.f.switchmanager.staticRouteConfig.ajax.main(url, {}, function(content) {
610 if (content.privilege === 'WRITE') {
611 // Add static route button
612 var button = one.lib.dashlet.button.single("Add Static Route", one.f.switchmanager.staticRouteConfig.id.dashlet.add, "btn-primary", "btn-mini");
613 var $button = one.lib.dashlet.button.button(button);
614 $button.click(function() {
615 var $modal = one.f.switchmanager.staticRouteConfig.modal.initialize();
618 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.staticRouteConfig.name));
619 $dashlet.append($button);
621 // Delete static route button
622 var button = one.lib.dashlet.button.single("Delete Static Route(s)", one.f.switchmanager.staticRouteConfig.id.dashlet.remove, "btn-primary", "btn-mini");
623 var $button = one.lib.dashlet.button.button(button);
624 $button.click(function() {
625 var requestData = {};
626 var routesToDelete = [];
627 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
628 checkedCheckBoxes.each(function(index, value) {
629 routesToDelete.push(checkedCheckBoxes[index].id);
631 if (routesToDelete.length > 0) {
632 requestData["routesToDelete"] = routesToDelete.toString();
633 var url = one.f.switchmanager.rootUrl + "/staticRoute/delete";
634 one.f.switchmanager.staticRouteConfig.ajax.main(url, requestData, function(response) {
635 if (response.status == true) {
636 // refresh dashlet by passing dashlet div as param
637 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
639 alert(response.message);
644 $dashlet.append($button);
647 var body = one.f.switchmanager.staticRouteConfig.data.staticRouteConfig(content);
648 // first column contains checkbox. no need for header
649 content.columnNames.splice(0,0," ");
650 var tableHeaders = ['', 'Name', 'Static Route', 'Next Hop Address'];
651 var $table = one.f.switchmanager.createTable(tableHeaders, body);
652 $dashlet.append($table);
657 main : function(url, requestData, callback) {
658 $.getJSON(url, requestData, function(data) {
665 initialize: function() {
666 var h3 = "Add Static Route";
667 var footer = one.f.switchmanager.staticRouteConfig.modal.footer();
668 var $modal = one.lib.modal.spawn(one.f.switchmanager.staticRouteConfig.id.modal.modal, h3, "", footer);
670 $('#' + one.f.switchmanager.staticRouteConfig.id.modal.save, $modal).click(function() {
671 one.f.switchmanager.staticRouteConfig.modal.save($modal);
673 var $body = one.f.switchmanager.staticRouteConfig.modal.body();
674 one.lib.modal.inject.body($modal, $body);
677 save: function($modal) {
679 result['routeName'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.routeName, $modal).val();
680 result['staticRoute'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute, $modal).val();
681 result['nextHop'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop, $modal).val();
682 one.f.switchmanager.staticRouteConfig.modal.ajax.staticRouteConfig(result, function(response) {
683 if(response.status == true) {
684 $modal.modal('hide');
685 // refresh dashlet by passing dashlet div as param
686 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
688 // TODO: Show error message in a error message label instead.
689 alert(response.message);
694 var $form = $(document.createElement('form'));
695 var $fieldset = $(document.createElement('fieldset'));
697 var $label = one.lib.form.label("Name");
698 var $input = one.lib.form.input("Name");
699 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.routeName);
700 $fieldset.append($label).append($input);
701 // static route IP Mask
702 var $label = one.lib.form.label("Static Route");
703 var $input = one.lib.form.input("Static Route");
704 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute);
705 $fieldset.append($label).append($input);
706 // static route IP Mask
707 var $label = one.lib.form.label("Next Hop");
708 var $input = one.lib.form.input("Next Hop");
709 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop);
710 $fieldset.append($label).append($input);
712 $form.append($fieldset);
716 staticRouteConfig: function(requestData, callback) {
717 $.getJSON(one.f.switchmanager.rootUrl + "/staticRoute/add", requestData, function(data) {
725 footer : function() {
727 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.staticRouteConfig.id.modal.save, "btn-success", "");
728 var $saveButton = one.lib.dashlet.button.button(saveButton);
729 footer.push($saveButton);
735 staticRouteConfig : function(data) {
737 $.each(data.nodeData, function(key, value) {
739 // fill up all the td's
741 var checkbox = document.createElement("input");
742 checkbox.setAttribute("type", "checkbox");
743 checkbox.setAttribute("id", value["name"]);
744 entry.push(checkbox);
745 entry.push(value["name"]);
746 entry.push(value["staticRoute"]);
747 entry.push(value["nextHop"]);
756 one.f.switchmanager.spanPortConfig = {
759 add: "one_f_switchmanager_spanPortConfig_id_dashlet_add",
760 remove: "one_f_switchmanager_spanPortConfig_id_dashlet_remove"
763 modal: "one_f_switchmanager_spanPortConfig_id_modal_modal",
764 save: "one_f_switchmanager_spanPortConfig_id_modal_save",
766 name : "one_f_switchmanager_spanPortConfig_id_modal_form_name",
767 nodes : "one_f_switchmanager_spanPortConfig_id_modal_form_nodes",
768 port : "one_f_switchmanager_spanPortConfig_id_modal_form_port",
772 dashlet: function($dashlet) {
773 one.lib.dashlet.empty($dashlet);
775 //populate table in dashlet
776 var url = one.f.switchmanager.rootUrl + "/spanPorts";
777 one.f.switchmanager.spanPortConfig.ajax.main(url, {}, function(content) {
779 if (content.privilege === 'WRITE') {
781 // Add span port button
782 var button = one.lib.dashlet.button.single("Add Span Port", one.f.switchmanager.spanPortConfig.id.dashlet.add, "btn-primary", "btn-mini");
783 var $button = one.lib.dashlet.button.button(button);
785 $button.click(function() {
786 var $modal = one.f.switchmanager.spanPortConfig.modal.initialize();
789 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.spanPortConfig.name));
790 $dashlet.append($button);
792 // Delete span port button
793 var button = one.lib.dashlet.button.single("Delete SPAN Port(s)", one.f.switchmanager.spanPortConfig.id.dashlet.remove, "btn-primary", "btn-mini");
794 var $button = one.lib.dashlet.button.button(button);
795 $button.click(function() {
797 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
798 if (checkedCheckBoxes.length > 0) {
799 var spanPortsToDelete = "";
800 checkedCheckBoxes.each(function(index, value) {
801 spanPortsToDelete += checkedCheckBoxes[index].spanPort + "###";
804 var requestData = {};
805 requestData["spanPortsToDelete"] = spanPortsToDelete;
806 var url = one.f.switchmanager.rootUrl + "/spanPorts/delete";
807 one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) {
808 if (response.status == true) {
809 // refresh dashlet by passing dashlet div as param
810 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
812 alert(response.message);
817 $dashlet.append($button);
820 var body = one.f.switchmanager.spanPortConfig.data.devices(content);
821 // first column contains the checkbox. no header required.
822 content.columnNames.splice(0,0," ");
823 var $table = one.f.switchmanager.createTable(content.columnNames, body);
824 $dashlet.append($table);
829 main : function(url, requestData, callback) {
830 $.getJSON(url, requestData, function(data) {
837 initialize: function() {
838 var h3 = "Add SPAN Port";
839 var footer = one.f.switchmanager.spanPortConfig.modal.footer();
840 var $modal = one.lib.modal.spawn(one.f.switchmanager.spanPortConfig.id.modal.modal, h3, "", footer);
842 $('#' + one.f.switchmanager.spanPortConfig.id.modal.save, $modal).click(function() {
843 one.f.switchmanager.spanPortConfig.modal.save($modal);
846 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
847 var $body = one.f.switchmanager.spanPortConfig.modal.body(nodes, nodeports);
848 one.lib.modal.inject.body($modal, $body);
852 save: function($modal) {
854 result['nodeId'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.nodes, $modal).val();
855 result['spanPort'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port, $modal).val();
856 one.f.switchmanager.spanPortConfig.modal.ajax.saveSpanPortConfig(result,
858 if(response.status == true) {
859 $modal.modal('hide');
860 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
862 alert(response.message);
867 body: function(nodes, nodeports) {
868 var $form = $(document.createElement('form'));
869 var $fieldset = $(document.createElement('fieldset'));
871 var $label = one.lib.form.label("Node");
872 var $select = one.lib.form.select.create(nodes);
873 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
874 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.nodes);
877 $select.change(function() {
878 // retrieve port value
879 var node = $(this).find('option:selected').attr('value');
880 one.f.switchmanager.spanPortConfig.registry['currentNode'] = node;
881 var $ports = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port);
882 var ports = nodeports[node];
883 one.lib.form.select.inject($ports, ports);
886 $fieldset.append($label).append($select);
888 var $label = one.lib.form.label("Input Port");
889 var $select = one.lib.form.select.create();
890 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.port);
891 $fieldset.append($label).append($select);
894 $form.append($fieldset);
898 nodes: function(callback) {
899 $.getJSON(one.f.switchmanager.rootUrl + "/nodeports", function(data) {
900 var nodes = one.f.switchmanager.spanPortConfig.modal.data.nodes(data);
901 var nodeports = data;
902 one.f.switchmanager.spanPortConfig.registry['nodeports'] = nodeports;
903 callback(nodes, nodeports);
906 saveSpanPortConfig: function(requestData, callback) {
908 resource["jsonData"] = JSON.stringify(requestData);
909 $.getJSON(one.f.switchmanager.rootUrl + "/spanPorts/add", resource, function(data) {
915 nodes : function(data) {
917 $.each(data, function(key, value) {
923 footer : function() {
925 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.spanPortConfig.id.modal.save, "btn-success", "");
926 var $saveButton = one.lib.dashlet.button.button(saveButton);
927 footer.push($saveButton);
933 devices : function(data) {
935 $.each(data.nodeData, function(key, value) {
937 // fill up all the td's
939 var checkbox = document.createElement("input");
940 checkbox.setAttribute("type", "checkbox");
941 checkbox.spanPort = value.json;
942 entry.push(checkbox);
943 entry.push(value["nodeName"]);
944 entry.push(value["spanPort"]);
955 $(one.f.menu.left.top).each(function(index, value) {
956 var $nav = $(".nav", "#left-top");
957 one.main.page.dashlet($nav, value);
960 $(one.f.menu.left.bottom).each(function(index, value) {
961 var $nav = $(".nav", "#left-bottom");
962 one.main.page.dashlet($nav, value);
965 $(one.f.menu.right.bottom).each(function(index, value) {
966 var $nav = $(".nav", "#right-bottom");
967 one.main.page.dashlet($nav, value);
970 one.f.addPopOut = function() {
971 $img1 = $(document.createElement("img"));
972 $img1.attr("src", "/img/Expand16T.png");
973 $img1.attr("style", "float: right;");
974 $img1.hover(function() {
975 $img1.css("cursor", "pointer");
977 $img1.click(function() {
978 var $modal = one.f.switchmanager.nodesLearnt.modal.initialize.popout();
979 $modal.css('width', 'auto');
980 $modal.css('margin-left', '-40%');
983 $dash1 = $($("#left-top .nav")[0]);
984 $dash1.append($img1);
989 $('.dash .nav a', '#main').click(function() {
991 var $li = $(this).parent();
992 var $ul = $li.parent();
993 one.lib.nav.unfocus($ul);
994 $li.addClass('active');
995 // clear respective dashlet
996 var $dashlet = $ul.parent().find('.dashlet');
997 one.lib.dashlet.empty($dashlet);
999 // callback based on menu
1000 var id = $(this).attr('id');
1001 var menu = one.f.dashlet;
1003 case menu.nodesLearnt.id:
1004 one.f.switchmanager.nodesLearnt.dashlet($dashlet);
1006 case menu.staticRouteConfig.id:
1007 one.f.switchmanager.staticRouteConfig.dashlet($dashlet);
1009 case menu.subnetGatewayConfig.id:
1010 one.f.switchmanager.subnetGatewayConfig.dashlet($dashlet);
1012 case menu.spanPortConfig.id:
1013 one.f.switchmanager.spanPortConfig.dashlet($dashlet);
1018 // activate first tab on each dashlet
1019 $('.dash .nav').each(function(index, value) {
1020 $($(value).find('li')[0]).find('a').click();