История: изменение рейтинга на карточках партий профиля
GET /users/{id}/matches отдаёт у каждой партии rating_delta — изменение
общего рейтинга владельца истории за неё (один знак после запятой), в обоих
режимах, включая «лучшую партию»; история и рейтинг считаются одним
проигрыванием. В списке партий группы поле пустое: там непонятно, чья это
дельта.
Фронт: компактная карточка истории — второй строкой «Рейтинг: +12.3»,
подробная (MatchListView) — последней строкой, только когда дельта есть.
Рост — зелёным, падение — красным, минус типографский (formatRatingDelta).
schema.d.ts перегенерирован.
Тест: дуэль новичков ±32 в обеих историях, реванш с обратными знаками,
сумма изменений сходится с рейтингом, в списке группы дельты нет, режим
«лучшая» её отдаёт. #77
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LqSoRj99iwVEH5U5fnZgsd
This commit is contained in:
@@ -18,6 +18,14 @@ export function plural(n: number, one: string, few: string, many: string): strin
|
||||
return many;
|
||||
}
|
||||
|
||||
// Изменение рейтинга за партию: всегда со знаком и одним знаком после запятой
|
||||
// («+12.3», «−4.1», «0.0»); минус — типографский, как в справке.
|
||||
export function formatRatingDelta(delta: number): string {
|
||||
const abs = Math.abs(delta).toFixed(1);
|
||||
if (abs === "0.0") return "0.0";
|
||||
return `${delta > 0 ? "+" : "−"}${abs}`;
|
||||
}
|
||||
|
||||
export function formatDuration(minutes: number | null | undefined): string {
|
||||
if (minutes == null) return "—";
|
||||
const h = Math.floor(minutes / 60);
|
||||
|
||||
Reference in New Issue
Block a user