diff --git a/TODO.md b/TODO.md index 67d4895..db53afb 100644 --- a/TODO.md +++ b/TODO.md @@ -12,7 +12,6 @@ ledger view inserting manually into ledger # Database - HIGH PRIORITY -make events score based off of highest score instead of avg load results from the excel sheet i made export whole contest results to csv diff --git a/scripts/data/resultPresets.csv b/scripts/data/resultPresets.csv index 7d98a72..ec5b30a 100644 --- a/scripts/data/resultPresets.csv +++ b/scripts/data/resultPresets.csv @@ -1,4 +1,4 @@ presetName,numberOfResults,unit,lowerIsBetter,averageResults default,1,m,0,0 -three,3,m,0,1 +three,3,m,0,0 race,1,s,1,0 diff --git a/src/routes/api/eventResults/+server.ts b/src/routes/api/eventResults/+server.ts index 3fe62f2..caec374 100644 --- a/src/routes/api/eventResults/+server.ts +++ b/src/routes/api/eventResults/+server.ts @@ -57,6 +57,7 @@ export async function POST({ request }: any) { for (let result in currentPlayer.scores) { let currentResult = currentPlayer.scores[result]; + if (currentResult === null || currentResult === undefined) continue; let newScoreEntry = await db .insert(schema.registeredResults) .values({ diff --git a/src/routes/event/scoring/[eventId]/+page.svelte b/src/routes/event/scoring/[eventId]/+page.svelte index 3a1ae62..0f9e47d 100644 --- a/src/routes/event/scoring/[eventId]/+page.svelte +++ b/src/routes/event/scoring/[eventId]/+page.svelte @@ -75,10 +75,10 @@ return valid.reduce((a, b) => a + b, 0) / valid.length; } - function best(scores: (number | null)[], fallback = Infinity): number { + function best(scores: (number | null)[], lowerIsBetter: boolean, fallback = Infinity): number { const valid = scores.filter((s): s is number => s !== null); if (valid.length === 0) return fallback; - return Math.min(...valid); + return lowerIsBetter ? Math.min(...valid) : Math.max(...valid); } function getPoints(placement: number): number { @@ -106,10 +106,10 @@ const fallback = lowerIsBetter ? Infinity : -Infinity; const sa = useAverage ? average(committedScores[a.id] ?? [], fallback) - : best(committedScores[a.id] ?? [], fallback); + : best(committedScores[a.id] ?? [], lowerIsBetter, fallback); const sb = useAverage ? average(committedScores[b.id] ?? [], fallback) - : best(committedScores[b.id] ?? [], fallback); + : best(committedScores[b.id] ?? [], lowerIsBetter, fallback); return lowerIsBetter ? sa - sb : sb - sa; }) @@ -229,7 +229,9 @@ position: i + 1, points: getPoints(i + 1), scores: committedScores[p.id] ?? [], - average: average(committedScores[p.id] ?? []) + summaryValue: useAverage + ? average(committedScores[p.id] ?? []) + : best(committedScores[p.id] ?? [], lowerIsBetter) })) })) }) @@ -309,6 +311,12 @@ validScores.length > 0 ? validScores.reduce((a, b) => a + b, 0) / validScores.length : 0} + {@const bestScore = + validScores.length > 0 + ? lowerIsBetter + ? Math.min(...validScores) + : Math.max(...validScores) + : 0}
avg: {avgScore.toFixed(2)}
+ {:else if numResults > 1} +
+ best: {bestScore.toFixed(2)} +
{/if} {:else if player.playerScores.length > 0} {#each player.playerScores as score} @@ -378,20 +390,22 @@ {/each} - + {#if event.state == 1} + + {/if} {/if}