@using System.ComponentModel.DataAnnotations
@using RackPeek.Domain.Resources.SubResources
@if (IsOpen)
{
@(IsEdit ? "Modify GPU" : "Add GPU")
@if (IsEdit)
{
}
else
{
}
}
@code {
[Parameter] public bool IsOpen { get; set; }
[Parameter] public EventCallback IsOpenChanged { get; set; }
[Parameter] public Gpu? Value { get; set; }
[Parameter] public EventCallback OnSubmit { get; set; }
[Parameter] public EventCallback OnDelete { get; set; }
// Same prefix pattern as ConfirmModal
[Parameter] public string? TestIdPrefix { get; set; }
private string BaseTestId =>
string.IsNullOrWhiteSpace(TestIdPrefix)
? "gpu-modal"
: $"{TestIdPrefix}-gpu-modal";
private GpuFormModel _model = new();
private bool IsEdit => Value is not null;
protected override void OnParametersSet()
{
if (IsOpen)
{
_model = Value is null
? new GpuFormModel()
: new GpuFormModel
{
Model = Value.Model,
Vram = Value.Vram
};
}
}
private async Task HandleValidSubmit()
{
var gpu = new Gpu
{
Model = _model.Model,
Vram = _model.Vram
};
await OnSubmit.InvokeAsync(gpu);
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 GpuFormModel();
await IsOpenChanged.InvokeAsync(false);
}
private class GpuFormModel
{
[Required] public string? Model { get; set; }
[Range(1, 256)] public int? Vram { get; set; }
}
}