SystemsDetailsPage.razor 2.6 KB

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