Projekt

Allgemein

Profil

Feature #65

Von Julius Haman vor 6 Tagen aktualisiert

Ziel: Die Trainingsübersicht überarbeiten - statt des Inline-Detailpanels eine eigene Trainingsdetailseite im Strava-/Garmin-Stil (Kacheln, Diagramm, Karte), von der aus sich durch die Trainings blättern lässt. 

 ### Umgesetzt (3.1.1) 

 * **Eigene Trainingsdetailseite mit Blätterfunktion**: Zusammenfassungs-Kacheln, Diagramm und bei topographischen Trainings die Route mit hervorgehobenem gefahrenen Abschnitt. Vor/Zurück blättert in derselben Reihenfolge wie die Übersicht (neuestes zuerst). „Zurück" markiert in der Übersicht das zuletzt angesehene Training (auch nach dem Blättern) und scrollt das Grid dorthin 
 * **Diagramm**: bei topographischen Trainings das Geländeprofil der tatsächlich gefahrenen Strecke (aus TrainingPoint.Distance/Elevation statt aus der Profildefinition); bei den übrigen Trainings Puls, Trittfrequenz und Leistung mit Pulszonen-Bändern wie in #66 
 * **Anvisieren und X-Skalierung**: eine **Anvisieren**: orangene Hilfslinie folgt der Maus in den Diagrammen aller Trainingsarten; der Tooltip zeigt Zeit, km sowie Puls, Leistung im Höhenprofil und Trittfrequenz des nächsten Trainingspunkts. Bei topographischen Trainings gibt es die Linie im Geländeprofil (mit zugehöriger Streckenpunkt auf der Karte) und im Puls-/Leistungs-/Trittfrequenz-Diagramm darunter - beide laufen synchron (Bewegen in einem Diagramm setzt die Linie auch im anderen). Beide Diagramme haben dieselbe X-Skalierung, standardmäßig je km, umschaltbar auf je Zeit (Auswahl wird gespeichert); feste Plotränder, damit die X-Achsen pixelgenau untereinander liegen, und gekoppelte Achsen (Verschieben/Zoomen/Zurücksetzen wirkt auf beide). Die Steigungsfärbung des Geländeprofils funktioniert in beiden Skalierungen Karte 
 * **Pulszonen-Kreisdiagramm** (Zeitanteil je Zone, Grenzen aus dem historisierten Maximalpuls, #66) mit Farben der Skin-Palette; ohne Beschriftung im Kreis, die Prozentwerte stehen in der Legende vor dem Zonennamen; 0%-Zonen nur in der Legende; FormatException im Tracker beim Klick behoben 
 * **Layout der Detailseite**: unter den Kacheln steht in einer Zeile das (schmalere) Pulszonen-Kreisdiagramm mit der topographischen Streckenkarte direkt daneben; darunter das Geländeprofil und - bei topographischen Trainings - ein zweites Diagramm mit Puls, Trittfrequenz und Leistung über der Zeit (mit Pulszonen-Bändern) 
 * **Kacheln**: feste Reihenfolge Distanz, Dauer, Kalorien, Ø Geschwindigkeit, Ø Puls, Ø Leistung, Ø Trittfrequenz, Fitnessnote (Max-Kacheln und „Höhe" entfernt). Profilbezogene Kacheln - Start im Profil, Ende im Profil, Profillänge, Anstieg, Abfahrt - stehen nur bei topographischen Trainings in einer eigenen Zeile darunter. Die Zahlen sind wie in der Werteleiste eines laufenden Trainings eingefärbt (Distanz/Trittfrequenz grün, Puls rot, Leistung blau, Kalorien dunkelrot, sonst grau) 
 * **Einheiten am Wert**: „(DS)"/„(max.)"/Klammer-Einheiten aus den Beschriftungen entfernt; führendes „Ø"/„Min."/„Max.", die Einheit (km, km/h, W, m, %, bpm) steht klein hinter dem Zahlenwert - in Übersicht (auch Distanz-Spalte), Detailkacheln und Profilansicht 
 * **Profil weiterfahren**: bei einem topographischen Training, dessen Profil noch nicht zu Ende gefahren ist (Endposition = Startoffset + gefahrene Distanz, Toleranz 1 m), gibt es auf der Detailseite neben den Blätter-Buttons den Button „Profil weiterfahren bei x km", und der Fortsetzen-Button im Grid ist aktiv. Beides startet ein neues topographisches Training im 3D-Fenster ab der Endposition (wie der Startdialog mit gewählter Startdistanz, kein Fortsetzen desselben Trainings). Am Profilende ist beides inaktiv/ausgeblendet 
 * **Übersicht**: rechtes Detail-Panel mit ausgeblendeten Spalten und Details-Toggle wieder eingebaut 
 * **Startposition im Profil**: Training.StartOffsetMeters speichert bei topographischen Trainings die absolute Startposition, damit „Start im Profil"/„Ende im Profil" auch nach dem Speichern stimmen. TrainingPoint.Distance ist immer 0-basiert (Wegmessgerät des Trainings); das Diagramm beginnt damit bei 0 km 
 * **Bestandsdaten (Migration Version3110, keine neue Migration)**: mehretappige topographische Trainings vor #47 bekommen ihren Offset aus DistanceFrom bzw. dem ersten TrainingPoint; deren Distance wird dabei auf 0-basiert bereinigt. LatLon-Backfill und TCX-Export-Fallback rechnen die Profilposition als StartOffsetMeters + Distance. Trainings ab #47 behalten NULL (Offset dort nicht rekonstruierbar, Anzeige fällt auf 0 zurück). Zudem Training.Profile_id direkt statt Zwischentabelle ProfileTraining (Bestandsdaten übernommen) 
 * **Fehlerbehebungen an der Detailseite**: Dark-Mode-Textfarbe, Mausrad scrollt die Seite statt Diagramm/Karte zu zoomen, Koordinatensprung ans Ziel (GetLatLonFromPosition klemmt jetzt auf den letzten Punkt statt (0,0) zu liefern; bereits betroffene Bestandstrainings werden beim Kartenaufbau gefiltert), Karte überdeckt nicht mehr die Scrollbar, eine wiederverwendete Kartenkontrolle (TrackMapControl.Shared) statt einer WebView2 pro Seite, kein Fade/Slide beim Seitenwechsel, Höhenmeter nur noch bei topographischen Trainings (vorher 0 statt leer bei Pulsprofilen) 

Zurück