SystemsDetailsPage.razor 2.7 KB

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