Fix a couple of issues with the unique-collection control:

- Pass the data to evaluation functions like canEdit, canAdd
- Properly honour the canAdd option.
pull/3/head
Khushboo Vashi 2016-03-11 09:36:26 +00:00 committed by Dave Page
parent d21e60cc60
commit 2f334673a3
2 changed files with 29 additions and 22 deletions

View File

@ -528,21 +528,26 @@
checkVars.push('role'); checkVars.push('role');
} }
self.collection.each(function(m) { if (self.control_data.canAdd) {
if (!inSelected) { self.collection.each(function(m) {
var has = true; if (!inSelected) {
_.each(checkVars, function(v) { var has = true;
val = m.get(v); _.each(checkVars, function(v) {
has = has && (( val = m.get(v);
(_.isUndefined(val) || _.isNull(val)) && has = has && ((
(_.isUndefined(data[v]) || _.isNull(data[v])) (_.isUndefined(val) || _.isNull(val)) &&
) || (_.isUndefined(data[v]) || _.isNull(data[v]))
(val == data[v])); ) ||
}); (val == data[v]));
});
inSelected = has; inSelected = has;
} }
}); });
}
else {
inSelected = true;
}
self.$header.find('button.add').prop('disabled', inSelected); self.$header.find('button.add').prop('disabled', inSelected);
}, },

View File

@ -872,22 +872,22 @@
attributes: attributes, attributes: attributes,
formatter: this.formatter formatter: this.formatter
}), }),
evalF = function(f, m) { evalF = function(f, d, m) {
return (_.isFunction(f) ? !!f(m) : !!f); return (_.isFunction(f) ? !!f.apply(d, [m]) : !!f);
}; };
// Evaluate the disabled, visible, required, canAdd, & canDelete option // Evaluate the disabled, visible, required, canAdd, & canDelete option
_.extend(data, { _.extend(data, {
disabled: (field.version_compatible && 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]), visible: evalF.apply(this.field, [data.visible, data, this.model]),
required: evalF.apply(this.field, [data.required, this.model]), required: evalF.apply(this.field, [data.required, data, this.model]),
canAdd: (field.version_compatible && 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]), canDelete: evalF.apply(this.field, [data.canDelete, data, this.model]),
canEdit: evalF.apply(this.field, [data.canEdit, this.model]) canEdit: evalF.apply(this.field, [data.canEdit, data, this.model])
}); });
_.extend(data, {add_label: "ADD"}); _.extend(data, {add_label: "ADD"});
@ -896,6 +896,8 @@
return this; return this;
} }
this.control_data = _.clone(data);
// Show Backgrid Control // Show Backgrid Control
grid = this.showGridControl(data); grid = this.showGridControl(data);