made triple events go off of the highest score instead of the average
This commit is contained in:
1
TODO.md
1
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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -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({
|
||||
|
||||
@@ -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}
|
||||
<div
|
||||
animate:flip={{ duration: 300 }}
|
||||
class="scoring-player-card"
|
||||
@@ -362,6 +370,10 @@
|
||||
<div class="text-sm opacity-60">
|
||||
avg: {avgScore.toFixed(2)}
|
||||
</div>
|
||||
{:else if numResults > 1}
|
||||
<div class="text-sm opacity-60">
|
||||
best: {bestScore.toFixed(2)}
|
||||
</div>
|
||||
{/if}
|
||||
{:else if player.playerScores.length > 0}
|
||||
{#each player.playerScores as score}
|
||||
@@ -378,20 +390,22 @@
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<button
|
||||
class="mt-4 rounded px-6 py-2 text-white"
|
||||
class:bg-green-600={submitStatus === 'idle'}
|
||||
class:bg-gray-400={submitStatus === 'submitting'}
|
||||
class:bg-blue-600={submitStatus === 'done'}
|
||||
class:bg-red-600={submitStatus === 'error'}
|
||||
disabled={submitStatus === 'submitting' || submitStatus === 'done'}
|
||||
onclick={submitResults}
|
||||
>
|
||||
{#if submitStatus === 'idle'}Submit Results
|
||||
{:else if submitStatus === 'submitting'}Submitting…
|
||||
{:else if submitStatus === 'done'}Submitted ✓
|
||||
{:else}Error — Retry{/if}
|
||||
</button>
|
||||
{#if event.state == 1}
|
||||
<button
|
||||
class="mt-4 rounded px-6 py-2 text-white"
|
||||
class:bg-green-600={submitStatus === 'idle'}
|
||||
class:bg-gray-400={submitStatus === 'submitting'}
|
||||
class:bg-blue-600={submitStatus === 'done'}
|
||||
class:bg-red-600={submitStatus === 'error'}
|
||||
disabled={submitStatus === 'submitting' || submitStatus === 'done'}
|
||||
onclick={submitResults}
|
||||
>
|
||||
{#if submitStatus === 'idle'}Submit Results
|
||||
{:else if submitStatus === 'submitting'}Submitting…
|
||||
{:else if submitStatus === 'done'}Submitted ✓
|
||||
{:else}Error — Retry{/if}
|
||||
</button>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
Reference in New Issue
Block a user