From 28c3449e24ea0e13610603e89486a2fd158d7cbc Mon Sep 17 00:00:00 2001 From: Kevin Matsubara Date: Sun, 30 Mar 2025 15:34:54 +0200 Subject: [PATCH] Add Wizard to add a new server, using URL query strings to pass data. --- .../Components/Pages/Servers.razor | 2 + .../Pages/Wizards/SetCityName.razor | 62 +++++++++++++++ .../Pages/Wizards/SetServerName.razor | 42 ++++++++++ .../Components/Pages/Wizards/SetStatus.razor | 76 +++++++++++++++++++ 4 files changed, 182 insertions(+) create mode 100644 ServerManagement/Components/Pages/Wizards/SetCityName.razor create mode 100644 ServerManagement/Components/Pages/Wizards/SetServerName.razor create mode 100644 ServerManagement/Components/Pages/Wizards/SetStatus.razor diff --git a/ServerManagement/Components/Pages/Servers.razor b/ServerManagement/Components/Pages/Servers.razor index 81ff659..af9df5f 100644 --- a/ServerManagement/Components/Pages/Servers.razor +++ b/ServerManagement/Components/Pages/Servers.razor @@ -19,6 +19,8 @@
Add Server +  +Wizard
diff --git a/ServerManagement/Components/Pages/Wizards/SetCityName.razor b/ServerManagement/Components/Pages/Wizards/SetCityName.razor new file mode 100644 index 0000000..6e88347 --- /dev/null +++ b/ServerManagement/Components/Pages/Wizards/SetCityName.razor @@ -0,0 +1,62 @@ +@page "/cityname" + +@inject NavigationManager NavigationManager + +

City Name

+
+ +@if (!string.IsNullOrWhiteSpace(errorMessage)) +{ +
+ @errorMessage +
+} + + + + + + +
+ + +@code { + private string? errorMessage; + private string? cityName; + + [SupplyParameterFromQuery] + private string? ServerName { get; set; } + + protected override void OnInitialized() + { + base.OnInitialized(); + } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + if (string.IsNullOrWhiteSpace(ServerName)) + { + this.errorMessage = "Server name was not provided."; + StateHasChanged(); + } + } + } + + private void GoNext() + { + if (string.IsNullOrWhiteSpace(ServerName)) + { + this.errorMessage = "Server name is required."; + return; + } + if (string.IsNullOrWhiteSpace(cityName)) + { + this.errorMessage = "City name is required."; + return; + } + + NavigationManager.NavigateTo($"/serverstatus?servername={ServerName}&cityname={cityName}"); + } +} \ No newline at end of file diff --git a/ServerManagement/Components/Pages/Wizards/SetServerName.razor b/ServerManagement/Components/Pages/Wizards/SetServerName.razor new file mode 100644 index 0000000..872243e --- /dev/null +++ b/ServerManagement/Components/Pages/Wizards/SetServerName.razor @@ -0,0 +1,42 @@ +@page "/servername" + +@inject NavigationManager NavigationManager + +

Server Name

+
+ +@if (!string.IsNullOrWhiteSpace(errorMessage)) +{ +
+ @errorMessage +
+} + + + + + + +
+ + +@code { + private string? errorMessage; + private string? serverName; + + protected override void OnInitialized() + { + base.OnInitialized(); + } + + private void GoNext() + { + if (string.IsNullOrWhiteSpace(serverName)) + { + this.errorMessage = "Server name is required."; + return; + } + + NavigationManager.NavigateTo($"/cityname?servername={serverName}"); + } +} \ No newline at end of file diff --git a/ServerManagement/Components/Pages/Wizards/SetStatus.razor b/ServerManagement/Components/Pages/Wizards/SetStatus.razor new file mode 100644 index 0000000..3c4ebd2 --- /dev/null +++ b/ServerManagement/Components/Pages/Wizards/SetStatus.razor @@ -0,0 +1,76 @@ +@page "/serverstatus" + +@inject NavigationManager NavigationManager + +

Server Status

+
+ +@if (!string.IsNullOrWhiteSpace(errorMessage)) +{ +
+ @errorMessage +
+} + + + + + + +
+ + +@code { + private string? errorMessage; + private bool isOnline; + [SupplyParameterFromQuery] + private string? CityName { get; set; } + + [SupplyParameterFromQuery] + private string? ServerName { get; set; } + + protected override void OnInitialized() + { + base.OnInitialized(); + } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + if (string.IsNullOrWhiteSpace(ServerName)) + { + this.errorMessage = "Server name was not provided."; + StateHasChanged(); + } + else if (string.IsNullOrWhiteSpace(CityName)) + { + this.errorMessage = "City name was not provided."; + StateHasChanged(); + } + } + } + + private void Save() + { + if (string.IsNullOrWhiteSpace(ServerName)) + { + this.errorMessage = "Server name is required."; + return; + } + if (string.IsNullOrWhiteSpace(CityName)) + { + this.errorMessage = "City name is required."; + return; + } + + var server = new Server + { + Name = this.ServerName, + City = this.CityName, + IsOnline = this.isOnline + }; + ServersRepository.AddServer(server); + NavigationManager.NavigateTo($"/servers/back_from/{CityName}"); + } +} \ No newline at end of file