aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rwxr-xr-xweb/nms.gathering.org/api/private/switch-add27
-rwxr-xr-xweb/nms.gathering.org/api/private/switches-management2
-rw-r--r--web/nms.gathering.org/js/nms-info-box.js101
3 files changed, 123 insertions, 7 deletions
diff --git a/web/nms.gathering.org/api/private/switch-add b/web/nms.gathering.org/api/private/switch-add
index 93416ff..64e5e58 100755
--- a/web/nms.gathering.org/api/private/switch-add
+++ b/web/nms.gathering.org/api/private/switch-add
@@ -24,6 +24,22 @@ my $sth = $nms::web::dbh->prepare("SELECT sysname FROM switches WHERE sysname=?"
my @fields = ('ip', 'sysname', 'switchtype', 'last_updated', 'locked', 'poll_frequency', 'community', 'lldp_chassis_id', 'secondary_ip', 'placement');
+sub convertplace
+{
+ my %in = %{$_[0]};
+ my %out = ();
+
+ if (not defined $in{'x1'} and defined($in{'x'})) {
+ $out{'x1'} = $in{'x'};
+ $out{'y1'} = $in{'y'};
+ $out{'xx'} = $in{'x'} + $in{'width'};
+ $out{'yy'} = $in{'y'} + $in{'height'};
+ } else {
+ return \%in;
+ }
+ return \%out;
+}
+
foreach my $tmp2 (@tmp) {
my %switch = %{$tmp2};
my $affected = 0;
@@ -43,7 +59,7 @@ foreach my $tmp2 (@tmp) {
if (not defined ($switch{'placement'})) {
%placement = guess_placement($switch{'sysname'});
} else {
- %placement = %{$switch{'placement'}};
+ %placement = %{convertplace($switch{'placement'})};
}
if (not defined($switch{'ip'}) and defined($switch{'mgtmt4'})) {
$switch{'ip'} = $switch{'mgtmt4'};
@@ -66,11 +82,12 @@ foreach my $tmp2 (@tmp) {
push @added, $switch{'sysname'};
} else {
if (defined($switch{'placement'})) {
+ my %placement = %{convertplace($switch{'placement'})};
my ($x1,$x2,$y1,$y2);
- $x1 = $switch{'placement'}{'x1'};
- $y1 = $switch{'placement'}{'y1'};
- $x2 = $switch{'placement'}{'xx'};
- $y2 = $switch{'placement'}{'yy'};
+ $x1 = $placement{'x1'};
+ $y1 = $placement{'y1'};
+ $x2 = $placement{'xx'};
+ $y2 = $placement{'yy'};
$switch{'placement'} = "(($x1,$y1),($x2,$y2))";
}
if (not defined($switch{'ip'}) and defined($switch{'mgtmt4'})) {
diff --git a/web/nms.gathering.org/api/private/switches-management b/web/nms.gathering.org/api/private/switches-management
index 474f674..a598824 100755
--- a/web/nms.gathering.org/api/private/switches-management
+++ b/web/nms.gathering.org/api/private/switches-management
@@ -12,7 +12,7 @@ use Data::Dumper;
$nms::web::cc{'max-age'} = "60";
-my $q2 = $nms::web::dbh->prepare('select sysname,ip,switchtype,poll_frequency,community,last_updated from switches ');
+my $q2 = $nms::web::dbh->prepare('select sysname,ip,poll_frequency,community,last_updated from switches ');
$q2->execute();
while (my $ref = $q2->fetchrow_hashref()) {
diff --git a/web/nms.gathering.org/js/nms-info-box.js b/web/nms.gathering.org/js/nms-info-box.js
index cf77d1e..94792ee 100644
--- a/web/nms.gathering.org/js/nms-info-box.js
+++ b/web/nms.gathering.org/js/nms-info-box.js
@@ -59,6 +59,7 @@ nmsInfoBox._hide = function()
commentbox.parentNode.removeChild(commentbox);
swtop.style.display = 'none';
nmsInfoBox._showing = "";
+ nmsInfoBox._editHide();
}
/*
@@ -151,7 +152,7 @@ nmsInfoBox._show = function(x)
nmsInfoBox._hide();
nmsInfoBox._showing = x;
- swtitle.innerHTML = x + '<button type="button" class="close" aria-labe="Close" onclick="nmsInfoBox.hide();" style="float: right;"><span aria-hidden="true">&times;</span></button>';
+ swtitle.innerHTML = ' <button type="button" class="edit btn btn-xs btn-warning" onclick="nmsInfoBox._edit(\'' + x + '\');">Edit</button> ' + x + ' <button type="button" class="close" aria-label="Close" onclick="nmsInfoBox.hide();" style="float: right;"><span aria-hidden="true">&times;</span></button>';
for (var v in sw) {
if (v == "placement") {
@@ -195,3 +196,101 @@ nmsInfoBox._show = function(x)
swtop.style.display = 'block';
}
+nmsInfoBox._nullBlank = function(x) {
+ if (x == null || x == false || x == undefined)
+ return "";
+ return x;
+}
+
+nmsInfoBox._editHide = function() {
+ var container = document.getElementById("nmsInfoBox-edit-box");
+ if (container != undefined)
+ container.parentNode.removeChild(container);
+}
+
+nmsInfoBox._edit = function(sw) {
+ var template = {};
+ var place = false;
+ nmsInfoBox._editHide();
+ var container = document.createElement("div");
+ container.id = "nmsInfoBox-edit-box";
+
+ nmsInfoBox._editValues = {};
+ if (nmsData.switches.switches[sw] != undefined) {
+ for (var v in nmsData.switches.switches[sw]) {
+ if (v == "placement") {
+ place = JSON.stringify(nmsData.switches.switches[sw][v]);
+ template[v] = "";
+ continue;
+ }
+ template[v] = this._nullBlank(nmsData.switches.switches[sw][v]);
+ }
+ }
+ if (nmsData.smanagement.switches[sw] != undefined) {
+ for (var v in nmsData.smanagement.switches[sw]) {
+ template[v] = this._nullBlank(nmsData.smanagement.switches[sw][v]);
+ }
+ }
+ var content = [];
+ for (v in template) {
+ var tmpsw = '\'' + sw + '\'';
+ var tmpv = '\'' + v + '\'';
+ var tmphandler = '"nmsInfoBox._editChange(' + tmpsw + ',' + tmpv + ');"';
+ var html = "<input type=\"text\" class=\"form-control\" value=\"" + template[v] + "\" id=\"edit-"+ sw + "-" + v + '" onchange=' + tmphandler + ' oninput=' + tmphandler + '/>';
+ content.push([v, html]);
+ }
+ var table = nmsInfoBox._makeTable(content, "edit");
+ var swtop = document.getElementById("info-switch-parent");
+ container.appendChild(table);
+ var submit = document.createElement("button");
+ submit.innerHTML = "Save changes";
+ submit.classList.add("btn", "btn-primary");
+ submit.id = "edit-submit-" + sw;
+ submit.onclick = function(e) { nmsInfoBox._editSave(sw, e); };
+ container.appendChild(submit);
+ var output = document.createElement("output");
+ output.id = "edit-output";
+ container.appendChild(output);
+ swtop.appendChild(container);
+ if (place) {
+ var pval = document.getElementById("edit-" + sw + "-placement");
+ if (pval) {
+ pval.value = place;
+ }
+ }
+}
+
+nmsInfoBox._editChange = function(sw, v) {
+ var el = document.getElementById("edit-" + sw + "-" + v);
+ var val = el.value;
+ if (v == "placement")
+ val = JSON.parse(val);
+ nmsInfoBox._editValues[v] = val;
+ el.classList.add("bg-warning");
+ var myData = nmsInfoBox._editStringify(sw);
+ var out = document.getElementById("edit-output");
+ out.value = myData;
+}
+
+nmsInfoBox._editStringify = function(sw) {
+ for (var key in nmsInfoBox._editValues) {
+ var val = nmsInfoBox._editValues[key];
+ }
+ nmsInfoBox._editValues['sysname'] = sw;
+ var myData = JSON.stringify([nmsInfoBox._editValues]);
+ return myData;
+}
+nmsInfoBox._editSave = function(sw, e) {
+ var myData = nmsInfoBox._editStringify(sw);
+ $.ajax({
+ type: "POST",
+ url: "/api/private/switch-add",
+ dataType: "text",
+ data:myData,
+ success: function (data, textStatus, jqXHR) {
+ nmsData.invalidate("switches");
+ nmsData.invalidate("smanagement");
+ }
+ });
+ nmsInfoBox._editHide();
+}