SystemDependencyTreeComponent.razor 3.0 KB

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