diff --git a/src/components/leaderboard/editors/TracksEditor.tsx b/src/components/leaderboard/editors/TracksEditor.tsx index 5452c72..9a70f63 100644 --- a/src/components/leaderboard/editors/TracksEditor.tsx +++ b/src/components/leaderboard/editors/TracksEditor.tsx @@ -10,20 +10,27 @@ interface ResultInputProps { function ResultInput({ value, pointsTable, onChange }: ResultInputProps) { const knownPoints = Array.from(new Set(pointsTable.map((e) => e.points))).sort((a, b) => b - a); + // Fallback 0 to DNS if 0 is not a valid points option + const displayValue = value === 0 && !knownPoints.includes(0) ? 'DNS' : value; + // Ensure the current numeric value is always included in options + const allPoints = typeof displayValue === 'number' + ? Array.from(new Set([...knownPoints, displayValue])).sort((a, b) => b - a) + : knownPoints; const handleChange = (raw: string) => { if (raw === 'DNF') return onChange('DNF'); if (raw === 'DNS') return onChange('DNS'); - onChange(parseInt(raw) || 0); + const parsed = parseInt(raw); + onChange(isNaN(parsed) ? 0 : parsed); }; return (