From 0ad73ef030e6f4da8173eefdeca3d78c8aa51741 Mon Sep 17 00:00:00 2001 From: Lijiaoa <61399850+Lijiaoa@users.noreply.github.com> Date: Wed, 15 Sep 2021 09:56:16 +0800 Subject: [PATCH] [fix issue#4015] webui prompts error message if user set maxExperimentDuration < execDuration (#4164) --- .../overview/count/EditExperimentParam.tsx | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/ts/webui/src/components/overview/count/EditExperimentParam.tsx b/ts/webui/src/components/overview/count/EditExperimentParam.tsx index 14ddce08c1..478aa3c2cd 100644 --- a/ts/webui/src/components/overview/count/EditExperimentParam.tsx +++ b/ts/webui/src/components/overview/count/EditExperimentParam.tsx @@ -2,6 +2,7 @@ import React, { useState, useCallback, useContext } from 'react'; import axios from 'axios'; import { Dropdown } from '@fluentui/react'; import { EXPERIMENT } from '../../../static/datamodel'; +import { toSeconds } from '../../../static/experimentConfig'; import { AppContext } from '../../../App'; import { EditExpeParamContext } from './context'; import { durationUnit } from '../overviewConst'; @@ -63,20 +64,32 @@ export const EditExperimentParam = (): any => { } } + function promptErrorMessage(mess: string, type: string, value: string): void { + showMessageInfo(mess, type); + setEditValInput(value); + } + async function confirmEdit(): Promise { const isMaxDuration = title === 'Max duration'; const newProfile = Object.assign({}, EXPERIMENT.profile); let beforeParam = ''; if (isMaxDuration) { if (!editInputVal.match(/^\d+(?=\.{0,1}\d+$|$)/)) { - showMessageInfo('Please enter a number!', 'error'); - setEditValInput(defaultVal); + promptErrorMessage('Please enter a number!', 'error', defaultVal); + return; + } + if (toSeconds(`${editInputVal}${unit}`) < EXPERIMENT.profile.execDuration) { + // maxDuration should > current run time(execDuration) + promptErrorMessage( + 'Please input a valid value. (Current duration is more than the number you input.)', + 'error', + defaultVal + ); return; } } else { if (!editInputVal.match(/^[1-9]\d*$/)) { - showMessageInfo('Please enter a positive integer!', 'error'); - setEditValInput(defaultVal); + promptErrorMessage('Please enter a positive integer!', 'error', defaultVal); return; } }