stats: síň slávy a kariérní statistiky

- rekordy: nejvyšší tah, nejvyšší konečné skóre, nejrychlejší výhra
- kariéra: počet her, výher, úspěšnost, průměrné pořadí, průměr na tah
  a kolikrát koho postihlo vynulování
- do statistik jdou jen dohrané hry, nedohrané a opuštěné se ignorují
- celkové skóre počítá SQL stejným pravidlem jako core.Game.totals(),
  tedy součet tahů po posledním vynulování; testem ověřeno, že se obě
  cesty shodují
- vědomě chybí celkový součet bodů napříč hrami — cílové skóre je u každé
  hry jiné, metrika by odměňovala jen toho, kdo hrál nejvíc
- README se spuštěním a přehledem modulů

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
gitea-actionsandClaude Opus 5 committed 2026-08-20 19:04:50 +02:00
1 parent bcbbede258
commit d7c63cf98b
9 files changed
+474 -1

No files matched your search

+42
View File
@@ -419,3 +419,45 @@ button {
@media (prefers-reduced-motion: reduce) {
* { transition: none !important; animation: none !important; }
}
/* --- síň slávy ----------------------------------------------------------- */
.records {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
gap: 1px;
background: var(--rule);
border: 1px solid var(--rule);
margin-bottom: calc(var(--step) * 2);
}
.record {
background: #FFFFFF;
padding: 1.2rem 1.4rem;
}
.record .number {
font-family: var(--font-num);
font-variant-numeric: tabular-nums;
font-size: 2.6rem;
margin: 0.2rem 0 0.3rem;
line-height: 1;
}
.record .number small {
font-family: var(--font-ui);
font-size: 0.9rem;
color: var(--ink-soft);
}
.record .who {
font-size: 0.85rem;
color: var(--ink-soft);
margin: 0;
}
.sheet .name {
font-family: var(--font-ui);
font-size: 1rem;
color: var(--ink);
}