- {console.log(event)}
{event.name} - {event.division} - scoring
+
+
+
- {#each event.registeredPlayers as bracket, bi}
+
+
+ {#each displayBrackets as bracket, bi}
-
{bracket.name}
-
+
{bracket.name}
- {#each bracket.items as player}
-
-
- {player.firstName}
- {player.lastName}
+ {#each bracket.items as player, pi (player.id)}
+ {@const playerScores = committedScores[player.id] ?? []}
+ {@const validScores = playerScores.filter((s): s is number => s !== null)}
+ {@const avgScore =
+ validScores.length > 0
+ ? validScores.reduce((a, b) => a + b, 0) / validScores.length
+ : 0}
+
+
onDragStart(bi, pi)}
+ class:drop-target={dropTarget?.bi === bi && dropTarget?.pi === pi}
+ ondragover={(e) => onDragOver(e, bi, pi)}
+ ondrop={() => onDrop(bi, pi)}
+ ondragend={onDragEnd}
+ >
+
+ {player.firstName}
+ {player.lastName}
+
+
+ {#each Array.from({ length: numResults }, (_, i) => i) as run}
+ {
+ const current = [
+ ...(pendingScores[player.id] ?? Array(numResults).fill(''))
+ ];
+ current[run] = e.currentTarget.value;
+ pendingScores[player.id] = current;
+ }}
+ onblur={(e) => {
+ const val = parseFloat(e.currentTarget.value);
+ const current = [
+ ...(committedScores[player.id] ?? Array(numResults).fill(null))
+ ];
+ current[run] = isNaN(val) ? null : val;
+ committedScores[player.id] = current;
+ }}
+ />
+ {/each}
+ {#if event.resultPresets[0].averageResults == 1}{/if}
+
+
+
+ avg: {avgScore.toFixed(2)}
{/each}
{/each}
+
+
-{/await}
+{/if}