ServicesListPage.razor 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. if (s.RunsOn is null) return "Unkown";
  10. return s.RunsOn.FirstOrDefault();
  11. })"
  12. ShouldGroup="true"
  13. OnCreated="NavigateToNewResource">
  14. <ItemTemplate Context="svc">
  15. <div data-testid=@($"services-list-item-{svc.Name.Replace(" ", "-")}")>
  16. <ServiceCardComponent Service="svc"
  17. OnDeleted="Reload"/>
  18. </div>
  19. </ItemTemplate>
  20. </ResourcesListComponent>
  21. @code {
  22. [Inject] IResourceCollection Repo { get; set; } = default!;
  23. private Task NavigateToNewResource(string name)
  24. {
  25. Nav.NavigateTo($"resources/services/{Uri.EscapeDataString(name)}");
  26. return Task.CompletedTask;
  27. }
  28. private async Task Reload(string _)
  29. {
  30. await Repo.GetAllOfTypeAsync<Service>();
  31. }
  32. }