From a961c87e9653f954ad2cc6130f66adae7569bd43 Mon Sep 17 00:00:00 2001 From: Adrian Wannenmacher Date: Tue, 17 Feb 2026 21:31:33 +0100 Subject: [PATCH] basic session selector --- ui/app.js | 22 ++++++++-------------- ui/session_list.js | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 ui/session_list.js diff --git a/ui/app.js b/ui/app.js index 429c388..a399870 100644 --- a/ui/app.js +++ b/ui/app.js @@ -1,12 +1,12 @@ "use strict"; import Session from "../models/session.js"; -import SessionView from "./session.js"; import WbDb from "../data/db.js"; import SessionRepo from "../data/session_repo.js"; +import SessionList from "./session_list.js"; export default class App { - #session = null; + #sessions = []; constructor() { let db = WbDb.get(); @@ -17,21 +17,15 @@ export default class App { } async #dbReady() { - let sessions = await SessionRepo.getAll(); - if (sessions.length === 0) { - this.#session = new Session(); - SessionRepo.put(this.#session); - } else - this.#session = sessions[0]; - + this.#sessions = await SessionRepo.getAll(); m.redraw(); } view() { - if (this.#session === null) { - return m("p", "Warte auf Datenbank."); - } - - return m(SessionView, { model: this.#session }); + return m(SessionList, { + models: this.#sessions, + onSelect: (key) => console.log("selected", key), + onNew: () => console.log("new"), + }); } } diff --git a/ui/session_list.js b/ui/session_list.js new file mode 100644 index 0000000..bd4aaf1 --- /dev/null +++ b/ui/session_list.js @@ -0,0 +1,22 @@ +"use strict"; + +import Session from "../models/session.js"; + +export default class SessionList { + /** @param {{ attrs: { models: Session[] } }} param The sessions to show. */ + view({attrs: { models, onSelect, onNew } }) { + return m("section", [ + m("button", { onclick: () => onNew() }, "Neie Session"), + m("ol", [ + models.map((s) => m("li", [ + m("button", { onclick: () => onSelect(s.id) }, [ + m("p", s.ourTeam !== "" ? s.ourTeam : "Unbnannts Team"), + m("p", s.theirTeam !== "" ? s.theirTeam : "Unbnannts Team"), + m("p", "•".repeat(s.result.ourPoints)), + m("p", "•".repeat(s.result.theirPoints)), + ]) + ])) + ]) + ]); + } +}