Hi, Please find attached patch for numeric and integer control with optionally null value support.
Usage: 1] Integer id: 'fillfactor', label: '{{ _('Fill factor') }}', deps: ['index'], type: 'int', group: '{{ _('Definition') }}', allowNull: true, 2] Numeric id: 'fillfactor', label: '{{ _('Fill factor') }}', deps: ['index'], type: 'numeric', group: '{{ _('Definition') }}', allowNull: true, -- *Harshal Dhumal* *Software Engineer * EenterpriseDB <http://www.enterprisedb.com> On Fri, Mar 4, 2016 at 10:55 AM, Harshal Dhumal < harshal.dhu...@enterprisedb.com> wrote: > Hi, > > > Please find attached patch for numeric control with optionally allow null > values > > Null values: undefined/empty string/null > By default numeric control value can not be null. Use flag *allowNull: > true* to allow null values. > > Usage: > > id: 'fillfactor', label: '{{ _('Fill factor') }}', deps: ['index'], > type: 'numeric', group: '{{ _('Definition') }}', allowNull: true, > > > > -- > *Harshal Dhumal* > *Software Engineer * > > > > EenterpriseDB <http://www.enterprisedb.com> >
diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js index 4346156..7497f4f 100644 --- a/web/pgadmin/static/js/backform.pgadmin.js +++ b/web/pgadmin/static/js/backform.pgadmin.js @@ -1240,51 +1240,56 @@ checkInt: function(e) { var field = _.defaults(this.field.toJSON(), this.defaults), attrArr = this.field.get("name").split('.'), + allowNull = this.field.get("allowNull"), name = attrArr.shift(), value = this.getValueFromDOM(), min_value = field.min, max_value = field.max, isValid = true, - intPattern = new RegExp("^-?[0-9]*$"), - isMatched = intPattern.test(value); - - // Below logic will validate input - if (!isMatched) { - isValid = false; - this.model.errorModel.unset(name); - this.model.errorModel.set( - name, - S(pgAdmin.Browser.messages.MUST_BE_INT).sprintf( - field.label - ).value() - ); - } + intPattern = new RegExp("^-?[0-9]+$"); - // Below will check if entered value is in-between min & max range - if (isValid && (!_.isUndefined(min_value) && value < min_value)) { - isValid = false; - this.model.errorModel.unset(name); - this.model.errorModel.set( - name, - S(pgAdmin.Browser.messages.MUST_GR_EQ).sprintf( - field.label, - min_value - ).value() - ); - } + if (allowNull && (_.isUndefined(value) || + _.isNull(value) || value == '')) { + // Check for undefined/empty/null value if it's allowed. + value = null; + } else { + // Below logic will validate input + if (!intPattern.test(value)) { + isValid = false; + this.model.errorModel.unset(name); + this.model.errorModel.set( + name, + S(pgAdmin.Browser.messages.MUST_BE_INT).sprintf( + field.label + ).value() + ); + } - if (isValid && (!_.isUndefined(max_value) && value > max_value)) { - isValid = false; - this.model.errorModel.unset(name); - this.model.errorModel.set( - name, - S(pgAdmin.Browser.messages.MUST_LESS_EQ).sprintf( - field.label, - max_value - ).value() - ); - } + // Below will check if entered value is in-between min & max range + if (isValid && (!_.isUndefined(min_value) && value < min_value)) { + isValid = false; + this.model.errorModel.unset(name); + this.model.errorModel.set( + name, + S(pgAdmin.Browser.messages.MUST_GR_EQ).sprintf( + field.label, + min_value + ).value() + ); + } + if (isValid && (!_.isUndefined(max_value) && value > max_value)) { + isValid = false; + this.model.errorModel.unset(name); + this.model.errorModel.set( + name, + S(pgAdmin.Browser.messages.MUST_LESS_EQ).sprintf( + field.label, + max_value + ).value() + ); + } + } // After validation we need to set that value into model (only if all flags are true) if (isValid) { this.stopListening(this.model, "change:" + name, this.render); @@ -1333,49 +1338,55 @@ checkNumeric: function(e) { var field = _.defaults(this.field.toJSON(), this.defaults), attrArr = this.field.get("name").split('.'), + allowNull = this.field.get("allowNull"), name = attrArr.shift(), value = this.getValueFromDOM(), min_value = field.min, max_value = field.max, isValid = true, - intPattern = new RegExp("^-?[0-9]+(\.?[0-9]*)?$"), - isMatched = intPattern.test(value); - - // Below logic will validate input - if (!isMatched) { - isValid = false; - this.model.errorModel.unset(name); - this.model.errorModel.set( - name, - S(pgAdmin.Browser.messages.MUST_BE_NUM).sprintf( - field.label - ).value() - ); - } + intPattern = new RegExp("^-?[0-9]+(\.?[0-9]*)?$"); - // Below will check if entered value is in-between min & max range - if (isValid && (!_.isUndefined(min_value) && value < min_value)) { - isValid = false; - this.model.errorModel.unset(name); - this.model.errorModel.set( - name, - S(pgAdmin.Browser.messages.MUST_GR_EQ).sprintf( - field.label, - min_value - ).value() - ); - } + if (allowNull && (_.isUndefined(value) || + _.isNull(value) || value == '')) { + // Check for undefined/empty/null value if it's allowed. + value = null; + } else { + // Below logic will validate input + if (!intPattern.test(value)) { + isValid = false; + this.model.errorModel.unset(name); + this.model.errorModel.set( + name, + S(pgAdmin.Browser.messages.MUST_BE_NUM).sprintf( + field.label + ).value() + ); + } - if (isValid && (!_.isUndefined(max_value) && value > max_value)) { - isValid = false; - this.model.errorModel.unset(name); - this.model.errorModel.set( - name, - S(pgAdmin.Browser.messages.MUST_LESS_EQ).sprintf( - field.label, - max_value - ).value() - ); + // Below will check if entered value is in-between min & max range + if (isValid && (!_.isUndefined(min_value) && value < min_value)) { + isValid = false; + this.model.errorModel.unset(name); + this.model.errorModel.set( + name, + S(pgAdmin.Browser.messages.MUST_GR_EQ).sprintf( + field.label, + min_value + ).value() + ); + } + + if (isValid && (!_.isUndefined(max_value) && value > max_value)) { + isValid = false; + this.model.errorModel.unset(name); + this.model.errorModel.set( + name, + S(pgAdmin.Browser.messages.MUST_LESS_EQ).sprintf( + field.label, + max_value + ).value() + ); + } } // After validation we need to set that value into model (only if all flags are true)
-- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers