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 <
[email protected]> 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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers