PRODUCTION READY BOYS

This commit is contained in:
2026-07-07 22:31:54 +01:00
parent 8394ad45c8
commit a3ead298af
14 changed files with 7526 additions and 69 deletions

View File

@@ -31,59 +31,50 @@
let eventEndpoint: EventSource;
async function getEventData() {
let response = await fetch('/api/registeredEvents', {
method: 'POST',
body: JSON.stringify({
eventId: eventId
}),
headers: {
'Content-type': 'application/json; charset=UTF-8'
}
});
const data = await response.json();
if (data && data[0] && data[0].registeredPlayers) {
data[0].registeredPlayers.forEach((bracket: any) => {
bracket.items.sort((a: any, b: any) => {
if (a.placement === 0 && b.placement === 0) return 0;
if (a.placement === 0) return 1;
if (b.placement === 0) return -1;
return a.placement - b.placement;
});
});
}
return data;
}
let eventDataPromise = getEventData();
let eventData = $state<any>(data.event);
onMount(() => {
eventEndpoint = new EventSource('/api/registeredEvents');
eventEndpoint.onmessage = (e) => {
const allEvents = JSON.parse(e.data);
const updated = allEvents.find((ev: any) => ev.id == eventId);
if (updated) {
if (updated.registeredPlayers) {
updated.registeredPlayers.forEach((bracket: any) => {
bracket.items.sort((a: any, b: any) => {
if (a.placement === 0 && b.placement === 0) return 0;
if (a.placement === 0) return 1;
if (b.placement === 0) return -1;
return a.placement - b.placement;
});
});
}
eventData = updated;
}
};
});
onDestroy(() => {
eventEndpoint?.close();
});
</script>
{#await eventDataPromise}
<div class="page-container"><div>loading</div></div>
{:then eventData}
{@const event = eventData[0]}
{#if eventData}
<div class="page-container">
<div class="event-card" class:ongoing-event={event.state == 1} class:completed-event={event.state == 2}
style={event.state == 2 ? `--event-color: ${event.winner?.color ?? 'currentColor'}` : ''}>
<div class="event-card" class:ongoing-event={eventData.state == 1} class:completed-event={eventData.state == 2}
style={eventData.state == 2 ? `--event-color: ${eventData.winner?.color ?? 'currentColor'}` : ''}>
<div class="event-header">
<span class="event-name goldman">{event.name}</span>
<span class="event-division">{event.division}</span>
{#if event.state == 1}
<span class="event-name goldman">{eventData.name}</span>
<span class="event-division">{eventData.division}</span>
{#if eventData.state == 1}
<span class="event-status goldman">ONGOING</span>
{:else if event.state == 2}
{:else if eventData.state == 2}
<span class="event-status goldman">FINISHED</span>
{/if}
</div>
<div class="brackets px-[5vw]">
{#each event.registeredPlayers as bracket, bi}
{#each eventData.registeredPlayers as bracket, bi}
{#if bi > 0}
<div class="bracket-sep" aria-hidden="true"></div>
{/if}
@@ -118,7 +109,7 @@
<div class="flex flex-col justify-center">
{#each player.playerScores as score}
<div class="mx-1 my-0.5 rounded border px-1 text-xs" style="border-color:{player.teamColor}">
Run {score.resultIndex + 1}: {score.result}{event.resultPresets[0].unit}
Run {score.resultIndex + 1}: {score.result}{eventData.resultPresets[0].unit}
</div>
{/each}
</div>
@@ -141,4 +132,6 @@
</div>
{/if}
</div>
{/await}
{:else}
<div class="page-container"><div>loading</div></div>
{/if}