Fehlerbehebungen;
This commit is contained in:
@@ -92,7 +92,10 @@
|
|||||||
private List<Workspace> _workspaces = new();
|
private List<Workspace> _workspaces = new();
|
||||||
private Workspace? _selectedWorkspace;
|
private Workspace? _selectedWorkspace;
|
||||||
private List<AnalysisFakt> _fakten = new();
|
private List<AnalysisFakt> _fakten = new();
|
||||||
|
|
||||||
private bool _isLoading = true;
|
private bool _isLoading = true;
|
||||||
|
private bool _isInteractive = false;
|
||||||
|
private bool _shouldRenderChart = false;
|
||||||
|
|
||||||
private List<object[]> _sankeyData = new();
|
private List<object[]> _sankeyData = new();
|
||||||
private IReadOnlyCollection<string> _selectedChartDimensions = new List<string>();
|
private IReadOnlyCollection<string> _selectedChartDimensions = new List<string>();
|
||||||
@@ -121,6 +124,21 @@
|
|||||||
_isLoading = false;
|
_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)
|
private async Task OnWorkspaceSelected(Workspace ws)
|
||||||
{
|
{
|
||||||
_selectedWorkspace = ws;
|
_selectedWorkspace = ws;
|
||||||
@@ -177,18 +195,16 @@ private Dictionary<string, string> _pathLabels = new();
|
|||||||
private async Task UpdateChartDataAsync()
|
private async Task UpdateChartDataAsync()
|
||||||
{
|
{
|
||||||
_sankeyData.Clear();
|
_sankeyData.Clear();
|
||||||
_pathLabels.Clear(); // Wichtig: Beim Neuzeichnen zurücksetzen
|
_pathLabels.Clear();
|
||||||
_usedLabels.Clear();
|
_usedLabels.Clear();
|
||||||
|
|
||||||
if (!_fakten.Any() || _selectedWorkspace == null || !_selectedChartDimensions.Any())
|
if (!_fakten.Any() || _selectedWorkspace == null || !_selectedChartDimensions.Any())
|
||||||
{
|
{
|
||||||
await DrawChartAsync();
|
_shouldRenderChart = true; // NEU: Nur noch Flag setzen
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectedDims = _selectedChartDimensions.ToList();
|
var selectedDims = _selectedChartDimensions.ToList();
|
||||||
|
|
||||||
// Den Workspace-Namen als allerersten Knoten generieren
|
|
||||||
var workspaceLabel = GetUniqueLabel(_selectedWorkspace.Name, _selectedWorkspace.Name);
|
var workspaceLabel = GetUniqueLabel(_selectedWorkspace.Name, _selectedWorkspace.Name);
|
||||||
|
|
||||||
foreach (var fakt in _fakten)
|
foreach (var fakt in _fakten)
|
||||||
@@ -206,10 +222,7 @@ private Dictionary<string, string> _pathLabels = new();
|
|||||||
|
|
||||||
foreach (var level in levels)
|
foreach (var level in levels)
|
||||||
{
|
{
|
||||||
// Der logische, lange Pfad (z.B. "Workspace / Italien / Maut")
|
|
||||||
var targetFullPath = $"{currentFullPath} / {level}";
|
var targetFullPath = $"{currentFullPath} / {level}";
|
||||||
|
|
||||||
// Wir holen uns den kurzen Namen (z.B. "Maut") inkl. nötiger unsichtbarer Leerzeichen
|
|
||||||
var targetLabel = GetUniqueLabel(targetFullPath, level);
|
var targetLabel = GetUniqueLabel(targetFullPath, level);
|
||||||
|
|
||||||
AddSankeyLink(currentSourceLabel, targetLabel, fakt.Amount);
|
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 ---
|
// --- 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()
|
private async Task DrawChartAsync()
|
||||||
{
|
{
|
||||||
|
if (!_isInteractive)
|
||||||
|
return;
|
||||||
// Ein winziger Delay stellt sicher, dass Blazor das UI fertig gerendert hat
|
// Ein winziger Delay stellt sicher, dass Blazor das UI fertig gerendert hat
|
||||||
await Task.Delay(50);
|
|
||||||
await JSRuntime.InvokeVoidAsync("drawSankeyChart", "sankey-chart", _sankeyData);
|
await JSRuntime.InvokeVoidAsync("drawSankeyChart", "sankey-chart", _sankeyData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user