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..82963bb 100644
--- a/web/pgadmin/static/js/backform.pgadmin.js
+++ b/web/pgadmin/static/js/backform.pgadmin.js
@@ -1333,49 +1333,56 @@
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);
+ intPattern = new RegExp("^-?[0-9]+(\.?[0-9]*)?$");
- // 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()
- );
- }
+ if (allowNull && (_.isUndefined(value) ||
+ _.isNull(value) || value == '')) {
+ // Check for undefined/empty/null value if it's allowed.
+ value = null;
+ } else {
+ var 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()
+ );
+ }
- // 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()
- );
- }
+ // 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()
- );
+ 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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers