Skip to content

Commit d0884b0

Browse files
authored
fix(geometry): 修改 geometry/base 中存在多个相同的时候,导致索引出错 (#1575)
1 parent 77ac707 commit d0884b0

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

src/adaptor/geometries/base.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -164,5 +164,9 @@ export function geometry<O extends GeometryOptions>(params: Params<O>): Params<O
164164
.forEach((f: string) => {
165165
chart.legend(f, false);
166166
});
167-
return params;
167+
return {
168+
...params,
169+
// geometry adaptor 额外需要做的事情,就是将创建好的 geometry 返回到下一层 adaptor,防止通过 type 查询的时候容易误判
170+
ext: { geometry },
171+
};
168172
}

src/adaptor/geometries/interval.ts

+19-16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import { Geometry } from '@antv/g2';
12
import { deepMix, isNil } from '@antv/util';
23
import { Params } from '../../core/adaptor';
3-
import { findGeometry } from '../../utils';
44
import { GeometryOptions, MappingOptions, geometry } from './base';
55

66
export interface IntervalGeometryOptions extends GeometryOptions {
@@ -27,10 +27,10 @@ export interface IntervalGeometryOptions extends GeometryOptions {
2727
* @param params
2828
*/
2929
function otherAdaptor<O extends IntervalGeometryOptions>(params: Params<O>): Params<O> {
30-
const { chart, options } = params;
30+
const { chart, options, ext } = params;
3131
const { seriesField, isGroup, isStack, marginRatio, widthRatio } = options;
3232

33-
const g = findGeometry(chart, 'interval');
33+
const g = ext.geometry as Geometry;
3434
/**
3535
* adjust
3636
*/
@@ -64,18 +64,21 @@ export function interval<O extends IntervalGeometryOptions>(params: Params<O>):
6464
const { options } = params;
6565
const { interval, seriesField } = options;
6666

67-
// 如果存在映射才处理
68-
if (interval) {
69-
geometry(
70-
deepMix({}, params, {
71-
options: {
72-
type: 'interval',
73-
colorField: seriesField,
74-
mapping: interval,
75-
},
76-
})
77-
);
78-
}
67+
// 保障一定要存在 interval 映射
68+
const { ext } = interval
69+
? geometry(
70+
deepMix({}, params, {
71+
options: {
72+
type: 'interval',
73+
colorField: seriesField,
74+
mapping: interval,
75+
},
76+
})
77+
)
78+
: params;
7979

80-
return otherAdaptor(params);
80+
return otherAdaptor({
81+
...params,
82+
ext,
83+
});
8184
}

src/core/adaptor.ts

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { View } from '@antv/g2';
66
export type Params<O> = {
77
readonly chart: View;
88
readonly options: O;
9+
/** 一些存储一些扩展信息,用户上游 adaptor 向下游传递临时数据 */
10+
readonly ext?: Record<string, any>;
911
};
1012

1113
/**

0 commit comments

Comments
 (0)