diff --git a/webapp/components/experiments/ExperimentEdit.js b/webapp/components/experiments/ExperimentEdit.js index 272fc25e..a23ca2a6 100644 --- a/webapp/components/experiments/ExperimentEdit.js +++ b/webapp/components/experiments/ExperimentEdit.js @@ -102,9 +102,9 @@ const ParameterRow = (parameter, index, handleParamSelection, handleChange, hand id={`${parameter.name}-from`} label="From" variant="filled" - type="number" + type="text" inputMode="numeric" value={parameter?.minVal || parameter?.min} - onChange={(e) => handleRangeInput(e.target.value, index, parameter, 'min')} + onChange={(e) => handleRangeInput(e.target, index, parameter, 'min')} error={parameter?.minerror} helperText={parameter?.minhelperText} autoComplete="off" @@ -115,9 +115,9 @@ const ParameterRow = (parameter, index, handleParamSelection, handleChange, hand id={`${parameter.name}-to`} label="To" variant="filled" - type="number" + type="text" inputMode="numeric" value={parameter?.maxVal || parameter?.max} - onChange={(e) => handleRangeInput(e.target.value, index, parameter, 'max')} + onChange={(e) => handleRangeInput(e.target, index, parameter, 'max')} error={parameter?.maxerror} helperText={parameter?.maxhelperText} autoComplete="off" @@ -128,9 +128,8 @@ const ParameterRow = (parameter, index, handleParamSelection, handleChange, hand id={`${parameter.name}-step`} label="Step" variant="filled" - type="number" - value={parameter?.stepVal || parameter?.step} - onChange={(e) => handleRangeInput(e.target.value, index, parameter, 'step')} + type="text" inputMode="numeric" + onChange={(e) => handleRangeInput(e.target, index, parameter, 'step')} error={parameter?.steperror} helperText={parameter?.stephelperText} autoComplete="off" @@ -463,10 +462,12 @@ const ExperimentEdit = (props) => { setGroupParameters(newGroupParams); }; - const handleRangeInput = (val, index, parameter, key) => { + const handleRangeInput = (input, index, parameter, key) => { + const val = input.value ; const newParameters = parameter.inGroup ? [...groupParameters] : [...parameters]; newParameters[index] = ExperimentHelper.validateRangeParameter(parameter, val, key); setParamChange(parameter.inGroup, newParameters); + input.value = val ; }; const handleInputValues = (val, index, parameter) => { diff --git a/webapp/components/experiments/ExperimentHelper.js b/webapp/components/experiments/ExperimentHelper.js index a4022126..d7902bc8 100644 --- a/webapp/components/experiments/ExperimentHelper.js +++ b/webapp/components/experiments/ExperimentHelper.js @@ -24,6 +24,9 @@ export const convertFieldValue = (field, value) => { case REAL_TYPE.BOOL: return Boolean(value); + case REAL_TYPE_FLOAT: + return validLocale(value); + default: // .. handling of more types // list(float), dict, list(list(float)), func @@ -31,6 +34,16 @@ export const convertFieldValue = (field, value) => { } }; +function getLocale() { + if (navigator.languages != undefined) + return navigator.languages[0]; + return navigator.language; +} +function validLocale(num) { + const locale = getLocale(); + return Intl.NumberFormat(locale).format(num); +} + export const isValidValue = (value, type) => { if (type == null) { return false; diff --git a/webapp/components/general/Dialog.js b/webapp/components/general/Dialog.js index 4a4e9c51..05b73546 100644 --- a/webapp/components/general/Dialog.js +++ b/webapp/components/general/Dialog.js @@ -26,10 +26,10 @@ const AboutContent = withStyles(styles)(({ classes }) => ( - NetPyNE-UI v0.9.0 + NetPyNE-UI v0.9.1 - NetPyNE v1.0.3 + NetPyNE v1.0.3.1 NEURON v8.0.2