From d6df2a448dd2f91444a369fa4d93b2acf2939019 Mon Sep 17 00:00:00 2001 From: Kevin Matsubara Date: Sat, 29 Mar 2025 19:00:01 +0100 Subject: [PATCH] Navigate back to same selected city on servers page after editing a server. --- .../Controls/CityListComponent.razor | 5 +++-- .../Components/Pages/AddServer.razor | 2 +- .../Components/Pages/EditServer.razor | 2 +- .../Components/Pages/Servers.razor | 22 ++++++++++++++++++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ServerManagement/Components/Controls/CityListComponent.razor b/ServerManagement/Components/Controls/CityListComponent.razor index 9f6afa5..6915889 100644 --- a/ServerManagement/Components/Controls/CityListComponent.razor +++ b/ServerManagement/Components/Controls/CityListComponent.razor @@ -10,18 +10,19 @@ city="@city" selectedCity="@this.selectedCity" SelectCityCallBack="HandleCitySelection"> - + } } @code { - private string selectedCity = "Eindhoven"; private List cities = ServersRepository.GetCities(); [Parameter] public EventCallback SelectCityCallBack { get; set; } + [Parameter] + public string? selectedCity { get; set; } = "Eindhoven"; public void ClearSelection() { diff --git a/ServerManagement/Components/Pages/AddServer.razor b/ServerManagement/Components/Pages/AddServer.razor index c0fb46f..0d433ff 100644 --- a/ServerManagement/Components/Pages/AddServer.razor +++ b/ServerManagement/Components/Pages/AddServer.razor @@ -54,6 +54,6 @@ } // An exception is raised when debugging from VS Code, but not when using dotnet watch. - NavigationManager.NavigateTo("/servers"); + NavigationManager.NavigateTo($"/servers/back_from/{this.server?.City}"); } } \ No newline at end of file diff --git a/ServerManagement/Components/Pages/EditServer.razor b/ServerManagement/Components/Pages/EditServer.razor index ed4e72b..14044c7 100644 --- a/ServerManagement/Components/Pages/EditServer.razor +++ b/ServerManagement/Components/Pages/EditServer.razor @@ -74,7 +74,7 @@ The navigation manager only will respond correctly if all its behaviours are the } // An exception is raised when debugging from VS Code, but not when using dotnet watch. - NavigationManager.NavigateTo("/servers"); + NavigationManager.NavigateTo($"/servers/back_from/{this.server?.City}"); } private async Task OnBeforeInternalNavigation(LocationChangingContext context) diff --git a/ServerManagement/Components/Pages/Servers.razor b/ServerManagement/Components/Pages/Servers.razor index a4f047e..d6e6240 100644 --- a/ServerManagement/Components/Pages/Servers.razor +++ b/ServerManagement/Components/Pages/Servers.razor @@ -1,10 +1,16 @@ @page "/servers" +@page "/servers/back_from/{cityName}" @using ServerManagement.Components.Controls +@inject NavigationManager NavigationManager

Servers



- + +
@code { + [Parameter] + public string? CityName { get; set; } private string selectedCity = "Eindhoven"; private string searchFilter = ""; private CityListComponent? cityListComponent; @@ -40,4 +48,16 @@ this.searchFilter = searchFilter; cityListComponent?.ClearSelection(); } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + if (NavigationManager.Uri.Contains("back_from") && !string.IsNullOrWhiteSpace(CityName)) + { + selectedCity = CityName; + StateHasChanged(); + } + } + } } \ No newline at end of file