Feature #66
Von Julius Haman vor 7 Tagen aktualisiert
Ziel: Die bisherigen 3 Pulszonen (Leicht/Mittel/Hart, 60/70/80/90% von MaxPulse) durch das Standard-5-Zonen-Modell ersetzen/ergänzen (Erholung 50-60%, Leicht 60-70%, Mittel 70-80%, Hart 80-90%, Maximum 90-100%) und im ganzen Programm sichtbar machen - mit einer eigenen Farbskala statt (ohne Login nicht verifizierbarer) Garmin-Farben. ### Umgesetzt Bisher umgesetzt (Branch #66, seit 3.1.0) #66) * **User-Modell**: 5 gleich breite Zonen (je 10% von MaxPulse) berechnet (User.cs, `User.PulseZoneIndex` - auch als statische Variante mit explizitem Maximalpuls für historisierte Werte); User.PulseZoneIndex), neues Feld `User.RestingPulse` User.RestingPulse (Ruhepuls) ergänzt (Migration Version3110) - erfasst, fließt aber vorerst nicht in die Zonenberechnung ein (Grundlage für ein späteres, optionales Karvonen/HRR-Modell) * **Benutzerverwaltung** (UsersView): Farbbalken + 5-Zeilen-Legende statt bisher reiner Zahlenliste; eigene Farbskala in Skins/Common/PulseZones.xaml; Formular vertikal scrollbar, app-weite TextBox-Padding-Overrides vereinheitlicht (Style-Default statt lokaler Überschreibung) Skins/Common/PulseZones.xaml * **Live-Training** (ErgoDataControl): vertikaler 5-Segment-Zonenbalken neben der Puls-Kachel, aktuelle Zone durch volle Deckkraft + Rahmen hervorgehoben (eine erste Variante mit komplett eingefärbter Kachel wurde verworfen, wirkte zu unruhig) * **Diagramme** (ErgometerDataPlotControl): Pulszonen als leicht eingefärbte Bereiche hinter der Kurve - im Live-Trainingsdiagramm (bpm-Grenzen des Benutzers), (bpm-Grenzen) und in der Profilübersicht bei Pulsprofilen (50/60/70/80/90/100% Maximalpuls) sowie in der Trainingsübersicht und im Trainingsdetail (bpm-Grenzen aus dem historisierten Maximalpuls des Trainings; Maximalpuls); dabei bei topographischen Trainings bewusst keine Bänder, dort ist die Wertachse die Höhe). Bei Pulsprofilen wurde die Fläche unter der Sollkurve entfernt (verdeckte sonst die Zonen-Bänder), Zonen-Bänder) und die Y-Achse geht dort jetzt mindestens bis 120%, damit die oberste Zone immer sichtbar ist * **Historisierung pro Training**: beim Start eines Trainings werden `Training.MaxPulseAtRecording` (MaxPulse bzw. MaxPulseCalculated-Fallback) und `Training.RestingPulseAtRecording` gespeichert - Zonen eines Trainings werden mit dem zum Aufzeichnungszeitpunkt gültigen Wert berechnet, spätere Profiländerungen lassen alte Trainings unberührt (wie bei Garmin/Strava). Es werden nur die zwei Rohwerte gespeichert, die Zonengrenzen lassen sich daraus ableiten. Migration Version3110 (DBVersion 3.1.1.0) füllt Bestandstrainings mit dem aktuellen Profilwert des Nutzers als Näherung nach; für Nutzer, die dabei noch keinen Maximal-/Ruhepuls hinterlegt hatten, holt die Nebenbei: Benutzerverwaltung das beim erstmaligen Setzen einmalig nach (spätere Änderungen lösen bewusst kein erneutes Nachfüllen aus) * **Verwendung der Historisierung in anderen Tickets**: Pulszonen-Kreisdiagramm auf der Trainingsdetailseite (Zeitanteil je Zone, #65), TCX-Export schreibt Max-/Ruhepuls als Activity-Notes (#70) vertikal scrollbar gemacht, app-weite TextBox-Padding-Overrides vereinheitlicht (Style-Default statt lokaler Überschreibung) ### Offen / bewusst zurückgestellt * Karvonen/HRR als alternative Zonenberechnung (Ruhepuls wird erfasst und pro Training historisiert, erfasst, aber noch nicht für Zonen verwendet - Nutzerentscheidung: erst später, falls überhaupt) * Historisierung von Maximalpuls/Ruhepuls pro Training (aktuell wird immer der jeweils aktuelle Profilwert verwendet, nicht der zum Trainingszeitpunkt gültige)