@using RackPeek.Domain.Resources.AccessPoints @using Shared.Rcl.Hardware @inject UpdateAccessPointUseCase UpdateUseCase @inject IDeleteResourceUseCase DeleteUseCase @inject IRenameResourceUseCase RenameUseCase @inject ICloneResourceUseCase CloneUseCase @inject NavigationManager Nav
@AccessPoint.Name
@if (!_isEditing) { } else { }
Model
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(AccessPoint.Model)) {
@AccessPoint.Model
}
Speed (Gbps)
@if (_isEditing) { } else if (AccessPoint.Speed is not null) {
@AccessPoint.Speed Gbps
}
Notes
@if (_isEditing) { } else { }
Are you sure you want to delete @AccessPoint.Name? @code { [Parameter] [EditorRequired] public AccessPoint AccessPoint { get; set; } = default!; [Parameter] public EventCallback OnDeleted { get; set; } bool _isEditing; bool _confirmDeleteOpen; bool _renameOpen; bool _cloneOpen; AccessPointEditModel _edit = new(); void BeginEdit() { _edit = AccessPointEditModel.From(AccessPoint); _isEditing = true; } async Task Save() { _isEditing = false; await UpdateUseCase.ExecuteAsync( AccessPoint.Name, _edit.Model, _edit.Speed, _edit.Notes); AccessPoint.Model = _edit.Model; AccessPoint.Speed = _edit.Speed; AccessPoint.Notes = _edit.Notes; } void Cancel() { _isEditing = false; } void ConfirmDelete() { _confirmDeleteOpen = true; } async Task DeleteServer() { _confirmDeleteOpen = false; await DeleteUseCase.ExecuteAsync(AccessPoint.Name); if (OnDeleted.HasDelegate) await OnDeleted.InvokeAsync(AccessPoint.Name); } void OpenRename() { _renameOpen = true; } async Task HandleRenameSubmit(string newName) { await RenameUseCase.ExecuteAsync(AccessPoint.Name, newName); Nav.NavigateTo($"resources/hardware/{Uri.EscapeDataString(newName)}"); } void OpenClone() { _cloneOpen = true; } async Task HandleCloneSubmit(string newName) { await CloneUseCase.ExecuteAsync(AccessPoint.Name, newName); Nav.NavigateTo($"resources/hardware/{Uri.EscapeDataString(newName)}"); } public class AccessPointEditModel { public string? Model { get; set; } public double? Speed { get; set; } public string? Notes { get; set; } public static AccessPointEditModel From(AccessPoint ap) { return new AccessPointEditModel { Model = ap.Model, Speed = ap.Speed, Notes = ap.Notes }; } } }