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