diff --git a/packages/web/components/ScenarioWizard.tsx b/packages/web/components/ScenarioWizard.tsx index 8db3662..3d705a5 100644 --- a/packages/web/components/ScenarioWizard.tsx +++ b/packages/web/components/ScenarioWizard.tsx @@ -28,8 +28,9 @@ interface WizardState { // Solar solar_enabled: boolean; solar_location: string; - solar_dc_mwp: number; solar_ac_mw: number; + solar_dc_ac_ratio: number; + solar_dc_mwp: number; // Wind wind_enabled: boolean; wind_location: string; @@ -49,8 +50,9 @@ const DEFAULT_STATE: WizardState = { cod_date: "2027-04-01", solar_enabled: true, solar_location: "RJ", - solar_dc_mwp: 100, - solar_ac_mw: 80, + solar_ac_mw: 100, + solar_dc_ac_ratio: 1.4, + solar_dc_mwp: 140, wind_enabled: false, wind_location: "RJ", wind_mw: 50, @@ -83,21 +85,29 @@ function Input({ type = "text", step, min, + max, + readOnly, + className = "", }: { value: string | number; onChange: (v: string) => void; type?: string; step?: number; min?: number; + max?: number; + readOnly?: boolean; + className?: string; }) { return ( onChange(e.target.value)} - className="border rounded px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary bg-background" + className={`border rounded px-3 py-1.5 text-sm focus:outline-none focus:ring-2 focus:ring-primary bg-background ${readOnly ? "bg-muted cursor-default" : ""} ${className}`} /> ); } @@ -203,15 +213,6 @@ function StepSolar({ options={LOCATION_OPTIONS} /> - - set("solar_dc_mwp", Number(v))} - /> - set("solar_ac_mw", Number(v))} /> + + { + const ratio = Number(v); + set("solar_dc_ac_ratio", ratio); + set("solar_dc_mwp", parseFloat((state.solar_ac_mw * ratio).toFixed(3))); + }} + /> + + + {}} + /> + )} @@ -365,8 +391,7 @@ function StepReview({ state }: { state: WizardState }) { <>
Solar
- {state.solar_dc_mwp} MWp DC / {state.solar_ac_mw} MW AC ( - {state.solar_location}) + {state.solar_ac_mw} MW AC / {state.solar_dc_mwp} MWp DC ({state.solar_location}, {state.solar_dc_ac_ratio}x)
)} @@ -438,8 +463,9 @@ export function ScenarioWizard({ onSubmit, onCancel }: ScenarioWizardProps) { solar: state.solar_enabled ? { location_id: state.solar_location, - capacity_dc_mwp: state.solar_dc_mwp, capacity_ac_mw: state.solar_ac_mw, + dc_ac_ratio: state.solar_dc_ac_ratio, + capacity_dc_mwp: state.solar_dc_mwp, } : null, wind: state.wind_enabled