44 lines
995 B
JavaScript
44 lines
995 B
JavaScript
"use strict";
|
|
|
|
import m from "mithril";
|
|
|
|
import layout from "./layout";
|
|
import * as overviewPage from "./overview-page";
|
|
import * as devicesPage from "./devices-page";
|
|
import * as errorPage from "./error-page";
|
|
|
|
let state;
|
|
|
|
function pagify(pageName, page) {
|
|
const component = {
|
|
render: () => {
|
|
if (state && state.error) return m(errorPage.component, state);
|
|
else return m(layout, { page: pageName }, m(page.component, state));
|
|
}
|
|
};
|
|
|
|
if (page.init)
|
|
component.onmatch = args => {
|
|
return new Promise(resolve => {
|
|
page
|
|
.init(args)
|
|
.then(st => {
|
|
if (!st) return m.route.set("/");
|
|
state = st;
|
|
resolve();
|
|
})
|
|
.catch(err => {
|
|
state = { error: err.message };
|
|
resolve();
|
|
});
|
|
});
|
|
};
|
|
|
|
return component;
|
|
}
|
|
|
|
m.route(document.body, "/overview", {
|
|
"/overview": pagify("overview", overviewPage),
|
|
"/devices": pagify("devices", devicesPage)
|
|
});
|