one.f.dashlet = {
nodesLearnt : {
id : 'nodesLearnt',
- name : 'Nodes Learnt'
+ name : 'Nodes Learned'
},
staticRouteConfig : {
id : 'staticRouteConfig',
},
modal: {
modal: "one_f_switchmanager_nodesLearnt_id_modal_modal",
+ configure: "one_f_switchmanager_nodesLearnt_id_modal_configure",
+ ports: "one_f_switchmanager_nodesLearnt_id_modal_ports",
save: "one_f_switchmanager_nodesLearnt_id_modal_save",
datagrid: "one_f_switchmanager_nodesLearnt_id_modal_datagrid",
+ portsDatagrid: "one_f_switchmanager_nodesLearnt_id_modal_portsDatagrid",
form: {
nodeId: "one_f_switchmanager_nodesLearnt_id_modal_form_nodeid",
nodeName : "one_f_switchmanager_nodesLearnt_id_modal_form_nodename",
$("#" + one.f.switchmanager.nodesLearnt.id.dashlet.datagrid).datagrid({dataSource: dataSource}).on("loaded", function() {
$(this).find("tbody a").click(one.f.switchmanager.nodesLearnt.modal.initialize.updateNode);
});
+
+ $("#" + one.f.switchmanager.nodesLearnt.id.dashlet.datagrid).datagrid({dataSource: dataSource}).on("loaded", function() {
+ $(this).find("tbody span").click(function(){
+ one.f.switchmanager.nodesLearnt.modal.initialize.displayPorts($(this));
+ });
+ });
+
});
},
ajax : {
h3 = 'Node Information';
}
- var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
+ var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.configure, h3, "", footer);
// bind save button
$('#' + one.f.switchmanager.nodesLearnt.id.modal.save, $modal).click(function() {
one.f.switchmanager.nodesLearnt.modal.save($modal);
});
},
popout: function() {
- var h3 = "Nodes Learnt";
+ var h3 = "Nodes Learned";
var footer = one.f.switchmanager.nodesLearnt.modal.footer.popout();
var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.modal, h3, "", footer);
var $body = one.f.switchmanager.nodesLearnt.modal.body.popout($modal);
return $modal;
+ },
+ displayPorts: function(ports) {
+ var content = JSON.parse(decodeURIComponent(ports.attr("ports")));
+
+ var h3 = ((ports.attr("nodeName") == "None")? ports.attr("nodeId") : ports.attr("nodeName"))
+ var footer = [];
+ var $modal = one.lib.modal.spawn(one.f.switchmanager.nodesLearnt.id.modal.ports, h3, "", footer);
+
+ var $gridHTML = one.lib.dashlet.datagrid.init(one.f.switchmanager.nodesLearnt.id.modal.portsDatagrid, {
+ searchable: true,
+ filterable: false,
+ pagination: true,
+ flexibleRowsPerPage: true,
+ popout: true
+ }, "table-striped table-condensed");
+ one.lib.modal.inject.body($modal, $gridHTML);
+ $modal.on("shown", function() {
+ var dataSource = one.f.switchmanager.nodesLearnt.data.gridDataSource.displayPorts(content);
+ $("#" + one.f.switchmanager.nodesLearnt.id.modal.portsDatagrid).datagrid({
+ dataSource: dataSource,
+ stretchHeight: false
+ });
+ });
+ $modal.modal();
}
},
body: {
searchable: true,
filterable: false,
pagination: true,
- flexibleRowsPerPage: true
+ flexibleRowsPerPage: true,
+ popout: true
}, "table-striped table-condensed");
one.lib.modal.inject.body($modal, $gridHTML);
// attach to shown event of modal
var dataSource = one.f.switchmanager.nodesLearnt.data.gridDataSource.popout(content);
$("#" + one.f.switchmanager.nodesLearnt.id.modal.datagrid).datagrid({
dataSource: dataSource,
- stretchHeight: true
+ stretchHeight: false
+ })
+ .on("loaded", function() {
+ $("#" + one.f.switchmanager.nodesLearnt.id.modal.datagrid).find("tbody span").click(function(){
+ one.f.switchmanager.nodesLearnt.modal.initialize.displayPorts($(this));
+ });
});
});
});
data: data.nodeData,
formatter: function(items) {
$.each(items, function (index, item) {
+ var nodeName = item.nodeName;
var nodeNameEntry = item.nodeName ? item.nodeName : "Click to update";
item.nodeName = '<a href="#" id="' + item.nodeId + '" switchDetails=' + encodeURIComponent(JSON.stringify(item)) +
' privilege=' + data.privilege + '>' + nodeNameEntry + '</a>';
+
+ var ports = item.ports;
+ var portsMatch = ports.match(/<\/span>/g);
+ var portsLength = 0;
+ if (portsMatch != null) {
+ portsLength = portsMatch.length;
+ }
+ item.ports = '<span class="nodePorts" style="cursor:pointer;color: #08c" ports='+encodeURIComponent(JSON.stringify(item.ports)) + ' nodeId=' + item.nodeId
+ + ' nodeName=' + nodeName
+ + '>' + portsLength +'</span>';
});
},
delay: 0
},
{
property: 'mac',
- label: 'Mac',
+ label: 'MAC',
sortable: true
},
{
}
],
data: data.nodeData,
+ formatter: function(items) {
+ $.each(items, function (index, item) {
+ var ports = item.ports;
+ var portsMatch = ports.match(/<\/span>/g);
+ var portsLength = 0;
+ if (portsMatch != null) {
+ portsLength = portsMatch.length;
+ }
+ item.ports = '<span class="nodePorts" style="cursor: pointer;color: #08c" ports='+encodeURIComponent(JSON.stringify(item.ports)) + ' nodeId=' + item.nodeId
+ + ' nodeName=' + item.nodeName
+ + '>' + portsLength +'</span>';
+ });
+ },
delay: 0
});
+ return source;
+ },
+ displayPorts: function(content){
+ var data=[];
+ var start=0;;
+ var finish=content.indexOf("<br>",start);
+ while(finish != -1){
+ data.push({"ports":content.substring(start,finish)});
+ start=finish+4
+ finish=content.indexOf("<br>",start);
+ }
+ var source = new StaticDataSource({
+ columns: [
+ {
+ property: 'ports',
+ label: 'Ports',
+ sortable: true
+ }
+ ],
+ data:data,
+ delay: 0
+ });
+
return source;
}
},
addIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addIP",
addPorts: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_addPorts",
removeIPAddress: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_removeIP",
- datagrid: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_datagrid"
+ datagrid: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_datagrid",
+ selectAll: "one_f_switchmanager_subnetGatewayConfig_id_dashlet_selectAll"
},
modal: {
modal: "one_f_switchmanager_subnetGatewayConfig_id_modal_modal",
+ ports : "one_f_switchmanager_subnetGatewayConfig_id_modal_ports",
save: "one_f_switchmanager_subnetGatewayConfig_id_modal_save",
+ remove: "one_f_switchmanager_subnetGatewayConfig_id_modal_remove",
+ cancel: "one_f_switchmanager_subnetGatewayConfig_id_modal_cancel",
form: {
name : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayname",
gatewayIPAddress : "one_f_switchmanager_subnetGatewayConfig_id_modal_form_gatewayipaddress",
$dashlet.append($button);
// Delete gateway ip address button
- var button = one.lib.dashlet.button.single("Delete Gateway IP Address(es)",
- one.f.switchmanager.subnetGatewayConfig.id.dashlet.removeIPAddress, "btn-primary", "btn-mini");
+ var button = one.lib.dashlet.button.single("Remove Gateway IP Address",
+ one.f.switchmanager.subnetGatewayConfig.id.dashlet.removeIPAddress, "btn-danger", "btn-mini");
var $button = one.lib.dashlet.button.button(button);
$button.click(function() {
- var requestData = {};
var gatewaysToDelete = [];
var checkedCheckBoxes = $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).find("tbody input:checked")
checkedCheckBoxes.each(function(index, value) {
gatewaysToDelete.push(checkedCheckBoxes[index].id);
});
- if (gatewaysToDelete.length > 0) {
- requestData["gatewaysToDelete"] = gatewaysToDelete.toString();
- var url = one.f.switchmanager.rootUrl + "/subnetGateway/delete";
- one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
- if (response.status == true) {
- // refresh dashlet by passing dashlet div as param
- one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
- } else {
- alert(response.message);
- }
- });
+ if (checkedCheckBoxes.size() === 0) {
+ return false;
}
+ one.f.switchmanager.subnetGatewayConfig.modal.removeMultiple.dialog(gatewaysToDelete)
});
$dashlet.append($button);
}, "table-striped table-condensed");
$dashlet.append($gridHTML);
var dataSource = one.f.switchmanager.subnetGatewayConfig.data.devicesgrid(content);
- $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource});
+ $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource})
+ .on("loaded", function() {
+ $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll).click(function() {
+ $("#" + one.f.switchmanager.subnetGatewayConfig.id.dashlet.datagrid).find(':checkbox').prop('checked',
+ $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll).is(':checked'));
+ });
+ $(".subnetGatewayConfig").click(function(e){
+ if (!$('.subnetGatewayConfig[type=checkbox]:not(:checked)').length) {
+ $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll)
+ .prop("checked",
+ true);
+ } else {
+ $("#"+one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll)
+ .prop("checked",
+ false);
+ }
+ e.stopPropagation();
+ });
+ });
});
},
ajax : {
ports: function() {
var h3 = "Add Ports";
var footer = one.f.switchmanager.subnetGatewayConfig.modal.footer();
- var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, "", footer);
+ var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.ports, h3, "", footer);
// bind save button
$('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.save, $modal).click(function() {
one.f.switchmanager.subnetGatewayConfig.modal.save.ports($modal);
one.f.switchmanager.subnetGatewayConfig.registry['currentNode'] = node;
var $ports = $('#' + one.f.switchmanager.subnetGatewayConfig.id.modal.form.ports);
var ports = nodeports[node];
- one.lib.form.select.inject($ports, ports);
+ var options = {};
+ $(ports).each(function(idx, val) {
+ options[val.internalPortName] = val.portName+' ('+val.portId+')';
+ });
+ one.lib.form.select.inject($ports, options);
one.lib.form.select.prepend($ports, { '' : 'Please Select a Port' });
$ports.val($ports.find("option:first").val());
});
var $saveButton = one.lib.dashlet.button.button(saveButton);
footer.push($saveButton);
return footer;
+ },
+ removeMultiple: {
+ dialog: function(gatewaysToDelete) {
+ var h3 = 'Remove Gateway IP Address';
+
+ var footer = one.f.switchmanager.subnetGatewayConfig.modal.removeMultiple.footer();
+ var $body = one.f.switchmanager.subnetGatewayConfig.modal.removeMultiple.body(gatewaysToDelete);
+ var $modal = one.lib.modal.spawn(one.f.switchmanager.subnetGatewayConfig.id.modal.modal, h3, $body, footer);
+
+ // bind close button
+ $('#'+one.f.switchmanager.subnetGatewayConfig.id.modal.cancel, $modal).click(function() {
+ $modal.modal('hide');
+ });
+
+ // bind remove rule button
+ $('#'+one.f.switchmanager.subnetGatewayConfig.id.modal.remove, $modal).click(this, function(e) {
+ var requestData = {};
+ if (gatewaysToDelete.length > 0) {
+ requestData["gatewaysToDelete"] = gatewaysToDelete.toString();
+ var url = one.f.switchmanager.rootUrl + "/subnetGateway/delete";
+ one.f.switchmanager.subnetGatewayConfig.ajax.main(url, requestData, function(response) {
+ $modal.modal('hide');
+ if (response.status == true) {
+ // refresh dashlet by passing dashlet div as param
+ one.lib.alert("Gateway IP Address(es) successfully removed");
+ } else {
+ alert(response.message);
+ }
+ one.f.switchmanager.subnetGatewayConfig.dashlet($("#right-bottom .dashlet"));
+ });
+ }
+ });
+ $modal.modal();
+ },
+ footer : function() {
+ var footer = [];
+ var remove = one.lib.dashlet.button.single('Remove Gateway IP Address',one.f.switchmanager.subnetGatewayConfig.id.modal.remove, 'btn-danger', '');
+ var $remove = one.lib.dashlet.button.button(remove);
+ footer.push($remove);
+
+ var cancel = one.lib.dashlet.button.single('Cancel', one.f.switchmanager.subnetGatewayConfig.id.modal.cancel, '', '');
+ var $cancel = one.lib.dashlet.button.button(cancel);
+ footer.push($cancel);
+
+ return footer;
+ },
+ body : function (gatewayList) {
+ var $p = $(document.createElement('p'));
+ var p = 'Remove the following Gateway IP Address(es)?';
+ //creata a BS label for each rule and append to list
+ $(gatewayList).each(function(){
+ var $span = $(document.createElement('span'));
+ $span.append(this);
+ p += '<br/>' + $span[0].outerHTML;
+ });
+ $p.append(p);
+ return $p;
+ }
}
},
// data functions
columns: [
{
property: 'selector',
- label: ' ',
+ label: "<input type='checkbox' id='"
+ +one.f.switchmanager.subnetGatewayConfig.id.dashlet.selectAll+"'/>",
sortable: false
},
{
sortable: true
},
{
- property: 'json',
- label: 'Node/Ports',
+ property: 'nodePorts',
+ label: 'Ports',
sortable: false
}
],
data: data.nodeData,
formatter: function(items) {
$.each(items, function(index, tableRow) {
- tableRow["selector"] = '<input type="checkbox" id=' + tableRow["name"] + '></input>';
- var json = tableRow["json"];
- var subnetConfigObject = JSON.parse(json);
+ tableRow["selector"] = '<input type="checkbox" class="subnetGatewayConfig" id='
+ + tableRow["name"] + '></input>';
+ var json = tableRow["nodePorts"];
+ var nodePorts = JSON.parse(json);
var nodePortHtml = "<div>";
- $.each(subnetConfigObject.nodePorts, function(index, nodePort) {
- nodePortHtml += nodePort;
+ $.each(nodePorts, function(index, nodePort) {
+ nodePortHtml += nodePort["nodePortName"] + " @ " + nodePort["nodeName"];
nodePortHtml += " ";
- nodePortHtml += '<a href="#" id=' + encodeURIComponent(nodePort) +
+ nodePortHtml += '<a href="#" id=' + encodeURIComponent(nodePort["nodePortId"]) +
' gatewayName=' + tableRow["name"] +
- ' onclick="javascript:one.f.switchmanager.subnetGatewayConfig.actions.deleteNodePort(this);">Delete</a>';
+ ' onclick="javascript:one.f.switchmanager.subnetGatewayConfig.actions.deleteNodePort(this);">Remove</a>';
nodePortHtml += "<br/>";
});
nodePortHtml += "</div>";
- tableRow["json"] = nodePortHtml;
+ tableRow["nodePorts"] = nodePortHtml;
});
},
aTag.addEventListener("mouseover", function(evt) {
evt.target.style.cursor = "pointer";
}, false);
- aTag.innerHTML = "Delete";
+ aTag.innerHTML = "Remove";
$nodePortsContainer.append(aTag);
$nodePortsContainer.append("<br/>");
}
dashlet: {
add: "one_f_switchmanager_staticRouteConfig_id_dashlet_add",
remove: "one_f_switchmanager_staticRouteConfig_id_dashlet_remove",
- datagrid: "one_f_switchmanager_staticRouteConfig_id_dashlet_datagrid"
+ datagrid: "one_f_switchmanager_staticRouteConfig_id_dashlet_datagrid",
+ selectAll: "one_f_switchmanager_staticRouteConfig_id_dashlet_selectAll"
},
modal: {
modal: "one_f_switchmanager_staticRouteConfig_id_modal_modal",
save: "one_f_switchmanager_staticRouteConfig_id_modal_save",
+ cancel: "one_f_switchmanager_staticRouteConfig_id_modal_cancel",
+ remove: "one_f_switchmanager_staticRouteConfig_id_modal_remove",
form: {
routeName : "one_f_switchmanager_staticRouteConfig_id_modal_form_routename",
staticRoute : "one_f_switchmanager_staticRouteConfig_id_modal_form_staticroute",
$dashlet.append($button);
// Delete static route button
- var button = one.lib.dashlet.button.single("Delete Static Route(s)", one.f.switchmanager.staticRouteConfig.id.dashlet.remove, "btn-primary", "btn-mini");
+ var button = one.lib.dashlet.button.single("Remove Static Route", one.f.switchmanager.staticRouteConfig.id.dashlet.remove, "btn-danger", "btn-mini");
var $button = one.lib.dashlet.button.button(button);
$button.click(function() {
- var requestData = {};
var routesToDelete = [];
- //var checkedCheckBoxes = $("input:checked", $(this).closest(".dashlet").find("table"));
var checkedCheckBoxes = $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).find("tbody input:checked");
checkedCheckBoxes.each(function(index, value) {
routesToDelete.push(checkedCheckBoxes[index].id);
});
- if (routesToDelete.length > 0) {
- requestData["routesToDelete"] = routesToDelete.toString();
- var url = one.f.switchmanager.rootUrl + "/staticRoute/delete";
- one.f.switchmanager.staticRouteConfig.ajax.main(url, requestData, function(response) {
- if (response.status == true) {
- // refresh dashlet by passing dashlet div as param
- one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
- } else {
- alert(response.message);
- }
- });
+ if (checkedCheckBoxes.size() === 0) {
+ return false;
}
+ one.f.switchmanager.staticRouteConfig.modal.removeMultiple.dialog(routesToDelete);
});
$dashlet.append($button);
}
}, "table-striped table-condensed");
$dashlet.append($gridHTML);
var dataSource = one.f.switchmanager.staticRouteConfig.data.staticRouteConfigGrid(content);
- $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource});
+ $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource})
+ .on("loaded", function() {
+ $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll).click(function() {
+ $("#" + one.f.switchmanager.staticRouteConfig.id.dashlet.datagrid).find(':checkbox').prop('checked',
+ $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll).is(':checked'));
+ });
+ $(".staticRoute").click(function(e){
+ if (!$('.staticRoute[type=checkbox]:not(:checked)').length) {
+ $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll)
+ .prop("checked",
+ true);
+ } else {
+ $("#"+one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll)
+ .prop("checked",
+ false);
+ }
+ e.stopPropagation();
+ });
+ });
});
},
// device ajax calls
var $saveButton = one.lib.dashlet.button.button(saveButton);
footer.push($saveButton);
return footer;
+ },
+ removeMultiple: {
+ dialog: function(routesToDelete) {
+ var h3 = 'Remove Static Route';
+
+ var footer = one.f.switchmanager.staticRouteConfig.modal.removeMultiple.footer();
+ var $body = one.f.switchmanager.staticRouteConfig.modal.removeMultiple.body(routesToDelete);
+ var $modal = one.lib.modal.spawn(one.f.switchmanager.staticRouteConfig.id.modal.modal, h3, $body, footer);
+
+ // bind close button
+ $('#'+one.f.switchmanager.staticRouteConfig.id.modal.cancel, $modal).click(function() {
+ $modal.modal('hide');
+ });
+
+ // bind remove rule button
+ $('#'+one.f.switchmanager.staticRouteConfig.id.modal.remove, $modal).click(this, function(e) {
+ if (routesToDelete.length > 0) {
+ var requestData = {};
+ requestData["routesToDelete"] = routesToDelete.toString();
+ var url = one.f.switchmanager.rootUrl + "/staticRoute/delete";
+ one.f.switchmanager.staticRouteConfig.ajax.main(url, requestData, function(response) {
+ $modal.modal('hide');
+ if (response.status == true) {
+ // refresh dashlet by passing dashlet div as param
+ one.lib.alert("Static Route(s) successfully removed");
+ } else {
+ alert(response.message);
+ }
+ one.f.switchmanager.staticRouteConfig.dashlet($("#left-bottom .dashlet"));
+ });
+ }
+ });
+ $modal.modal();
+ },
+ footer : function() {
+ var footer = [];
+ var remove = one.lib.dashlet.button.single('Remove Static Route',one.f.switchmanager.staticRouteConfig.id.modal.remove, 'btn-danger', '');
+ var $remove = one.lib.dashlet.button.button(remove);
+ footer.push($remove);
+
+ var cancel = one.lib.dashlet.button.single('Cancel', one.f.switchmanager.staticRouteConfig.id.modal.cancel, '', '');
+ var $cancel = one.lib.dashlet.button.button(cancel);
+ footer.push($cancel);
+
+ return footer;
+ },
+ body : function (staticRouteList) {
+ var $p = $(document.createElement('p'));
+ var p = 'Remove the following Static Route(s)?';
+ //creata a BS label for each rule and append to list
+ $(staticRouteList).each(function(){
+ var $span = $(document.createElement('span'));
+ $span.append(this);
+ p += '<br/>' + $span[0].outerHTML;
+ });
+ $p.append(p);
+ return $p;
+ }
}
},
// data functions
columns: [
{
property: 'selector',
- label: ' ',
+ label: "<input type='checkbox' id='"
+ +one.f.switchmanager.staticRouteConfig.id.dashlet.selectAll+"'/>",
sortable: false
},
{
data: data.nodeData,
formatter: function(items) {
$.each(items, function(index, item) {
- item["selector"] = '<input type="checkbox" id=' + item["name"] + '></input>';
+ item["selector"] = '<input type="checkbox" class="staticRoute" id=' + item["name"] + '></input>';
});
},
dashlet: {
add: "one_f_switchmanager_spanPortConfig_id_dashlet_add",
remove: "one_f_switchmanager_spanPortConfig_id_dashlet_remove",
- datagrid: "one_f_switchmanager_spanPortConfig_id_dashlet_datagrid"
+ datagrid: "one_f_switchmanager_spanPortConfig_id_dashlet_datagrid",
+ selectAllFlows: "one_f_switchmanager_spanPortConfig_id_dashlet_selectAllFlows"
},
modal: {
modal: "one_f_switchmanager_spanPortConfig_id_modal_modal",
save: "one_f_switchmanager_spanPortConfig_id_modal_save",
+ cancel: "one_f_switchmanager_spanPortConfig_id_modal_cancel",
+ remove: "one_f_switchmanager_spanPortConfig_id_modal_remove",
form: {
name : "one_f_switchmanager_spanPortConfig_id_modal_form_name",
nodes : "one_f_switchmanager_spanPortConfig_id_modal_form_nodes",
if (content.privilege === 'WRITE') {
// Add span port button
- var button = one.lib.dashlet.button.single("Add Span Port", one.f.switchmanager.spanPortConfig.id.dashlet.add, "btn-primary", "btn-mini");
+ var button = one.lib.dashlet.button.single("Add SPAN Port", one.f.switchmanager.spanPortConfig.id.dashlet.add, "btn-primary", "btn-mini");
var $button = one.lib.dashlet.button.button(button);
$button.click(function() {
$dashlet.append($button);
// Delete span port button
- var button = one.lib.dashlet.button.single("Delete SPAN Port(s)", one.f.switchmanager.spanPortConfig.id.dashlet.remove, "btn-primary", "btn-mini");
+ var button = one.lib.dashlet.button.single("Remove SPAN Port", one.f.switchmanager.spanPortConfig.id.dashlet.remove, "btn-danger", "btn-mini");
var $button = one.lib.dashlet.button.button(button);
$button.click(function() {
-
+ var spanPortsToDelete = [];
var checkedCheckBoxes = $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).find("tbody input:checked");
- if (checkedCheckBoxes.length > 0) {
- var spanPortsToDelete = "";
- checkedCheckBoxes.each(function(index, value) {
- spanPortsToDelete += decodeURIComponent(checkedCheckBoxes[index].getAttribute("spanPort")) + "###";
- });
-
- var requestData = {};
- requestData["spanPortsToDelete"] = spanPortsToDelete;
- var url = one.f.switchmanager.rootUrl + "/spanPorts/delete";
- one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) {
- if (response.status == true) {
- // refresh dashlet by passing dashlet div as param
- one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
- } else {
- alert(response.message);
- }
- });
+
+ if (checkedCheckBoxes.size() === 0) {
+ return false;
}
+ checkedCheckBoxes.each(function(index, value) {
+ spanPortsToDelete.push(decodeURIComponent(checkedCheckBoxes[index].getAttribute("spanPort")));
+ });
+ one.f.switchmanager.spanPortConfig.modal.removeMultiple.dialog(spanPortsToDelete);
});
$dashlet.append($button);
}
}, "table-striped table-condensed");
$dashlet.append($gridHTML);
var dataSource = one.f.switchmanager.spanPortConfig.data.spanPortConfigGrid(content);
- $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource});
-
-
-
+ $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).datagrid({dataSource: dataSource})
+ .on("loaded", function() {
+ $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll).click(function() {
+ $("#" + one.f.switchmanager.spanPortConfig.id.dashlet.datagrid).find(':checkbox').prop('checked',
+ $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll).is(':checked'));
+ });
+ $(".spanPortConfig").click(function(e){
+ if (!$('.spanPortConfig[type=checkbox]:not(:checked)').length) {
+ $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll)
+ .prop("checked",
+ true);
+ } else {
+ $("#"+one.f.switchmanager.spanPortConfig.id.dashlet.selectAll)
+ .prop("checked",
+ false);
+ }
+ e.stopPropagation();
+ });
+ });
});
},
// device ajax calls
// bind onchange
$select.change(function() {
// retrieve port value
- var node = $(this).find('option:selected').attr('value');
- one.f.switchmanager.spanPortConfig.registry['currentNode'] = node;
+ var nodeId = $(this).find('option:selected').attr('value');
+ one.f.switchmanager.spanPortConfig.registry['currentNode'] = nodeId;
var $ports = $('#' + one.f.switchmanager.spanPortConfig.id.modal.form.port);
- var ports = nodeports[node];
- one.lib.form.select.inject($ports, ports);
+ var ports = one.f.switchmanager.spanPortConfig.registry['nodePorts'][nodeId]
+ var options = {};
+ $(ports).each(function(idx, val) {
+ options[val.internalPortName] = val.portName+' ('+val.portId+')';
+ });
+ one.lib.form.select.inject($ports, options);
});
$fieldset.append($label).append($select);
ajax: {
nodes: function(callback) {
$.getJSON(one.f.switchmanager.rootUrl + "/nodeports", function(data) {
- var nodes = one.f.switchmanager.spanPortConfig.modal.data.nodes(data);
- var nodeports = data;
- one.f.switchmanager.spanPortConfig.registry['nodeports'] = nodeports;
- callback(nodes, nodeports);
+ var nodes = {};
+ var nodePorts = {};
+ $(data).each(function(index, node) {
+ nodes[node.nodeId] = node.nodeName;
+ nodePorts[node.nodeId] = node.nodePorts;
+ });
+ one.f.switchmanager.spanPortConfig.registry['nodePorts'] = nodePorts;
+ callback(nodes, nodePorts);
});
},
saveSpanPortConfig: function(requestData, callback) {
});
}
},
- data : {
- nodes : function(data) {
- result = {};
- $.each(data, function(key, value) {
- result[key] = key;
- });
- return result;
- }
- },
footer : function() {
var footer = [];
var saveButton = one.lib.dashlet.button.single("Save", one.f.switchmanager.spanPortConfig.id.modal.save, "btn-success", "");
var $saveButton = one.lib.dashlet.button.button(saveButton);
footer.push($saveButton);
return footer;
+ },
+ removeMultiple: {
+ dialog: function(spanPortsToDelete) {
+ var h3 = 'Remove Span Port';
+
+ var footer = one.f.switchmanager.spanPortConfig.modal.removeMultiple.footer();
+ var $body = one.f.switchmanager.spanPortConfig.modal.removeMultiple.body(spanPortsToDelete);
+ var $modal = one.lib.modal.spawn(one.f.switchmanager.spanPortConfig.id.modal.modal, h3, $body, footer);
+
+ // bind close button
+ $('#'+one.f.switchmanager.spanPortConfig.id.modal.cancel, $modal).click(function() {
+ $modal.modal('hide');
+ });
+
+ // bind remove rule button
+ $('#'+one.f.switchmanager.spanPortConfig.id.modal.remove, $modal).click(this, function(e) {
+ var requestData = {};
+ var spanPorts="";
+ $(spanPortsToDelete).each(function(){
+ spanPorts = spanPorts + "###" + this.toString();
+ });
+ requestData["spanPortsToDelete"] = spanPorts.slice(3,spanPorts.length);
+
+ var url = one.f.switchmanager.rootUrl + "/spanPorts/delete";
+ one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) {
+ $modal.modal('hide');
+ if (response.status == true) {
+ // refresh dashlet by passing dashlet div as param
+ one.lib.alert("Span Port(s) successfully removed");
+ } else {
+ alert(response.message);
+ }
+ one.f.switchmanager.spanPortConfig.dashlet($("#right-bottom .dashlet"));
+ });
+ });
+ $modal.modal();
+ },
+ footer : function() {
+ var footer = [];
+ var remove = one.lib.dashlet.button.single('Remove SPAN Port',one.f.switchmanager.spanPortConfig.id.modal.remove, 'btn-danger', '');
+ var $remove = one.lib.dashlet.button.button(remove);
+ footer.push($remove);
+
+ var cancel = one.lib.dashlet.button.single('Cancel', one.f.switchmanager.spanPortConfig.id.modal.cancel, '', '');
+ var $cancel = one.lib.dashlet.button.button(cancel);
+ footer.push($cancel);
+
+ return footer;
+ },
+ body : function (spanPortToDelete) {
+ var $p = $(document.createElement('p'));
+ var p = 'Remove the following Span Port(s)?';
+ //creata a BS label for each rule and append to list
+
+ var spanPortList = JSON.parse("["+spanPortToDelete.toString()+"]");
+ $(spanPortList).each(function(){
+ var $span = $(document.createElement('span'));
+ $span.append(this.nodeId+"-"+this.spanPort);
+ p += '<br/>' + $span[0].outerHTML;
+ });
+ $p.append(p);
+ return $p;
+ }
}
},
// data functions
columns: [
{
property: 'selector',
- label: ' ',
+ label: "<input type='checkbox' id='"
+ +one.f.switchmanager.spanPortConfig.id.dashlet.selectAll+"'/>",
sortable: false
},
{
},
{
property: 'spanPort',
- label: 'span Port',
+ label: 'SPAN Port',
sortable: true
},
],
data: data.nodeData,
formatter: function(items) {
$.each(items, function(index, item) {
- item["selector"] = '<input type="checkbox" spanPort=' + encodeURIComponent(item["json"]) + '></input>';
+ item["selector"] = '<input type="checkbox" class="spanPortConfig" spanPort=' + encodeURIComponent(item["json"]) + '></input>';
});
},
delay: 0