From 8dc02e6185c58a35510cc34a9065f6b5a876bbb6 Mon Sep 17 00:00:00 2001 From: fangsmile <892739385@qq.com> Date: Wed, 19 Jun 2024 14:11:26 +0800 Subject: [PATCH] feat: support calculate field for PivotTable #1941 --- packages/vtable/src/data/DataSource.ts | 31 +++++++++++++++----------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/packages/vtable/src/data/DataSource.ts b/packages/vtable/src/data/DataSource.ts index 57320431d..b8170a57e 100644 --- a/packages/vtable/src/data/DataSource.ts +++ b/packages/vtable/src/data/DataSource.ts @@ -178,7 +178,12 @@ export class DataSource extends EventTarget implements DataSourceAPI { // 注册聚合类型 registedAggregators: { [key: string]: { - new (dimension: string | string[], formatFun?: any, isRecord?: boolean, aggregationFun?: Function): Aggregator; + new (config: { + dimension: string | string[]; + formatFun?: any; + isRecord?: boolean; + aggregationFun?: Function; + }): Aggregator; }; } = {}; rowHierarchyType: 'grid' | 'tree'; @@ -279,12 +284,12 @@ export class DataSource extends EventTarget implements DataSourceAPI { if (Array.isArray(aggragation)) { for (let j = 0; j < aggragation.length; j++) { const item = aggragation[j]; - const aggregator = new this.registedAggregators[item.aggregationType]( - field as string, - item.formatFun, - true, - (item as CustomAggregation).aggregationFun - ); + const aggregator = new this.registedAggregators[item.aggregationType]({ + dimension: field as string, + formatFun: item.formatFun, + isRecord: true, + aggregationFun: (item as CustomAggregation).aggregationFun + }); this.fieldAggregators.push(aggregator); if (!columnObjs[i].aggregator) { columnObjs[i].aggregator = []; @@ -292,12 +297,12 @@ export class DataSource extends EventTarget implements DataSourceAPI { columnObjs[i].aggregator.push(aggregator); } } else { - const aggregator = new this.registedAggregators[aggragation.aggregationType]( - field as string, - aggragation.formatFun, - true, - (aggragation as CustomAggregation).aggregationFun - ); + const aggregator = new this.registedAggregators[aggragation.aggregationType]({ + dimension: field as string, + formatFun: aggragation.formatFun, + isRecord: true, + aggregationFun: (aggragation as CustomAggregation).aggregationFun + }); this.fieldAggregators.push(aggregator); columnObjs[i].aggregator = aggregator; }