Feature #49
Von Julius Haman vor 14 Tagen aktualisiert
### Grundsatzentscheidung (erweitert gegenüber ursprünglicher Fassung dieses Tickets) Problem Die Trainingsübersicht (ErgometerDataPlotControl.ShowTrainingData) soll primär ausschließlich Daten Im Hauptchart (ErgometerDataPlotControl.ShowMetricsTrainingData) werden Ist-Werte (Cadence, ActualPulse, ...) bereits aus dem Training selbst zeigen, keine (live nachberechneten) Profildaten mehr. Betrifft beide Trainingsarten: ### Puls-/Leistungsprofil (ShowMetricsTrainingData) den gespeicherten TrainingPoints gezeichnet. Die überlagerte Soll-Kurve (DesiredPulseLine, bei Puls-/Leistungsprofilen) wird aktuell live dagegen bei jeder Anzeige neu aus Profile.GetDrawingPoints() berechnet - das ist Profildaten, keine Trainingsdaten. Dadurch geht Information verloren: GetDrawingPoints() nutzt dabei den zur Laufzeit verstellbaren Intensitätsfaktor Profile.HeightFactor (zur Laufzeit verstellbarer Intensitätsfaktor, [NotMapped], ([NotMapped], nicht persistiert, startet jede Session bei 1). Bei einem alten Schaut man sich ein altes Training später an, zeigt die Soll-Linie dadurch die Kurve mit dem heutigen Standard-Faktor, nicht mit dem, was während des damaligen Trainings durch IncreaseHeight/DecreaseHeight tatsächlich eingestellt war. ### Vorschlag - nur Pulsprofil ("rosa Linie"): Linie") Seit #44 gibt es dafür TrainingPoint.TargetPulse, das den tatsächlich zum Aufnahmezeitpunkt geltenden Sollpuls festhält (inkl. damaliger Intensitätsanpassung). Grundsatz: im Hauptchart sollen ausschließlich Trainingsdaten angezeigt werden, keine (live nachberechneten) Profildaten. - Soll-Kurve bei Pulsprofil-Trainings aus tp.TargetPulse statt Profile.GivenPulseAt() zeichnen (TargetPulse hält den tatsächlich geltenden Sollwert pro Punkt fest, siehe #44). zeichnen. - Leistungsprofil: TrainingPoint.TargetPower wurde im Zuge Prüfen, ob/wie das mit der #44-Spalten-Review entfernt (kein Konsument, siehe Diskussion zu #44) - es gibt aktuell keine trainingsdatenbasierte Quelle für bestehenden DesiredPulseLine-Infrastruktur (SetDesiredCurve, live vs. Historie) zusammenpasst, oder ob eine Leistungs-Sollkurve mehr. Entweder entfällt die Sollkurve für Leistungsprofile ganz (konsequent zur Grundsatzentscheidung), oder TargetPower müsste für diesen Zweck wieder eingeführt werden - zu klären bei grundsätzlichere Überarbeitung der Umsetzung. Chart-Datenquellen sinnvoll ist (daher als eigenes, möglicherweise größeres Ticket statt Teil von #44). ### Topografisches Training (ShowTopographicTrainingData) Leistungsprofil (TargetPower) - deutlich größerer Umbau Aktuell wird die komplette Geländekurve inkl. Höhenskala, farblicher Steigungseinfärbung (SetTopographicColorSegments) und Start/Ziel-/Punktbeschriftungen aus profile.GetDrawingPoints() bzw. Profile.ProfilePoints gezeichnet - reine Profildaten, unabhängig davon was tatsächlich gefahren wurde. Der "Milchglas"-Überzug (AddHazeOverlayForRiddenRange) markiert darauf den aktuell nicht gefahrenen Teil der vollen Strecke. dieses Tickets Entscheidung: Kurve künftig ausschließlich Ursprünglich war hier auch geplant, die Leistungsprofil-Sollkurve analog aus TrainingPoint.Distance/TrainingPoint.Elevation tp.TargetPower zu ziehen. TrainingPoint.TargetPower steht aber laut Spalten-Review nach #44 selbst auf der tatsächlich aufgezeichneten Punkte zeichnen, nicht mehr aus der Profildefinition. Konsequenzen: Streichliste (ActualPower reicht dafür in aller Regel, siehe Diskussion zu #44) - Kurve endet exakt dort, wo ohne gespeicherten Sollwert fehlt damit die Aufzeichnung endet - keine Darstellung der Reststrecke mehr, damit entfällt der Milchglas-Effekt (AddHazeOverlayForRiddenRange/AddHazeOverlay) ersatzlos, da es ohne Profildaten im Chart nichts mehr gibt, gegen das der gefahrene Teil abgeglichen werden könnte. - Farbliche Steigungseinfärbung ebenfalls umstellen: Segmente aus TrainingPoint-Deltas (Distance/Elevation aufeinanderfolgender Punkte) statt ProfilePoint-Deltas berechnen. - Start/Ziel- und Punktbeschriftungen (AddStartFinishLabels, AddPointDescriptionLabels) entfallen mangels Profildaten im Chart ganz, sofern nicht durch Datenquelle für eine reine Trainingsdaten-Variante ersetzbar (Punktbeschriftungen wie Bergnamen stehen nur im Profil, keine Entsprechung im Training). ### Zweiter Schritt (explizit vertagt, nicht Teil dieses Tickets) Später ggf. ein noch verknüpftes Profil zusätzlich kleiner/sekundär einblenden (z. B. als Referenz-Overlay trainingsdatenbasierte Leistungs-Sollkurve. Sollte TargetPower tatsächlich entfallen, bleibt die Leistungsprofil-Sollkurve entweder weiterhin profilbasiert (Status quo, Profile.GivenPowerAt()) oder eigener kleiner Bereich) entfällt ganz - bewusst getrennt von diesem Ticket, da separat zu klären, sobald die Grundsatzentscheidung (Trainingsdaten first) unabhängig davon steht. TargetPower-Streichung selbst umgesetzt wird. ### Kontext Entstanden aus der Spalten-Review von TrainingPoint nach #44, danach bewusst erweitert von der ursprünglich nur auf die Pulsprofil-Linie beschränkten Fassung auf die komplette Trainingsübersicht. #44.