aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristian Lyngstol <kristian@bohemians.org>2015-04-10 20:26:47 +0200
committerKristian Lyngstol <kristian@bohemians.org>2015-04-10 20:26:47 +0200
commit870e95d022ac8dd3dc6d55c17629e2962ab3e87c (patch)
treed86faa220177392a45437c5b42b529167358ca08
parent7ee6554b7817aebf2d0a1983cf670c0828eeeb48 (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.js62
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;