ServersListComponent.razor 1.2 KB

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