feat(TournamentTab): add HTML escaping utility and improve player name rendering
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 42s

- Introduced `escapeHtml` method to sanitize HTML content, enhancing security against XSS attacks.
- Refactored player name rendering in tournament results to utilize the new HTML escaping method, ensuring safe display of player names and table data.
This commit is contained in:
Torsten Schulz (local)
2026-05-12 23:23:04 +02:00
parent 48f71b9df1
commit 1e23171370
7 changed files with 1063 additions and 59 deletions

View File

@@ -132,12 +132,13 @@ Web: `DiaryView.vue` (sehr groß). API-Cluster (Auszug in Web nach `apiClien
---
## Phase 5 Trainings-Statistik (Parität TrainingStatsView)
## Phase 5 Trainings-Statistik (Parität TrainingStatsView) — erledigt
- [ ] Alle Kennzahlen/Tabellen/Filter aus Web
- [ ] Zeiträume, Exporte, falls vorhanden
---
- [x] **DTO / API:** `TrainingStats.kt` `weekdayStats`, `monthlyTrend`, `memberDistribution`, `overview.bestTrainingDay`, Mitglied mit `birthDate`, `participationRate12Months`, `trainingGroups`, `trainingDetails`, `lastTrainingTs` usw.
- [x] **Ableitungen wie Web:** `TrainingStatsDerived.kt` Filter (Wochentag, Trainingstag, Gruppe), `filteredOverview`, Monats-/Wochentags-Trends, Mitgliederstruktur, Gruppen-Performance, Altersklassen, Sortierung, CSV
- [x] **UI:** `TrainingStatsScreen.kt` Kennzahlen-Kacheln, Panels, kollabierbare Listen Trainingstage/Mitglieder, Detail-Dialog, CSV-Share (`shareFileWithMime` in `DiaryPdfShare.kt`)
- [x] **i18n-Local:** `LanguageLocals.kt` (`LocalLanguageCode`) aus `AppRoot.kt` ausgelagert
- [x] **Hinweis:** Web hat keinen CSV-Export für diese Statistik; mobil zusätzlich **CSV exportieren** (gefilterte/sortierte Mitgliederliste)
## Phase 6 Terminplan (ScheduleView)