From b11534490da5b32c6c0d6943446a24610ff45141 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 28 Sep 2025 14:11:58 +0200 Subject: [PATCH] Refactor EventFight handling to include team relation names and update type definitions --- .../pages/event/EventFightList.svelte | 4 +-- .../moderator/pages/event/columns.ts | 8 +++--- .../pages/event/eventmodel.svelte.ts | 26 +++++++++++++++---- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/components/moderator/pages/event/EventFightList.svelte b/src/components/moderator/pages/event/EventFightList.svelte index 19c5706..929681c 100644 --- a/src/components/moderator/pages/event/EventFightList.svelte +++ b/src/components/moderator/pages/event/EventFightList.svelte @@ -258,10 +258,10 @@ {group?.name ?? "Keine Gruppe"} - - diff --git a/src/components/moderator/pages/event/columns.ts b/src/components/moderator/pages/event/columns.ts index a3d0eb3..d21ad02 100644 --- a/src/components/moderator/pages/event/columns.ts +++ b/src/components/moderator/pages/event/columns.ts @@ -20,9 +20,9 @@ import { Checkbox } from "@components/ui/checkbox"; import { renderComponent } from "@components/ui/data-table"; import type { ColumnDef } from "@tanstack/table-core"; -import type { EventFight } from "@type/event.ts"; +import type { EventFightModel } from "./eventmodel.svelte"; -export const columns: ColumnDef = [ +export const columns: ColumnDef[] = [ { id: "auswahl", header: ({ table }) => { @@ -32,7 +32,7 @@ export const columns: ColumnDef = [ onCheckedChange: () => { if (!table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()) { const now = new Date(); - const rows = table.getRowModel().rows.filter((row) => new Date(row.original.date) > now); + const rows = table.getRowModel().rows.filter((row) => new Date(row.original.start) > now); if (rows.length > 0) { rows.forEach((row) => { @@ -57,7 +57,7 @@ export const columns: ColumnDef = [ }, }, { - accessorFn: (r) => r.blueTeam.name + " vs " + r.redTeam.name, + accessorFn: (r) => r.blueTeam.nameWithRelation + " vs " + r.redTeam.nameWithRelation, id: "begegnung", header: "Begegnung", }, diff --git a/src/components/moderator/pages/event/eventmodel.svelte.ts b/src/components/moderator/pages/event/eventmodel.svelte.ts index 158d1ae..c7cfcba 100644 --- a/src/components/moderator/pages/event/eventmodel.svelte.ts +++ b/src/components/moderator/pages/event/eventmodel.svelte.ts @@ -25,28 +25,44 @@ export class EventModel { private remapFights(v: Array, rels: Array) { return v.map((fight) => { let f = JSON.parse(JSON.stringify(fight)) as EventFight; + + let blueTeamRelation = f.blueTeam.name; + let redTeamRelation = f.redTeam.name; + let relations = rels.filter((relation) => relation.fight === f.id); relations.forEach((relation) => { let str = ""; if (relation.type === "FIGHT") { - str += `${relation.fromPlace === 0 ? "Gewinner" : "Verlierer"} von ${relation.fromFight?.blueTeam.name} vs ${relation.fromFight?.redTeam.name} (${new Date( + str = `${relation.fromPlace === 0 ? "Gewinner" : "Verlierer"} von ${relation.fromFight?.blueTeam.name} vs ${relation.fromFight?.redTeam.name} (${new Date( relation.fromFight?.start ?? 0 ).toLocaleTimeString("de-DE", { timeStyle: "short", })})`; } else { - str += `${relation.fromPlace + 1}. Platz von ${relation.fromGroup?.name}`; + str = `${relation.fromPlace + 1}. Platz von ${relation.fromGroup?.name}`; } if (relation.team === "BLUE") { - f.blueTeam.name += ` (${str})`; + blueTeamRelation = str; } else { - f.redTeam.name += ` (${str})`; + redTeamRelation = str; } }); - return f; + return { + ...f, + blueTeam: { + ...f.blueTeam, + nameWithRelation: `${f.blueTeam.name} (${blueTeamRelation})`, + }, + redTeam: { + ...f.redTeam, + nameWithRelation: `${f.redTeam.name} (${redTeamRelation})`, + }, + }; }); } } + +export type EventFightModel = (typeof EventModel.prototype.fights)[number];