4
0

ServicesListPage.razor 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. @page "/services/list"
  2. @using RackPeek.Domain.Persistence
  3. @inject NavigationManager Nav
  4. <!-- TODO: Get rid of First -->
  5. <ResourcesListComponent TResource="Service"
  6. Title="Services"
  7. TestId="services"
  8. GroupBy="@(s =>
  9. {
  10. if (s.RunsOn is null) return "Unkown";
  11. return s.RunsOn.FirstOrDefault();
  12. })"
  13. ShouldGroup="true"
  14. OnCreated="NavigateToNewResource">
  15. <ItemTemplate Context="svc">
  16. <div data-testid=@($"services-list-item-{svc.Name.Replace(" ", "-")}")>
  17. <ServiceCardComponent Service="svc"
  18. OnDeleted="Reload"/>
  19. </div>
  20. </ItemTemplate>
  21. </ResourcesListComponent>
  22. @code {
  23. [Inject] IResourceCollection Repo { get; set; } = default!;
  24. private Task NavigateToNewResource(string name)
  25. {
  26. Nav.NavigateTo($"resources/services/{Uri.EscapeDataString(name)}");
  27. return Task.CompletedTask;
  28. }
  29. private async Task Reload(string _)
  30. {
  31. await Repo.GetAllOfTypeAsync<Service>();
  32. }
  33. }