@using RackPeek.Domain.Resources.SystemResources @using RackPeek.Domain.Resources.SystemResources.UseCases @inject ISystemRepository SystemRepository @inject UpdateSystemUseCase UpdateSystemUseCase @inject NavigationManager Nav
@if (_systems is null) {
loading systems…
} else if (_systems.Count == 0) {
no systems found
} else {
@foreach (var group in _systems .OrderBy(s => s.Name) .GroupBy(s => s.RunsOn) .OrderByDescending(g => g.Count())) { foreach (var systemResource in group) { } }
}
@code { [Parameter] public string? TypeFilter { get; set; } [Parameter] public string? OsFilter { get; set; } private IReadOnlyList? _systems; protected override async Task OnParametersSetAsync() { await Reload(); } private async Task Reload() { var type = Normalize(TypeFilter); var os = Normalize(OsFilter); if (string.IsNullOrEmpty(type) && string.IsNullOrEmpty(os)) { _systems = await SystemRepository.GetAllAsync(); } else { _systems = await SystemRepository.GetFilteredAsync( type, os ); } } private static string? Normalize(string? s) => string.IsNullOrWhiteSpace(s) ? null : s.Trim(); async Task UpdateSystem(SystemEditModel edit) { await UpdateSystemUseCase.ExecuteAsync( edit.Name, edit.Type, edit.Os, edit.Cores, edit.Ram, edit.RunsOn, edit.Notes ); await Reload(); } private Task NavigateToNewResource(string serverName) { Nav.NavigateTo($"resources/systems/{serverName}"); return Task.CompletedTask; } private async Task Callback(string obj) { await Reload(); } }