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