SystemDependencyTreeComponent.razor 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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="ml-4 border-l border-zinc-800 pl-4 space-y-2">
  12. @if (Tree.Services.Any())
  13. {
  14. @foreach (var service in Tree.Services)
  15. {
  16. var url = service.NetworkString();
  17. <NavLink href="@($"/resources/services/{service.Name}")" class="block">
  18. <div class="border border-zinc-800 rounded bg-zinc-900 p-2 hover:border-zinc-700">
  19. <div class="text-zinc-200 text-sm">
  20. @service.Name
  21. </div>
  22. @{
  23. var srv = BuildServiceSubtitle(service);
  24. }
  25. <div class="text-xs text-zinc-500 mt-1">
  26. Service -
  27. @if (!string.IsNullOrEmpty(srv))
  28. {
  29. <a href="@url"
  30. target="_blank"
  31. rel="noopener noreferrer"
  32. class="underline hover:text-emerald-400"
  33. @onclick:stopPropagation>
  34. @srv
  35. </a>
  36. }
  37. </div>
  38. </div>
  39. </NavLink>
  40. }
  41. }
  42. else
  43. {
  44. <div class="text-xs text-zinc-600 italic">
  45. No services
  46. </div>
  47. }
  48. </div>
  49. }
  50. @code {
  51. [Parameter] [EditorRequired] public SystemDependencyTree? Tree { get; set; }
  52. private static string? BuildServiceSubtitle(Service service)
  53. {
  54. var endpoint = service.NetworkString();
  55. if (string.IsNullOrWhiteSpace(endpoint))
  56. return null;
  57. return endpoint;
  58. }
  59. }