UI: даты игр в едином формате ДД.ММ.ГГГГ вместо сырых ISO-строк

Новый formatDate в domain/format.ts для date-only строк (played_at,
last_match_at). Применён: список партий, заголовок страницы партии
(раньше там было «2026-07-13»), записи в админке, «последняя партия»
на странице группы.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 17:42:05 +03:00
co-authored by Claude Fable 5
parent 7b61443fb9
commit 002c657855
5 changed files with 16 additions and 6 deletions
+2 -1
View File
@@ -6,6 +6,7 @@ import { GroupSwitcher } from "../components/GroupSwitcher";
import { Leaderboard } from "../components/Leaderboard";
import { MatchListView } from "../components/MatchList";
import { Spinner } from "../components/Spinner";
import { formatDate } from "../domain/format";
import { useMe } from "../hooks/auth";
import { useGroup, useGroupMatches, useGroupStats } from "../hooks/groups";
@@ -49,7 +50,7 @@ export function GroupPage() {
</div>
<p className="muted small">
Партий: {stats?.total_matches ?? 0}
{stats?.last_match_at ? ` · последняя: ${stats.last_match_at}` : ""}
{stats?.last_match_at ? ` · последняя: ${formatDate(stats.last_match_at)}` : ""}
</p>
</div>
+2 -2
View File
@@ -6,7 +6,7 @@ import { ConfirmDialog } from "../components/ConfirmDialog";
import { MatchMedia } from "../components/MatchMedia";
import { PlayerLink } from "../components/PlayerLink";
import { Spinner } from "../components/Spinner";
import { formatDuration, formatTime } from "../domain/format";
import { formatDate, formatDuration, formatTime } from "../domain/format";
import { WIN_REASONS, type WinReason, winReasonLabel } from "../domain/winReasons";
import { useToast } from "../context/ToastContext";
import {
@@ -120,7 +120,7 @@ export function MatchDetailPage() {
<div>
<div className="card">
<div className="row-between">
<h2 style={{ margin: 0 }}>{match.played_at}</h2>
<h2 style={{ margin: 0 }}>{formatDate(match.played_at)}</h2>
{inProgress ? (
<span className="badge" style={{ color: "var(--accent-2)" }}>идёт</span>
) : (
@@ -3,6 +3,7 @@ import { useMemo, useState } from "react";
import { ApiError } from "../../api/client";
import { ConfirmDialog } from "../../components/ConfirmDialog";
import { formatDate } from "../../domain/format";
import { Spinner } from "../../components/Spinner";
import { Switch } from "../../components/Switch";
import { useToast } from "../../context/ToastContext";
@@ -54,7 +55,7 @@ export function AdminRecordsPage() {
<div key={m.id} className="card" style={{ margin: 0 }}>
<div className="row-between">
<div>
<b>#{m.id}</b> · {m.played_at}
<b>#{m.id}</b> · {formatDate(m.played_at)}
{!grouped && <span className="muted small"> · {m.group_name}</span>}
<div className="muted small">
{m.player_count} игр. · автор {m.created_by}