DesktopsListComponent.razor 1.2 KB

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