Feature #47
Von Julius Haman vor 10 Tagen aktualisiert
## Ausgangslage Die bisherige aktuelle Funktion „Profil fortsetzen“ "Profil fortsetzen" für topographische Profile erlaubte erlaubt es, ein Profil in mehreren Etappen zu fahren und diese Etappen nachträglich wieder zusammenzuführen. Die Umsetzung war ist vergleichsweise komplex (Verwaltung mehrerer zusammengehöriger Trainings, Etappen-Reihenfolge, Zusammenführung der Aufzeichnungen, eigener Dialog „Etappe beginnen/fortsetzen“). Aufzeichnungen). Offene Frage: Ist der Mehrwert (genaue Nachverfolgung, in wie vielen Etappen ein Profil gefahren wurde) den Implementierungs- und Wartungsaufwand noch wert? ## Umsetzung (Commit 9d4e4e1) Idee Statt Etappen-Tracking gibt es beim Start eines topographischen Profils ein **Startfenster** (`ProfileStartViewModel`/`ProfileStartView`). Es ersetzt sowohl den Etappen-Dialog (`ContinueProfileTrainingViewModel`) als auch den separaten Fensterwahl-Dialog aus #51 (`TrainingWindowChoiceViewModel`). echtem Etappen-Tracking: Bei einem neuen Training optional eine Startposition angeben, entweder **Inhalt des Startfensters** - Überschrift mit Profilname, Profillänge und Höhenprofil-Übersicht als Diagramm. - Startposition: - „Bei 0 frei definierbar (z. B. "Start bei km starten“ (Vorauswahl) 42"), oder - „Bei folgender Startdistanz starten“: Startdistanz per **Klick auf das Höhenprofil** oder durch **Eingabe in km** festlegen. Klick-Auflösung 0,01 km (10 m), der Wert wird auf die Profillänge begrenzt. Die gewählte Position wird als gestrichelte rote Linie im Profil markiert; beim Überfahren des Diagramms erscheint ein Tooltip (km/Höhe/Steigung) mit Hilfslinie. - Trainingsfenster wählen: neues Trainingsfenster mit 3D-Karte (Vorauswahl) oder klassisches Trainingsfenster. - Start / Abbrechen (Schließen mit X zählt als Abbrechen). **Aufruf** - Aus automatisch übernommen aus der Profilverwaltung beim Start Enddistanz eines topographischen Profils. - Aus der Trainingsübersicht beim Fortsetzen eines noch nicht beendeten topographischen Trainings: Die Startdistanz wird mit der bisher gefahrenen Strecke des alten vorherigen Trainings **vorbelegt** (frei änderbar), dazu der Hinweis „bisher gefahren bis x km“. Es wird immer auf dem gleichen Profil. Das neue Training bliebe dabei ein **neues, eigenständiges Training** begonnen – keine Training, ohne feste Verknüpfung zu früheren Trainings auf demselben Profil und kein Fortsetzen des alten Trainings. Puls-/Leistungsprofile und freie Trainings werden weiterhin direkt fortgesetzt. **Datenmodell / Verhalten** - Die Startdistanz (`FreiesTrainingRequest.StartDistanceMeters`) ist ein Offset auf dem Profil. Die Aufzeichnung selbst (`TrainingPoint.Distance`, `DistanceFrom`/`DistanceTo`) ist **immer 0-basiert** (Wegmessgerät des Trainings). Die absolute Profilposition (`ProfilePositionMeters` = Distanz + Offset) wird für Höhenlinie, Steigung, Höhenmeter, Lat/Lon, Fahrersicht, Restdistanz und Zielerkennung verwendet. - Der Trainings-Tacho wird beim ersten gefahrenen Tick auf 0 gesetzt, damit der erste Trainingspunkt exakt bei 0 km beginnt. - TCX-Export: Bei topographischen Trainings werden bevorzugt die aufgezeichneten Lat/Lon-Koordinaten verwendet (die 0-basierte Distanz ist allein keine gültige Profilposition mehr); Profil-Interpolation nur noch (anders als Fallback für Altdaten. - Etappen-Konzept entfernt: `StageNo`/`NewStageOfProfileTrainingId`, Spalten „Etappe“ und „Etappen gefahren“ in der Trainingsübersicht, `ProfileTraining.DistanceDriven`/`NextStageNo`/`Duration` und der Converter `StagesDrivenConverter`. Ältere Daten aus der Etappen-Zeit können weiterhin mehrere Trainings in einem `ProfileTraining` gruppieren. - Nebenbei: `ErgometerDataPlotControl` reagiert zuverlässig auf Maus-Anvisieren/Klick (`handledEventsToo`) und loggt seinen Zustand; `ShellView` wartet mit dem Seitenwechsel bis die NavigationView geladen ist (Wpf.Ui 4.3.0). bisher). ## Kompromiss - Deutlich einfacheres Datenmodell und weniger Code (Startdistanz als Offset statt Etappenverwaltung). (im Wesentlichen ein zusätzliches Feld für die Startdistanz). - Verlust: Keine Anzeige/Auswertung mehr über den „Gesamtfortschritt "Gesamtfortschritt eines Profils verteilt auf mehrere Trainings“ Trainings" – jedes Training steht für sich. ## Nicht Teil dieses Commits Nächste Schritte Folge-Commits zu #47 (altes topographisches Training komplett entfernen, Distanz/Aufzeichnung am Zielende einfrieren) sind hier nicht beschrieben. - Aufwand der bestehenden "Profil fortsetzen"-Logik gegen den Aufwand der neuen Lösung abschätzen.