Fehlerbehebungen;
This commit is contained in:
@@ -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;
|
||||
@@ -171,24 +189,22 @@
|
||||
return fakt.Dimensions.TryGetValue(dimensionName, out var value) ? value : "-";
|
||||
}
|
||||
|
||||
private Dictionary<string, string> _pathLabels = new();
|
||||
private Dictionary<string, string> _pathLabels = new();
|
||||
private HashSet<string> _usedLabels = new();
|
||||
|
||||
private async Task UpdateChartDataAsync()
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user