| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- @using RackPeek.Domain.Resources.Hardware
- @using RackPeek.Domain.Resources.SystemResources
- @if (Tree is null)
- {
- <div class="text-zinc-500 text-sm">
- No data.
- </div>
- }
- else
- {
- <div class="space-y-4">
- <div class="ml-4 space-y-4 border-l border-zinc-800 pl-4">
- @foreach (var systemTree in Tree.Systems)
- {
- <div class="space-y-2">
- <!-- Root System -->
- <NavLink href="@($"resources/systems/{Uri.EscapeDataString(systemTree.System.Name)}")"
- class="block">
- <div class="border border-zinc-800 rounded bg-zinc-900 p-3">
- <div class="text-zinc-100">
- @systemTree.System.Name
- </div>
- <div class="text-xs text-zinc-500 mt-1">
- System
- </div>
- </div>
- </NavLink>
- <!-- Children -->
- @if (systemTree.ChildResources?.Any() == true)
- {
- <div class="ml-4 space-y-2 border-l border-zinc-800 pl-4">
- @foreach (var child in systemTree.ChildResources)
- {
- switch (child)
- {
- case SystemResource nestedSystem:
- <NavLink
- href="@($"resources/systems/{Uri.EscapeDataString(nestedSystem.Name)}")"
- class="block">
- <div
- class="border border-zinc-800 rounded bg-zinc-900 p-2 hover:border-zinc-700">
- <div class="text-zinc-200 text-sm">
- @nestedSystem.Name
- </div>
- <div class="text-xs text-zinc-500 mt-1">
- System
- </div>
- </div>
- </NavLink>
- break;
- case Service service:
- var endpoint = service.NetworkString();
- <NavLink href="@($"resources/services/{Uri.EscapeDataString(service.Name)}")"
- class="block">
- <div
- class="border border-zinc-800 rounded bg-zinc-900 p-2 hover:border-zinc-700">
- <div class="text-zinc-200 text-sm">
- @service.Name
- </div>
- <div class="text-xs text-zinc-500 mt-1">
- Service
- @if (!string.IsNullOrWhiteSpace(endpoint))
- {
- <span> - </span>
- <a href="@endpoint"
- target="_blank"
- rel="noopener noreferrer"
- class="underline hover:text-emerald-400"
- @onclick:stopPropagation>
- @endpoint
- </a>
- }
- </div>
- </div>
- </NavLink>
- break;
- }
- }
- </div>
- }
- else
- {
- <div class="ml-4 text-xs text-zinc-600 italic">
- No child resources
- </div>
- }
- </div>
- }
- </div>
- </div>
- }
- @code {
- [Parameter] [EditorRequired] public HardwareDependencyTree? Tree { get; set; }
- private static string? BuildServiceSubtitle(Service service)
- {
- var endpoint = service.NetworkString();
- if (string.IsNullOrWhiteSpace(endpoint))
- return null;
- return endpoint;
- }
- }
|