# План корректировок: форма старта, время, календарь стартов Краткое описание реализованных изменений в клиенте **runners-calendar** (версия клиента см. в футере приложения). ## 1. Форма старта (редактирование прошедшего события) При **редактировании** старта, чья **дата уже в прошлом**, в блоке «Организация» скрыты поля, неактуальные после забега: - сайт организатора; - время старта; - расписание кластеров; - выдача номеров. Значения по-прежнему хранятся в состоянии формы и отправляются при сохранении (не затираются). Утилита: `isRaceDateInPast` в `frontend/src/lib/raceMetrics.ts`. ## 2. Время старта Вместо свободного текста — три селекта (часы, минуты, секунды), компонент `StartTimeSelects` в `frontend/src/components/StartTimeSelects.tsx`. Сохраняется строка `HH:mm:ss` или пусто → `null` в API. Поддерживается разбор старых значений `HH:mm` при загрузке. ## 3. Список на странице «Календарь стартов» Для стартов со статусом **«внесите результат»** вся карточка — ссылка на `/races/:id/edit` с лёгким увеличением и тенью при наведении/фокусе (токен `--shadow-card-lift`). ## 4. Виды: список и календарь - Переключатель **Список / Календарь**, выбор сохраняется в `sessionStorage` (`races-view-mode`). - **Календарь:** загрузка гонок за выбранный **год** (без фильтра месяца в запросе), отображение сетки месяцев. - При выборе **месяца** в фильтре — крупная сетка этого месяца и компактная навигация по остальным месяцам + «Весь год». ## 5. Ячейка даты в календаре - Наведение или фокус: всплывающая панель — либо «Стартов нет» и кнопка **Добавить** (`/races/new?date=YYYY-MM-DD`), либо список стартов со ссылками на карточки и **Добавить**. - Клик по числу — страница дня `/races/day/:ymd`. ## 6. Страница дня Маршрут `races/day/:ymd`: список стартов на дату, пустое состояние, кнопка **Добавить** с предзаполнением даты через query. ## 7. Новый старт с датой из календаря `RaceFormPage` читает query-параметр `?date=YYYY-MM-DD` при создании старта. ## Основные файлы | Область | Файлы | |--------|--------| | Метрики даты | `frontend/src/lib/raceMetrics.ts`, `frontend/src/lib/calendarUtils.ts` | | Форма | `frontend/src/pages/RaceFormPage.tsx`, `frontend/src/components/StartTimeSelects.tsx` | | Список и календарь | `frontend/src/pages/RacesPage.tsx`, `frontend/src/components/RacesCalendar.tsx` | | День | `frontend/src/pages/RaceDayPage.tsx`, `frontend/src/app/router.tsx` | | Стили | `frontend/src/styles/global.css`, `frontend/src/styles/tokens.css` | | API-док | `docs/backend-api-for-frontend.md` (формат `startTime`) |