This improves the design of the session view a lot. However, several things still need to be done: 1. The rules section is not styled. 2. The session list is not styled. 3. The design is not responsive yet. This will take longer, as the base view will need to be overhauled substantially to take advantage of wider screens. 4. A light mode needs to be added.
57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
"use strict";
|
|
|
|
import WbDb from "/data/db.js";
|
|
|
|
export default class Layout {
|
|
#db = WbDb.get();
|
|
#dbErrorsHandled = false;
|
|
|
|
constructor() {
|
|
this.#db.addEventListener(WbDb.EVENT_CHANGE, () => {
|
|
if (!this.#dbErrorsHandled) {
|
|
this.#db.addEventListener("error", this.#handleDbError.bind(this));
|
|
this.#dbErrorsHandled = true;
|
|
}
|
|
m.redraw();
|
|
});
|
|
|
|
if (this.#db.open && !this.#dbErrorsHandled) {
|
|
this.#db.addEventListener("error", this.#handleDbError.bind(this));
|
|
this.#dbErrorsHandled = true;
|
|
}
|
|
}
|
|
|
|
#handleDbError(error) {
|
|
console.error("database error", error);
|
|
}
|
|
|
|
view({ children, attrs: { backHref }}) {
|
|
if (this.#db.failed)
|
|
return m.fragment([
|
|
m("h1", "Watterblock kann nicht geöffnet werden"),
|
|
m("p", "Die IndexedDB-Verbindung funktioniert gerade nicht"),
|
|
]);
|
|
|
|
if (this.#db.blocked)
|
|
return m.fragment([
|
|
m("h1", "Watterblock muss warten"),
|
|
m("p",
|
|
"Bitte schließe alle anderen Tabs, in denen der Watterblock " +
|
|
"geöffnet ist"
|
|
),
|
|
m("p", "Die Spieledatenbank muss aktualisiert werden."),
|
|
]);
|
|
|
|
if (!this.#db.open)
|
|
return m("p", "Öffne Datenbank, bitte warten…");
|
|
|
|
return m.fragment([
|
|
m("header.layout", [
|
|
backHref ? m(m.route.Link, { href: backHref }, "←") : null,
|
|
m("h1", "Watterblock"),
|
|
]),
|
|
m("main.layout", children),
|
|
]);
|
|
}
|
|
}
|