@deephaven/js-plugin-ag-grid
Version:
Deephaven AG Grid plugin
53 lines • 2.06 kB
JavaScript
/**
* Checks if the given ColumnState item is an aggregated column.
* @param item ColumnState item to check
* @returns True if the item is an aggregated column, otherwise false.
*/
export function isAggregatedColumn(item) {
return item.aggFunc != null && item.colId != null;
}
export function getAggregatedColumns(gridApi) {
const columnState = gridApi.getColumnState();
return columnState.filter(isAggregatedColumn);
}
/**
* Gets the aggregation operation string for the given AG Grid aggregation function.
* @param dh Deephaven API instance to use
* @param agGridAggFunc AG Grid aggregation function to convert
* @returns The corresponding Deephaven aggregation operation string.
*/
export function getAggregationOperation(dh, agGridAggFunc) {
switch (agGridAggFunc) {
case 'sum':
return dh.AggregationOperation.SUM;
case 'avg':
return dh.AggregationOperation.AVG;
case 'min':
return dh.AggregationOperation.MIN;
case 'max':
return dh.AggregationOperation.MAX;
case 'count':
return dh.AggregationOperation.COUNT;
default:
throw new Error(`Unknown aggregation function: ${agGridAggFunc}`);
}
}
export function getAggregationOperationMap(dh, aggregatedColumns) {
const operationMap = {};
aggregatedColumns.forEach(aggregatedColumn => {
const aggOperation = getAggregationOperation(dh, aggregatedColumn.aggFunc);
if (operationMap[aggOperation] == null) {
operationMap[aggOperation] = [];
}
operationMap[aggOperation].push(aggregatedColumn.colId);
});
return operationMap;
}
export function getRollupConfig(rowGroupColumns, aggColumns, dh) {
const rollupConfig = new dh.RollupConfig();
rollupConfig.groupingColumns = rowGroupColumns.map(c => c.getId());
rollupConfig.includeConstituents = true;
rollupConfig.aggregations = getAggregationOperationMap(dh, aggColumns);
return rollupConfig;
}
//# sourceMappingURL=AgGridAggUtils.js.map