1
0

Add Wizard to add a new server, using URL query strings to pass data.

This commit is contained in:
Kevin Matsubara 2025-03-30 15:34:54 +02:00
parent 705e9493fe
commit 28c3449e24
4 changed files with 182 additions and 0 deletions

View File

@ -19,6 +19,8 @@
</SearchBarComponent> </SearchBarComponent>
<br/> <br/>
<a href="@($"/server")" class="btn btn-primary">Add Server</a> <a href="@($"/server")" class="btn btn-primary">Add Server</a>
&nbsp;
<a href="@($"/servername")" class="btn btn-primary">Wizard</a>
<br/> <br/>
<CascadingValue Name="SelectedCity" Value="@selectedCity"> <CascadingValue Name="SelectedCity" Value="@selectedCity">

View File

@ -0,0 +1,62 @@
@page "/cityname"
@inject NavigationManager NavigationManager
<h3>City Name</h3>
<br/>
@if (!string.IsNullOrWhiteSpace(errorMessage))
{
<div class="alert alert-danger">
@errorMessage
</div>
}
<FieldComponent Label="City name">
<Control>
<input type="text" @bind-value="cityName" class="form-control"></input>
</Control>
</FieldComponent>
<br/>
<button type="button" class="btn btn-primary" @onclick="GoNext">Next</button>
@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}");
}
}

View File

@ -0,0 +1,42 @@
@page "/servername"
@inject NavigationManager NavigationManager
<h3>Server Name</h3>
<br/>
@if (!string.IsNullOrWhiteSpace(errorMessage))
{
<div class="alert alert-danger">
@errorMessage
</div>
}
<FieldComponent Label="Server name">
<Control>
<input type="text" @bind-value="serverName" class="form-control"></input>
</Control>
</FieldComponent>
<br/>
<button type="button" class="btn btn-primary" @onclick="GoNext">Next</button>
@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}");
}
}

View File

@ -0,0 +1,76 @@
@page "/serverstatus"
@inject NavigationManager NavigationManager
<h3>Server Status</h3>
<br/>
@if (!string.IsNullOrWhiteSpace(errorMessage))
{
<div class="alert alert-danger">
@errorMessage
</div>
}
<FieldComponent Label="Server status online">
<Control>
<input type="checkbox" @bind-value="isOnline" class="form-check-input"></input>
</Control>
</FieldComponent>
<br/>
<button type="button" class="btn btn-primary" @onclick="Save">Save</button>
@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}");
}
}