2018-06-30 16:20:54 +02:00
|
|
|
import * as domlib from './domlib';
|
|
|
|
import {MenuView} from './element/menu';
|
|
|
|
import Navigo from '../node_modules/navigo/lib/navigo';
|
|
|
|
import View from './view';
|
|
|
|
import {singelton as notify} from './element/notify';
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
const router = new Navigo(null, true, '#'),
|
|
|
|
elMain = domlib.newEl('main'),
|
2018-07-17 23:54:11 +02:00
|
|
|
elMenu = new MenuView(),
|
|
|
|
GUI_RENDER_DEBOUNCER_TIME = 100;
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
export {router};
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
let init = false,
|
|
|
|
currentView = new View();
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-07-17 23:54:11 +02:00
|
|
|
function renderView () {
|
2018-06-30 16:20:54 +02:00
|
|
|
if (!document.body) {
|
2018-07-17 23:54:11 +02:00
|
|
|
window.setTimeout(renderView, GUI_RENDER_DEBOUNCER_TIME);
|
2018-06-30 16:20:54 +02:00
|
|
|
return;
|
2017-05-16 19:18:35 +02:00
|
|
|
}
|
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
if (!init) {
|
|
|
|
elMenu.bind(document.body);
|
|
|
|
notify.bind(document.body);
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
document.body.appendChild(elMain);
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
init = true;
|
|
|
|
}
|
|
|
|
currentView.render();
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
notify.render();
|
|
|
|
elMenu.render();
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
router.resolve();
|
|
|
|
}
|
2017-05-16 19:18:35 +02:00
|
|
|
|
2018-07-17 23:54:11 +02:00
|
|
|
export function render () {
|
|
|
|
let timeout = false;
|
|
|
|
|
|
|
|
function reset () {
|
|
|
|
timeout = null;
|
|
|
|
}
|
|
|
|
if (timeout) {
|
|
|
|
console('skip rendering to often');
|
|
|
|
window.clearTimeout(timeout);
|
|
|
|
}else{
|
|
|
|
renderView();
|
|
|
|
}
|
|
|
|
timeout = window.setTimeout(reset, GUI_RENDER_DEBOUNCER_TIME);
|
|
|
|
}
|
|
|
|
|
2018-06-30 16:20:54 +02:00
|
|
|
export function setView (toView) {
|
|
|
|
currentView.unbind();
|
|
|
|
currentView = toView;
|
|
|
|
currentView.bind(elMain);
|
|
|
|
currentView.render();
|
|
|
|
}
|