HardwareDetailsPage.razor 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. @page "/resources/hardware/{HardwareName}"
  2. @using RackPeek.Domain.Resources.Hardware
  3. @using RackPeek.Domain.Resources.Hardware.Models
  4. @using RackPeek.Web.Components.Components
  5. @using RackPeek.Web.Components.Desktops
  6. @using RackPeek.Web.Components.AccessPoints
  7. @using RackPeek.Web.Components.Switches
  8. @inject IHardwareRepository HardwareRepository
  9. @inject GetHardwareSystemTreeUseCase GetHardwareSystemTreeUseCase
  10. <PageTitle>Hardware Details</PageTitle>
  11. <ResourceBreadCrumbComponent
  12. ResourceType="ResourceType.Hardware"
  13. ResourceName="@HardwareName" />
  14. <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6">
  15. @if (_hardware is null && !_loading)
  16. {
  17. <div class="text-zinc-500">Hardware not found</div>
  18. }
  19. else if (_loading)
  20. {
  21. <div class="text-zinc-500">loading hardware…</div>
  22. }
  23. else
  24. {
  25. <h1 class="text-lg text-zinc-100 mb-6">
  26. @_hardware.Name (@_hardware.Kind)
  27. </h1>
  28. @if (_hardware is Server server)
  29. {
  30. <ServerCardComponent Server="server"/>
  31. } else if (_hardware is Desktop desktop)
  32. {
  33. <DesktopCardComponent Desktop="desktop"/>
  34. }else if (_hardware is AccessPoint accessPoint)
  35. {
  36. <AccessPointCardComponent AccessPoint="accessPoint"/>
  37. }else if (_hardware is Switch _switch)
  38. {
  39. <SwitchCardComponent Switch="_switch"/>
  40. }
  41. else
  42. {
  43. <div class="text-zinc-400">
  44. No detailed view for hardware type: @_hardware.Kind
  45. </div>
  46. }
  47. @if (_tree is not null && _tree.Systems.Any())
  48. {
  49. <HardwareDependencyTreeComponent Tree="_tree"/>
  50. }
  51. else
  52. {
  53. <div class="text-zinc-400 m-2">
  54. No child systems / services
  55. </div>
  56. }
  57. }
  58. </div>
  59. @code {
  60. [Parameter] public string HardwareName { get; set; } = string.Empty;
  61. private Hardware? _hardware;
  62. private bool _loading = true;
  63. HardwareDependencyTree? _tree;
  64. protected override async Task OnInitializedAsync()
  65. {
  66. _hardware = await HardwareRepository.GetByNameAsync(HardwareName);
  67. _tree = null;
  68. if (!string.IsNullOrEmpty(_hardware?.Name))
  69. {
  70. _tree = await GetHardwareSystemTreeUseCase.ExecuteAsync(_hardware?.Name!);
  71. }
  72. _loading = false;
  73. }
  74. }