@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; }
}
}