From 2f334673a3db951a28b91c4bb2917f5944d4473c Mon Sep 17 00:00:00 2001 From: Khushboo Vashi Date: Fri, 11 Mar 2016 09:36:26 +0000 Subject: [PATCH] Fix a couple of issues with the unique-collection control: - Pass the data to evaluation functions like canEdit, canAdd - Properly honour the canAdd option. --- .../servers/static/js/variable.js | 33 +++++++++++-------- web/pgadmin/static/js/backform.pgadmin.js | 18 +++++----- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/web/pgadmin/browser/server_groups/servers/static/js/variable.js b/web/pgadmin/browser/server_groups/servers/static/js/variable.js index 4c13215b3..6d829d48e 100644 --- a/web/pgadmin/browser/server_groups/servers/static/js/variable.js +++ b/web/pgadmin/browser/server_groups/servers/static/js/variable.js @@ -528,21 +528,26 @@ checkVars.push('role'); } - self.collection.each(function(m) { - if (!inSelected) { - var has = true; - _.each(checkVars, function(v) { - val = m.get(v); - has = has && (( - (_.isUndefined(val) || _.isNull(val)) && - (_.isUndefined(data[v]) || _.isNull(data[v])) - ) || - (val == data[v])); - }); + if (self.control_data.canAdd) { + self.collection.each(function(m) { + if (!inSelected) { + var has = true; + _.each(checkVars, function(v) { + val = m.get(v); + has = has && (( + (_.isUndefined(val) || _.isNull(val)) && + (_.isUndefined(data[v]) || _.isNull(data[v])) + ) || + (val == data[v])); + }); - inSelected = has; - } - }); + inSelected = has; + } + }); + } + else { + inSelected = true; + } self.$header.find('button.add').prop('disabled', inSelected); }, diff --git a/web/pgadmin/static/js/backform.pgadmin.js b/web/pgadmin/static/js/backform.pgadmin.js index b4b0e0807..ac1ad748a 100644 --- a/web/pgadmin/static/js/backform.pgadmin.js +++ b/web/pgadmin/static/js/backform.pgadmin.js @@ -872,22 +872,22 @@ attributes: attributes, formatter: this.formatter }), - evalF = function(f, m) { - return (_.isFunction(f) ? !!f(m) : !!f); + evalF = function(f, d, m) { + return (_.isFunction(f) ? !!f.apply(d, [m]) : !!f); }; // Evaluate the disabled, visible, required, canAdd, & canDelete option _.extend(data, { disabled: (field.version_compatible && - evalF.apply(this.field, [data.disabled, this.model]) + evalF.apply(this.field, [data.disabled, data, this.model]) ), - visible: evalF.apply(this.field, [data.visible, this.model]), - required: evalF.apply(this.field, [data.required, this.model]), + visible: evalF.apply(this.field, [data.visible, data, this.model]), + required: evalF.apply(this.field, [data.required, data, this.model]), canAdd: (field.version_compatible && - evalF.apply(this.field, [data.canAdd, this.model]) + evalF.apply(this.field, [data.canAdd, data, this.model]) ), - canDelete: evalF.apply(this.field, [data.canDelete, this.model]), - canEdit: evalF.apply(this.field, [data.canEdit, this.model]) + canDelete: evalF.apply(this.field, [data.canDelete, data, this.model]), + canEdit: evalF.apply(this.field, [data.canEdit, data, this.model]) }); _.extend(data, {add_label: "ADD"}); @@ -896,6 +896,8 @@ return this; } + this.control_data = _.clone(data); + // Show Backgrid Control grid = this.showGridControl(data);