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 var nodeId = decodeURIComponent(evt.target.id);
108 var h3 = "Update Node Information";
109 var footer = one.f.switchmanager.nodesLearnt.modal.footer.updateNode();
110 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
113 $('#' + one.f.switchmanager.nodesLearnt.id.modal.save, $modal).click(function() {
114 one.f.switchmanager.nodesLearnt.modal.save($modal);
116 // inject body (nodePorts)
117 one.f.switchmanager.nodesLearnt.ajax.main(one.f.switchmanager.rootUrl + "/tiers", function(tiers) {
118 var $body = one.f.switchmanager.nodesLearnt.modal.body.updateNode(nodeId, evt.target.switchDetails, tiers);
119 one.lib.modal.inject.body($modal, $body);
124 var h3 = "Nodes Learnt";
125 var footer = one.f.switchmanager.nodesLearnt.modal.footer.popout();
126 var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
127 var $body = one.f.switchmanager.nodesLearnt.modal.body.popout($modal);
132 updateNode: function(nodeId, switchDetails, tiers) {
133 var $form = $(document.createElement('form'));
134 var $fieldset = $(document.createElement('fieldset'));
135 // node ID. not editable.
136 var $label = one.lib.form.label("Node ID");
137 var $input = one.lib.form.input("node id");
138 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeId);
139 $input.attr("disabled", true);
140 $input.attr("value", nodeId);
141 $fieldset.append($label).append($input);
143 var $label = one.lib.form.label("Node Name");
144 var $input = one.lib.form.input("Node Name");
145 $input.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.nodeName);
146 if(switchDetails["nodeName"] != null) {
147 $input.attr('value', switchDetails["nodeName"]);
149 $fieldset.append($label).append($input);
151 var $label = one.lib.form.label("Tier");
152 var $select = one.lib.form.select.create(tiers);
153 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.tier);
154 $select.val(switchDetails["tier"]);
155 $fieldset.append($label).append($select);
157 var $label = one.lib.form.label("Operation Mode");
158 var $select = one.lib.form.select.create(
159 ["Allow reactive forwarding", "Proactive forwarding only"]);
160 $select.attr('id', one.f.switchmanager.nodesLearnt.id.modal.form.operationMode);
161 $select.val(switchDetails["mode"]);
162 $fieldset.append($label).append($select);
164 $form.append($fieldset);
167 popout: function($modal) {
168 var url = one.f.switchmanager.rootUrl + "/nodesLearnt";
169 one.f.switchmanager.nodesLearnt.ajax.main(url, function(content) {
170 var tableContent = one.f.switchmanager.nodesLearnt.data.popout(content);
171 var $table = one.f.switchmanager.createTable(content.columnNames, tableContent);
172 one.lib.modal.inject.body($modal, $table);
176 save: function($modal) {
178 result['nodeName'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeName, $modal).val();
179 if(!one.f.switchmanager.validateName(result['nodeName'])) {
180 alert("Node name can contain upto 255 characters");
183 result['nodeId'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.nodeId, $modal).val();
184 result['tier'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.tier, $modal).val();
185 result['operationMode'] = $('#' + one.f.switchmanager.nodesLearnt.id.modal.form.operationMode, $modal).val();
186 one.f.switchmanager.nodesLearnt.modal.ajax(result,
188 if(response.status == true) {
189 $modal.modal('hide');
190 one.topology.update(); // refresh visual topology with new name
191 // TODO: Identify dashlet by inserting a nodesLearnt div
192 // in the dashlet() instead
193 one.f.switchmanager.nodesLearnt.dashlet($("#left-top .dashlet"));
195 alert(response.message);
200 ajax: function(requestData, callback) {
201 $.getJSON(one.f.switchmanager.rootUrl + "/nodesLearnt/update", requestData, function(response) {
206 updateNode: function() {
209 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.nodesLearnt.id.modal.save, "btn-success", "");
210 var $saveButton = one.lib.dashlet.button.button(saveButton);
211 footer.push($saveButton);
216 // TODO: Maybe put a close button in the footer?
223 abridged : function(data) {
225 $.each(data.nodeData, function(key, value) {
228 var nodenameentry = value["nodeName"] ? value["nodeName"] : "Click to update";
229 // TODO: Move anchor tag creation to one.lib.form.
230 var aTag = document.createElement("a");
231 aTag.setAttribute("id", encodeURIComponent(value["nodeId"]));
232 aTag.switchDetails = value;
233 aTag.addEventListener("click", one.f.switchmanager.nodesLearnt.modal.initialize.updateNode);
234 aTag.addEventListener("mouseover", function(evt) {
235 evt.target.style.cursor = "pointer";
237 aTag.innerHTML = nodenameentry;
239 entry.push(value["nodeId"]);
240 entry.push(value["ports"]);
246 popout : function(data) {
248 $.each(data.nodeData, function(key, value) {
250 // fill up all the td's
252 var nodenameentry = value["nodeName"] ? value["nodeName"] : "No name provided";
253 entry.push(nodenameentry);
254 entry.push(value["nodeId"]);
255 entry.push(value["tierName"]);
256 entry.push(value["mac"]);
257 entry.push(value["ports"]);
258 entry.push(value["portStatus"]);
267 one.f.switchmanager.subnetGatewayConfig = {
270 addIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addIP",
271 addPorts: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addPorts",
272 removeIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_removeIP"
275 modal: "one_f_switchmanager_subnetGatewayConfig_id_modal_modal",
276 save: "one_f_switchmanager_subnetGatewayConfig_id_modal_save",
278 name : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayname",
279 gatewayIPAddress : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayipaddress",
280 nodeId: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_nodeid",
281 ports: "one_f_switchmanager_subnetGatewayConfig_id_modal_form_ports"
286 dashlet: function($dashlet) {
287 one.lib.dashlet.empty($dashlet);
288 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.subnetGatewayConfig.name));
289 // Add gateway IP Address button
291 var button = one.lib.dashlet.button.single("Add Gateway IP Address",
292 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addIPAddress, "btn-primary", "btn-mini");
293 var $button = one.lib.dashlet.button.button(button);
294 $button.click(function() {
295 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.gateway();
298 $dashlet.append($button);
301 // Delete gateway ip address button
302 var button = one.lib.dashlet.button.single("Delete Gateway IP Address(es)",
303 one.f.switchmanager.subnetGatewayConfig.id.dashlet.removeIPAddress, "btn-primary", "btn-mini");
304 var $button = one.lib.dashlet.button.button(button);
305 $button.click(function() {
306 var requestData = {};
307 var gatewaysToDelete = [];
308 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
309 checkedCheckBoxes.each(function(index, value) {
310 gatewaysToDelete.push(checkedCheckBoxes[index].id);
312 if(gatewaysToDelete.length > 0) {
313 requestData["gatewaysToDelete"] = gatewaysToDelete.toString();
314 var url = one.f.switchmanager.rootUrl + "/subnetGateway/delete";
315 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
316 if(response.status == true) {
317 // refresh dashlet by passing dashlet div as param
318 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
320 alert(response.message);
325 $dashlet.append($button);
328 var button = one.lib.dashlet.button.single("Add Ports",
329 one.f.switchmanager.subnetGatewayConfig.id.dashlet.addPorts, "btn-primary", "btn-mini");
330 var $button = one.lib.dashlet.button.button(button);
331 $button.click(function() {
332 var $modal = one.f.switchmanager.subnetGatewayConfig.modal.initialize.ports();
335 $dashlet.append($button);
337 var url = one.f.switchmanager.rootUrl + "/subnets";
338 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, {}, function(content) {
339 var body = one.f.switchmanager.subnetGatewayConfig.data.devices(content);
340 // first column contains checkbox. no need for header
341 content.columnNames.splice(0,0," ");
342 var $table = one.f.switchmanager.createTable(content.columnNames, body);
343 $dashlet.append($table);
347 main : function(url, requestData, callback) {
348 $.getJSON(url, requestData, function(data) {
356 gateway: function() {
357 var h3 = "Add Gateway IP Address";
358 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
359 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
361 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
362 one.f.switchmanager.subnetGatewayConfig.modal.save.gateway($modal);
364 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.gateway();
365 one.lib.modal.inject.body($modal, $body);
369 var h3 = "Add Ports";
370 var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
371 var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
373 $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
374 one.f.switchmanager.subnetGatewayConfig.modal.save.ports($modal);
377 // TODO: Change to subnetGateway instead.
378 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
379 var $body = one.f.switchmanager.subnetGatewayConfig.modal.body.ports(nodes, nodeports);
380 one.lib.modal.inject.body($modal, $body);
386 gateway: function($modal) {
388 result['gatewayName'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
389 if(!one.f.switchmanager.validateName(result['gatewayName'])) {
390 alert("Gateway name can contain upto 255 characters");
393 result['gatewayIPAddress'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress, $modal).val();
394 one.f.switchmanager.subnetGatewayConfig.modal.ajax.gateway(result,
396 if(response.status == true) {
397 $modal.modal('hide');
398 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
400 alert(response.message);
404 ports: function($modal) {
406 var gatewayRegistryIndex = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.name, $modal).val();
407 result['portsName'] = one.f.switchmanager.subnetGatewayConfig.registry.gateways[gatewayRegistryIndex];
408 result['nodeId'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId, $modal).val();
409 result['ports'] = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports, $modal).val();
410 if(!result['portsName'] || result['portsName'] == "") {
411 alert("No gateway chosen. Cannot add port");
414 if(!result['nodeId'] || result['nodeId'] == "") {
415 alert("Please select a node.");
418 if(!result['ports'] || result['ports'] == "") {
419 alert("Please choose a port.");
422 one.f.switchmanager.subnetGatewayConfig.modal.ajax.ports(result,
424 if(response.status == true) {
425 $modal.modal('hide');
426 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
428 alert(response.message);
434 gateway: function() {
435 var $form = $(document.createElement('form'));
436 var $fieldset = $(document.createElement('fieldset'));
438 var $label = one.lib.form.label("Name");
439 var $input = one.lib.form.input("Name");
440 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
441 $fieldset.append($label).append($input);
443 var $label = one.lib.form.label("Gateway IP Address/Mask");
444 var $input = one.lib.form.input("Gateway IP Address/Mask");
445 $input.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.gatewayIPAddress);
446 $fieldset.append($label).append($input);
448 $form.append($fieldset);
451 ports: function(nodes, nodeports) {
452 var $form = $(document.createElement('form'));
453 var $fieldset = $(document.createElement('fieldset'));
454 // gateways drop down
455 var $label = one.lib.form.label("Gateway Name");
456 var $select = one.lib.form.select.create(one.f.switchmanager.subnetGatewayConfig.registry.gateways);
457 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.name);
458 $select.val($select.find("option:first").val());
459 $fieldset.append($label).append($select);
462 var $label = one.lib.form.label("Node ID");
463 var $select = one.lib.form.select.create(nodes);
464 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.nodeId);
465 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
466 $select.val($select.find("option:first").val());
467 $fieldset.append($label).append($select);
470 $select.change(function() {
471 // retrieve port value
472 var node = $(this).find('option:selected').attr('value');
473 one.f.switchmanager.subnetGatewayConfig.registry['currentNode'] = node;
474 var $ports = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
475 var ports = nodeports[node];
476 one.lib.form.select.inject($ports, ports);
477 one.lib.form.select.prepend($ports, { '' : 'Please Select a Port' });
478 $ports.val($ports.find("option:first").val());
482 var $label = one.lib.form.label("Select Port");
483 var $select = one.lib.form.select.create();
484 $select.attr('id', one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
485 $fieldset.append($label).append($select);
487 $form.append($fieldset);
492 gateway: function(requestData, callback) {
493 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/add", requestData, function(data) {
497 ports: function(requestData, callback) {
498 $.getJSON(one.f.switchmanager.rootUrl + "/subnetGateway/ports/add", requestData, function(data) {
503 footer : function() {
506 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.subnetGatewayConfig.id.modal.save, "btn-success", "");
507 var $saveButton = one.lib.dashlet.button.button(saveButton);
508 footer.push($saveButton);
515 devices : function(data) {
517 one.f.switchmanager.subnetGatewayConfig.registry.gateways = [];
518 $.each(data.nodeData, function(key, value) {
520 // fill up all the td's
521 var subnetConfigObject = $.parseJSON(value["json"]);
522 var nodePorts = subnetConfigObject.nodePorts;
523 var $nodePortsContainer = $(document.createElement("div"));
525 for(var i = 0; i < nodePorts.length; i++) {
526 var nodePort = nodePorts[i];
527 $nodePortsContainer.append(nodePort + " ");
528 // add delete anchor tag to delete ports
529 var aTag = document.createElement("a");
530 aTag.setAttribute("id", encodeURIComponent(nodePort));
531 aTag.gatewayName = value["name"];
532 aTag.addEventListener("click", function(evt) {
533 var htmlPortAnchor = evt.target;
534 var requestData = {};
535 requestData["gatewayName"] = evt.target.gatewayName;
536 requestData["nodePort"] = decodeURIComponent(evt.target.id);
537 // make ajax call to delete port
538 var url = one.f.switchmanager.rootUrl + "/subnetGateway/ports/delete";
539 one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
540 if(response.status == true) {
541 // refresh dashlet by passing dashlet div as param
542 one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
544 alert(response.message);
549 aTag.addEventListener("mouseover", function(evt) {
550 evt.target.style.cursor = "pointer";
552 aTag.innerHTML = "Delete";
553 $nodePortsContainer.append(aTag);
554 $nodePortsContainer.append("<br/>");
557 // store gateways in the registry so that they can be used in the add ports popup
558 one.f.switchmanager.subnetGatewayConfig.registry.gateways.push(value["name"]);
560 var checkbox = document.createElement("input");
561 checkbox.setAttribute("type", "checkbox");
562 checkbox.setAttribute("id", value["name"]);
563 entry.push(checkbox);
564 entry.push(value["name"]);
565 entry.push(value["subnet"]);
566 entry.push($nodePortsContainer);
575 one.f.switchmanager.staticRouteConfig = {
578 add: "one_f_switchmanager_staticRouteConfig_id_dashlet_add",
579 remove: "one_f_switchmanager_staticRouteConfig_id_dashlet_remove"
582 modal: "one_f_switchmanager_staticRouteConfig_id_modal_modal",
583 save: "one_f_switchmanager_staticRouteConfig_id_modal_save",
585 routeName : "one_f_switchmanager_staticRouteConfig_id_modal_form_routename",
586 staticRoute : "one_f_switchmanager_staticRouteConfig_id_modal_form_staticroute",
587 nextHop : "one_f_switchmanager_staticRouteConfig_id_modal_form_nexthop",
591 dashlet: function($dashlet) {
592 one.lib.dashlet.empty($dashlet);
595 // Add static route button
596 var button = one.lib.dashlet.button.single("Add Static Route",
597 one.f.switchmanager.staticRouteConfig.id.dashlet.add, "btn-primary", "btn-mini");
598 var $button = one.lib.dashlet.button.button(button);
599 $button.click(function() {
600 var $modal = one.f.switchmanager.staticRouteConfig.modal.initialize();
603 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.staticRouteConfig.name));
604 $dashlet.append($button);
606 // Delete static route button
607 var button = one.lib.dashlet.button.single("Delete Static Route(s)",
608 one.f.switchmanager.staticRouteConfig.id.dashlet.remove, "btn-primary", "btn-mini");
609 var $button = one.lib.dashlet.button.button(button);
610 $button.click(function() {
611 var requestData = {};
612 var routesToDelete = [];
613 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
614 checkedCheckBoxes.each(function(index, value) {
615 routesToDelete.push(checkedCheckBoxes[index].id);
617 if(routesToDelete.length > 0) {
618 requestData["routesToDelete"] = routesToDelete.toString();
619 var url = one.f.switchmanager.rootUrl + "/staticRoute/delete";
620 one.f.switchmanager.staticRouteConfig.ajax.main(url, requestData, function(response) {
621 if(response.status == true) {
622 // refresh dashlet by passing dashlet div as param
623 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
625 alert(response.message);
630 $dashlet.append($button);
633 var url = one.f.switchmanager.rootUrl + "/staticRoutes";
634 one.f.switchmanager.staticRouteConfig.ajax.main(url, {}, function(content) {
635 var body = one.f.switchmanager.staticRouteConfig.data.staticRouteConfig(content);
636 // first column contains checkbox. no need for header
637 content.columnNames.splice(0,0," ");
638 var tableHeaders = ['', 'Name', 'Static Route', 'Next Hop Address'];
639 var $table = one.f.switchmanager.createTable(tableHeaders, body);
640 $dashlet.append($table);
645 main : function(url, requestData, callback) {
646 $.getJSON(url, requestData, function(data) {
653 initialize: function() {
654 var h3 = "Add Static Route";
655 var footer = one.f.switchmanager.staticRouteConfig.modal.footer();
656 var $modal = one.lib.modal.spawn(one.f.switchmanager.staticRouteConfig.id.modal.modal, h3, "", footer);
658 $('#' + one.f.switchmanager.staticRouteConfig.id.modal.save, $modal).click(function() {
659 one.f.switchmanager.staticRouteConfig.modal.save($modal);
661 var $body = one.f.switchmanager.staticRouteConfig.modal.body();
662 one.lib.modal.inject.body($modal, $body);
665 save: function($modal) {
667 result['routeName'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.routeName, $modal).val();
668 result['staticRoute'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute, $modal).val();
669 result['nextHop'] = $('#' + one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop, $modal).val();
670 one.f.switchmanager.staticRouteConfig.modal.ajax.staticRouteConfig(result, function(response) {
671 if(response.status == true) {
672 $modal.modal('hide');
673 // refresh dashlet by passing dashlet div as param
674 one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
676 // TODO: Show error message in a error message label instead.
677 alert(response.message);
682 var $form = $(document.createElement('form'));
683 var $fieldset = $(document.createElement('fieldset'));
685 var $label = one.lib.form.label("Name");
686 var $input = one.lib.form.input("Name");
687 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.routeName);
688 $fieldset.append($label).append($input);
689 // static route IP Mask
690 var $label = one.lib.form.label("Static Route");
691 var $input = one.lib.form.input("Static Route");
692 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.staticRoute);
693 $fieldset.append($label).append($input);
694 // static route IP Mask
695 var $label = one.lib.form.label("Next Hop");
696 var $input = one.lib.form.input("Next Hop");
697 $input.attr('id', one.f.switchmanager.staticRouteConfig.id.modal.form.nextHop);
698 $fieldset.append($label).append($input);
700 $form.append($fieldset);
704 staticRouteConfig: function(requestData, callback) {
705 $.getJSON(one.f.switchmanager.rootUrl + "/staticRoute/add", requestData, function(data) {
713 footer : function() {
716 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.staticRouteConfig.id.modal.save, "btn-success", "");
717 var $saveButton = one.lib.dashlet.button.button(saveButton);
718 footer.push($saveButton);
725 staticRouteConfig : function(data) {
727 $.each(data.nodeData, function(key, value) {
729 // fill up all the td's
731 var checkbox = document.createElement("input");
732 checkbox.setAttribute("type", "checkbox");
733 checkbox.setAttribute("id", value["name"]);
734 entry.push(checkbox);
735 entry.push(value["name"]);
736 entry.push(value["staticRoute"]);
737 entry.push(value["nextHop"]);
746 one.f.switchmanager.spanPortConfig = {
749 add: "one_f_switchmanager_spanPortConfig_id_dashlet_add",
750 remove: "one_f_switchmanager_spanPortConfig_id_dashlet_remove"
753 modal: "one_f_switchmanager_spanPortConfig_id_modal_modal",
754 save: "one_f_switchmanager_spanPortConfig_id_modal_save",
756 name : "one_f_switchmanager_spanPortConfig_id_modal_form_name",
757 nodes : "one_f_switchmanager_spanPortConfig_id_modal_form_nodes",
758 port : "one_f_switchmanager_spanPortConfig_id_modal_form_port",
762 dashlet: function($dashlet) {
763 one.lib.dashlet.empty($dashlet);
766 // Add span port button
767 var button = one.lib.dashlet.button.single("Add Span Port", one.f.switchmanager.spanPortConfig.id.dashlet.add, "btn-primary", "btn-mini");
768 var $button = one.lib.dashlet.button.button(button);
770 $button.click(function() {
771 var $modal = one.f.switchmanager.spanPortConfig.modal.initialize();
774 $dashlet.append(one.lib.dashlet.header(one.f.dashlet.spanPortConfig.name));
775 $dashlet.append($button);
777 // Delete span port button
778 var button = one.lib.dashlet.button.single("Delete SPAN Port(s)",
779 one.f.switchmanager.spanPortConfig.id.dashlet.remove, "btn-primary", "btn-mini");
780 var $button = one.lib.dashlet.button.button(button);
781 $button.click(function() {
783 var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
784 if(checkedCheckBoxes.length > 0) {
785 var spanPortsToDelete = "";
786 checkedCheckBoxes.each(function(index, value) {
787 spanPortsToDelete += checkedCheckBoxes[index].spanPort + "###";
790 var requestData = {};
791 requestData["spanPortsToDelete"] = spanPortsToDelete;
792 var url = one.f.switchmanager.rootUrl + "/spanPorts/delete";
793 one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) {
794 if(response.status == true) {
795 // refresh dashlet by passing dashlet div as param
796 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
798 alert(response.message);
803 $dashlet.append($button);
806 //populate table in dashlet
807 var url = one.f.switchmanager.rootUrl + "/spanPorts";
808 one.f.switchmanager.spanPortConfig.ajax.main(url, {}, function(content) {
809 var body = one.f.switchmanager.spanPortConfig.data.devices(content);
810 // first column contains the checkbox. no header required.
811 content.columnNames.splice(0,0," ");
812 var $table = one.f.switchmanager.createTable(content.columnNames, body);
813 $dashlet.append($table);
818 main : function(url, requestData, callback) {
819 $.getJSON(url, requestData, function(data) {
826 initialize: function() {
827 var h3 = "Add SPAN Port";
828 var footer = one.f.switchmanager.spanPortConfig.modal.footer();
829 var $modal = one.lib.modal.spawn(one.f.switchmanager.spanPortConfig.id.modal.modal, h3, "", footer);
831 $('#' + one.f.switchmanager.spanPortConfig.id.modal.save, $modal).click(function() {
832 one.f.switchmanager.spanPortConfig.modal.save($modal);
835 one.f.switchmanager.spanPortConfig.modal.ajax.nodes(function(nodes, nodeports) {
836 var $body = one.f.switchmanager.spanPortConfig.modal.body(nodes, nodeports);
837 one.lib.modal.inject.body($modal, $body);
841 save: function($modal) {
843 result['nodeId'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.nodes, $modal).val();
844 result['spanPort'] = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port, $modal).val();
845 one.f.switchmanager.spanPortConfig.modal.ajax.saveSpanPortConfig(result,
847 if(response.status == true) {
848 $modal.modal('hide');
849 one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
851 alert(response.message);
856 body: function(nodes, nodeports) {
857 var $form = $(document.createElement('form'));
858 var $fieldset = $(document.createElement('fieldset'));
860 var $label = one.lib.form.label("Node");
861 var $select = one.lib.form.select.create(nodes);
862 one.lib.form.select.prepend($select, { '' : 'Please Select a Node' });
863 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.nodes);
866 $select.change(function() {
867 // retrieve port value
868 var node = $(this).find('option:selected').attr('value');
869 one.f.switchmanager.spanPortConfig.registry['currentNode'] = node;
870 var $ports = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port);
871 var ports = nodeports[node];
872 one.lib.form.select.inject($ports, ports);
875 $fieldset.append($label).append($select);
877 var $label = one.lib.form.label("Input Port");
878 var $select = one.lib.form.select.create();
879 $select.attr('id', one.f.switchmanager.spanPortConfig.id.modal.form.port);
880 $fieldset.append($label).append($select);
883 $form.append($fieldset);
887 nodes: function(callback) {
888 $.getJSON(one.f.switchmanager.rootUrl + "/nodeports", function(data) {
889 var nodes = one.f.switchmanager.spanPortConfig.modal.data.nodes(data);
890 var nodeports = data;
891 one.f.switchmanager.spanPortConfig.registry['nodeports'] = nodeports;
892 callback(nodes, nodeports);
895 saveSpanPortConfig: function(requestData, callback) {
897 resource["jsonData"] = JSON.stringify(requestData);
898 $.getJSON(one.f.switchmanager.rootUrl + "/spanPorts/add", resource, function(data) {
904 nodes : function(data) {
906 $.each(data, function(key, value) {
912 footer : function() {
915 var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.spanPortConfig.id.modal.save, "btn-success", "");
916 var $saveButton = one.lib.dashlet.button.button(saveButton);
917 footer.push($saveButton);
924 devices : function(data) {
926 $.each(data.nodeData, function(key, value) {
928 // fill up all the td's
930 var checkbox = document.createElement("input");
931 checkbox.setAttribute("type", "checkbox");
932 checkbox.spanPort = value.json;
933 entry.push(checkbox);
934 entry.push(value["nodeName"]);
935 entry.push(value["spanPort"]);
946 $(one.f.menu.left.top).each(function(index, value) {
947 var $nav = $(".nav", "#left-top");
948 one.main.page.dashlet($nav, value);
951 $(one.f.menu.left.bottom).each(function(index, value) {
952 var $nav = $(".nav", "#left-bottom");
953 one.main.page.dashlet($nav, value);
956 $(one.f.menu.right.bottom).each(function(index, value) {
957 var $nav = $(".nav", "#right-bottom");
958 one.main.page.dashlet($nav, value);
961 one.f.addPopOut = function() {
962 $img1 = $(document.createElement("img"));
963 $img1.attr("src", "/img/Expand16T.png");
964 $img1.attr("style", "float: right;");
965 $img1.hover(function() {
966 $img1.css("cursor", "pointer");
968 $img1.click(function() {
969 var $modal = one.f.switchmanager.nodesLearnt.modal.initialize.popout();
970 $modal.css('width', 'auto');
971 $modal.css('margin-left', '-40%');
974 $dash1 = $($("#left-top .nav")[0]);
975 $dash1.append($img1);
980 $('.dash .nav a', '#main').click(function() {
982 var $li = $(this).parent();
983 var $ul = $li.parent();
984 one.lib.nav.unfocus($ul);
985 $li.addClass('active');
986 // clear respective dashlet
987 var $dashlet = $ul.parent().find('.dashlet');
988 one.lib.dashlet.empty($dashlet);
990 // callback based on menu
991 var id = $(this).attr('id');
992 var menu = one.f.dashlet;
994 case menu.nodesLearnt.id:
995 one.f.switchmanager.nodesLearnt.dashlet($dashlet);
997 case menu.staticRouteConfig.id:
998 one.f.switchmanager.staticRouteConfig.dashlet($dashlet);
1000 case menu.subnetGatewayConfig.id:
1001 one.f.switchmanager.subnetGatewayConfig.dashlet($dashlet);
1003 case menu.spanPortConfig.id:
1004 one.f.switchmanager.spanPortConfig.dashlet($dashlet);
1009 // activate first tab on each dashlet
1010 $('.dash .nav').each(function(index, value) {
1011 $($(value).find('li')[0]).find('a').click();