Ânzeige von Summen im Graph

This commit is contained in:
2026-05-29 16:49:08 +02:00
parent 9003396ca8
commit 83f377cfa0
+42 -5
View File
@@ -226,13 +226,45 @@
if (!_fakten.Any() || _selectedWorkspace == null || !_selectedChartDimensions.Any())
{
_shouldRenderChart = true; // NEU: Nur noch Flag setzen
_shouldRenderChart = true;
return;
}
var selectedDims = _selectedChartDimensions.ToList();
var workspaceLabel = GetUniqueLabel(_selectedWorkspace.Name, _selectedWorkspace.Name);
// --- 1. DURCHGANG: Gesamtsummen pro eindeutigem Pfad berechnen ---
var pathAmounts = new Dictionary<string, decimal>();
decimal totalWorkspaceAmount = 0;
foreach (var fakt in _fakten)
{
totalWorkspaceAmount += fakt.Amount;
var currentFullPath = _selectedWorkspace.Name;
foreach (var dimName in selectedDims)
{
var val = GetDimensionValue(fakt, dimName);
var levels = string.IsNullOrWhiteSpace(val)
? new[] { $"Ohne {dimName}" }
: val.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
foreach (var level in levels)
{
var targetFullPath = $"{currentFullPath} / {level}";
if (!pathAmounts.ContainsKey(targetFullPath))
pathAmounts[targetFullPath] = 0;
pathAmounts[targetFullPath] += fakt.Amount;
currentFullPath = targetFullPath;
}
}
}
// Hauptknoten (Workspace) mit Gesamtsumme versehen
var workspaceLabel = GetUniqueLabel(_selectedWorkspace.Name, $"{_selectedWorkspace.Name} ({totalWorkspaceAmount.ToString("N2")} €)");
// --- 2. DURCHGANG: Diagramm-Daten mit den summierten Labels bauen ---
foreach (var fakt in _fakten)
{
var currentFullPath = _selectedWorkspace.Name;
@@ -241,7 +273,6 @@
foreach (var dimName in selectedDims)
{
var val = GetDimensionValue(fakt, dimName);
var levels = string.IsNullOrWhiteSpace(val)
? new[] { $"Ohne {dimName}" }
: val.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
@@ -249,7 +280,13 @@
foreach (var level in levels)
{
var targetFullPath = $"{currentFullPath} / {level}";
var targetLabel = GetUniqueLabel(targetFullPath, level);
// Wir holen den berechneten Gesamtbetrag für diesen spezifischen Knoten
var nodeAmount = pathAmounts[targetFullPath];
var shortNameWithAmount = $"{level} ({nodeAmount.ToString("N2")} €)";
// Unser Zero-Width-Space Hack sorgt weiterhin für die Trennung im Hintergrund
var targetLabel = GetUniqueLabel(targetFullPath, shortNameWithAmount);
AddSankeyLink(currentSourceLabel, targetLabel, fakt.Amount);
@@ -259,7 +296,7 @@
}
}
_shouldRenderChart = true; // NEU: Nur noch Flag setzen
_shouldRenderChart = true;
}
// --- NEU: Die Magie, die unsichtbare Leerzeichen für eindeutige IDs anhängt ---