LaptopsListComponent.razor 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. @using RackPeek.Domain.Resources.Hardware.Laptops
  2. @using RackPeek.Domain.Resources.Models
  3. @inject IGetAllResourcesByKindUseCase<Laptop> GetAllUseCase
  4. @inject IGetResourceByNameUseCase<Laptop> GetByNameUseCase
  5. @inject NavigationManager Nav
  6. <PageTitle>Laptops</PageTitle>
  7. <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6 space-y-6">
  8. <AddLaptopComponent OnCreated="NavigateToNewResource"/>
  9. @if (_Laptops is null)
  10. {
  11. <div class="text-zinc-500">loading Laptops…</div>
  12. }
  13. else if (_Laptops.Count == 0)
  14. {
  15. <div class="text-zinc-500">no Laptops found</div>
  16. }
  17. else
  18. {
  19. <div class="space-y-4">
  20. @foreach (var Laptop in _Laptops.OrderBy(s => s.Name))
  21. {
  22. <LaptopCardComponent Laptop="Laptop" OnDeleted="Callback"/>
  23. }
  24. </div>
  25. }
  26. </div>
  27. @code {
  28. private IReadOnlyList<Laptop>? _Laptops;
  29. protected override async Task OnInitializedAsync()
  30. {
  31. _Laptops = await GetAllUseCase.ExecuteAsync();
  32. }
  33. private Task NavigateToNewResource(string serverName)
  34. {
  35. Nav.NavigateTo($"resources/hardware/{serverName}");
  36. return Task.CompletedTask;
  37. }
  38. private async Task Callback(string obj)
  39. {
  40. _Laptops = await GetAllUseCase.ExecuteAsync();
  41. }
  42. }