diff options
author | niccofyren <niccofyren@gmail.com> | 2016-03-01 21:47:19 +0100 |
---|---|---|
committer | niccofyren <niccofyren@gmail.com> | 2016-03-01 21:47:19 +0100 |
commit | b02b9288234ea51bc243e7b106551239044acd6d (patch) | |
tree | 47151c1211402afe263db5125b9164f4259db60f | |
parent | aa5e87e0788421fee39bd9d63ac1e5e72f951a2c (diff) | |
parent | 037fbbedcac252a0064979833966ffd577cba32b (diff) |
Merge pull request #29 from niccofyren/make-switches-great-again
Read switch-placements from switches.pl
-rw-r--r-- | web/nms.gathering.org/js/nms.js | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/web/nms.gathering.org/js/nms.js b/web/nms.gathering.org/js/nms.js index 90532e6..8669598 100644 --- a/web/nms.gathering.org/js/nms.js +++ b/web/nms.gathering.org/js/nms.js @@ -1,8 +1,8 @@ var nms = { updater:undefined, // Active updater update_time:0, // Client side timestamp for last update - switches_now:undefined, // Most recent data - switches_then:undefined, // 2 minutes old + switches_now:{switches:{}}, // Most recent data + switches_then:{switches:{}}, // 2 minutes old speed:0, // Current aggregated speed ping_data:undefined, // JSON data for ping history. drawn:false, // Set to 'true' when switches are drawn @@ -667,6 +667,36 @@ function setUpdater(fo) } } +/* + * Helper function for updating switch-data without overwriting existing + * data with non-existent data + */ +function updateSwitches(switchdata,target) { + target['time'] = switchdata['time'] //Assume we always get time + + if(switchdata.switches != undefined) { + for(var sw in switchdata.switches) { + if(switchdata.switches[sw]['ports'] != undefined) + updateSwitchProperty(sw,'ports',switchdata.switches[sw]['ports'],target); + if(switchdata.switches[sw]['temp'] != undefined) + updateSwitchProperty(sw,'temp',switchdata.switches[sw]['temp'],target); + if(switchdata.switches[sw]['temp_time'] != undefined) + updateSwitchProperty(sw,'temp_time',switchdata.switches[sw]['temp_time'],target); + if(switchdata.switches[sw]['placement'] != undefined) + updateSwitchProperty(sw,'placement',switchdata.switches[sw]['placement'],target); + } + } +} +/* + * Helper function for updating a limited subset of switch properties, + * while the current state of the switch data is unknown. + */ +function updateSwitchProperty(sw,property,data,target) { + if(target.switches[sw] == undefined) + target.switches[sw] = {}; + + target.switches[sw][property] = data; +} /* * Convenience function to avoid waiting for pollers when data is available @@ -819,8 +849,7 @@ function updatePorts() dataType: "text", success: function (data, textStatus, jqXHR) { var switchdata = JSON.parse(data); - nms.switches_now = switchdata; - parseIntPlacements(); + updateSwitches(switchdata,nms.switches_now); initialUpdate(); updateSpeed(); updateMap(); @@ -837,6 +866,20 @@ function updatePorts() updateAjaxInfo(); } }); + $.ajax({ + type: "GET", + url: "/switches.pl"+ now , + dataType: "text", + success: function (data, textStatus, jqXHR) { + var switchdata = JSON.parse(data); + updateSwitches(switchdata,nms.switches_now); + parseIntPlacements(); + }, + complete: function(jqXHR, textStatus) { + nms.outstandingAjaxRequests--; + updateAjaxInfo(); + } + }); now=""; if (nms.now != false) now = "?now=" + nms.now; @@ -848,7 +891,7 @@ function updatePorts() dataType: "text", success: function (data, textStatus, jqXHR) { var switchdata = JSON.parse(data); - nms.switches_then = switchdata; + updateSwitches(switchdata,nms.switches_then); initialUpdate(); updateSpeed(); updateMap(); @@ -867,7 +910,7 @@ function updatePorts() */ function newerSwitches() { - if (!nms.switches_now || !nms.switches_then) + if (nms.switches_now.time == undefined || nms.switches_then.time == undefined) return false; var now_timestamp = stringToEpoch(nms.switches_now.time); var then_timestamp = stringToEpoch(nms.switches_then.time); |