@using RackPeek.Domain.Resources.Models @using RackPeek.Domain.Resources.SystemResources @using RackPeek.Domain.Resources.SystemResources.UseCases @inject UpdateSystemUseCase UpdateSystemUseCase @inject GetSystemUseCase GetSystemUseCase @inject AddSystemDriveUseCase AddSystemDriveUseCase @inject RemoveSystemDriveUseCase RemoveSystemDriveUseCase @inject UpdateSystemDriveUseCase UpdateSystemDriveUseCase @inject DeleteSystemUseCase DeleteSystemUseCase @inject CloneSystemUseCase CloneSystemUseCase @inject NavigationManager Nav @inject RenameSystemUseCase RenameSystemUseCase
@System.Name
@if (!_isEditing) { } else { }
Type
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(System.Type)) {
@System.Type
}
OS
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(System.Os)) {
@System.Os
}
Cores
@if (_isEditing) { } else if (System.Cores.HasValue) {
@System.Cores
}
RAM (GB)
@if (_isEditing) { } else if (System.Ram.HasValue) {
@System.Ram GB
}
Runs On
@if (_isEditing) { } else if (!string.IsNullOrWhiteSpace(System.RunsOn)) { @System.RunsOn }
Drives
@if (System.Drives?.Any() == true) { @foreach (var drive in System.Drives) {
} }
Notes
@if (_isEditing) { } else { }
Are you sure you want to delete @System.Name?
This will detach all dependent systems.
@code { [Parameter] [EditorRequired] public SystemResource System { get; set; } = default!; [Parameter] public EventCallback OnSave { get; set; } private bool _isEditing; private SystemEditModel _edit = new(); void BeginEdit() { _edit = SystemEditModel.From(System); _isEditing = true; } async Task Save() { _isEditing = false; await OnSave.InvokeAsync(_edit); } void Cancel() { _isEditing = false; } bool _selectParentOpen; string? SelectedParentName; async Task HandleParentSelected(string? name) { SelectedParentName = name; await UpdateSystemUseCase.ExecuteAsync( System.Name, System.Type, System.Os, System.Cores, System.Ram, name, System.Notes); System = await GetSystemUseCase.ExecuteAsync(System.Name); _edit = SystemEditModel.From(System); } #region Drives bool _driveModalOpen; int _editingDriveIndex; Drive? _editingDrive; void OpenAddDrive() { _editingDriveIndex = -1; _editingDrive = null; _driveModalOpen = true; } void OpenEditDrives(Drive drive) { _editingDrive = drive; System.Drives ??= new List(); _editingDriveIndex = System.Drives.IndexOf(drive); ; _driveModalOpen = true; } async Task HandleDriveSubmit(Drive drive) { System.Drives ??= new List(); if (_editingDriveIndex < 0) { await AddSystemDriveUseCase.ExecuteAsync(System.Name, drive.Type ?? "hdd", drive.Size ?? 0); } else { await UpdateSystemDriveUseCase.ExecuteAsync(System.Name, _editingDriveIndex, drive.Type ?? "hdd", drive.Size ?? 0); } System = await GetSystemUseCase.ExecuteAsync(System.Name); StateHasChanged(); } async Task HandleDriveDelete(Drive drive) { await RemoveSystemDriveUseCase.ExecuteAsync(System.Name, _editingDriveIndex); System = await GetSystemUseCase.ExecuteAsync(System.Name); StateHasChanged(); } #endregion } @code { private bool _confirmDeleteOpen; [Parameter] public EventCallback OnDeleted { get; set; } void ConfirmDelete() { _confirmDeleteOpen = true; } async Task DeleteServer() { _confirmDeleteOpen = false; await DeleteSystemUseCase.ExecuteAsync(System.Name); if (OnDeleted.HasDelegate) await OnDeleted.InvokeAsync(System.Name); } } @code { bool _cloneOpen; void OpenClone() { _cloneOpen = true; } async Task HandleCloneSubmit(string newName) { await CloneSystemUseCase.ExecuteAsync(System.Name, newName); Nav.NavigateTo($"resources/systems/{newName}"); } } @code { bool _renameOpen; void OpenRename() { _renameOpen = true; } async Task HandleRenameSubmit(string newName) { await RenameSystemUseCase.ExecuteAsync(System.Name, newName); Nav.NavigateTo($"resources/systems/{newName}"); } }