diff options
Diffstat (limited to 'web/js')
-rw-r--r-- | web/js/nms-info-box.js | 48 | ||||
-rw-r--r-- | web/js/nms-map-handlers.js | 4 | ||||
-rw-r--r-- | web/js/nms-score-card.js | 68 |
3 files changed, 118 insertions, 2 deletions
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; +} |