Compare commits
1 Commits
9003396ca8
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 83f377cfa0 |
@@ -226,13 +226,45 @@
|
|||||||
|
|
||||||
if (!_fakten.Any() || _selectedWorkspace == null || !_selectedChartDimensions.Any())
|
if (!_fakten.Any() || _selectedWorkspace == null || !_selectedChartDimensions.Any())
|
||||||
{
|
{
|
||||||
_shouldRenderChart = true; // NEU: Nur noch Flag setzen
|
_shouldRenderChart = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectedDims = _selectedChartDimensions.ToList();
|
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)
|
foreach (var fakt in _fakten)
|
||||||
{
|
{
|
||||||
var currentFullPath = _selectedWorkspace.Name;
|
var currentFullPath = _selectedWorkspace.Name;
|
||||||
@@ -241,7 +273,6 @@
|
|||||||
foreach (var dimName in selectedDims)
|
foreach (var dimName in selectedDims)
|
||||||
{
|
{
|
||||||
var val = GetDimensionValue(fakt, dimName);
|
var val = GetDimensionValue(fakt, dimName);
|
||||||
|
|
||||||
var levels = string.IsNullOrWhiteSpace(val)
|
var levels = string.IsNullOrWhiteSpace(val)
|
||||||
? new[] { $"Ohne {dimName}" }
|
? new[] { $"Ohne {dimName}" }
|
||||||
: val.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
|
: val.Split(new[] { " / " }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToArray();
|
||||||
@@ -249,7 +280,13 @@
|
|||||||
foreach (var level in levels)
|
foreach (var level in levels)
|
||||||
{
|
{
|
||||||
var targetFullPath = $"{currentFullPath} / {level}";
|
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);
|
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 ---
|
// --- NEU: Die Magie, die unsichtbare Leerzeichen für eindeutige IDs anhängt ---
|
||||||
|
|||||||
Reference in New Issue
Block a user