freifunkmanager/webroot/js/gui.js

73 lines
1.6 KiB
JavaScript
Raw Normal View History

2017-05-08 19:13:29 +02:00
var gui = {};
2017-05-09 20:40:18 +02:00
var router = new Navigo(null, true, '#');
2017-05-08 19:13:29 +02:00
(function(){
2017-05-15 21:59:48 +02:00
var currentView = {bind:function(){},render:function(){}};
function render() {
var status = document.getElementsByClassName('status')[0];
if (status === undefined){
console.log("unable to render, render later");
setTimeout(render,100);
return;
}
status.classList.remove('connecting','offline');
if(socket.readyState !== 1){
status.classList.add(((socket.readyState===0 || socket.readyState===2)?'connecting':(socket.readyState===1)?'':'offline'));
}
notify.bind(document.getElementsByClassName('notifications')[0]);
currentView.render();
router.resolve();
}
function setView(c){
currentView = c;
var main = document.querySelector('main')
domlib.removeChildren(main);
currentView.bind(main);
currentView.render();
2017-05-09 20:40:18 +02:00
}
2017-05-15 21:59:48 +02:00
2017-05-09 20:40:18 +02:00
router.on({
'/list': function () {
2017-05-15 21:59:48 +02:00
setView(guiList);
2017-05-09 20:40:18 +02:00
},
'/map':function(){
2017-05-15 21:59:48 +02:00
setView(guiMap);
2017-05-09 20:40:18 +02:00
},
'/statistics':function(){
2017-05-15 21:59:48 +02:00
setView(guiStats);
2017-05-09 20:40:18 +02:00
},
'/n/:nodeID': {
as: 'node',
uses: function (params) {
2017-05-15 21:59:48 +02:00
guiNode.current_node_id = params['nodeID'].toLowerCase();
setView(guiNode);
2017-05-09 20:40:18 +02:00
}
},
});
router.on(function () {
router.navigate('/list');
});
2017-05-15 21:59:48 +02:00
gui.render = function () {
var timeout;
2017-05-08 19:13:29 +02:00
2017-05-15 21:59:48 +02:00
function reset () {
timeout = null;
}
2017-05-09 20:40:18 +02:00
2017-05-15 21:59:48 +02:00
if (timeout){
console("skip rendering, because to often");
clearTimeout(timeout);
} else {
render();
}
timeout = setTimeout(reset, 100);
}
gui.render();
2017-05-08 19:13:29 +02:00
})();