in js/layout/table.js [185:240]
update: function (model) {
_.each(this.renderers, function (renderer) {
renderer.update && renderer.update();
});
var value = model.get('value');
var columns = model.get('columns');
var columnsDelta = {};
var colOptions = this.options.columns || {};
var orderby = {};
_.each(this.grid.projection.get('orderby'), function (element, index) {
var key = _.first(_.keys(element));
orderby[key] = {
dir: element[key],
index: index,
};
});
_.each(columns, function (col, property) {
// TODO [akamel] consider filtering which props to copy/override
var delta = {};
var colOption = colOptions[property];
var orderName = property;
if (colOption && _.isString(colOption.sortable)) {
orderName = colOption.sortable;
} else if (col && _.isString(col.sortable)) {
orderName = col.sortable;
}
if (orderby[orderName]) {
delta.$orderby = orderby[orderName];
}
columnsDelta[property] = _.defaults(delta, colOption, col);
});
if (_.has(this.options.$metadata, 'class') && _.isArray(this.options.$metadata.class)) {
this.options.$metadata.class = this.options.$metadata.class.join(' ');
}
var delta = {
'value': value,
'columns': columnsDelta,
'columns.lookup': _.indexBy(columns, function (col) {
return col.property;
}),
'$metadata': this.options.$metadata,
'hideHeaders': this.options.hideHeaders,
};
this.data = _.defaults(delta, model.toJSON());
this.draw({ canSkipDraw: false });
},