| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- @using RackPeek.Domain.Resources.Services
- @using RackPeek.Domain.Resources.Services.UseCases
- @inject IServiceRepository ServiceRepository
- @inject UpdateServiceUseCase UpdateServiceUseCase
- @inject NavigationManager Nav
- <PageTitle>Services</PageTitle>
- <div class="min-h-screen bg-zinc-950 text-zinc-200 font-mono p-6 space-y-6">
- <AddServiceComponent OnCreated="NavigateToNewResource"/>
- @if (_services is null)
- {
- <div class="text-zinc-500">loading services…</div>
- }
- else if (_services.Count == 0)
- {
- <div class="text-zinc-500">no services found</div>
- }
- else
- {
- <div class="space-y-4">
- @foreach (var group in _services.OrderBy(s => s.Name).GroupBy(s => s.RunsOn).OrderByDescending(g => g.Count()))
- {
- foreach (var svc in group)
- {
- <ServiceCardComponent Service="svc" OnSave="UpdateService" OnDeleted="Callback"/>
- }
- }
- </div>
- }
- </div>
- @code {
- private IReadOnlyList<Service>? _services;
- protected override async Task OnInitializedAsync()
- {
- _services = await ServiceRepository.GetAllAsync();
- }
- async Task UpdateService(ServiceEditModel edit)
- {
- await UpdateServiceUseCase.ExecuteAsync(
- edit.Name,
- edit.Ip,
- edit.Port,
- edit.Protocol,
- edit.Url,
- edit.RunsOn,
- edit.Notes
- );
- }
- private Task NavigateToNewResource(string serverName)
- {
- Nav.NavigateTo($"resources/services/{serverName}");
- return Task.CompletedTask;
- }
- private async Task Callback(string obj)
- {
- _services = await ServiceRepository.GetAllAsync();
- }
- }
|