| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- @using RackPeek.Domain.Resources.Hardware
- @using RackPeek.Domain.Resources.Services
- @using RackPeek.Domain.Resources.SystemResources
- @inject IHardwareRepository HardwareRepository
- @inject ISystemRepository SystemRepository
- @inject IServiceRepository ServiceRepository
- @inject NavigationManager Nav
- <div class="text-sm text-zinc-300 flex gap-1 items-center">
- @foreach (var crumb in Breadcrumbs)
- {
- <span class="text-zinc-500">/</span>
- <a class="hover:text-white transition-colors"
- href="@crumb.Href">
- @crumb.Label
- </a>
- }
- </div>
- @code {
- [Parameter] [EditorRequired] public ResourceType ResourceType { get; set; }
- [Parameter] [EditorRequired] public string ResourceName { get; set; } = default!;
- private List<Breadcrumb> Breadcrumbs { get; } = new();
- protected override async Task OnParametersSetAsync()
- {
- Breadcrumbs.Clear();
- switch (ResourceType)
- {
- case ResourceType.Hardware:
- await BuildHardwarePath(ResourceName);
- break;
- case ResourceType.System:
- await BuildSystemPath(ResourceName);
- break;
- case ResourceType.Service:
- await BuildServicePath(ResourceName);
- break;
- }
- }
- private async Task BuildHardwarePath(string hardwareName)
- {
- Breadcrumbs.Add(new Breadcrumb(hardwareName, $"resources/hardware/{hardwareName}"));
- }
- private async Task BuildSystemPath(string systemName)
- {
- var system = await SystemRepository.GetByNameAsync(systemName);
- if (system?.RunsOn is not null)
- {
- Breadcrumbs.Add(new Breadcrumb(
- system.RunsOn,
- $"resources/hardware/{system.RunsOn}"
- ));
- }
- Breadcrumbs.Add(new Breadcrumb(
- systemName,
- $"resources/systems/{systemName}"
- ));
- }
- private async Task BuildServicePath(string serviceName)
- {
- var service = await ServiceRepository.GetByNameAsync(serviceName);
- if (service?.RunsOn is not null)
- {
- var system = await SystemRepository.GetByNameAsync(service.RunsOn);
- if (system?.RunsOn is not null)
- {
- Breadcrumbs.Add(new Breadcrumb(
- system.RunsOn,
- $"resources/hardware/{system.RunsOn}"
- ));
- }
- Breadcrumbs.Add(new Breadcrumb(
- service.RunsOn,
- $"resources/systems/{service.RunsOn}"
- ));
- }
- Breadcrumbs.Add(new Breadcrumb(
- serviceName,
- $"resources/services/{serviceName}"
- ));
- }
- private record Breadcrumb(string Label, string Href);
- }
|