PRODUCTION READY BOYS
This commit is contained in:
@@ -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}
|
||||
Reference in New Issue
Block a user