Refactor EventFight handling to include team relation names and update type definitions
All checks were successful
SteamWarCI Build successful

This commit is contained in:
2025-09-28 14:11:58 +02:00
parent c0f4a852b5
commit b11534490d
3 changed files with 27 additions and 11 deletions

View File

@ -258,10 +258,10 @@
{group?.name ?? "Keine Gruppe"} {group?.name ?? "Keine Gruppe"}
</TableCell> </TableCell>
<TableCell class="text-right"> <TableCell class="text-right">
<Button variant="ghost" size="icon" onclick={() => openGroupEditDialog(group)}> <Button variant="ghost" size="icon" onclick={() => openGroupEditDialog(group!)}>
<EditIcon /> <EditIcon />
</Button> </Button>
<Button variant="ghost" size="icon" onclick={() => openGroupResultsDialog(group)}> <Button variant="ghost" size="icon" onclick={() => openGroupResultsDialog(group!)}>
<GroupIcon /> <GroupIcon />
</Button> </Button>
<DropdownMenu> <DropdownMenu>

View File

@ -20,9 +20,9 @@
import { Checkbox } from "@components/ui/checkbox"; import { Checkbox } from "@components/ui/checkbox";
import { renderComponent } from "@components/ui/data-table"; import { renderComponent } from "@components/ui/data-table";
import type { ColumnDef } from "@tanstack/table-core"; import type { ColumnDef } from "@tanstack/table-core";
import type { EventFight } from "@type/event.ts"; import type { EventFightModel } from "./eventmodel.svelte";
export const columns: ColumnDef<EventFight> = [ export const columns: ColumnDef<EventFightModel>[] = [
{ {
id: "auswahl", id: "auswahl",
header: ({ table }) => { header: ({ table }) => {
@ -32,7 +32,7 @@ export const columns: ColumnDef<EventFight> = [
onCheckedChange: () => { onCheckedChange: () => {
if (!table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()) { if (!table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()) {
const now = new Date(); 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) { if (rows.length > 0) {
rows.forEach((row) => { rows.forEach((row) => {
@ -57,7 +57,7 @@ export const columns: ColumnDef<EventFight> = [
}, },
}, },
{ {
accessorFn: (r) => r.blueTeam.name + " vs " + r.redTeam.name, accessorFn: (r) => r.blueTeam.nameWithRelation + " vs " + r.redTeam.nameWithRelation,
id: "begegnung", id: "begegnung",
header: "Begegnung", header: "Begegnung",
}, },

View File

@ -25,28 +25,44 @@ export class EventModel {
private remapFights(v: Array<EventFight>, rels: Array<ResponseRelation>) { private remapFights(v: Array<EventFight>, rels: Array<ResponseRelation>) {
return v.map((fight) => { return v.map((fight) => {
let f = JSON.parse(JSON.stringify(fight)) as EventFight; 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); let relations = rels.filter((relation) => relation.fight === f.id);
relations.forEach((relation) => { relations.forEach((relation) => {
let str = ""; let str = "";
if (relation.type === "FIGHT") { 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 relation.fromFight?.start ?? 0
).toLocaleTimeString("de-DE", { ).toLocaleTimeString("de-DE", {
timeStyle: "short", timeStyle: "short",
})})`; })})`;
} else { } else {
str += `${relation.fromPlace + 1}. Platz von ${relation.fromGroup?.name}`; str = `${relation.fromPlace + 1}. Platz von ${relation.fromGroup?.name}`;
} }
if (relation.team === "BLUE") { if (relation.team === "BLUE") {
f.blueTeam.name += ` (${str})`; blueTeamRelation = str;
} else { } 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];