Fehlerbehebungen;

This commit is contained in:
2026-05-29 14:39:21 +02:00
parent 4abe66c283
commit 07ab65e1d0
+23 -9
View File
@@ -92,7 +92,10 @@
private List<Workspace> _workspaces = new();
private Workspace? _selectedWorkspace;
private List<AnalysisFakt> _fakten = new();
private bool _isLoading = true;
private bool _isInteractive = false;
private bool _shouldRenderChart = false;
private List<object[]> _sankeyData = new();
private IReadOnlyCollection<string> _selectedChartDimensions = new List<string>();
@@ -121,6 +124,21 @@
_isLoading = false;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
// Ab jetzt ist der Browser da und JavaScript ist erlaubt!
_isInteractive = true;
}
if (_isInteractive && _shouldRenderChart && !_isLoading && _selectedWorkspace != null)
{
_shouldRenderChart = false; // Flag direkt wieder wegnehmen
await DrawChartAsync();
}
}
private async Task OnWorkspaceSelected(Workspace ws)
{
_selectedWorkspace = ws;
@@ -177,18 +195,16 @@ private Dictionary<string, string> _pathLabels = new();
private async Task UpdateChartDataAsync()
{
_sankeyData.Clear();
_pathLabels.Clear(); // Wichtig: Beim Neuzeichnen zurücksetzen
_pathLabels.Clear();
_usedLabels.Clear();
if (!_fakten.Any() || _selectedWorkspace == null || !_selectedChartDimensions.Any())
{
await DrawChartAsync();
_shouldRenderChart = true; // NEU: Nur noch Flag setzen
return;
}
var selectedDims = _selectedChartDimensions.ToList();
// Den Workspace-Namen als allerersten Knoten generieren
var workspaceLabel = GetUniqueLabel(_selectedWorkspace.Name, _selectedWorkspace.Name);
foreach (var fakt in _fakten)
@@ -206,10 +222,7 @@ private Dictionary<string, string> _pathLabels = new();
foreach (var level in levels)
{
// Der logische, lange Pfad (z.B. "Workspace / Italien / Maut")
var targetFullPath = $"{currentFullPath} / {level}";
// Wir holen uns den kurzen Namen (z.B. "Maut") inkl. nötiger unsichtbarer Leerzeichen
var targetLabel = GetUniqueLabel(targetFullPath, level);
AddSankeyLink(currentSourceLabel, targetLabel, fakt.Amount);
@@ -220,7 +233,7 @@ private Dictionary<string, string> _pathLabels = new();
}
}
await DrawChartAsync();
_shouldRenderChart = true; // NEU: Nur noch Flag setzen
}
// --- NEU: Die Magie, die unsichtbare Leerzeichen für eindeutige IDs anhängt ---
@@ -263,8 +276,9 @@ private Dictionary<string, string> _pathLabels = new();
private async Task DrawChartAsync()
{
if (!_isInteractive)
return;
// Ein winziger Delay stellt sicher, dass Blazor das UI fertig gerendert hat
await Task.Delay(50);
await JSRuntime.InvokeVoidAsync("drawSankeyChart", "sankey-chart", _sankeyData);
}
}