SystemsDetailsPage.razor 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. @page "/resources/systems/{SystemName}"
  2. @using RackPeek.Domain.Resources.Hardware
  3. @using RackPeek.Domain.Resources.SystemResources
  4. @using RackPeek.Domain.Resources.SystemResources.UseCases
  5. @inject ISystemRepository SystemRepository
  6. @inject UpdateSystemUseCase UpdateSystemUseCase
  7. @inject GetSystemServiceTreeUseCase GetSystemServiceTreeUseCase
  8. @inject NavigationManager NavigationManager
  9. <PageTitle>System Details</PageTitle>
  10. <ResourceBreadCrumbComponent
  11. ResourceType="ResourceType.System"
  12. ResourceName="@SystemName"/>
  13. <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6">
  14. @if (_system is null && !_loading)
  15. {
  16. <div class="text-zinc-500">System not found</div>
  17. }
  18. else if (_loading)
  19. {
  20. <div class="text-zinc-500">loading system…</div>
  21. }
  22. else
  23. {
  24. <h1 class="text-lg text-zinc-100 mb-6">
  25. @_system.Name (@_system.Kind)
  26. </h1>
  27. <SystemCardComponent System="_system" OnSave="UpdateSystem" OnDeleted="OnDeleted"/>
  28. @if (_tree is not null && _tree.Services.Any())
  29. {
  30. <SystemDependencyTreeComponent Tree="_tree"/>
  31. }
  32. else
  33. {
  34. <div class="text-zinc-400 m-2">
  35. No child systems / services
  36. </div>
  37. }
  38. <div class="m-4">
  39. <AddServiceComponent RunsOn="@SystemName"/>
  40. </div>
  41. }
  42. </div>
  43. @code {
  44. [Parameter] public string SystemName { get; set; } = string.Empty;
  45. private SystemResource? _system;
  46. private bool _loading = true;
  47. SystemDependencyTree? _tree;
  48. protected override async Task OnInitializedAsync()
  49. {
  50. _system = await SystemRepository.GetByNameAsync(SystemName);
  51. _tree = null;
  52. if (!string.IsNullOrEmpty(_system?.Name))
  53. {
  54. _tree = await GetSystemServiceTreeUseCase.ExecuteAsync(_system?.Name!);
  55. }
  56. _loading = false;
  57. }
  58. async Task UpdateSystem(SystemEditModel edit)
  59. {
  60. await UpdateSystemUseCase.ExecuteAsync(
  61. edit.Name,
  62. edit.Type,
  63. edit.Os,
  64. edit.Cores,
  65. edit.Ram,
  66. edit.RunsOn
  67. );
  68. }
  69. private async Task OnDeleted()
  70. {
  71. NavigationManager.NavigateTo("/systems/list");
  72. }
  73. }