@using RackPeek.Domain.Resources.UpsUnits @inject UpdateUpsUseCase UpdateUseCase @inject IGetResourceByNameUseCase GetByNameUseCase @inject IDeleteResourceUseCase DeleteUseCase @inject IRenameResourceUseCase RenameUseCase @inject ICloneResourceUseCase CloneUseCase @inject NavigationManager Nav
@Ups.Name
@if (!_isEditing) { } else { }
Model
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(Ups.Model)) {
@Ups.Model
}
Capacity
@if (_isEditing) { } else if (Ups.Va is not null) {
@Ups.Va VA
}
Notes
@if (_isEditing) { } else { }
Are you sure you want to delete @Ups.Name? @code { [Parameter] [EditorRequired] public Ups Ups { get; set; } = default!; [Parameter] public EventCallback OnDeleted { get; set; } bool _isEditing; bool _confirmDeleteOpen; UpsEditModel _edit = new(); void BeginEdit() { _edit = UpsEditModel.From(Ups); _isEditing = true; } async Task Save() { _isEditing = false; await UpdateUseCase.ExecuteAsync( Ups.Name, _edit.Model, _edit.Va, _edit.Notes); Ups = await GetByNameUseCase.ExecuteAsync(Ups.Name); } void Cancel() { _isEditing = false; } void ConfirmDelete() { _confirmDeleteOpen = true; } async Task DeleteUps() { _confirmDeleteOpen = false; await DeleteUseCase.ExecuteAsync(Ups.Name); if (OnDeleted.HasDelegate) await OnDeleted.InvokeAsync(Ups.Name); } public class UpsEditModel { public string? Model { get; set; } public int? Va { get; set; } public string? Notes { get; set; } public static UpsEditModel From(Ups ups) { return new UpsEditModel { Model = ups.Model, Va = ups.Va, Notes = ups.Notes }; } } } @code { bool _renameOpen; void OpenRename() { _renameOpen = true; } async Task HandleRenameSubmit(string newName) { await RenameUseCase.ExecuteAsync(Ups.Name, newName); Nav.NavigateTo($"resources/hardware/{Uri.EscapeDataString(newName)}"); } } @code { bool _cloneOpen; void OpenClone() { _cloneOpen = true; } async Task HandleCloneSubmit(string newName) { await CloneUseCase.ExecuteAsync(Ups.Name, newName); Nav.NavigateTo($"resources/hardware/{Uri.EscapeDataString(newName)}"); } }