@inject UpdateServiceUseCase UpdateUseCase @inject IGetResourceByNameUseCase GetByNameUseCase @inject IDeleteResourceUseCase DeleteUseCase @inject ICloneResourceUseCase CloneUseCase @inject IRenameResourceUseCase RenameUseCase @inject NavigationManager Nav
@Service.Name
@if (!_isEditing) { } else { }
IP
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(Service.Network?.Ip)) {
@Service.Network!.Ip
}
Port
@if (_isEditing) { } else if (Service.Network?.Port.HasValue == true) {
@Service.Network.Port
}
Protocol
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(Service.Network?.Protocol)) {
@Service.Network!.Protocol
}
URL
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(Service.Network?.Url)) { @Service.Network.Url }
Runs On
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(Service.RunsOn)) { @Service.RunsOn }
Notes
@if (_isEditing) { } else { }
Are you sure you want to delete @Service.Name? @code { bool _cloneOpen; void OpenClone() { _cloneOpen = true; } async Task HandleCloneSubmit(string newName) { await CloneUseCase.ExecuteAsync(Service.Name, newName); Nav.NavigateTo($"resources/services/{newName}"); } } @code { [Parameter] [EditorRequired] public Service Service { get; set; } = default!; [Parameter] public EventCallback OnSave { get; set; } private bool _isEditing; private ServiceEditModel _edit = new(); void BeginEdit() { _edit = ServiceEditModel.From(Service); _isEditing = true; } async Task Save() { _isEditing = false; await UpdateUseCase.ExecuteAsync( _edit.Name, _edit.Ip, _edit.Port, _edit.Protocol, _edit.Url, _edit.RunsOn, _edit.Notes ); await OnSave.InvokeAsync(Service.Name); } void Cancel() { _isEditing = false; } bool _selectParentOpen; string? SelectedParentName; async Task HandleParentSelected(string? name) { SelectedParentName = name; await UpdateUseCase.ExecuteAsync( Service.Name, Service.Network?.Ip, Service.Network?.Port, Service.Network?.Protocol, Service.Network?.Url, name, Service.Notes); Service = await GetByNameUseCase.ExecuteAsync(Service.Name); _edit = ServiceEditModel.From(Service); } } @code { private bool _confirmDeleteOpen; [Parameter] public EventCallback OnDeleted { get; set; } void ConfirmDelete() { _confirmDeleteOpen = true; } async Task DeleteServer() { _confirmDeleteOpen = false; await DeleteUseCase.ExecuteAsync(Service.Name); if (OnDeleted.HasDelegate) await OnDeleted.InvokeAsync(Service.Name); } } @code { bool _renameOpen; void OpenRename() { _renameOpen = true; } async Task HandleRenameSubmit(string newName) { await RenameUseCase.ExecuteAsync(Service.Name, newName); Nav.NavigateTo($"resources/services/{newName}"); } }