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