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", "Port Status"], body);
94 $dashlet.append($table);
99 main : function(url, callback) {
100 $.getJSON(url, function(data) {
107 updateNode: function(evt) {
108 var nodeId = decodeURIComponent(evt.target.id);
109 var h3 = "Update node information";
110 var footer = one.f.switchmanager.nodesLearnt.modal.footer.updateNode();
111 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
114 $('#' + one.f.switchmanager.nodesLearnt.id.modal.save, $modal).click(function() {
115 one.f.switchmanager.nodesLearnt.modal.save($modal);
117 // inject body (nodePorts)
118 one.f.switchmanager.nodesLearnt.ajax.main(one.f.switchmanager.rootUrl + "/tiers", function(tiers) {
119 var $body = one.f.switchmanager.nodesLearnt.modal.body.updateNode(nodeId, evt.target.switchDetails, tiers);
120 one.lib.modal.inject.body($modal, $body);
125 var h3 = "Nodes Learnt";
126 var footer = one.f.switchmanager.nodesLearnt.modal.footer.popout();
127 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
128 var $body = one.f.switchmanager.nodesLearnt.modal.body.popout($modal);
133 updateNode: function(nodeId, portStatus, switchDetails, tiers) {
134 var $form = $(document.createElement('form'));
135 var $fieldset = $(document.createElement('fieldset'));
136 // node ID. not editable.
137 var $label = one.lib.form.label("Node ID");
138 var $input = one.lib.form.input("node id");
139 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeId);
140 $input.attr("disabled", true);
141 $input.attr("value", nodeId);
142 $fieldset.append($label).append($input);
144 var $label = one.lib.form.label("Node Name");
145 var $input = one.lib.form.input("Node Name");
146 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeName);
147 if(switchDetails["nodeName"] != null) {
148 $input.attr('value', switchDetails["nodeName"]);
150 $fieldset.append($label).append($input);
151 // Port Status. not editable.
152 var $label = one.lib.form.label("Port Status");
153 var $input = one.lib.form.input("Port Status");
154 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.portStatus);
155 $input.attr("disabled", true);
156 $input.attr("value", portStatus);
157 $fieldset.append($label).append($input);
159 var $label = one.lib.form.label("Tier");
160 var $select = one.lib.form.select.create(tiers);
161 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.tier);
162 $select.val(switchDetails["tier"]);
163 $fieldset.append($label).append($select);
165 var $label = one.lib.form.label("Operation Mode");
166 var $select = one.lib.form.select.create(
167 ["Allow reactive forwarding", "Proactive forwarding only"]);
168 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.operationMode);
169 $select.val(switchDetails["mode"]);
170 $fieldset.append($label).append($select);
172 $form.append($fieldset);
175 popout: function($modal) {
176 var url = one.f.switchmanager.rootUrl + "/nodesLearnt";
177 one.f.switchmanager.nodesLearnt.ajax.main(url, function(content) {
178 var tableContent = one.f.switchmanager.nodesLearnt.data.popout(content);
179 var $table = one.f.switchmanager.createTable(content.columnNames, tableContent);
180 one.lib.modal.inject.body($modal, $table);
184 save: function($modal) {
186 result['nodeName'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeName, $modal).val();
187 if(!one.f.switchmanager.validateName(result['nodeName'])) {
188 alert("Node name can contain upto 255 characters");
191 result['nodeId'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeId, $modal).val();
192 result['tier'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.tier, $modal).val();
193 result['operationMode'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.operationMode, $modal).val();
194 one.f.switchmanager.nodesLearnt.modal.ajax(result,
196 if(response.status == true) {
197 $modal.modal('hide');
198 one.topology.update(); // refresh visual topology with new name
199 // TODO: Identify dashlet by inserting a nodesLearnt div
200 // in the dashlet() instead
201 one.f.switchmanager.nodesLearnt.dashlet($("#left-top .dashlet"));
203 alert(response.message);
208 ajax: function(requestData, callback) {
209 $.getJSON(one.f.switchmanager.rootUrl + "/nodesLearnt/update", requestData, function(response) {
214 updateNode: function() {
217 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.nodesLearnt.id.modal.save, "btn-success", "");
218 var $saveButton = one.lib.dashlet.button.button(saveButton);
219 footer.push($saveButton);
224 // TODO: Maybe put a close button in the footer?
231 abridged : function(data) {
233 $.each(data.nodeData, function(key, value) {
236 var nodenameentry = value["nodeName"] ? value["nodeName"] : "Click to update";
237 // TODO: Move anchor tag creation to one.lib.form.
238 var aTag = document.createElement("a");
239 aTag.setAttribute("id", encodeURIComponent(value["nodeId"]));
240 aTag.switchDetails = value;
241 aTag.addEventListener("click", one.f.switchmanager.nodesLearnt.modal.initialize.updateNode);
242 aTag.addEventListener("mouseover", function(evt) {
243 evt.target.style.cursor = "pointer";
245 aTag.innerHTML = nodenameentry;
247 entry.push(value["nodeId"]);
248 entry.push(value["ports"]);
249 entry.push(value["portStatus"]);
255 popout : function(data) {
257 $.each(data.nodeData, function(key, value) {
259 // fill up all the td's
261 var nodenameentry = value["nodeName"] ? value["nodeName"] : "No name provided";
262 entry.push(nodenameentry);
263 entry.push(value["nodeId"]);
264 entry.push(value["tierName"]);
265 entry.push(value["mac"]);
266 entry.push(value["ports"]);
267 entry.push(value["portStatus"]);
276 one.f.switchmanager.subnetGatewayConfig = {
279 addIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addIP",
280 addPorts: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addPorts",
281 removeIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_removeIP"
284 modal: "one_f_switchmanager_subnetGatewayConfig_id_modal_modal",
285 save: "one_f_switchmanager_subnetGatewayConfig_id_modal_save",
287 name : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayname",
288 gatewayIPAddress : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayipaddress",
289 nodeId: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_nodeid",
290 ports: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_ports"
295 dashlet: function($dashlet) {
296 one.lib.dashlet.empty($dashlet);
297 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.subnetGatewayConfig.name));
298 // Add gateway IP Address button
300 var button = one.lib.dashlet.button.single("Add Gateway IP Address",
301 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addIPAddress, "btn-primary", "btn-mini");
302 var $button = one.lib.dashlet.button.button(button);
303 $button.click(function() {
304 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.gateway();
307 $dashlet.append($button);
310 // Delete gateway ip address button
311 var button = one.lib.dashlet.button.single("Delete Gateway IP Address(es)",
312 one.f.switchmanager.subnetGatewayConfig.id.dashlet.removeIPAddress, "btn-primary", "btn-mini");
313 var $button = one.lib.dashlet.button.button(button);
314 $button.click(function() {
315 var requestData = {};
316 var gatewaysToDelete = [];
317 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
318 checkedCheckBoxes.each(function(index, value) {
319 gatewaysToDelete.push(checkedCheckBoxes[index].id);
321 if(gatewaysToDelete.length > 0) {
322 requestData["gatewaysToDelete"] = gatewaysToDelete.toString();
323 var url = one.f.switchmanager.rootUrl + "/subnetGateway/delete";
324 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
325 if(response.status == true) {
326 // refresh dashlet by passing dashlet div as param
327 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
329 alert(response.message);
334 $dashlet.append($button);
337 var button = one.lib.dashlet.button.single("Add Ports",
338 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addPorts, "btn-primary", "btn-mini");
339 var $button = one.lib.dashlet.button.button(button);
340 $button.click(function() {
341 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.ports();
344 $dashlet.append($button);
346 var url = one.f.switchmanager.rootUrl + "/subnets";
347 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, {}, function(content) {
348 var body = one.f.switchmanager.subnetGatewayConfig.data.devices(content);
349 // first column contains checkbox. no need for header
350 content.columnNames.splice(0,0," ");
351 var $table = one.f.switchmanager.createTable(content.columnNames, body);
352 $dashlet.append($table);
356 main : function(url, requestData, callback) {
357 $.getJSON(url, requestData, function(data) {
365 gateway: function() {
366 var h3 = "Add Gateway IP Address";
367 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
368 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
370 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
371 one.f.switchmanager.subnetGatewayConfig.modal.save.gateway($modal);
373 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.gateway();
374 one.lib.modal.inject.body($modal, $body);
378 var h3 = "Add Ports";
379 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
380 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
382 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
383 one.f.switchmanager.subnetGatewayConfig.modal.save.ports($modal);
386 // TODO: Change to subnetGateway instead.
387 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
388 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.ports(nodes, nodeports);
389 one.lib.modal.inject.body($modal, $body);
395 gateway: function($modal) {
397 result['gatewayName'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
398 if(!one.f.switchmanager.validateName(result['gatewayName'])) {
399 alert("Gateway name can contain upto 255 characters");
402 result['gatewayIPAddress'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress, $modal).val();
403 one.f.switchmanager.subnetGatewayConfig.modal.ajax.gateway(result,
405 if(response.status == true) {
406 $modal.modal('hide');
407 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
409 alert(response.message);
413 ports: function($modal) {
415 var gatewayRegistryIndex = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
416 result['portsName'] = one.f.switchmanager.subnetGatewayConfig.registry.gateways[gatewayRegistryIndex];
417 result['nodeId'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId, $modal).val();
418 result['ports'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports, $modal).val();
419 if(!result['portsName'] || result['portsName'] == "") {
420 alert("No gateway chosen. Cannot add port");
423 if(!result['nodeId'] || result['nodeId'] == "") {
424 alert("Please select a node.");
427 if(!result['ports'] || result['ports'] == "") {
428 alert("Please choose a port.");
431 one.f.switchmanager.subnetGatewayConfig.modal.ajax.ports(result,
433 if(response.status == true) {
434 $modal.modal('hide');
435 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
437 alert(response.message);
443 gateway: function() {
444 var $form = $(document.createElement('form'));
445 var $fieldset = $(document.createElement('fieldset'));
447 var $label = one.lib.form.label("Name");
448 var $input = one.lib.form.input("Name");
449 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
450 $fieldset.append($label).append($input);
452 var $label = one.lib.form.label("Gateway IP Address/Mask");
453 var $input = one.lib.form.input("Gateway IP Address/Mask");
454 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress);
455 $fieldset.append($label).append($input);
457 $form.append($fieldset);
460 ports: function(nodes, nodeports) {
461 var $form = $(document.createElement('form'));
462 var $fieldset = $(document.createElement('fieldset'));
463 // gateways drop down
464 var $label = one.lib.form.label("Gateway Name");
465 var $select = one.lib.form.select.create(one.f.switchmanager.subnetGatewayConfig.registry.gateways);
466 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
467 $select.val($select.find("option:first").val());
468 $fieldset.append($label).append($select);
471 var $label = one.lib.form.label("Node ID");
472 var $select = one.lib.form.select.create(nodes);
473 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId);
474 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
475 $select.val($select.find("option:first").val());
476 $fieldset.append($label).append($select);
479 $select.change(function() {
480 // retrieve port value
481 var node = $(this).find('option:selected').attr('value');
482 one.f.switchmanager.subnetGatewayConfig.registry['currentNode'] = node;
483 var $ports = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
484 var ports = nodeports[node];
485 one.lib.form.select.inject($ports, ports);
486 one.lib.form.select.prepend($ports, { '' : 'Please Select a Port' });
487 $ports.val($ports.find("option:first").val());
491 var $label = one.lib.form.label("Select Port");
492 var $select = one.lib.form.select.create();
493 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
494 $fieldset.append($label).append($select);
496 $form.append($fieldset);
501 gateway: function(requestData, callback) {
502 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/add", requestData, function(data) {
506 ports: function(requestData, callback) {
507 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/ports/add", requestData, function(data) {
512 footer : function() {
515 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.subnetGatewayConfig.id.modal.save, "btn-success", "");
516 var $saveButton = one.lib.dashlet.button.button(saveButton);
517 footer.push($saveButton);
524 devices : function(data) {
526 one.f.switchmanager.subnetGatewayConfig.registry.gateways = [];
527 $.each(data.nodeData, function(key, value) {
529 // fill up all the td's
530 var subnetConfigObject = $.parseJSON(value["json"]);
531 var nodePorts = subnetConfigObject.nodePorts;
532 var $nodePortsContainer = $(document.createElement("div"));
534 for(var i = 0; i < nodePorts.length; i++) {
535 var nodePort = nodePorts[i];
536 $nodePortsContainer.append(nodePort + " ");
537 // add delete anchor tag to delete ports
538 var aTag = document.createElement("a");
539 aTag.setAttribute("id", encodeURIComponent(nodePort));
540 aTag.gatewayName = value["name"];
541 aTag.addEventListener("click", function(evt) {
542 var htmlPortAnchor = evt.target;
543 var requestData = {};
544 requestData["gatewayName"] = evt.target.gatewayName;
545 requestData["nodePort"] = decodeURIComponent(evt.target.id);
546 // make ajax call to delete port
547 var url = one.f.switchmanager.rootUrl + "/subnetGateway/ports/delete";
548 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
549 if(response.status == true) {
550 // refresh dashlet by passing dashlet div as param
551 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
553 alert(response.message);
558 aTag.addEventListener("mouseover", function(evt) {
559 evt.target.style.cursor = "pointer";
561 aTag.innerHTML = "Delete";
562 $nodePortsContainer.append(aTag);
563 $nodePortsContainer.append("<br/>");
566 // store gateways in the registry so that they can be used in the add ports popup
567 one.f.switchmanager.subnetGatewayConfig.registry.gateways.push(value["name"]);
569 var checkbox = document.createElement("input");
570 checkbox.setAttribute("type", "checkbox");
571 checkbox.setAttribute("id", value["name"]);
572 entry.push(checkbox);
573 entry.push(value["name"]);
574 entry.push(value["subnet"]);
575 entry.push($nodePortsContainer);
584 one.f.switchmanager.staticRouteConfig = {
587 add: "one_f_switchmanager_staticRouteConfig_id_dashlet_add",
588 remove: "one_f_switchmanager_staticRouteConfig_id_dashlet_remove"
591 modal: "one_f_switchmanager_staticRouteConfig_id_modal_modal",
592 save: "one_f_switchmanager_staticRouteConfig_id_modal_save",
594 routeName : "one_f_switchmanager_staticRouteConfig_id_modal_form_routename",
595 staticRoute : "one_f_switchmanager_staticRouteConfig_id_modal_form_staticroute",
596 nextHop : "one_f_switchmanager_staticRouteConfig_id_modal_form_nexthop",
600 dashlet: function($dashlet) {
601 one.lib.dashlet.empty($dashlet);
604 // Add static route button
605 var button = one.lib.dashlet.button.single("Add Static Route",
606 one.f.switchmanager.staticRouteConfig.id.dashlet.add, "btn-primary", "btn-mini");
607 var $button = one.lib.dashlet.button.button(button);
608 $button.click(function() {
609 var $modal = one.f.switchmanager.staticRouteConfig.modal.initialize();
612 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.staticRouteConfig.name));
613 $dashlet.append($button);
615 // Delete static route button
616 var button = one.lib.dashlet.button.single("Delete Static Route(s)",
617 one.f.switchmanager.staticRouteConfig.id.dashlet.remove, "btn-primary", "btn-mini");
618 var $button = one.lib.dashlet.button.button(button);
619 $button.click(function() {
620 var requestData = {};
621 var routesToDelete = [];
622 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
623 checkedCheckBoxes.each(function(index, value) {
624 routesToDelete.push(checkedCheckBoxes[index].id);
626 if(routesToDelete.length > 0) {
627 requestData["routesToDelete"] = routesToDelete.toString();
628 var url = one.f.switchmanager.rootUrl + "/staticRoute/delete";
629 one.f.switchmanager.staticRouteConfig.ajax.main(url, requestData, function(response) {
630 if(response.status == true) {
631 // refresh dashlet by passing dashlet div as param
632 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
634 alert(response.message);
639 $dashlet.append($button);
642 var url = one.f.switchmanager.rootUrl + "/staticRoutes";
643 one.f.switchmanager.staticRouteConfig.ajax.main(url, {}, function(content) {
644 var body = one.f.switchmanager.staticRouteConfig.data.staticRouteConfig(content);
645 // first column contains checkbox. no need for header
646 content.columnNames.splice(0,0," ");
647 var $table = one.f.switchmanager.createTable(content.columnNames, body);
648 $dashlet.append($table);
653 main : function(url, requestData, callback) {
654 $.getJSON(url, requestData, function(data) {
661 initialize: function() {
662 var h3 = "Add Static Route";
663 var footer = one.f.switchmanager.staticRouteConfig.modal.footer();
664 var $modal = one.lib.modal.spawn(one.f.switchmanager.staticRouteConfig.id.modal.modal, h3, "", footer);
666 $('#' + one.f.switchmanager.staticRouteConfig.id.modal.save, $modal).click(function() {
667 one.f.switchmanager.staticRouteConfig.modal.save($modal);
669 var $body = one.f.switchmanager.staticRouteConfig.modal.body();
670 one.lib.modal.inject.body($modal, $body);
673 save: function($modal) {
675 result['routeName'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.routeName, $modal).val();
676 result['staticRoute'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute, $modal).val();
677 result['nextHop'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop, $modal).val();
678 one.f.switchmanager.staticRouteConfig.modal.ajax.staticRouteConfig(result, function(response) {
679 if(response.status == true) {
680 $modal.modal('hide');
681 // refresh dashlet by passing dashlet div as param
682 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
684 // TODO: Show error message in a error message label instead.
685 alert(response.message);
690 var $form = $(document.createElement('form'));
691 var $fieldset = $(document.createElement('fieldset'));
693 var $label = one.lib.form.label("Name");
694 var $input = one.lib.form.input("Name");
695 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.routeName);
696 $fieldset.append($label).append($input);
697 // static route IP Mask
698 var $label = one.lib.form.label("Static Route");
699 var $input = one.lib.form.input("Static Route");
700 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute);
701 $fieldset.append($label).append($input);
702 // static route IP Mask
703 var $label = one.lib.form.label("Next Hop");
704 var $input = one.lib.form.input("Next Hop");
705 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop);
706 $fieldset.append($label).append($input);
708 $form.append($fieldset);
712 staticRouteConfig: function(requestData, callback) {
713 $.getJSON(one.f.switchmanager.rootUrl + "/staticRoute/add", requestData, function(data) {
721 footer : function() {
724 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.staticRouteConfig.id.modal.save, "btn-success", "");
725 var $saveButton = one.lib.dashlet.button.button(saveButton);
726 footer.push($saveButton);
733 staticRouteConfig : function(data) {
735 $.each(data.nodeData, function(key, value) {
737 // fill up all the td's
739 var checkbox = document.createElement("input");
740 checkbox.setAttribute("type", "checkbox");
741 checkbox.setAttribute("id", value["name"]);
742 entry.push(checkbox);
743 entry.push(value["name"]);
744 entry.push(value["staticRoute"]);
745 entry.push(value["nextHop"]);
754 one.f.switchmanager.spanPortConfig = {
757 add: "one_f_switchmanager_spanPortConfig_id_dashlet_add",
758 remove: "one_f_switchmanager_spanPortConfig_id_dashlet_remove"
761 modal: "one_f_switchmanager_spanPortConfig_id_modal_modal",
762 save: "one_f_switchmanager_spanPortConfig_id_modal_save",
764 name : "one_f_switchmanager_spanPortConfig_id_modal_form_name",
765 nodes : "one_f_switchmanager_spanPortConfig_id_modal_form_nodes",
766 port : "one_f_switchmanager_spanPortConfig_id_modal_form_port",
770 dashlet: function($dashlet) {
771 one.lib.dashlet.empty($dashlet);
774 // Add span port button
775 var button = one.lib.dashlet.button.single("Add Span Port", one.f.switchmanager.spanPortConfig.id.dashlet.add, "btn-primary", "btn-mini");
776 var $button = one.lib.dashlet.button.button(button);
778 $button.click(function() {
779 var $modal = one.f.switchmanager.spanPortConfig.modal.initialize();
782 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.spanPortConfig.name));
783 $dashlet.append($button);
785 // Delete span port button
786 var button = one.lib.dashlet.button.single("Delete SPAN Port(s)",
787 one.f.switchmanager.spanPortConfig.id.dashlet.remove, "btn-primary", "btn-mini");
788 var $button = one.lib.dashlet.button.button(button);
789 $button.click(function() {
791 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
792 if(checkedCheckBoxes.length > 0) {
793 var spanPortsToDelete = "";
794 checkedCheckBoxes.each(function(index, value) {
795 spanPortsToDelete += checkedCheckBoxes[index].spanPort + "###";
798 var requestData = {};
799 requestData["spanPortsToDelete"] = spanPortsToDelete;
800 var url = one.f.switchmanager.rootUrl + "/spanPorts/delete";
801 one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) {
802 if(response.status == true) {
803 // refresh dashlet by passing dashlet div as param
804 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
806 alert(response.message);
811 $dashlet.append($button);
814 //populate table in dashlet
815 var url = one.f.switchmanager.rootUrl + "/spanPorts";
816 one.f.switchmanager.spanPortConfig.ajax.main(url, {}, function(content) {
817 var body = one.f.switchmanager.spanPortConfig.data.devices(content);
818 // first column contains the checkbox. no header required.
819 content.columnNames.splice(0,0," ");
820 var $table = one.f.switchmanager.createTable(content.columnNames, body);
821 $dashlet.append($table);
826 main : function(url, requestData, callback) {
827 $.getJSON(url, requestData, function(data) {
834 initialize: function() {
835 var h3 = "Add SPAN Port";
836 var footer = one.f.switchmanager.spanPortConfig.modal.footer();
837 var $modal = one.lib.modal.spawn(one.f.switchmanager.spanPortConfig.id.modal.modal, h3, "", footer);
839 $('#' + one.f.switchmanager.spanPortConfig.id.modal.save, $modal).click(function() {
840 one.f.switchmanager.spanPortConfig.modal.save($modal);
843 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
844 var $body = one.f.switchmanager.spanPortConfig.modal.body(nodes, nodeports);
845 one.lib.modal.inject.body($modal, $body);
849 save: function($modal) {
851 result['nodeId'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.nodes, $modal).val();
852 result['spanPort'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port, $modal).val();
853 one.f.switchmanager.spanPortConfig.modal.ajax.saveSpanPortConfig(result,
855 if(response.status == true) {
856 $modal.modal('hide');
857 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
859 alert(response.message);
864 body: function(nodes, nodeports) {
865 var $form = $(document.createElement('form'));
866 var $fieldset = $(document.createElement('fieldset'));
868 var $label = one.lib.form.label("Node");
869 var $select = one.lib.form.select.create(nodes);
870 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
871 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.nodes);
874 $select.change(function() {
875 // retrieve port value
876 var node = $(this).find('option:selected').attr('value');
877 one.f.switchmanager.spanPortConfig.registry['currentNode'] = node;
878 var $ports = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port);
879 var ports = nodeports[node];
880 one.lib.form.select.inject($ports, ports);
883 $fieldset.append($label).append($select);
885 var $label = one.lib.form.label("Input Port");
886 var $select = one.lib.form.select.create();
887 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.port);
888 $fieldset.append($label).append($select);
891 $form.append($fieldset);
895 nodes: function(callback) {
896 $.getJSON(one.f.switchmanager.rootUrl + "/nodeports", function(data) {
897 var nodes = one.f.switchmanager.spanPortConfig.modal.data.nodes(data);
898 var nodeports = data;
899 one.f.switchmanager.spanPortConfig.registry['nodeports'] = nodeports;
900 callback(nodes, nodeports);
903 saveSpanPortConfig: function(requestData, callback) {
905 resource["jsonData"] = JSON.stringify(requestData);
906 $.getJSON(one.f.switchmanager.rootUrl + "/spanPorts/add", resource, function(data) {
912 nodes : function(data) {
914 $.each(data, function(key, value) {
920 footer : function() {
923 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.spanPortConfig.id.modal.save, "btn-success", "");
924 var $saveButton = one.lib.dashlet.button.button(saveButton);
925 footer.push($saveButton);
932 devices : function(data) {
934 $.each(data.nodeData, function(key, value) {
936 // fill up all the td's
938 var checkbox = document.createElement("input");
939 checkbox.setAttribute("type", "checkbox");
940 checkbox.spanPort = value.json;
941 entry.push(checkbox);
942 entry.push(value["nodeName"]);
943 entry.push(value["spanPort"]);
954 $(one.f.menu.left.top).each(function(index, value) {
955 var $nav = $(".nav", "#left-top");
956 one.main.page.dashlet($nav, value);
959 $(one.f.menu.left.bottom).each(function(index, value) {
960 var $nav = $(".nav", "#left-bottom");
961 one.main.page.dashlet($nav, value);
964 $(one.f.menu.right.bottom).each(function(index, value) {
965 var $nav = $(".nav", "#right-bottom");
966 one.main.page.dashlet($nav, value);
969 one.f.addPopOut = function() {
970 $img1 = $(document.createElement("img"));
971 $img1.attr("src", "/img/Expand16T.png");
972 $img1.attr("style", "float: right;");
973 $img1.hover(function() {
974 $img1.css("cursor", "pointer");
976 $img1.click(function() {
977 var $modal = one.f.switchmanager.nodesLearnt.modal.initialize.popout();
978 $modal.css('width', 'auto');
979 $modal.css('margin-left', '-40%');
982 $dash1 = $($("#left-top .nav")[0]);
983 $dash1.append($img1);
988 $('.dash .nav a', '#main').click(function() {
990 var $li = $(this).parent();
991 var $ul = $li.parent();
992 one.lib.nav.unfocus($ul);
993 $li.addClass('active');
994 // clear respective dashlet
995 var $dashlet = $ul.parent().find('.dashlet');
996 one.lib.dashlet.empty($dashlet);
998 // callback based on menu
999 var id = $(this).attr('id');
1000 var menu = one.f.dashlet;
1002 case menu.nodesLearnt.id:
1003 one.f.switchmanager.nodesLearnt.dashlet($dashlet);
1005 case menu.staticRouteConfig.id:
1006 one.f.switchmanager.staticRouteConfig.dashlet($dashlet);
1008 case menu.subnetGatewayConfig.id:
1009 one.f.switchmanager.subnetGatewayConfig.dashlet($dashlet);
1011 case menu.spanPortConfig.id:
1012 one.f.switchmanager.spanPortConfig.dashlet($dashlet);
1017 // activate first tab on each dashlet
1018 $('.dash .nav').each(function(index, value) {
1019 $($(value).find('li')[0]).find('a').click();