From 80fa0216fb9fa1c4be3fe2ee3a42c971d7d40183 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Sun, 23 Mar 2025 19:10:37 +0100 Subject: [PATCH] Lib: Only show races without result present in RaceResultCard race dropdown --- src/lib/components/cards/RaceResultCard.svelte | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/lib/components/cards/RaceResultCard.svelte b/src/lib/components/cards/RaceResultCard.svelte index 9bd4d47..f894e24 100644 --- a/src/lib/components/cards/RaceResultCard.svelte +++ b/src/lib/components/cards/RaceResultCard.svelte @@ -8,7 +8,7 @@ type ModalStore, type ToastStore, } from "@skeletonlabs/skeleton"; - import { Button, Card, Dropdown } from "$lib/components"; + import { Button, Card, Dropdown, type DropdownOption } from "$lib/components"; import type { Driver, Race, RaceResult, Substitution } from "$lib/schema"; import { get_by_value } from "$lib/database"; import { race_dropdown_options } from "$lib/dropdown"; @@ -46,6 +46,9 @@ let substitutions: Substitution[] | undefined = $state(undefined); data.substitutions.then((s: Substitution[]) => (substitutions = s)); + let raceresults: RaceResult[] | undefined = $state(undefined); + data.raceresults.then((r: RaceResult[]) => (raceresults = r)); + // Constants const labelwidth: string = "70px"; @@ -58,6 +61,11 @@ get_by_value(races ?? [], "id", race_select_value) ?? undefined, ); + let present_results: string[] = $derived.by(() => { + if (!raceresults || raceresults.length === 0) return []; + return raceresults.map((raceresult: RaceResult) => raceresult.race); + }); + let pxxs_placeholder: string = $derived( currentrace ? `Select P${(currentrace.pxx ?? -10) - 3} to P${(currentrace.pxx ?? -10) + 3}...` @@ -227,7 +235,9 @@ !present_results.includes(option.value), + )} {labelwidth} {disabled} {required}