diff --git a/ui/base_view.js b/ui/base_view.js index 989a599..56ada4e 100644 --- a/ui/base_view.js +++ b/ui/base_view.js @@ -25,6 +25,7 @@ export default class BaseView { return m(SessionList, { models: this.#model.sessions, onSelect: (session) => this.#model.current = session, + onDelete: (id, index) => this.#model.deleteSession(id, index), }); return m("p", "Wart kurz, i lad grad die Spiele…"); @@ -159,4 +160,10 @@ class BaseViewModel { this.loadAllSessions(); }; + deleteSession(id, index) { + SessionRepo.delete(id); + if (this.#sessions[index] === undefined || this.#sessions[index].id !== id) + return; + this.#sessions.splice(index, 1); + } } diff --git a/ui/session_list.js b/ui/session_list.js index 79ca962..b397cca 100644 --- a/ui/session_list.js +++ b/ui/session_list.js @@ -4,15 +4,20 @@ import Session from "/models/session.js"; export default class SessionList { /** @param {{ attrs: { models: Session[] } }} param The sessions to show. */ - view({attrs: { models, onSelect } }) { + view({attrs: { models, onSelect, onDelete } }) { return m("section.wb-session-list", [ m("ol", [ - models.map((s) => m("li.item._alternate._apply", [ + models.map((s, i) => m("li.item._alternate._apply", [ m("span.theirname", s.theirTeam !== "" ? s.theirTeam : "Se"), m("span.ourname", s.ourTeam !== "" ? s.ourTeam : "Mia"), m("span.theirpoints", "•".repeat(s.result.theirPoints)), m("span.ourpoints", "•".repeat(s.result.ourPoints)), m("div.actions", + m( + "button.wb-button.-slim._positioned", + { onclick: () => onDelete(s.id, i) }, + "löschn" + ), m( m.route.Link, {