diff --git a/src/routes/seasonpicks/+page.svelte b/src/routes/seasonpicks/+page.svelte index a3e4d1f..c6789a6 100644 --- a/src/routes/seasonpicks/+page.svelte +++ b/src/routes/seasonpicks/+page.svelte @@ -7,7 +7,7 @@ type ModalStore, } from "@skeletonlabs/skeleton"; import type { PageData } from "./$types"; - import type { Hottake, SeasonPick } from "$lib/schema"; + import type { Hottake, SeasonPick, SeasonPickedUser } from "$lib/schema"; import { ChequeredFlagIcon, LazyImage } from "$lib/components"; import { get_by_value, @@ -38,32 +38,207 @@ modalStore.trigger(modalSettings); }; + + // Users that have already picked the season + let pickedusers: Promise = $derived.by(async () => + (await data.seasonpickedusers).filter( + (seasonpickeduser: SeasonPickedUser) => seasonpickeduser.picked, + ), + ); + + // Users that didn't already pick the season + let outstandingusers: Promise = $derived.by(async () => + (await data.seasonpickedusers).filter( + (seasonpickeduser: SeasonPickedUser) => !seasonpickeduser.picked, + ), + ); Formula 11 - Season Picks - - - - - Your Season Pick - - - {data.seasonpick?.hottake ?? "Invalid"} - - - + +{#await Promise.all([data.drivers, data.teams]) then [drivers, teams]} + + + + + Your Season Pick + + +
+ + {#if data.user} + {@const teamwinners = data.seasonpick + ? data.seasonpick.teamwinners.map((id: string) => get_by_value(drivers, "id", id)) + : [undefined]} + {@const podiums = data.seasonpick + ? data.seasonpick.podiums.map((id: string) => get_by_value(drivers, "id", id)) + : [undefined]} + + +
+
+

Hottake:

+ {data.seasonpick?.hottake} +
+
+

Doohan Starts:

+ + Jack Doohan startet {data.seasonpick?.doohanstarts} mal. + +
+
+ + +
+
+

WDC:

+ +
+
+

WCC:

+ +
+
+ + +
+
+

Most Overtakes:

+ +
+
+

Most DNFs:

+ +
+
+ + +
+
+

Teamwinners:

+
+ {#each teamwinners.slice(0, 12) as winner} + + {/each} +
+
+
+

Podiums:

+
+ {#each podiums as podium} + + {/each} +
+
+
+ {/if} + + + {#await Promise.all( [data.seasonpicks, data.seasonpickedusers, pickedusers, outstandingusers], ) then [seasonpicks, currentpicked, picked, outstanding]} + {#if seasonpicks.length === 0} +
+
+

+ Picked ({picked.length}/{currentpicked.length}): +

+
+ {#each picked.slice(0, 16) as user} + + {/each} +
+
+
+

+ Missing ({outstanding.length}/{currentpicked.length}): +

+
+ {#each outstanding.slice(0, 16) as user} + + {/each} +
+
+
+ {/if} + {/await} +
+
+
+
+{/await} -
-
@@ -120,7 +295,7 @@ > - Teamwin. + Teamwinners
@@ -134,7 +309,6 @@ {/await}
-
{#await Promise.all( [data.seasonpickedusers, data.seasonpicks, data.hottakes, data.drivers, data.teams], ) then [seasonpicked, seasonpicks, hottakes, drivers, teams]} @@ -154,7 +328,7 @@ : [undefined]}