Compare commits
13 Commits
bb72836773
...
23300842c9
| Author | SHA1 | Date | |
|---|---|---|---|
| 23300842c9 | |||
| 64c2be5028 | |||
| 432a8e8f84 | |||
| 3c85a8feda | |||
| a0e034e740 | |||
| 48638eeae2 | |||
| 4d77319f48 | |||
| 8139388ff9 | |||
| 6090fea796 | |||
| 353df277e5 | |||
| 580ababb2a | |||
| ee8c939710 | |||
| 3b14454205 |
@ -13,7 +13,8 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<Routes />
|
@* Note that @rendermode="InteractiveServer" can be used here on Routes to make it global. But this is not recommended by Microsoft. See: https://learn.microsoft.com/en-us/aspnet/core/blazor/components/render-modes?view=aspnetcore-9.0 *@
|
||||||
|
<Routes/>
|
||||||
<script src="_framework/blazor.web.js"></script>
|
<script src="_framework/blazor.web.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,23 @@
|
|||||||
@namespace ServerManagement.Components.Controls
|
@namespace ServerManagement.Components.Controls
|
||||||
|
|
||||||
<p
|
@if (server != null)
|
||||||
style="@($"color:{(server.IsOnline ? "green" : "red")}")">
|
{
|
||||||
@server.Name is in: @server.City @(server.IsOnline ? "online" : "offline")
|
<div
|
||||||
</p>
|
style="@($"color:{(server.IsOnline ? "green" : "red")}")">
|
||||||
|
@server.Name is in: @server.City @(server.IsOnline ? "online" : "offline")
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary" @onclick="ChangeStatus">Turn On/Off</button>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private Server server = new Server { Name = "Server 1", City = "Einhoven" };
|
private Server? server { get; set; } = new Server { Name = "Server 1", City = "Einhoven" };
|
||||||
|
|
||||||
|
private void ChangeStatus()
|
||||||
|
{
|
||||||
|
if (server != null)
|
||||||
|
{
|
||||||
|
this.server.IsOnline = !this.server.IsOnline;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
57
ServerManagement/Components/Pages/AddServer.razor
Normal file
57
ServerManagement/Components/Pages/AddServer.razor
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
@page "/servers/add"
|
||||||
|
@using System.ComponentModel.DataAnnotations
|
||||||
|
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
|
||||||
|
<h3>Add server</h3>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<EditForm Model="server" FormName="formServer" OnValidSubmit="SubmitServer">
|
||||||
|
<DataAnnotationsValidator></DataAnnotationsValidator>
|
||||||
|
<ValidationSummary></ValidationSummary>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-2">
|
||||||
|
<label class="col-form-label">Name</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<InputText @bind-Value="server.Name" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<ValidationMessage For="() => server.Name"></ValidationMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-2">
|
||||||
|
<label class="col-form-label">City</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<InputText @bind-Value="server.City" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<ValidationMessage For="() => server.City"></ValidationMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
<button class="btn btn-primary" type="submit">Add</button>
|
||||||
|
|
||||||
|
<a href="/servers" class="btn btn-primary">Close</a>
|
||||||
|
</EditForm>
|
||||||
|
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[SupplyParameterFromForm(FormName = "formServer")]
|
||||||
|
private Server server { get; set; } = new Server() { IsOnline = false };
|
||||||
|
|
||||||
|
private void SubmitServer()
|
||||||
|
{
|
||||||
|
if (server != null)
|
||||||
|
{
|
||||||
|
ServersRepository.AddServer(server);
|
||||||
|
}
|
||||||
|
|
||||||
|
// An exception is raised when debugging from VS Code, but not when using dotnet watch.
|
||||||
|
NavigationManager.NavigateTo("/servers");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,76 @@
|
|||||||
@page "/servers/edit"
|
@page "/servers/{id:int}"
|
||||||
|
@* Route constraints: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-9.0#route-constraints *@
|
||||||
|
|
||||||
<p>Edit server</p>
|
@inject NavigationManager NavigationManager
|
||||||
|
|
||||||
|
<h3>Edit server</h3>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
@if (server != null)
|
||||||
|
{
|
||||||
|
<EditForm Model="server" FormName="formServer" OnValidSubmit="SubmitServer">
|
||||||
|
<DataAnnotationsValidator></DataAnnotationsValidator>
|
||||||
|
<ValidationSummary></ValidationSummary>
|
||||||
|
<InputNumber @bind-Value="server.Id" hidden></InputNumber>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-2">
|
||||||
|
<label class="col-form-label">Name</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<InputText @bind-Value="server.Name" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<ValidationMessage For="() => server.Name"></ValidationMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-2">
|
||||||
|
<label class="col-form-label">City</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<InputText @bind-Value="server.City" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="col">
|
||||||
|
<ValidationMessage For="() => server.City"></ValidationMessage>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-2">
|
||||||
|
<label class="col-form-label">Online</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<InputCheckbox @bind-Value="server.IsOnline" class="form-check-input"></InputCheckbox>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br/>
|
||||||
|
<button class="btn btn-primary" type="submit">Update</button>
|
||||||
|
|
||||||
|
<a href="/servers" class="btn btn-primary">Close</a>
|
||||||
|
</EditForm>
|
||||||
|
}
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
[Parameter] // This is a root parameter.
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[SupplyParameterFromForm(FormName = "formServer")]
|
||||||
|
private Server? server { get; set; }
|
||||||
|
|
||||||
|
protected override void OnParametersSet()
|
||||||
|
{
|
||||||
|
server ??= ServersRepository.GetServerById(this.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SubmitServer()
|
||||||
|
{
|
||||||
|
if (server != null)
|
||||||
|
{
|
||||||
|
ServersRepository.UpdateServer(server.Id, server);
|
||||||
|
}
|
||||||
|
|
||||||
|
// An exception is raised when debugging from VS Code, but not when using dotnet watch.
|
||||||
|
NavigationManager.NavigateTo("/servers");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
@page "/servers"
|
@page "/servers"
|
||||||
@using ServerManagement.Components.Controls
|
@using ServerManagement.Components.Controls
|
||||||
|
|
||||||
|
@inject NavigationManager NavigationManager
|
||||||
|
|
||||||
<h3>Servers</h3>
|
<h3>Servers</h3>
|
||||||
<br/>
|
<br/>
|
||||||
<br/>
|
<br/>
|
||||||
@ -22,6 +24,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
<ServerComponent @rendermode="InteractiveServer"></ServerComponent>
|
||||||
|
<br/>
|
||||||
|
<a href="@($"/servers/add")" class="btn btn-primary">Add</a>
|
||||||
<br/>
|
<br/>
|
||||||
<ul>
|
<ul>
|
||||||
@foreach(var server in servers)
|
@foreach(var server in servers)
|
||||||
@ -32,7 +38,14 @@
|
|||||||
@(server.IsOnline ? "online" : "offline")
|
@(server.IsOnline ? "online" : "offline")
|
||||||
</span>;
|
</span>;
|
||||||
|
|
||||||
<a href="/servers/edit" class="btn btn-link">Edit</a>
|
<a href="@($"/servers/{server.Id}")" class="btn btn-primary">Edit</a>
|
||||||
|
|
||||||
|
<EditForm
|
||||||
|
Model="server"
|
||||||
|
FormName="@($"formDeleteServer{server.Id}")"
|
||||||
|
OnValidSubmit="@(() => { DeleteServer(server.Id); })">
|
||||||
|
<button type="submit" class="btn btn-danger">Delete</button>
|
||||||
|
</EditForm>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
@ -40,4 +53,13 @@
|
|||||||
@code {
|
@code {
|
||||||
private List<string> cities = ServersRepository.GetCities();
|
private List<string> cities = ServersRepository.GetCities();
|
||||||
private List<Server> servers = ServersRepository.GetServersByCity("Eindhoven");
|
private List<Server> servers = ServersRepository.GetServersByCity("Eindhoven");
|
||||||
|
|
||||||
|
private void DeleteServer(int serverId)
|
||||||
|
{
|
||||||
|
if (serverId > 0)
|
||||||
|
{
|
||||||
|
ServersRepository.DeleteServer(serverId);
|
||||||
|
NavigationManager.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,3 +1,6 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
// Data annotations: https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations?view=net-9.0
|
||||||
|
|
||||||
namespace ServerManagement.Models
|
namespace ServerManagement.Models
|
||||||
{
|
{
|
||||||
public class Server
|
public class Server
|
||||||
@ -11,7 +14,11 @@ namespace ServerManagement.Models
|
|||||||
|
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public bool IsOnline { get; set; }
|
public bool IsOnline { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string? Name { get; set; }
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
public string? City { get; set; }
|
public string? City { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,7 +4,7 @@ var builder = WebApplication.CreateBuilder(args);
|
|||||||
|
|
||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
builder.Services.AddRazorComponents()
|
builder.Services.AddRazorComponents()
|
||||||
.AddInteractiveServerComponents();
|
.AddInteractiveServerComponents(); // Provides server interactivity.
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
@ -22,6 +22,6 @@ app.UseStaticFiles();
|
|||||||
app.UseAntiforgery();
|
app.UseAntiforgery();
|
||||||
|
|
||||||
app.MapRazorComponents<App>()
|
app.MapRazorComponents<App>()
|
||||||
.AddInteractiveServerRenderMode();
|
.AddInteractiveServerRenderMode(); // Provides server interactivity.
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user