diff --git a/src/pages/ankuendigungen/[...slug].astro b/src/pages/ankuendigungen/[...slug].astro index f325f53..343337f 100644 --- a/src/pages/ankuendigungen/[...slug].astro +++ b/src/pages/ankuendigungen/[...slug].astro @@ -111,15 +111,13 @@ const ogImage = await getImage({ import type {ExtendedEvent} from "@type/event"; import {mount} from "svelte"; - const eventMounts: Map void)[]> = new Map(); + const eventMounts: Map> = new Map(); class FightTableElement extends HTMLElement { connectedCallback(): void { - if (!eventMounts.has(this.dataset["event"]!)) { - eventMounts.set(this.dataset["event"]!, []); - } + loadEvent(this.dataset["event"]!); const rows = Number.parseInt(this.dataset["rows"]!); - eventMounts.get(this.dataset["event"]!)!.push(ev => { + eventMounts.get(this.dataset["event"]!)!.then(ev => { mount(FightTable, { target: this, props: { @@ -134,11 +132,9 @@ const ogImage = await getImage({ class GroupTableElement extends HTMLElement { connectedCallback(): void { - if (!eventMounts.has(this.dataset["event"]!)) { - eventMounts.set(this.dataset["event"]!, []); - } + loadEvent(this.dataset["event"]!); const rows = Number.parseInt(this.dataset["rows"]!); - eventMounts.get(this.dataset["event"]!)!.push(ev => { + eventMounts.get(this.dataset["event"]!)!.then(ev => { mount(GroupTable, { target: this, props: { @@ -154,17 +150,12 @@ const ogImage = await getImage({ customElements.define("fight-table", FightTableElement); customElements.define("group-table", GroupTableElement); - function mountEvent() { - for (const key of eventMounts.keys()) { - get(eventRepo).getEvent(key).then(ev => { - for (const mount of eventMounts.get(key)!) { - mount(ev); - } - }); + function loadEvent(id: string) { + if (!eventMounts.has(id)) { + eventMounts.set(id, get(eventRepo).getEvent(id)); } } - document.addEventListener("astro:page-load", mountEvent); document.addEventListener("astro:before-swap", eventMounts.clear);