aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--web/nms.gathering.org/js/nms.js64
1 files changed, 62 insertions, 2 deletions
diff --git a/web/nms.gathering.org/js/nms.js b/web/nms.gathering.org/js/nms.js
index ea440fc..99c42cf 100644
--- a/web/nms.gathering.org/js/nms.js
+++ b/web/nms.gathering.org/js/nms.js
@@ -16,7 +16,8 @@ var nms = {
* FIXME: Should just stop using these.
*/
timers: {
- playback:false
+ playback:false,
+ tvmode: false
},
menuShowing:true,
@@ -59,7 +60,14 @@ var nms = {
playing: false,
replayTime: 0,
replayIncrement: 60 * 60
- }
+ },
+ tvmode: {
+ handlers: [],
+ currentIndex: 0,
+ interval: 20000,
+ hideMenu: false,
+ nightMode: false
+ }
};
/*
@@ -320,6 +328,43 @@ function setLegend(x,color,name)
}
/*
+ * Start TV-mode
+ *
+ * Loops trough a list of views/updaters at a set interval.
+ * Arguments: array of views, interval in seconds, use nightmode, hide menus
+ */
+nms.tvmode.start = function(views,interval,nightMode,hideMenus) {
+ if(interval > 0)
+ nms.tvmode.interval = interval * 1000;
+ setNightMode(nightMode);
+ if(nms.menuShowing && hideMenus)
+ toggleMenu();
+ nms.tvmode.handlers = [];
+ for(var view in views) {
+ for(var handler in handlers) {
+ if(views[view] == handlers[handler].tag) {
+ nms.tvmode.handlers.push(handlers[handler]);
+ }
+ }
+ }
+ if (nms.tvmode.handlers.length > 1) {
+ nms.timers.tvmode = new nmsTimer(nms.tvmode.tick, nms.tvmode.interval, "TV-mode ticker", "Handler used to advance tv-mode");
+ nms.timers.tvmode.start();
+ nms.tvmode.tick();
+ }
+}
+nms.tvmode.tick = function() {
+ if(nms.tvmode.currentIndex > nms.tvmode.handlers.length - 1) {
+ nms.tvmode.currentIndex = 0;
+ }
+ setUpdater(nms.tvmode.handlers[nms.tvmode.currentIndex]);
+ nms.tvmode.currentIndex++;
+}
+nms.tvmode.stop = function() {
+ nms.timers.tvmode.stop();
+}
+
+/*
* Change map handler (e.g., change from uplink map to ping map)
*/
function setUpdater(fo)
@@ -501,9 +546,24 @@ function detectHandler() {
return;
}
}
+ if(document.location.hash == "#tvmode") {
+ var views = getUrlVars()["views"];
+ views = views.split(",");
+ var interval = parseInt(getUrlVars()["interval"]);
+ nms.tvmode.start(views,interval,true,false);
+ return;
+ }
setUpdater(handler_ping);
}
+function getUrlVars() {
+ var vars = {};
+ var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
+ vars[key] = value;
+ });
+ return vars;
+}
+
function setMenu()
{
var nav = document.getElementsByTagName("nav")[0];