From 353a415990c3ea8aa362bd750e1e5d106f7061b6 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 29 Jun 2025 19:41:43 +0200 Subject: [PATCH] Refactor GroupTable component to use $props for event, group, and rows; simplify teamPoints calculation with derived state --- src/components/GroupTable.svelte | 43 +++++++++++--------------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/src/components/GroupTable.svelte b/src/components/GroupTable.svelte index 9897329..c4ec3d0 100644 --- a/src/components/GroupTable.svelte +++ b/src/components/GroupTable.svelte @@ -24,35 +24,22 @@ import type { ExtendedEvent } from "@type/event.ts"; import "@styles/table.css"; - export let event: ExtendedEvent; - export let group: number; - export let rows: number = 1; + let { + event, + group, + rows = 1, + }: { + event: ExtendedEvent; + group: number; + rows?: number; + } = $props(); - $: teamPoints = event.teams - .map((team) => { - let fights = event.fights.filter((fight) => fight.blueTeam.id === team.id || fight.redTeam.id === team.id); - - if (group !== undefined) { - fights = fights.filter((fight) => fight.group?.id === group); - } - - const points = fights.reduce((acc, fight) => { - if (fight.ergebnis === 1 && fight.blueTeam.id === team.id) { - return acc + (fight.group?.pointsPerWin ?? 3); - } else if (fight.ergebnis === 2 && fight.redTeam.id === team.id) { - return acc + (fight.group?.pointsPerWin ?? 3); - } else if (fight.ergebnis === 3) { - return acc + (fight.group?.pointsPerDraw ?? 1); - } else { - return acc + (fight.group?.pointsPerLoss ?? 0); - } - }, 0); - return { - team, - points, - }; - }) - .sort((a, b) => b.points - a.points); + let teamPoints = $derived( + Object.entries(event.groups[group]?.points ?? {}).map(([teamId, points]) => ({ + team: event.teams.find((t) => t.id === Number(teamId))!!, + points: points, + })) + );