Ânzeige von Summen im Graph
This commit is contained in:
@@ -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 ---
|
||||
|
||||
Reference in New Issue
Block a user