diff --git a/src/components/moderator/components/FightEdit.svelte b/src/components/moderator/components/FightEdit.svelte index d84a4da..5a93d75 100644 --- a/src/components/moderator/components/FightEdit.svelte +++ b/src/components/moderator/components/FightEdit.svelte @@ -23,7 +23,7 @@ event, actions, onSave, - groups, + groups = $bindable(), }: { fight: EventFight | null; teams: Team[]; @@ -139,7 +139,7 @@ - + No map found. @@ -165,17 +165,30 @@ {#snippet child({ props })} {/snippet} - + - No map found. - + No team found. + { + fightBlueTeam = { + id: -1, + name: "?", + color: "7", + kuerzel: "?", + }; + blueTeamSelectOpen = false; + }} + keywords={["?"]}>??? + {#each teams as team} {#snippet child({ props })} {/snippet} - + - No map found. - + No team found. + { + fightRedTeam = { + id: -1, + name: "?", + color: "7", + kuerzel: "?", + }; + redTeamSelectOpen = false; + }} + keywords={["?"]}>??? + {#each teams as team} Neue Gruppe - { - fightGroup = null; - groupSelectOpen = false; - }} - > - {#if fightGroup === null} - - {:else} - - {/if} - Keine Gruppe - - {#each groups as group} + { - fightGroup = group.id; + fightGroup = null; groupSelectOpen = false; }} > - - {group.name} + {#if fightGroup === null} + + {:else} + + {/if} + Keine Gruppe - {/each} + + {#each groups as group} + { + fightGroup = group.id; + groupSelectOpen = false; + }} + > + + {group.name} + + {/each} + diff --git a/src/components/moderator/pages/event/EventFightList.svelte b/src/components/moderator/pages/event/EventFightList.svelte index 4b73873..b21aa9b 100644 --- a/src/components/moderator/pages/event/EventFightList.svelte +++ b/src/components/moderator/pages/event/EventFightList.svelte @@ -20,23 +20,25 @@ -
- - - - Mehrfach Bearbeiten - - Gruppe Ändern - Startzeit Verschieben - Spectate Port Ändern - - - - Erstellen - - (createOpen = true)}>Fight Erstellen - - Generatoren - Gruppenphase - K.O. Phase - - - - - - - Fight Erstellen - Hier kannst du einen neuen Fight erstellen - - - {#snippet actions(dirty, submit)} - - - - {/snippet} - - - + + + + Fight Erstellen + Hier kannst du einen neuen Fight erstellen + + + {#snippet actions(dirty, submit)} + + + + {/snippet} + + + + +{#if selectedGroup} + +{/if} + +{#if selectedGroupForResults} + +{/if} + +
+ + + Mehrfach Bearbeiten + + Gruppe Ändern + Startzeit Verschieben + Spectate Port Ändern + + + + Erstellen + + (createOpen = true)}>Fight Erstellen + + Generatoren + Gruppenphase + K.O. Phase + + + + + Gruppen + + {#each groups as group (group.id)} + + + {group.name} + + + openGroupEditDialog(group)}>Bearbeiten + openGroupResultsDialog(group)}>Gruppen Ergebnisse + + + {/each} + + + +
@@ -163,6 +209,7 @@ {#each table.getRowModel().rows as groupRow (groupRow.id)} {#if groupRow.getIsGrouped()} + {@const group = groups.find((g) => g.id === groupRow.getValue("group"))} groupRow.toggleSelected()} class="mr-4" /> - {groupRow.getValue("group") ?? "Keine Gruppe"} + {group?.name ?? "Keine Gruppe"} - {#if groupRow.original.group != null} - - - - {/if} + {#each groupRow.subRows as row (row.id)} @@ -187,12 +230,7 @@ {/each} - (fights = fights.map((v) => (v.id === update.id ? update : v)))} + (fights = fights.map((v) => (v.id === update.id ? update : v)))} > diff --git a/src/components/moderator/pages/event/FightEditRow.svelte b/src/components/moderator/pages/event/FightEditRow.svelte index 974a4b1..2ecbdbe 100644 --- a/src/components/moderator/pages/event/FightEditRow.svelte +++ b/src/components/moderator/pages/event/FightEditRow.svelte @@ -7,7 +7,7 @@ import type { Team } from "@components/types/team"; import { fightRepo } from "@components/repo/fight"; - let { fight, teams, groups, event, onupdate }: { fight: EventFight; teams: Team[]; groups: ResponseGroups[]; event: SWEvent; onupdate: (update: EventFight) => void } = $props(); + let { fight, teams, groups = $bindable(), event, onupdate }: { fight: EventFight; teams: Team[]; groups: ResponseGroups[]; event: SWEvent; onupdate: (update: EventFight) => void } = $props(); let editOpen = $state(false); @@ -37,7 +37,7 @@ Fight bearbeiten Hier kannst du die Daten des Kampfes bearbeiten. - + {#snippet actions(dirty, submit)} diff --git a/src/components/moderator/pages/event/GroupEditDialog.svelte b/src/components/moderator/pages/event/GroupEditDialog.svelte new file mode 100644 index 0000000..1a52863 --- /dev/null +++ b/src/components/moderator/pages/event/GroupEditDialog.svelte @@ -0,0 +1,45 @@ + + +{#if group} + + + + Gruppe Bearbeiten: {group.name} + Hier kannst du die Gruppendetails bearbeiten. + + + {#snippet actions(dirty, submit)} + + +
+ + +
+
+ {/snippet} +
+
+
+{/if} diff --git a/src/components/moderator/pages/event/GroupEditRow.svelte b/src/components/moderator/pages/event/GroupEditRow.svelte deleted file mode 100644 index 4e1f1f0..0000000 --- a/src/components/moderator/pages/event/GroupEditRow.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
- - -
diff --git a/src/components/moderator/pages/event/GroupResultsDialog.svelte b/src/components/moderator/pages/event/GroupResultsDialog.svelte new file mode 100644 index 0000000..e4d3ee8 --- /dev/null +++ b/src/components/moderator/pages/event/GroupResultsDialog.svelte @@ -0,0 +1,48 @@ + + + + + + Ergebnisse: {group?.name} + + Punkte: Sieg: {group?.pointsPerWin}, Unentschieden: {group?.pointsPerDraw}, Niederlage: {group?.pointsPerLoss} + + + {#if group.points !== null} +
+ + + Team + Spiele + Punkte + + + + {#each Object.entries(group.points).toSorted((a, b) => b[1] - a[1]) as [teamIdString, points] (teamIdString)} + {@const teamId = Number(teamIdString)} + {@const team = teams.find((t) => t.id === teamId) as ResponseTeam} + {@const playedGames = fights.filter((f) => f.start > Date.now() && f.group?.id === group.id && (f.blueTeam.id === teamId || f.redTeam.id === teamId)).length} + + {team.name} ({team.kuerzel}) + {playedGames} + {points} + + {/each} + +
+ {:else} +

Noch keine Ergebnisse für diese Gruppe vorhanden oder keine Spiele zugeordnet.

+ {/if} + + + + + diff --git a/src/components/moderator/pages/event/RefereesList.svelte b/src/components/moderator/pages/event/RefereesList.svelte index 0da6088..63ee74b 100644 --- a/src/components/moderator/pages/event/RefereesList.svelte +++ b/src/components/moderator/pages/event/RefereesList.svelte @@ -55,7 +55,7 @@ {referee.name} - + {/each} @@ -63,7 +63,7 @@ - + diff --git a/src/components/moderator/pages/event/TeamTable.svelte b/src/components/moderator/pages/event/TeamTable.svelte index 94a0975..5f06d78 100644 --- a/src/components/moderator/pages/event/TeamTable.svelte +++ b/src/components/moderator/pages/event/TeamTable.svelte @@ -59,7 +59,7 @@ {t.kuerzel} {t.name} - + {/each} @@ -72,7 +72,7 @@ - + diff --git a/src/components/moderator/pages/event/columns.ts b/src/components/moderator/pages/event/columns.ts index 4f4a855..48927c2 100644 --- a/src/components/moderator/pages/event/columns.ts +++ b/src/components/moderator/pages/event/columns.ts @@ -63,7 +63,7 @@ export const columns: ColumnDef = [ }, { header: "Gruppe", - accessorKey: "group.name", + accessorKey: "group.id", id: "group", }, { diff --git a/src/components/moderator/pages/events/Events.svelte b/src/components/moderator/pages/events/Events.svelte index e039b80..2c24b27 100644 --- a/src/components/moderator/pages/events/Events.svelte +++ b/src/components/moderator/pages/events/Events.svelte @@ -20,12 +20,136 @@
+
+

Events

+ + + {#snippet child({ props })} + + {/snippet} + + + + Create New Event + Fill in the details for the new event. Click create when you're done. + +
+
+ + +
+
+ +
+ +
+
+
+ +
+ +
+
+ {#if errorMsg} +

{errorMsg}

+ {/if} +
+ + + {#snippet child({ props })} + + {/snippet} + + + +
+
+
+ {#await eventsFuture}

Loading...

{:then events} @@ -45,7 +169,5 @@ {/each}
- {:catch e} - {/await} -
\ No newline at end of file +