@page "/resources/systems/{SystemName}"
@using RackPeek.Domain.Resources.Hardware
@using RackPeek.Domain.Resources.SystemResources
@using RackPeek.Domain.Resources.SystemResources.UseCases
@using Shared.Rcl.Services
@inject ISystemRepository SystemRepository
@inject UpdateSystemUseCase UpdateSystemUseCase
@inject GetSystemServiceTreeUseCase GetSystemServiceTreeUseCase
@inject NavigationManager NavigationManager
System Details
@if (_system is null && !_loading)
{
System not found
}
else if (_loading)
{
loading system…
}
else
{
@_system.Name (@_system.Kind)
@if (_tree is not null && _tree.Services.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 OnInitializedAsync()
{
_system = await SystemRepository.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.RunsOn,
edit.Notes
);
}
private async Task OnDeleted()
{
NavigationManager.NavigateTo("/systems/list");
}
}