HardwareDetailsPage.razor 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. @page "/resources/hardware/{HardwareName}"
  2. @using RackPeek.Domain.Resources.Hardware
  3. @using RackPeek.Domain.Resources.Models
  4. @using Router = RackPeek.Domain.Resources.Models.Router
  5. @using Shared.Rcl.Components
  6. @using Shared.Rcl.Servers
  7. @using Shared.Rcl.Desktops
  8. @using Shared.Rcl.AccessPoints
  9. @using Shared.Rcl.Switches
  10. @using Shared.Rcl.Firewalls
  11. @using Shared.Rcl.Laptops
  12. @using Shared.Rcl.Routers
  13. @using Shared.Rcl.Ups
  14. @using Shared.Rcl.Systems
  15. @inject IHardwareRepository HardwareRepository
  16. @inject GetHardwareSystemTreeUseCase GetHardwareSystemTreeUseCase
  17. @inject NavigationManager Nav
  18. <PageTitle>Hardware Details</PageTitle>
  19. <ResourceBreadCrumbComponent
  20. ResourceType="ResourceType.Hardware"
  21. ResourceName="@HardwareName"/>
  22. <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6">
  23. @if (_hardware is null && !_loading)
  24. {
  25. <div class="text-zinc-500">Hardware not found</div>
  26. }
  27. else if (_loading)
  28. {
  29. <div class="text-zinc-500">loading hardware…</div>
  30. }
  31. else
  32. {
  33. <h1 class="text-lg text-zinc-100 mb-6">
  34. @_hardware.Name (@_hardware.Kind)
  35. </h1>
  36. @if (_hardware is Server server)
  37. {
  38. <ServerCardComponent Server="server" OnDeleted="DeleteCallback"/>
  39. }
  40. else if (_hardware is Desktop desktop)
  41. {
  42. <DesktopCardComponent Desktop="desktop" OnDeleted="DeleteCallback"/>
  43. }
  44. else if (_hardware is AccessPoint accessPoint)
  45. {
  46. <AccessPointCardComponent AccessPoint="accessPoint" OnDeleted="DeleteCallback"/>
  47. }
  48. else if (_hardware is Switch _switch)
  49. {
  50. <SwitchCardComponent Switch="_switch" OnDeleted="DeleteCallback"/>
  51. }
  52. else if (_hardware is Laptop laptop)
  53. {
  54. <LaptopCardComponent Laptop="laptop" OnDeleted="DeleteCallback"/>
  55. }
  56. else if (_hardware is Firewall firewall)
  57. {
  58. <FirewallCardComponent Firewall="firewall" OnDeleted="DeleteCallback"/>
  59. }
  60. else if (_hardware is Router router)
  61. {
  62. <RouterCardComponent Router="router" OnDeleted="DeleteCallback"/>
  63. }
  64. else if (_hardware is Ups ups)
  65. {
  66. <UpsCardComponent Ups="ups" OnDeleted="DeleteCallback"/>
  67. }
  68. else
  69. {
  70. <div class="text-zinc-400">
  71. No detailed view for hardware type: @_hardware.Kind
  72. </div>
  73. }
  74. @if (_tree is not null && _tree.Systems.Any())
  75. {
  76. <HardwareDependencyTreeComponent Tree="_tree"/>
  77. }
  78. else
  79. {
  80. <div class="text-zinc-400 m-2">
  81. No child systems / services
  82. </div>
  83. }
  84. <div class="m-4">
  85. <AddSystemComponent RunsOn="@HardwareName"/>
  86. </div>
  87. }
  88. </div>
  89. @code {
  90. [Parameter] public string HardwareName { get; set; } = string.Empty;
  91. private Hardware? _hardware;
  92. private bool _loading = true;
  93. HardwareDependencyTree? _tree;
  94. protected override async Task OnInitializedAsync()
  95. {
  96. _hardware = await HardwareRepository.GetByNameAsync(HardwareName);
  97. _tree = null;
  98. if (!string.IsNullOrEmpty(_hardware?.Name))
  99. {
  100. _tree = await GetHardwareSystemTreeUseCase.ExecuteAsync(_hardware?.Name!);
  101. }
  102. _loading = false;
  103. }
  104. private async Task DeleteCallback(string obj)
  105. {
  106. Nav.NavigateTo($"/hardware/tree");
  107. }
  108. }