aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/css/nms.css5
-rw-r--r--web/index.html10
-rw-r--r--web/js/nms-info-box.js48
-rw-r--r--web/js/nms-map-handlers.js4
-rw-r--r--web/js/nms-score-card.js68
5 files changed, 133 insertions, 2 deletions
diff --git a/web/css/nms.css b/web/css/nms.css
index ac2791c..50ec36b 100644
--- a/web/css/nms.css
+++ b/web/css/nms.css
@@ -19,6 +19,11 @@ canvas {
background-color: #333333;
color: #ADADAD;
}
+.fakelink {
+ text-decoration: underline;
+ cursor: pointer;
+}
+
.left {
width: 22ch;
}
diff --git a/web/index.html b/web/index.html
index 14b60fc..655204e 100644
--- a/web/index.html
+++ b/web/index.html
@@ -39,6 +39,7 @@
<ul class="nav navbar-nav">
<li id='map-link' class="active"><a href="#" onclick="nmsUi.setActive('map');">Map<span class="sr-only">(current)</span></a></li>
<li id='admin-link' class="gondul-is-private"><a href="#" onclick="nmsUi.setActive('admin');nmsAdmin.updateConfigPane();">Admin</a></li>
+ <li id='score-link' class="gondul-is-private"><a href="#" onclick="nmsUi.setActive('score');nmsScoreCard.init();">Score</a></li>
<li id='oplog-link' class="gondul-is-private"><a href="#" onclick="nmsUi.setActive('oplog');">Oplog</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Menu
@@ -127,6 +128,14 @@
</div>
</div>
</div>
+ <div class="container-fluid" id="score">
+ <div class="row-fluid" id="score-row">
+ <div id="score-parent" class="scorecard">
+ <table id="score-table" class="table table-condensed">
+ </table>
+ </div>
+ </div>
+ </div>
<div class="container-fluid" id="map">
<div class="row-fluid">
<div class="span12">
@@ -302,6 +311,7 @@
<script type="text/javascript" src="js/nms-search.js"></script>
<script type="text/javascript" src="js/nms-time.js"></script>
<script type="text/javascript" src="js/nms-dhcp.js"></script>
+ <script type="text/javascript" src="js/nms-score-card.js"></script>
<script src="js/jquery.datetimepicker.full.js" type="text/javascript"></script>
<script type="text/javascript">
initNMS();
diff --git a/web/js/nms-info-box.js b/web/js/nms-info-box.js
index 90ba12f..e15507d 100644
--- a/web/js/nms-info-box.js
+++ b/web/js/nms-info-box.js
@@ -50,6 +50,10 @@ var nmsInfoBox = nmsInfoBox || {
'name': 'SNMP - Misc',
'panels': ['switchSNMP:misc']
},
+ 'graphs': {
+ 'name': 'Graphs',
+ 'panels': ['graphs']
+ },
'details': {
'name': 'Settings',
'panels': ['switchDetails']
@@ -618,6 +622,50 @@ var switchDetailsPanel = function() {
};
};
nmsInfoBox.addPanelType("switchDetails",switchDetailsPanel);
+var switchGraphsPanel = function() {
+ nmsInfoPanel.call(this,"switchDetails");
+ this.refresh = function(reason) {
+ var swi = [];
+ var swm = [];
+ try {
+ swi = nmsData.switches["switches"][this.sw];
+ } catch(e) {}
+ try {
+ swm = nmsData.smanagement.switches[this.sw];
+ } catch(e) {}
+ var zoomTime = 86400;
+ var device = this.sw;
+ var topel = document.createElement("div");
+ var interfaces = [];
+ for (var i in nmsData.switchstate.switches[this.sw].ifs) {
+ interfaces.push(i);
+ }
+ interfaces.sort();
+ var totalHead = document.createElement("h3");
+ totalHead.innerHTML = device + " total";
+ var total = document.createElement("img");
+ total.src = 'http://monitor.dx16.sorlanet.net/graph--start%3D-' + zoomTime +'%20--end%3D-60%20--width%3D530%20--height%3D150%20--rigid%20--slope-mode%20DEF%3Ab%3D%2F' + device + '%2Ftotals.rrd%3Atraffic_in%3AAVERAGE%20DEF%3Ac%3D%2F' + device + '%2Ftotals.rrd%3Atraffic_out%3AAVERAGE%20CDEF%3Acdefb%3Db%2C8%2C*%20CDEF%3Acdefg%3Dc%2C8%2C*%20AREA%3Acdefb%2300CF0033%20LINE1%3Acdefb%2300CF00FF%20AREA%3Acdefg%23002A9733%20LINE1%3Acdefg%23002A97FF';
+ topel.appendChild(totalHead);
+ topel.appendChild(total);
+ for (var ii in interfaces) {
+ var img = document.createElement("img");
+ var head = document.createElement("h3");
+ var i = interfaces[ii];
+ if (nmsData.switchstate.switches[this.sw].ifs[i].ifHCInOctets == 0
+ && nmsData.switchstate.switches[this.sw].ifs[i].ifHCOutOctets == 0) {
+ continue;
+ }
+ head.innerHTML = device + " - " + i;
+ i = i.replace(/\//g , "");
+ img.src = 'http://monitor.dx16.sorlanet.net/graph--start%3D-' + zoomTime + '%20--end%3D-60%20--width%3D530%20--height%3D150%20--rigid%20--slope-mode%20DEF%3Ab%3D%2F' + device + '%2F' + i + '.rrd%3Atraffic_in%3AAVERAGE%20DEF%3Ac%3D%2F' + device + '%2F' + i + '.rrd%3Atraffic_out%3AAVERAGE%20CDEF%3Acdefb%3Db%2C8%2C*%20CDEF%3Acdefg%3Dc%2C8%2C*%20AREA%3Acdefb%2300CF0033%20LINE1%3Acdefb%2300CF00FF%20AREA%3Acdefg%23002A9733%20LINE1%3Acdefg%23002A97FF';
+ topel.appendChild(head);
+ topel.appendChild(img);
+ }
+
+ this._render(topel);
+ };
+};
+nmsInfoBox.addPanelType("graphs",switchGraphsPanel);
var searchHelpPanel = function() {
nmsInfoPanel.call(this,"searchHelp");
diff --git a/web/js/nms-map-handlers.js b/web/js/nms-map-handlers.js
index 6c5ef0d..4cf2fea 100644
--- a/web/js/nms-map-handlers.js
+++ b/web/js/nms-map-handlers.js
@@ -397,10 +397,10 @@ function pingInfo(sw)
ret.score = 1000;
ret.why = "No IPv4 or IPv6 ping reply";
} else if(v6 == undefined) {
- ret.score = 100;
+ ret.score = 250;
ret.why = "No IPv6 ping reply";
} else if (v4 == undefined) {
- ret.score = 99;
+ ret.score = 249;
ret.why = "No IPv4 ping reply";
}
diff --git a/web/js/nms-score-card.js b/web/js/nms-score-card.js
new file mode 100644
index 0000000..7e4d39a
--- /dev/null
+++ b/web/js/nms-score-card.js
@@ -0,0 +1,68 @@
+"use strict";
+
+var nmsScoreCard = nmsScoreCard || {
+ _handler: null
+};
+
+nmsScoreCard.init = function() {
+ var scores = [];
+ for (var sw in nmsData.switches.switches) {
+ var worst = healthInfo(sw);
+ worst.sw = sw;
+ scores.push(worst);
+ }
+ scores.sort(function(a,b) {
+ return b.score - a.score;
+ });
+ var content = [];
+ for (var i in scores) {
+ var sw = scores[i];
+ content.push([sw.score, sw.sw, sw.why]);
+ }
+ var parentel = document.getElementById("score-parent");
+ while (parentel.firstChild) {
+ parentel.removeChild(parentel.firstChild);
+ }
+ parentel.appendChild(nmsScoreCard._buildTable(content));
+ if (nmsScoreCard._handler != null) {
+ clearTimeout(nmsScoreCard._handler);
+ nmsScoreCard._handler = null;
+ }
+ nmsScoreCard._handler = setTimeout(nmsScoreCard.init, 10000);
+}
+nmsScoreCard._buildTable = function(content,caption) {
+ var table = document.createElement("table");
+ var tr;
+ var td1;
+ var td2;
+ var td3;
+ table.className = "table";
+ table.classList.add("table");
+ table.classList.add("table-condensed");
+ if (caption != undefined) {
+ var cap = document.createElement("caption");
+ cap.textContent = caption;
+ table.appendChild(cap);
+ }
+ for (var v in content) {
+ tr = table.insertRow(-1);
+ if (content[v][0] > 500) {
+ tr.classList.add("danger");
+ } else if (content[v][0] > 249) {
+ tr.classList.add("warning");
+ } else if (content[v][0] > 99) {
+ tr.classList.add("info");
+ } else {
+ tr.classList.add("success");
+ }
+ td1 = tr.insertCell(0);
+ td1.classList.add("left");
+ td2 = tr.insertCell(1);
+ td3 = tr.insertCell(2);
+ td1.innerHTML = content[v][0];
+ console.log("<p class=\"fakelink\" onclick=\"nmsUi.setActive(\"map\"); nmsInfoBox.click(\"" + content[v][1] + "\");\">" + content[v][1] + "</p>");
+ td2.innerHTML = "<p class=\"fakelink\" onclick='nmsUi.setActive(\"map\"); nmsInfoBox.click(\"" + content[v][1] + "\");'>" + content[v][1] + "</p>";
+ td3.innerHTML = content[v][2];
+ }
+ return table;
+}