-
Notifications
You must be signed in to change notification settings - Fork 322
/
bubbleChart.ts
78 lines (67 loc) 路 2.48 KB
/
bubbleChart.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import Chart from './chart';
import scale from '@src/store/scale';
import axes from '@src/store/axes';
import dataRange from '@src/store/dataRange';
import plot from '@src/store/plot';
import Tooltip from '@src/component/tooltip';
import Plot from '@src/component/plot';
import BubbleSeries from '@src/component/bubbleSeries';
import Axis from '@src/component/axis';
import CircleLegend from '@src/component/circleLegend';
import Legend from '@src/component/legend';
import Title from '@src/component/title';
import AxisTitle from '@src/component/axisTitle';
import ExportMenu from '@src/component/exportMenu';
import HoveredSeries from '@src/component/hoveredSeries';
import SelectedSeries from '@src/component/selectedSeries';
import * as basicBrush from '@src/brushes/basic';
import * as axisBrush from '@src/brushes/axis';
import * as circleLegendBrush from '@src/brushes/circleLegend';
import * as legendBrush from '@src/brushes/legend';
import * as labelBrush from '@src/brushes/label';
import * as exportMenuBrush from '@src/brushes/exportMenu';
import { BubbleSeriesData, BaseOptions, BubbleSeriesType, BubbleSeriesDataType } from '@t/options';
export interface BubbleChartProps {
el: Element;
options: BaseOptions;
data: BubbleSeriesData;
}
export default class BubbleChart extends Chart<BaseOptions> {
modules = [dataRange, scale, axes, plot];
constructor(props: BubbleChartProps) {
super({
el: props.el,
options: props.options,
series: {
bubble: props.data.series as BubbleSeriesType[],
},
});
}
initialize() {
super.initialize();
this.componentManager.add(Title);
this.componentManager.add(Plot);
this.componentManager.add(Legend);
this.componentManager.add(BubbleSeries);
this.componentManager.add(Axis, { name: 'xAxis' });
this.componentManager.add(Axis, { name: 'yAxis' });
this.componentManager.add(AxisTitle, { name: 'xAxis' });
this.componentManager.add(AxisTitle, { name: 'yAxis' });
this.componentManager.add(ExportMenu, { chartEl: this.el });
this.componentManager.add(HoveredSeries);
this.componentManager.add(SelectedSeries);
this.componentManager.add(Tooltip, { chartEl: this.el });
this.componentManager.add(CircleLegend);
this.painter.addGroups([
basicBrush,
axisBrush,
circleLegendBrush,
legendBrush,
labelBrush,
exportMenuBrush,
]);
}
public addData = (data: BubbleSeriesDataType[]) => {
this.store.dispatch('addData', { data });
};
}