Ближайший старт
+Ближайший старт
{dashboardMetrics.nextRace.title}
- {formatRaceDate(dashboardMetrics.nextRace.date)} · {formatDistance(dashboardMetrics.nextRace.distanceKm)} + {formatRaceDate(dashboardMetrics.nextRace.date)} ·{" "} + {formatDistance(dashboardMetrics.nextRace.distanceKm)}
{getRaceCountdownLabel(dashboardMetrics.nextRace.date)}
- > + ) : ( -Нет запланированных стартов.
+ <> +Ближайший старт
+Нет запланированных стартов.
+ > )}Последний результат
+Последний результат
{dashboardMetrics.lastResult.finishTime ?? "время не указано"}
{dashboardMetrics.lastResult.title} · {formatDistance(dashboardMetrics.lastResult.distanceKm)}
{formatRaceDate(dashboardMetrics.lastResult.date)}
- > + ) : ( -Пока нет завершённых стартов.
+ <> +Последний результат
+Пока нет завершённых стартов.
+ > )}Личный рекорд
- {dashboardMetrics.personalRecord ? ( - <> -{dashboardMetrics.personalRecord.finishTime ?? "время не указано"}
-
- {dashboardMetrics.personalRecord.title} · {formatDistance(dashboardMetrics.personalRecord.distanceKm)}
+
+ {dashboardMetrics.lastPersonalRecord.finishTime ?? "время не указано"}
Лучший темп среди завершённых стартов.
+ {dashboardMetrics.lastPersonalRecord.title} ·{" "}
+ {formatDistance(dashboardMetrics.lastPersonalRecord.distanceKm)}
+ {formatRaceDate(dashboardMetrics.lastPersonalRecord.date)} Недостаточно данных для личного рекорда. Нет завершённых стартов с финишным временем.
- {race.title}
-
- {formatRaceDate(race.date)} · {formatDistance(race.distanceKm)}
-
-
- {race.title}
-
+ {race.title}
{formatRaceDate(race.date)} · {formatDistance(race.distanceKm)}
@@ -107,9 +84,9 @@ function RaceList(props: { title: string; races: Race[] }): JSX.Element {
{getRaceStatusLabel(race.status, race.date)}
-
- );
- })}
+
+
+ ))}
) : (
Пока нет данных в этом разделе.Последний личный рекорд
+ Последний личный рекорд
+ {title}
{races.length > 0 ? (
- {races.map((race) => {
- const needsResult = raceNeedsResultEntry(race);
- if (needsResult) {
- return (
-