LabelListComponent.razor 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. @using RackPeek.Domain.Persistence
  2. @inject IResourceCollection LabelRepository
  3. <div>
  4. <div class="text-xs text-zinc-500 uppercase tracking-wider mb-3">
  5. Labels
  6. </div>
  7. @if (_labels is null)
  8. {
  9. <div class="text-zinc-500">loading labels…</div>
  10. }
  11. else if (_labels.Count == 0)
  12. {
  13. <div class="text-zinc-500">no labels found</div>
  14. }
  15. else
  16. {
  17. <ul class="space-y-3">
  18. <li>
  19. <div class="text-zinc-100">
  20. ├─ Labels (@_labels.Count)
  21. </div>
  22. <ul class="ml-4 mt-2 border-l border-zinc-800 pl-4 space-y-1">
  23. @foreach (var (label, count) in _labels
  24. .OrderByDescending(x => x.Value)
  25. .ThenBy(x => x.Key))
  26. {
  27. <li class="text-zinc-500 hover:text-emerald-300 transition">
  28. <NavLink href="@($"labels/{Uri.EscapeDataString(label)}")"
  29. class="block">
  30. └─ @label (@count)
  31. </NavLink>
  32. </li>
  33. }
  34. </ul>
  35. </li>
  36. </ul>
  37. }
  38. </div>
  39. @code {
  40. private Dictionary<string, int>? _labels;
  41. protected override async Task OnInitializedAsync()
  42. {
  43. _labels = await LabelRepository.GetLabelsAsync();
  44. }
  45. }