diff --git a/src/routes/seasonpicks/+page.svelte b/src/routes/seasonpicks/+page.svelte index ead8372..b0be61c 100644 --- a/src/routes/seasonpicks/+page.svelte +++ b/src/routes/seasonpicks/+page.svelte @@ -7,7 +7,14 @@ type ModalStore, } from "@skeletonlabs/skeleton"; import type { PageData } from "./$types"; - import type { Driver, Hottake, SeasonPick, SeasonPickedUser, User } from "$lib/schema"; + import type { + Driver, + Hottake, + SeasonPick, + SeasonPickedUser, + SeasonPickResult, + User, + } from "$lib/schema"; import { ChequeredFlagIcon, LazyImage } from "$lib/components"; import { get_by_value, @@ -41,6 +48,29 @@ modalStore.trigger(modalSettings); }; + // Await promises + let seasonpickresult: SeasonPickResult | undefined = $state(undefined); + data.seasonpickresults.then((r: SeasonPickResult[]) => { + if (r.length === 1) { + seasonpickresult = r[0]; + } + }); + + let correct_doohanstarts: number | undefined = $state(undefined); + Promise.all([data.seasonpickresults, data.seasonpicks]).then( + ([results, picks]: [SeasonPickResult[], SeasonPick[]]) => { + if (results.length === 1) { + let result = results[0]; + + correct_doohanstarts = Math.min( + ...picks.map((pick: SeasonPick) => { + return Math.abs(pick.doohanstarts - result.doohanstarts); + }), + ); + } + }, + ); + // Users that have already picked the season let pickedusers: Promise = $derived.by(async () => (await data.seasonpickedusers).filter( @@ -63,7 +93,7 @@ {#if $pbUser} - {#await Promise.all( [data.drivers, data.teams, data.seasonpickedusers, pickedusers, outstandingusers], ) then [drivers, teams, currentpicked, picked, outstanding]} + {#await Promise.all( [data.drivers, data.teams, data.seasonpickedusers, data.seasonpickresults, pickedusers, outstandingusers], ) then [drivers, teams, currentpicked, results, picked, outstanding]} {@const teamwinners = data.seasonpick ? data.seasonpick.teamwinners .map((id: string) => get_by_value(drivers, "id", id) as Driver) @@ -374,16 +404,29 @@
-
+
{hottake?.hottake ?? "?"}
{#if seasonpicks.length > 0} -
+
-
+
-
+
-
+
-
+
Jack Doohan startet {pick?.doohanstarts ?? "?"} mal.
@@ -466,7 +540,16 @@ style="color: {color}; background-color: {color};" > - + {driver?.code}
@@ -495,7 +578,15 @@ style="color: {color}; background-color: {color};" > - + {driver?.code}
diff --git a/src/routes/seasonpicks/+page.ts b/src/routes/seasonpicks/+page.ts index 077427e..71627d0 100644 --- a/src/routes/seasonpicks/+page.ts +++ b/src/routes/seasonpicks/+page.ts @@ -6,11 +6,19 @@ import { fetch_visibleseasonpicks, fetch_teams, fetch_currentrace, + fetch_seasonpickresults, } from "$lib/fetch"; import type { PageLoad } from "../$types"; export const load: PageLoad = async ({ fetch, depends }) => { - depends("data:teams", "data:drivers", "data:seasonpicks", "data:user", "data:users"); + depends( + "data:teams", + "data:drivers", + "data:seasonpicks", + "data:user", + "data:users", + "data:seasonpickresults", + ); return { teams: fetch_teams(fetch), @@ -19,6 +27,7 @@ export const load: PageLoad = async ({ fetch, depends }) => { hottakes: fetch_hottakes(fetch), seasonpickedusers: fetch_seasonpickedusers(fetch), currentrace: fetch_currentrace(fetch), // Used for countdown + seasonpickresults: fetch_seasonpickresults(fetch), seasonpick: await fetch_currentseasonpick(fetch), };