parseCount и граница 99 — в domain/matchCounts.ts вместо двух копий в PlaceEditor и AdminMatchEdit. В MatchDetailPage места по раскладке считает placeRows, из него строятся и предупреждения, и строки для API. Поведение не меняется. #89 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
11 lines
536 B
TypeScript
11 lines
536 B
TypeScript
/** Верхняя граница целей и миров — отсечка мусора, та же, что в схеме API (Count). */
|
|
export const MAX_COUNT = 99;
|
|
|
|
/** Поле «цели»/«миры» формы: пустое — не указано (null), иначе целое 0..MAX_COUNT. */
|
|
export function parseCount(raw: string): number | null {
|
|
const text = raw.trim();
|
|
const num = Number(text);
|
|
if (text === "" || !Number.isFinite(num)) return null;
|
|
return Math.min(MAX_COUNT, Math.max(0, Math.trunc(num)));
|
|
}
|