@page "/dashboard" @page "/dashboards/{DashboardId?}" @inject Microsoft.Extensions.Configuration.IConfiguration Configuration @inject NavigationManager Navigation @inject DashboardApiClient DashboardApi Dashboards
@(IsDesigner ? "Zum Viewer wechseln" : "Zum Designer wechseln")
@code { [Parameter] public string? DashboardId { get; set; } [SupplyParameterFromQuery] public string? Mode { get; set; } private readonly List dashboards = new(); private bool IsDesigner => !string.Equals(Mode, "viewer", StringComparison.OrdinalIgnoreCase); private WorkingMode CurrentMode => IsDesigner ? WorkingMode.Designer : WorkingMode.ViewerOnly; private string SelectedDashboardId { get; set; } = ""; private string DashboardKey => $"{SelectedDashboardId}-{(IsDesigner ? "designer" : "viewer")}"; private string DashboardEndpoint => $"{Configuration["ApiBaseUrl"]?.TrimEnd('/')}/api/dashboard"; protected override async Task OnParametersSetAsync() { if (dashboards.Count == 0) { dashboards.AddRange(await DashboardApi.GetAllAsync()); } var requestedId = string.IsNullOrWhiteSpace(DashboardId) || string.Equals(DashboardId, "default", StringComparison.OrdinalIgnoreCase) ? null : DashboardId; var resolved = !string.IsNullOrWhiteSpace(requestedId) ? dashboards.FirstOrDefault(d => string.Equals(d.Id, requestedId, StringComparison.OrdinalIgnoreCase)) : dashboards.FirstOrDefault(d => string.Equals(d.Id, "DefaultDashboard", StringComparison.OrdinalIgnoreCase)) ?? dashboards.FirstOrDefault(); if (resolved == null) { return; } SelectedDashboardId = resolved.Id; if (!string.Equals(DashboardId, resolved.Id, StringComparison.OrdinalIgnoreCase)) { Navigation.NavigateTo($"dashboards/{resolved.Id}?mode={(IsDesigner ? "designer" : "viewer")}", replace: true); } } private void ToggleMode() { var targetMode = IsDesigner ? "viewer" : "designer"; Navigation.NavigateTo($"dashboards/{SelectedDashboardId}?mode={targetMode}", replace: true); } }