@using System.ComponentModel.DataAnnotations @using RackPeek.Domain.Resources.SubResources @if (IsOpen) {
@(IsEdit ? "Modify CPU" : "Add CPU")
@if (IsEdit) { } else { }
} @code { [Parameter] public bool IsOpen { get; set; } [Parameter] public EventCallback IsOpenChanged { get; set; } [Parameter] public Cpu? Value { get; set; } [Parameter] public EventCallback OnSubmit { get; set; } [Parameter] public EventCallback OnDelete { get; set; } [Parameter] public string? TestIdPrefix { get; set; } private string BaseTestId => string.IsNullOrWhiteSpace(TestIdPrefix) ? "cpu-modal" : $"{TestIdPrefix}-cpu-modal"; private CpuFormModel _model = new(); private bool IsEdit => Value is not null; protected override void OnParametersSet() { if (IsOpen) { _model = Value is null ? new CpuFormModel() : new CpuFormModel { Model = Value.Model, Cores = Value.Cores, Threads = Value.Threads }; } } private async Task HandleValidSubmit() { var cpu = new Cpu { Model = _model.Model, Cores = _model.Cores, Threads = _model.Threads }; await OnSubmit.InvokeAsync(cpu); await Close(); } private async Task HandleDelete() { if (Value is not null) { await OnDelete.InvokeAsync(Value); await Close(); } } private async Task Cancel() { await Close(); } private async Task Close() { _model = new CpuFormModel(); await IsOpenChanged.InvokeAsync(false); } private class CpuFormModel { [Required] public string? Model { get; set; } [Range(1, 1024)] public int? Cores { get; set; } [Range(1, 2048)] public int? Threads { get; set; } } }