Skip to content

Commit 1f6bf71

Browse files
author
yingying.xwy
committed
fix: 修复多指标情况下自定义树展示不全的问题
1 parent 4ab53cd commit 1f6bf71

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

packages/s2-core/src/data-set/custom-tree-pivot-data-set.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { get, intersection } from 'lodash';
1+
import { forEach, get, has, intersection, uniq } from 'lodash';
22
import { PivotDataSet } from '@/data-set/pivot-data-set';
33
import { CellDataParams, DataType } from '@/data-set/interface';
44
import { S2DataConfig } from '@/common/interface';
@@ -32,6 +32,7 @@ export class CustomTreePivotDataSet extends PivotDataSet {
3232
// 3、values 不需要参与计算,默认就在行头结构中
3333
dataCfg.fields.rows = [EXTRA_FIELD];
3434
dataCfg.fields.valueInCols = false;
35+
const { data, ...restCfg } = dataCfg;
3536
const { values } = dataCfg.fields;
3637
// 将源数据中的value值,映射为 $$extra$$,$$value$$
3738
// {
@@ -42,16 +43,24 @@ export class CustomTreePivotDataSet extends PivotDataSet {
4243
// $$value$$=11
4344
// 此时 province, city 均配置在columns里面
4445
// }
45-
dataCfg.data = dataCfg.data.map((data) => {
46-
// 正常数据omit后只会唯一存在 value key
47-
const keys = Object.keys(data);
48-
const valueKey = get(intersection(values, keys), 0);
49-
return {
50-
...data,
51-
[EXTRA_FIELD]: valueKey,
52-
[VALUE_FIELD]: data[valueKey],
53-
};
46+
const transformedData = [];
47+
forEach(data, (dataItem) => {
48+
forEach(values, (value) => {
49+
if (has(dataItem, value)) {
50+
transformedData.push({
51+
...dataItem,
52+
[EXTRA_FIELD]: value,
53+
[VALUE_FIELD]: dataItem[value],
54+
});
55+
} else {
56+
transformedData.push(dataItem);
57+
}
58+
});
5459
});
55-
return dataCfg;
60+
61+
return {
62+
data: uniq(transformedData),
63+
...restCfg,
64+
};
5665
}
5766
}

packages/s2-react/src/hooks/useEvents.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,14 @@ export function useEvents(props: BaseSheetComponentProps) {
9898
},
9999

100100
[S2Event.LAYOUT_ROW_NODE_BORDER_REACHED]: (
101-
targetRow: TargetLayoutNode,
101+
reachedRow: TargetLayoutNode,
102102
) => {
103-
props.onRowCellScroll?.(targetRow);
103+
props.onRowCellScroll?.(reachedRow);
104104
},
105105
[S2Event.LAYOUT_COL_NODE_BORDER_REACHED]: (
106-
targetCol: TargetLayoutNode,
106+
reachedCol: TargetLayoutNode,
107107
) => {
108-
props.onColCellScroll?.(targetCol);
108+
props.onColCellScroll?.(reachedCol);
109109
},
110110
[S2Event.LAYOUT_CELL_SCROLL]: (value: CellScrollPosition) => {
111111
props.onCellScroll?.(value);

0 commit comments

Comments
 (0)