diff options
author | Kristian Lyngstol <kristian@bohemians.org> | 2015-04-10 20:26:47 +0200 |
---|---|---|
committer | Kristian Lyngstol <kristian@bohemians.org> | 2015-04-10 20:26:47 +0200 |
commit | 870e95d022ac8dd3dc6d55c17629e2962ab3e87c (patch) | |
tree | d86faa220177392a45437c5b42b529167358ca08 | |
parent | 7ee6554b7817aebf2d0a1983cf670c0828eeeb48 (diff) |
NMS: Tweak replay logic and fix linknet/ping drop
We only get ping_data for live networks, but that creates a problem when we
iterate that list instead of the complete list of switches/linknets: If a
switch goes away, its last status would be shown.
-rw-r--r-- | web/nms.gathering.org/nms2/js/nms.js | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/web/nms.gathering.org/nms2/js/nms.js b/web/nms.gathering.org/nms2/js/nms.js index 7c4d960..6f51b10 100644 --- a/web/nms.gathering.org/nms2/js/nms.js +++ b/web/nms.gathering.org/nms2/js/nms.js @@ -105,31 +105,28 @@ function checkNow(now) { return false; } -var tgStart = { - year:2015, - month:04, - date:01, - hour:09, - minute:00, - second:0 -}; +var tgStart = stringToEpoch('2015-03-31T15:00:00'); + +var replayTime = 0; -var replayTime = {}; +var replayIncrement = 30 * 60; -var replayIncrement = 30; +function stringToEpoch(t) { + var ret = new Date(Date.parse(t)); + return parseInt(parseInt(ret.valueOf()) / 1000); +} + +function epochToString(t) { + var d = new Date(parseInt(t) * parseInt(1000)); + var str = d.getFullYear() + "-" + (parseInt(d.getMonth())+1) + "-" + d.getDate() + "T"; + str += d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); + return str; +} + function timeReplay() { - nms.now = replayTime.year + '-' + replayTime.month + '-' + replayTime.date + ' ' + replayTime.hour + ':' + replayTime.minute + ':' + replayTime.second; - replayTime.minute += replayIncrement; - if (replayTime.minute >= 60) { - replayTime.minute = 0; - if (replayTime.hour == 23) { - replayTime.hour = 0; - replayTime.date += 1; - } else { - replayTime.hour += 1; - } - } + replayTime = parseInt(replayTime) + parseInt(replayIncrement); + nms.now = epochToString(replayTime); nms.damage = true; } var replayHandler = false; @@ -137,9 +134,7 @@ function startReplay() { if (replayHandler) clearInterval(replayHandler); resetColors(); - for (var v in tgStart) { - replayTime[v] = tgStart[v]; - } + replayTime = tgStart; timeReplay(); replayHandler = setInterval(timeReplay,1000); } @@ -490,11 +485,20 @@ function rgb_from_latency(latency_ms) function pingUpdater() { - for (var sw in nms.ping_data["switches"]) { - setSwitchColor(sw, gradient_from_latency(nms.ping_data["switches"][sw]["latency"])); + for (var sw in nms.switches_now["switches"]) { + var c = "blue"; + if (nms.ping_data['switches'] && nms.ping_data['switches'][sw]) + c = gradient_from_latency(nms.ping_data["switches"][sw]["latency"]); + setSwitchColor(sw, c); } - for (var ln in nms.ping_data["linknets"]) { - setLinknetColors(ln, gradient_from_latency(nms.ping_data["linknets"][ln][0]),gradient_from_latency(nms.ping_data["linknets"][ln][1])); + for (var ln in nms.switches_now["linknets"]) { + var c1 = "blue"; + var c2 = c1; + if (nms.ping_data['linknets'] && nms.ping_data['linknets'][ln]) { + c1 = gradient_from_latency(nms.ping_data["linknets"][ln][0]); + c2 = gradient_from_latency(nms.ping_data["linknets"][ln][1]); + } + setLinknetColors(ln, c1, c2); } } @@ -772,6 +776,7 @@ function drawSwitches() function drawScene() { if (nms.damage) { + ctx.font = Math.round(fontSize * canvas.scale) + "px " + fontFace; if (nms.now != false) { ctx.clearRect(0,0,200,20); ctx.fillStyle = "white"; @@ -783,7 +788,6 @@ function drawScene() ctx.strokeText("Now: " + nms.now, 0 + margin.text, 20 * canvas.scale); ctx.fillText("Now: " + nms.now, 0 + margin.text, 20 * canvas.scale); } - ctx.font = Math.round(fontSize * canvas.scale) + "px " + fontFace; drawLinknets(); drawSwitches(); nms.damage = false; |