@page "/labels/{LabelName}"
@using RackPeek.Domain.Persistence
@using RackPeek.Domain.Resources
@using RackPeek.Domain.Resources.SystemResources
@inject IResourceCollection ResourceRepository
Label: @LabelName
Label: @LabelName
@if (_resources is null)
{
loading resources…
}
else if (_resources.Count == 0)
{
no resources found for this label
}
else
{
@foreach (var (resource, value) in _resources.OrderBy(r => r.Item1.Name))
{
@resource.Name
@resource.Kind
Value: @value
}
}
@code {
[Parameter] public string LabelName { get; set; } = string.Empty;
private IReadOnlyList<(Resource, string)>? _resources;
protected override async Task OnParametersSetAsync()
{
var decoded = Uri.UnescapeDataString(LabelName);
_resources = await ResourceRepository.GetByLabelAsync(decoded);
}
private string GetResourceUrl(Resource resource)
{
if (resource.Kind == SystemResource.KindLabel)
{
return $"resources/systems/{Uri.EscapeDataString(resource.Name)}";
}
if (resource.Kind == Service.KindLabel)
{
return $"resources/services/{Uri.EscapeDataString(resource.Name)}";
}
return $"resources/hardware/{Uri.EscapeDataString(resource.Name)}";
}
}