HardwareDependencyTreeComponent.razor 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. @using RackPeek.Domain.Resources.Hardware
  2. @if (Tree is null)
  3. {
  4. <div class="text-zinc-500 text-sm">
  5. No data.
  6. </div>
  7. }
  8. else
  9. {
  10. <div class="space-y-4">
  11. <!-- Systems -->
  12. <div class="ml-4 space-y-4 border-l border-zinc-800 pl-4">
  13. @foreach (var systemTree in Tree.Systems)
  14. {
  15. <div class="space-y-2">
  16. <!-- System -->
  17. <NavLink href="@($"resources/systems/{Uri.EscapeDataString(systemTree.System.Name)}")" class="block">
  18. <div class="border border-zinc-800 rounded bg-zinc-900 p-3">
  19. <div class="text-zinc-100">
  20. @systemTree.System.Name
  21. </div>
  22. <div class="text-xs text-zinc-500 mt-1">
  23. System
  24. </div>
  25. </div>
  26. </NavLink>
  27. <!-- Services -->
  28. @if (systemTree.Services.Any())
  29. {
  30. <div class="ml-4 space-y-2 border-l border-zinc-800 pl-4">
  31. @foreach (var service in systemTree.Services)
  32. {
  33. var url = service.NetworkString();
  34. <NavLink href="@($"resources/services/{Uri.EscapeDataString(service.Name)}")" class="block">
  35. <div class="border border-zinc-800 rounded bg-zinc-900 p-2 hover:border-zinc-700">
  36. <div class="text-zinc-200 text-sm">
  37. @service.Name
  38. </div>
  39. @{
  40. var srv = BuildServiceSubtitle(service);
  41. }
  42. <div class="text-xs text-zinc-500 mt-1">
  43. Service -
  44. @if (!string.IsNullOrEmpty(srv))
  45. {
  46. <a href="@url"
  47. target="_blank"
  48. rel="noopener noreferrer"
  49. class="underline hover:text-emerald-400"
  50. @onclick:stopPropagation>
  51. @srv
  52. </a>
  53. }
  54. </div>
  55. </div>
  56. </NavLink>
  57. }
  58. </div>
  59. }
  60. else
  61. {
  62. <div class="ml-4 text-xs text-zinc-600 italic">
  63. No services
  64. </div>
  65. }
  66. </div>
  67. }
  68. </div>
  69. </div>
  70. }
  71. @code {
  72. [Parameter] [EditorRequired] public HardwareDependencyTree? Tree { get; set; }
  73. private static string? BuildServiceSubtitle(Service service)
  74. {
  75. var endpoint = service.NetworkString();
  76. if (string.IsNullOrWhiteSpace(endpoint))
  77. return null;
  78. return endpoint;
  79. }
  80. }