From 77e3800b40fd7622371d22b7d7c475397b2287c7 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 27 Sep 2021 12:02:59 -0400 Subject: [PATCH] Afform - ensure default value data type matches input type --- ext/afform/core/ang/af/afField.component.js | 26 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/ext/afform/core/ang/af/afField.component.js b/ext/afform/core/ang/af/afField.component.js index cbfd84d826..df50f547bc 100644 --- a/ext/afform/core/ang/af/afField.component.js +++ b/ext/afform/core/ang/af/afField.component.js @@ -99,16 +99,36 @@ } // Set default value based on url if (urlArgs && urlArgs[uniquePrefix + ctrl.fieldName]) { - $scope.dataProvider.getFieldData()[ctrl.fieldName] = urlArgs[uniquePrefix + ctrl.fieldName]; + setValue(urlArgs[uniquePrefix + ctrl.fieldName]); } // Set default value based on field defn else if (ctrl.defn.afform_default) { - $scope.dataProvider.getFieldData()[ctrl.fieldName] = ctrl.defn.afform_default; + setValue(ctrl.defn.afform_default); } }); - }; + // Set default value; ensure data type matches input type + function setValue(value) { + if (ctrl.defn.input_type === 'Number' && ctrl.defn.search_range) { + if (!_.isPlainObject(value)) { + value = { + '>=': +(('' + value).split('-')[0] || 0), + '<=': +(('' + value).split('-')[1] || 0), + }; + } + } else if (ctrl.defn.input_type === 'Number') { + value = +value; + } else if (ctrl.defn.search_range && !_.isPlainObject(value)) { + value = { + '>=': ('' + value).split('-')[0], + '<=': ('' + value).split('-')[1] || '', + }; + } + + $scope.dataProvider.getFieldData()[ctrl.fieldName] = value; + } + // Get the repeat index of the entity fieldset (not the join) ctrl.getEntityIndex = function() { // If already in a join repeat, look up the outer repeat -- 2.25.1