in src/dataViewBuilder/testDataViewBuilder.ts [166:198]
static setUpDataViewBuilderColumnOptions(
options: DataViewBuilderAllColumnOptions,
aggregateFunction: (array: number[]) => number): DataViewBuilderAllColumnOptions {
let resultOptions = clone(options);
resultOptions.categories = resultOptions.categories && resultOptions.categories.map(x => clone(x));
resultOptions.values = resultOptions.values && resultOptions.values.map(x => clone(x));
resultOptions.grouped = resultOptions.grouped && resultOptions.grouped.map(x => clone(x));
if (!isEmpty(options.categories)) {
resultOptions.categories.forEach(x => x.source = TestDataViewBuilder.setDefaultQueryName(x.source));
let allRows: any[][] = TestDataViewBuilder.getValuesTable(options.categories, options.values);
let categoriesLength = options.categories.length;
let grouped = toArray(groupBy(allRows, x => take(x, categoriesLength)));
resultOptions.categories.forEach((c, i) => c.values = grouped.map(x => x[0][i] === undefined ? null : x[0][i]));
if (!isEmpty(options.values) && isEmpty(options.grouped)) { // Not completed for group categories
resultOptions.values.forEach((c, i) =>
c.values = grouped.map(v => aggregateFunction(v.map(x => x[categoriesLength + i] || 0))));
}
}
if (!isEmpty(options.values)) {
resultOptions.values.forEach(x => x.source = TestDataViewBuilder.setDefaultQueryName(x.source));
}
if (!isEmpty(options.grouped)) {
resultOptions.grouped.forEach(x => x.source = TestDataViewBuilder.setDefaultQueryName(x.source));
}
return resultOptions;
}