in js/projection/row.js [11:88]
update: function (options) {
if (Model.__super__.update.call(this, options)) {
var selectedMap = {};
_.each(this.get('row.check.list'), function(selectedIndex) {
selectedMap[selectedIndex] = true;
});
var model = this.src.data;
var rows = model.get('value');
_.each(rows, row => {
var type = _.chain(row).result('$metadata').result('type').value();
if (_.isUndefined(type)) {
row.$metadata = _.extend({}, row.$metadata, {
type: 'row',
});
}
});
_.each(rows, (row) => {
var classesRule = this.get('row.classes');
var checkId = this.get('row.check.id');
var checkboxAllow = model.get('row.check.allow');
var classArr = [];
if (selectedMap[row[checkId]]) {
classArr.push('row-selected');
}
var originClass = _.chain(row)
.result('$metadata')
.result('attr')
.result('class')
.value();
if (originClass) {
classArr.push(originClass);
}
_.each(classesRule, (func, key) => {
var type = _.chain(row).result('$metadata').result('type').value();
if (_.isFunction(func) && func(row, type)) {
classArr.push(key);
}
});
//attr info from meta
var originId = _.chain(row)
.result('$metadate')
.result('attr')
.result('id')
.value();
if (_.isFunction(checkboxAllow) ? checkboxAllow(row) : checkboxAllow) {
var uniqueId = model.get('a11y.selection.uniqueId');
var id = row[checkId] || originId;
var a11yId = uniqueId.concat(id);
var role = 'row';
}
_.extend(row, {
$metadata: {
attr: _.pick({
class: _.flatten(classArr).join(' '),
id: a11yId,
role: role,
}, Boolean),
},
});
});
this.patch({ value: rows });
}
},