@page "/resources/systems/{SystemName}" @using RackPeek.Domain.Persistence @using RackPeek.Domain.Resources.Hardware @using RackPeek.Domain.Resources.SystemResources @using RackPeek.Domain.Resources.SystemResources.UseCases @inject IResourceCollection Repo @inject UpdateSystemUseCase UpdateSystemUseCase @inject GetSystemServiceTreeUseCase GetSystemServiceTreeUseCase @inject NavigationManager Nav System Details
@if (_system is null && !_loading) {
System not found
} else if (_loading) {
loading system…
} else { @if (_system != null) { } @if (_tree is not null && _tree.ChildResources.Any()) { } else {
No child systems / services
}
}
@code { [Parameter] public string SystemName { get; set; } = string.Empty; private SystemResource? _system; private bool _loading = true; SystemDependencyTree? _tree; protected override async Task OnParametersSetAsync() { _loading = true; _system = await Repo.GetByNameAsync(SystemName); _tree = null; if (!string.IsNullOrEmpty(_system?.Name)) { _tree = await GetSystemServiceTreeUseCase.ExecuteAsync(_system?.Name!); } _loading = false; } async Task UpdateSystem(SystemEditModel edit) { await UpdateSystemUseCase.ExecuteAsync( edit.Name, edit.Type, edit.Os, edit.Cores, edit.Ram, edit.Ip, edit.RunsOn, edit.Notes ); } private Task OnDeleted() { Nav.NavigateTo("/systems/list"); return Task.CompletedTask; } private Task NavigateToNewResource(string serverName) { Nav.NavigateTo($"resources/services/{Uri.EscapeDataString(serverName)}"); return Task.CompletedTask; } private Task NavigateToNewSystemResource(string serverName) { Nav.NavigateTo($"resources/systems/{Uri.EscapeDataString(serverName)}"); return Task.CompletedTask; } }