1
0

Compare commits

..

No commits in common. "7159c8ffed0d2329e2beaa7fd03cfc08c802679b" and "23300842c922c29c6d3be569640c1ec8d508a9f5" have entirely different histories.

7 changed files with 13 additions and 63 deletions

View File

@ -9,23 +9,13 @@
<link rel="stylesheet" href="app.css" /> <link rel="stylesheet" href="app.css" />
<link rel="stylesheet" href="ServerManagement.styles.css" /> <link rel="stylesheet" href="ServerManagement.styles.css" />
<link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/png" href="favicon.png" />
<HeadOutlet @rendermode="@PageRenderMode"/> <HeadOutlet />
</head> </head>
<body> <body>
@* 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 *@ @* 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 @rendermode="@PageRenderMode"/> <Routes/>
<script src="_framework/blazor.web.js"></script> <script src="_framework/blazor.web.js"></script>
</body> </body>
</html> </html>
@code {
@* Use for .NET 9, and make interactivity global in Routes and HeadOutlet components in App.razor file. *@
@* See: https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-9.0?view=aspnetcore-9.0#add-static-server-side-rendering-ssr-pages-to-a-globally-interactive-blazor-web-app *@
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
private IComponentRenderMode? PageRenderMode
=> HttpContext.AcceptsInteractiveRouting() ? InteractiveServer : null;
}

View File

@ -1,8 +1,6 @@
@page "/servers/add" @page "/servers/add"
@using System.ComponentModel.DataAnnotations @using System.ComponentModel.DataAnnotations
@attribute [ExcludeFromInteractiveRouting]
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
<h3>Add server</h3> <h3>Add server</h3>

View File

@ -1,8 +1,6 @@
@page "/servers/{id:int}" @page "/servers/{id:int}"
@* Route constraints: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-9.0#route-constraints *@ @* Route constraints: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-9.0#route-constraints *@
@attribute [ExcludeFromInteractiveRouting]
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
<h3>Edit server</h3> <h3>Edit server</h3>

View File

@ -13,10 +13,10 @@
{ {
<div class="col"> <div class="col">
<div class="card @((city == selectedCity) ? "border-primary" : "")"> <div class="card">
<img src=@($"/images/{@city}.png") class="card-img-top" alt="@city"> <img src="@($"/images/{city}.png")" class="card-img-top" alt="@city")">
<div class="card-body @((city == selectedCity) ? "active" : "")"> <div class="card-body">
<button class="btn btn-primary" @onclick="@(() => { SelectCity(city); })">@city</button> <button class="btn btn-primary">@city</button>
</div> </div>
</div> </div>
</div> </div>
@ -25,19 +25,14 @@
</div> </div>
<br/> <br/>
<div class="input-group mb-3"> <ServerComponent @rendermode="InteractiveServer"></ServerComponent>
<input type="text" class="form-control" placeholder="Search servers"
@bind-value="serverFilter"
@bind-value:event="oninput" />
<button class="btn btn-outline-secondary" type="button" id="button-search" @onclick="HandleSearch">Search</button>
</div>
<br/> <br/>
<a href="@($"/servers/add")" class="btn btn-primary">Add</a> <a href="@($"/servers/add")" class="btn btn-primary">Add</a>
<br/> <br/>
<ul> <ul>
<Virtualize Items="this.servers" Context="server"> @foreach(var server in servers)
<li @key="server.Id"> {
<li>
@server.Name in @server.City is @server.Name in @server.City is
<span style="color:@(server.IsOnline ? "green" : "red")"> <span style="color:@(server.IsOnline ? "green" : "red")">
@(server.IsOnline ? "online" : "offline") @(server.IsOnline ? "online" : "offline")
@ -52,23 +47,12 @@
<button type="submit" class="btn btn-danger">Delete</button> <button type="submit" class="btn btn-danger">Delete</button>
</EditForm> </EditForm>
</li> </li>
</Virtualize> }
</ul> </ul>
@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 string selectedCity = "Eindhoven";
private string _serverFilter = "";
private string serverFilter {
get => _serverFilter;
set
{
_serverFilter = value;
this.servers = ServersRepository.SearchServers(_serverFilter);
this.selectedCity = string.Empty;
}
}
private void DeleteServer(int serverId) private void DeleteServer(int serverId)
{ {
@ -78,16 +62,4 @@
NavigationManager.Refresh(); NavigationManager.Refresh();
} }
} }
private void SelectCity(string cityName)
{
this.selectedCity = cityName;
this.servers = ServersRepository.GetServersByCity(this.selectedCity);
}
private void HandleSearch()
{
this.servers = ServersRepository.SearchServers(serverFilter);
this.selectedCity = string.Empty;
}
} }

View File

@ -1,5 +0,0 @@
.card-body.active
{
background-color: #E3E3E3;
}

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup> </PropertyGroup>

View File

@ -1,11 +1,8 @@
{ {
"DetailedErrors": true,
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Information",
"Microsoft.AspNetCore": "Warning", "Microsoft.AspNetCore": "Warning"
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.AspNetCore.SignalR": "Debug"
} }
} }
} }