@page "/resources/hardware/{HardwareName}" @using RackPeek.Domain.Persistence @using RackPeek.Domain.Resources.AccessPoints @using RackPeek.Domain.Resources.Desktops @using RackPeek.Domain.Resources.Firewalls @using RackPeek.Domain.Resources.Hardware @using RackPeek.Domain.Resources.Laptops @using RackPeek.Domain.Resources.Servers @using RackPeek.Domain.Resources.Switches @using RackPeek.Domain.Resources.SystemResources @using RackPeek.Domain.Resources.UpsUnits @using Shared.Rcl.AccessPoints @using Shared.Rcl.Desktops @using Shared.Rcl.Firewalls @using Shared.Rcl.Laptops @using Shared.Rcl.Routers @using Shared.Rcl.Servers @using Shared.Rcl.Switches @using Shared.Rcl.Ups @using Router = RackPeek.Domain.Resources.Routers.Router @inject IResourceCollection Repo @inject GetHardwareSystemTreeUseCase GetHardwareSystemTreeUseCase @inject NavigationManager Nav Hardware Details
@if (_hardware is null && !_loading) {
Hardware not found
} else if (_loading) {
loading hardware…
} else {

@_hardware.Name (@_hardware.Kind)

@if (_hardware is Server server) { } else if (_hardware is Desktop desktop) { } else if (_hardware is AccessPoint accessPoint) { } else if (_hardware is Switch _switch) { } else if (_hardware is Laptop laptop) { } else if (_hardware is Firewall firewall) { } else if (_hardware is Router router) { } else if (_hardware is Ups ups) { } else {
No detailed view for hardware type: @_hardware.Kind
} @if (_tree is not null && _tree.Systems.Any()) { } else {
No child systems / services
}
}
@code { [Parameter] public string HardwareName { get; set; } = string.Empty; private Hardware? _hardware; private bool _loading = true; private HardwareDependencyTree? _tree; protected override async Task OnParametersSetAsync() { _loading = true; _hardware = null; _tree = null; _hardware = await Repo.GetByNameAsync(HardwareName) as Hardware; if (!string.IsNullOrEmpty(_hardware?.Name)) { _tree = await GetHardwareSystemTreeUseCase.ExecuteAsync(_hardware.Name); } _loading = false; } private async Task DeleteCallback(string obj) { Nav.NavigateTo("/hardware/tree"); } private Task NavigateToNewResource(string serverName) { Nav.NavigateTo($"resources/systems/{serverName}"); return Task.CompletedTask; } }