SystemsDetailsPage.razor 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. @if (_system != null)
  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. }
  32. @if (_tree is not null && _tree.ChildResources.Any())
  33. {
  34. <SystemDependencyTreeComponent Tree="_tree"/>
  35. }
  36. else
  37. {
  38. <div class="text-zinc-400 m-2">
  39. No child systems / services
  40. </div>
  41. }
  42. <div class="m-4">
  43. <AddResourceComponent TResource="Service"
  44. Placeholder="Service name"
  45. OnCreated="NavigateToNewResource"
  46. RunsOn="@(new List<string> { SystemName })"/>
  47. </div>
  48. <div class="m-4">
  49. <AddResourceComponent TResource="SystemResource"
  50. Placeholder="System name"
  51. OnCreated="NavigateToNewSystemResource"
  52. RunsOn="@(new List<string> { SystemName })"/>
  53. </div>
  54. }
  55. </div>
  56. @code {
  57. [Parameter] public string SystemName { get; set; } = string.Empty;
  58. private SystemResource? _system;
  59. private bool _loading = true;
  60. SystemDependencyTree? _tree;
  61. protected override async Task OnParametersSetAsync()
  62. {
  63. _loading = true;
  64. _system = await Repo.GetByNameAsync<SystemResource>(SystemName);
  65. _tree = null;
  66. if (!string.IsNullOrEmpty(_system?.Name))
  67. {
  68. _tree = await GetSystemServiceTreeUseCase.ExecuteAsync(_system?.Name!);
  69. }
  70. _loading = false;
  71. }
  72. async Task UpdateSystem(SystemEditModel edit)
  73. {
  74. await UpdateSystemUseCase.ExecuteAsync(
  75. edit.Name,
  76. edit.Type,
  77. edit.Os,
  78. edit.Cores,
  79. edit.Ram,
  80. edit.Ip,
  81. edit.RunsOn,
  82. edit.Notes
  83. );
  84. }
  85. private Task OnDeleted()
  86. {
  87. Nav.NavigateTo("/systems/list");
  88. return Task.CompletedTask;
  89. }
  90. private Task NavigateToNewResource(string serverName)
  91. {
  92. Nav.NavigateTo($"resources/services/{Uri.EscapeDataString(serverName)}");
  93. return Task.CompletedTask;
  94. }
  95. private Task NavigateToNewSystemResource(string serverName)
  96. {
  97. Nav.NavigateTo($"resources/systems/{Uri.EscapeDataString(serverName)}");
  98. return Task.CompletedTask;
  99. }
  100. }