SystemsListComponent.razor 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. @using RackPeek.Domain.Resources.SystemResources
  2. @using RackPeek.Domain.Resources.SystemResources.UseCases
  3. @inject ISystemRepository SystemRepository
  4. @inject UpdateSystemUseCase UpdateSystemUseCase
  5. @inject NavigationManager Nav
  6. <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6 space-y-6">
  7. <AddSystemComponent OnCreated="NavigateToNewResource" />
  8. @if (_systems is null)
  9. {
  10. <div class="text-zinc-500">loading systems…</div>
  11. }
  12. else if (_systems.Count == 0)
  13. {
  14. <div class="text-zinc-500">no systems found</div>
  15. }
  16. else
  17. {
  18. <div class="space-y-4">
  19. @foreach (var system in _systems.OrderBy(s => s.Name))
  20. {
  21. <NavLink href="@($"/resources/systems/{system.Name}")" class="block">
  22. <SystemCardComponent System="system" OnSave="UpdateSystem"/>
  23. </NavLink>
  24. }
  25. </div>
  26. }
  27. </div>
  28. @code {
  29. private IReadOnlyList<SystemResource>? _systems;
  30. protected override async Task OnInitializedAsync()
  31. {
  32. _systems = await SystemRepository.GetAllAsync();
  33. }
  34. async Task UpdateSystem(SystemEditModel edit)
  35. {
  36. await UpdateSystemUseCase.ExecuteAsync(
  37. edit.Name,
  38. edit.Type,
  39. edit.Os,
  40. edit.Cores,
  41. edit.Ram,
  42. edit.RunsOn
  43. );
  44. }
  45. private Task NavigateToNewResource(string serverName)
  46. {
  47. Nav.NavigateTo($"/resources/systems/{serverName}");
  48. return Task.CompletedTask;
  49. }
  50. }