fix(dma): defer leakage flow validation
This commit is contained in:
@@ -74,18 +74,31 @@ const AnalysisParameters: React.FC<Props> = ({
|
||||
advancedOpen,
|
||||
} = parametersState;
|
||||
const [running, setRunning] = useState(false);
|
||||
const [qSumInput, setQSumInput] = useState(() => String(qSum));
|
||||
|
||||
React.useEffect(() => {
|
||||
setQSumInput(String(qSum));
|
||||
}, [qSum]);
|
||||
|
||||
const parsedQSum = Number(qSumInput);
|
||||
const qSumIsValid =
|
||||
qSumInput.trim() !== "" && Number.isFinite(parsedQSum) && parsedQSum >= 360;
|
||||
|
||||
const isValid = useMemo(() => {
|
||||
if (!schemeName.trim() || !startTime || !endTime) return false;
|
||||
return startTime.isBefore(endTime) && qSum >= 360;
|
||||
}, [schemeName, startTime, endTime, qSum]);
|
||||
return startTime.isBefore(endTime) && qSumIsValid;
|
||||
}, [schemeName, startTime, endTime, qSumIsValid]);
|
||||
|
||||
const handleRun = async () => {
|
||||
if (!isValid || !startTime || !endTime) {
|
||||
open?.({ type: "error", message: "请完善参数并确认时间范围合法" });
|
||||
open?.({
|
||||
type: "error",
|
||||
message: "请完善参数并确认时间范围合法",
|
||||
description: !qSumIsValid ? `总漏损流量需不小于 360 ${FLOW_DISPLAY_UNIT}` : undefined,
|
||||
});
|
||||
return;
|
||||
}
|
||||
setFormField("qSum", parsedQSum);
|
||||
setRunning(true);
|
||||
open?.({
|
||||
key: "dma-leak-analysis-progress",
|
||||
@@ -213,12 +226,22 @@ const AnalysisParameters: React.FC<Props> = ({
|
||||
<TextField
|
||||
type="number"
|
||||
size="small"
|
||||
value={qSum}
|
||||
value={qSumInput}
|
||||
onChange={(e) => {
|
||||
const value = Number(e.target.value);
|
||||
setFormField("qSum", Number.isNaN(value) ? 1440 : Math.max(360, value));
|
||||
const rawValue = e.target.value;
|
||||
setQSumInput(rawValue);
|
||||
const value = Number(rawValue);
|
||||
if (rawValue.trim() !== "" && Number.isFinite(value)) {
|
||||
setFormField("qSum", value);
|
||||
}
|
||||
}}
|
||||
inputProps={{ min: 360, step: 10 }}
|
||||
error={qSumInput.trim() !== "" && !qSumIsValid}
|
||||
helperText={
|
||||
qSumInput.trim() !== "" && !qSumIsValid
|
||||
? `需不小于 360 ${FLOW_DISPLAY_UNIT}`
|
||||
: " "
|
||||
}
|
||||
/>
|
||||
<Box
|
||||
sx={{
|
||||
|
||||
Reference in New Issue
Block a user