Skip to content

Commit e33cbdc

Browse files
more fixes
1 parent 03f399b commit e33cbdc

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

frontend/src/components/Simulation/ModelInputs.tsx

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { ChangeEvent, useState } from "react";
1+
import React, { ChangeEvent, useEffect, useState } from "react";
22
import { ModelConfig } from "@/dto/FormConfig";
33
import { Accordion, Autocomplete, Button, NativeSelect, TextField, Typography } from "@equinor/eds-core-react";
44
import { MetaTooltip } from "@/functions/Tooltip";
@@ -116,6 +116,25 @@ function GridRangeInput({ candidateSubstances }: { candidateSubstances: string[]
116116
const axis = axes[0];
117117
const isActive = axis !== undefined;
118118

119+
const [minStr, setMinStr] = useState(axis?.range.min.toString() ?? "");
120+
const [maxStr, setMaxStr] = useState(axis?.range.max.toString() ?? "");
121+
const [stepsStr, setStepsStr] = useState(axis?.range.steps.toString() ?? "");
122+
123+
useEffect(() => {
124+
if (axis) {
125+
setMinStr(axis.range.min.toString());
126+
setMaxStr(axis.range.max.toString());
127+
setStepsStr(axis.range.steps.toString());
128+
}
129+
}, [axis?.substance]);
130+
131+
const commitRange = (field: "min" | "max" | "steps", raw: string) => {
132+
if (!axis) return;
133+
const v = Number(raw);
134+
if (Number.isNaN(v)) return;
135+
updateAxis(0, { range: { ...axis.range, [field]: v } });
136+
};
137+
119138
const headerText = isActive
120139
? `Concentration range: ${optionName(axis.substance)}`
121140
: "Concentration range";
@@ -159,8 +178,9 @@ function GridRangeInput({ candidateSubstances }: { candidateSubstances: string[]
159178
step="any"
160179
min={0}
161180
max={PPM_MAX}
162-
value={axis.range.min}
163-
onChange={(e: ChangeEvent<HTMLInputElement>) => updateAxis(0, { range: { ...axis.range, min: e.target.valueAsNumber } })}
181+
value={minStr}
182+
onChange={(e: ChangeEvent<HTMLInputElement>) => setMinStr(e.target.value)}
183+
onBlur={() => commitRange("min", minStr)}
164184
variant={axis.range.max > axis.range.min ? undefined : "error"}
165185
/>
166186
<TextField
@@ -171,8 +191,9 @@ function GridRangeInput({ candidateSubstances }: { candidateSubstances: string[]
171191
step="any"
172192
min={0}
173193
max={PPM_MAX}
174-
value={axis.range.max}
175-
onChange={(e: ChangeEvent<HTMLInputElement>) => updateAxis(0, { range: { ...axis.range, max: e.target.valueAsNumber } })}
194+
value={maxStr}
195+
onChange={(e: ChangeEvent<HTMLInputElement>) => setMaxStr(e.target.value)}
196+
onBlur={() => commitRange("max", maxStr)}
176197
variant={axis.range.max > axis.range.min ? undefined : "error"}
177198
helperText={axis.range.max > axis.range.min ? undefined : "'To' must be greater than 'From'"}
178199
/>
@@ -183,8 +204,9 @@ function GridRangeInput({ candidateSubstances }: { candidateSubstances: string[]
183204
step={1}
184205
min={2}
185206
max={25}
186-
value={axis.range.steps}
187-
onChange={(e: ChangeEvent<HTMLInputElement>) => updateAxis(0, { range: { ...axis.range, steps: e.target.valueAsNumber } })}
207+
value={stepsStr}
208+
onChange={(e: ChangeEvent<HTMLInputElement>) => setStepsStr(e.target.value)}
209+
onBlur={() => commitRange("steps", stepsStr)}
188210
/>
189211
</>
190212
)}

0 commit comments

Comments
 (0)