SystemsDetailsPage.razor 2.3 KB

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