in js/projection/column-group.js [19:66]
update: function (options) {
if (Model.__super__.update.call(this, options)) {
var model = this.src.data;
var columnGroup = this.get('column.group') || {};
var groupExpansion = {};
_.each(this.get('column.groupExpansion') || [], function (columnName) {
groupExpansion[columnName] = true;
});
var select = this.get('column.select') || model.get('select');
var columns = model.get('columns');
var date = model.get('jsdata.query');
var subSelect = [];
var isApplyGroup = date && date.startDate2 && date.endDate2;
_.chain(columns).keys().each(function (key) {
if (isApplyGroup && _.has(columnGroup, key)) {
columns[key].group = columnGroup[key];
columns[key].groupExpansion = _.has(groupExpansion, key);
} else {
columns[key].group = null;
columns[key].groupExpansion = false;
}
});
var selectExpand = select.slice(0);
_.each(select, function (columnName) {
var column = columns[columnName];
var subColumns = column.group;
if (column.groupExpansion) {
var nameIndex = selectExpand.indexOf(columnName);
selectExpand.splice.apply(selectExpand, [nameIndex, 1].concat(subColumns));
subSelect = subSelect.concat(subColumns);
}
}, this);
this.patch({
columns: columns,
select: select,
subSelect: subSelect,
selectExpand: selectExpand,
isApplyGroup: isApplyGroup,
});
} else {
// todo [akamel] unset our properties only
// this.unset();
}
},