aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/index.html2
-rw-r--r--web/js/nms-info-box.js50
-rw-r--r--web/js/nms-search.js32
3 files changed, 73 insertions, 11 deletions
diff --git a/web/index.html b/web/index.html
index 85cac15..375b46b 100644
--- a/web/index.html
+++ b/web/index.html
@@ -86,7 +86,7 @@
<span class="input-group-btn">
<button id="searchbox-x" class="btn btn-default" type="button" onclick="nmsSearch.reset();">X</button>
<button id="searchbox-help" class="btn btn-default" type="button" onclick="nmsInfoBox.showWindow('searchHelp');">?</button>
- <button id="searchbox-submit" class="btn btn-default" type="button" onclick="nmsInfoBox.showWindow('switchInfo',document.getElementById('searchbox').value);">Go!</button>
+ <button id="searchbox-submit" class="btn btn-default" type="button" onclick="nmsSearch.runSearch();">Go!</button>
</span>
</div>
</div>
diff --git a/web/js/nms-info-box.js b/web/js/nms-info-box.js
index b902a69..cd84ec0 100644
--- a/web/js/nms-info-box.js
+++ b/web/js/nms-info-box.js
@@ -76,6 +76,16 @@ var nmsInfoBox = nmsInfoBox || {
}
}
},
+ {
+ 'id': 'searchResults',
+ 'title': 'Search Results',
+ 'views': {
+ 'initial': {
+ 'name': 'Search Results',
+ 'panels': ['searchResults']
+ }
+ }
+ },
{
'id': 'inventoryListing',
'title': 'Inventory listing',
@@ -723,6 +733,46 @@ var searchHelpPanel = function() {
};
nmsInfoBox.addPanelType("searchHelp",searchHelpPanel);
+
+/*
+ * Panel type: Search Results
+ *
+ * Show the search results
+ *
+ */
+var searchResultsPanel = function() {
+ var searchPage = 0;
+ nmsInfoPanel.call(this,"searchResults");
+ this.refresh = function(reason) {
+ var collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'});
+ var switches = nmsSearch.matches.sort(collator.compare);
+ if(switches.length <= 0) {
+ var x = document.createElement("div");
+ var c = document.createElement("p");
+ c.innerText = "No results :(";
+ x.appendChild(c);
+ this._render(x)
+ }
+
+ else {
+ var table = document.createElement('table');
+ table.className = "table table-condensed";
+ table.id = "searchResults-table"
+ for (var sw in switches) {
+ var row = table.insertRow(sw);
+ var cell1 = row.insertCell(0);
+ var cell2 = row.insertCell(1);
+ var cell3 = row.insertCell(2);
+ cell1.innerHTML = "<a href='#' onclick='nmsInfoBox.showWindow(\"switchInfo\",\""+switches[sw]+"\");'>"+switches[sw]+ '</a>';
+ cell2.innerHTML = nmsData.switches["switches"][switches[sw]].distro_name;
+ cell3.innerHTML = handlers[0].getInfo(switches[sw]).why;
+ }
+ this._render(table);
+ }
+ };
+};
+nmsInfoBox.addPanelType("searchResults",searchResultsPanel);
+
/*
* Panel type: Add switch
*
diff --git a/web/js/nms-search.js b/web/js/nms-search.js
index f435c81..41e5397 100644
--- a/web/js/nms-search.js
+++ b/web/js/nms-search.js
@@ -15,6 +15,8 @@ nmsSearch.helpText = [
'IP search: Start typing an IP and any switch with that IP registered either as management IP or part of its subnet will be identified',
'SNMP search: Type anything found in the "sysDescr" SNMP OID to hilight a switch matching that. Practical examples include version numbers for firmware (e.g.: "JUNOS 12." vs "JUNOS 14.").'];
+nmsSearch.matches = [];
+
/*
* Test if the search expression "id" matches the switch "sw"
*
@@ -81,6 +83,13 @@ nmsSearch.searchTest = function(id, sw) {
}
} catch (e) {}
try {
+ for (var x in nmsData.switches.switches[sw]['tags']) {
+ if(re.test(nmsData.switches.switches[sw]['tags'][x])){
+ return true;
+ }
+ }
+ } catch (e) {}
+ try {
for (var x in nmsData.snmp.snmp[sw].misc.entPhysicalSerialNum) {
if (nmsData.snmp.snmp[sw].misc.entPhysicalSerialNum[x] == null) {
continue;
@@ -142,7 +151,7 @@ nmsSearch._disableTimer = function() {
nmsSearch.search = function() {
var el = document.getElementById("searchbox");
var id = false;
- var matches = [];
+ nmsSearch.matches = [];
if (el) {
id = el.value.toLowerCase();
}
@@ -150,7 +159,7 @@ nmsSearch.search = function() {
nmsMap.enableHighlights();
for(var sw in nmsData.switches.switches) {
if (nmsSearch.searchTest(id,sw)) {
- matches.push(sw);
+ nmsSearch.matches.push(sw);
nmsMap.setSwitchHighlight(sw,true);
} else {
nmsMap.setSwitchHighlight(sw,false);
@@ -161,22 +170,25 @@ nmsSearch.search = function() {
nmsSearch._disableTimer();
nmsMap.disableHighlights();
}
- if(matches.length == 1) {
- document.getElementById("searchbox-submit").classList.add("btn-primary");
- document.getElementById("searchbox").dataset.match = matches[0];
- } else {
+ if(nmsSearch.matches.length == 0) {
document.getElementById("searchbox-submit").classList.remove("btn-primary");
document.getElementById("searchbox").dataset.match = '';
}
};
+nmsSearch.runSearch = function() {
+ if(nmsSearch.matches.length == 1) {
+ nmsInfoBox.showWindow("switchInfo",nmsSearch.matches[0]);
+ }
+ else {
+ nmsInfoBox.showWindow('searchResults',nmsSearch.matches.length);
+ }
+};
+
nmsSearch._searchKeyListener = function(e) {
switch (e.keyCode) {
case 13:
- var sw = document.getElementById("searchbox").dataset.match;
- if(sw != '') {
- nmsInfoBox.showWindow("switchInfo",sw);
- }
+ nmsSearch.runSearch();
break;
case 27:
nmsSearch.reset();