Projekt

Allgemein

Profil

Fehler #87

Von Julius Haman vor 5 Tagen aktualisiert

## Ausgangslage 

 In der Trainingsdetail-Seite zeigt die Karte „Pulszonen" das OxyPlot-Kreisdiagramm 
 (300 × 230 px, `TrainingDetailView.xaml`, `oxy:PlotView` → `ZonePieModel`) mit der 
 Zonenlegende rechts daneben. 

 An den Tortenstücken stehen Prozentwerte **außen** mit Fühlerlinie (Tick). 
 Bei den Segmenten oben (12 Uhr) und unten (6 Uhr) ist der Text oben bzw. unten 
 angeschnitten und nicht vollständig lesbar; auch seitlich steht der Text dicht am Rand. 

 ## Ursache 

 * OxyPlot 2.2.0 `PieSeries` belegt `OutsideLabelFormat` im Konstruktor mit 
   **`"{2:0} %"`** (Vorgabe, nicht `null`). Der Code setzt diese Eigenschaft nirgends – 
   die Außenbeschriftung entsteht also implizit und wurde so nie geplant. 
 * `InsideLabelFormat = string.Empty` (TrainingDetailViewModel, `BuildZonePie`) betrifft 
   ausschließlich Text **in** den Segmenten und ist für das Problem ohne Bedeutung 
   (leerer String statt `null` lässt OxyPlot pro Segment trotzdem Text ausgeben). 
 * OxyPlot berechnet den Radius als `min(PlotArea.Breite, PlotArea.Höhe) / 2`, die Torte 
   füllt den Plotbereich also **randlos** – im OxyPlot-Quellcode steht dazu 
   `// todo: reduce available size due to the labels`. Tick (6 px radial + 8 px horizontal) 
   und Text liegen damit außerhalb des sichtbaren Bereichs und werden vom festen 
   300 × 230-PlotView abgeschnitten. 

 Betroffene Stelle: `ErControl.Core/ViewModels/TrainingDetailViewModel.cs`, Methode `BuildZonePie` 
 (`new PieSeries { InsideLabelFormat = string.Empty, TrackerFormatString = ... }`). 

 ## Lösungsvorschlag 

 1. Radius der Torte verkleinern (`PieSeries.Diameter`, ca. 0,9), 0,7–0,75), damit oben und unten 
    etwa 25–30 px Luft für Tick + Text bleiben – PlotView-Größe und Layout (Karte neben der 
    Legende) bleiben unverändert. 
 2. `OutsideLabelFormat` explizit setzen statt auf die OxyPlot-Vorgabe zu verlassen, 
    `InsideLabelFormat = null` statt leerem String. 
 3. Prüfen, ob das %-Format an der Torte und in der Legende zusammenpasst 
    (Torte `"{2:0} %"` gerundet vs. Legende `"{percent:P1}"` mit Nachkommastelle). 

 Alternative (bitte entscheiden): Außenbeschriftung komplett abschalten 
 (`OutsideLabelFormat = null`) und die Prozentwerte nur in der Legende zeigen – 
 dann aber bewusst, nicht durch einen OxyPlot-Zufall. 

 ## Abnahmekriterien 

 * [ ] Alle Prozentwerte an den Tortenstücken sind vollständig sichtbar, auch bei den 
       Segmenten oben und unten und bei einem 100 %-Segment. 
 * [ ] Kein Abschneiden bei sehr kleinen Anteilen (z. B. 1–2 %). 
 * [ ] Klick-Tracker (`Zone: Wert (x,x %)`) und die Legende bleiben unverändert. 
 * [ ] Keine Layoutänderung an der Karte (300 × 230 px) und an der Trainingsdetailseite. 
 * [ ] Im Hell- und im Dark-Skin geprüft (Textfarbe folgt `PlotModel.TextColor`).

Zurück