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');
}
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);
},

View File

@ -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);