HardwareDependencyTreeComponent.razor 3.5 KB

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