-
Notifications
You must be signed in to change notification settings - Fork 322
/
lineAreaChart.ts
98 lines (87 loc) 路 3.18 KB
/
lineAreaChart.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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import Chart from './chart';
import dataRange from '@src/store/dataRange';
import scale from '@src/store/scale';
import axes from '@src/store/axes';
import plot from '@src/store/plot';
import stackSeriesData from '@src/store/stackSeriesData';
import Tooltip from '@src/component/tooltip';
import Plot from '@src/component/plot';
import LineSeries from '@src/component/lineSeries';
import AreaSeries from '@src/component/areaSeries';
import Axis from '@src/component/axis';
import Legend from '@src/component/legend';
import DataLabels from '@src/component/dataLabels';
import AxisTitle from '@src/component/axisTitle';
import Title from '@src/component/title';
import ExportMenu from '@src/component/exportMenu';
import SelectedSeries from '@src/component/selectedSeries';
import HoveredSeries from '@src/component/hoveredSeries';
import Zoom from '@src/component/zoom';
import * as lineSeriesBrush from '@src/brushes/lineSeries';
import * as basicBrush from '@src/brushes/basic';
import * as axisBrush from '@src/brushes/axis';
import * as legendBrush from '@src/brushes/legend';
import * as labelBrush from '@src/brushes/label';
import * as exportMenuBrush from '@src/brushes/exportMenu';
import * as dataLabelBrush from '@src/brushes/dataLabel';
import * as resetButtonBrush from '@src/brushes/resetButton';
import {
AreaSeriesDataType,
LineAreaChartOptions,
LineAreaData,
LineSeriesDataType,
} from '@t/options';
import { RawSeries } from '@t/store/store';
export interface LineAreaChartProps {
el: Element;
options: LineAreaChartOptions;
data: LineAreaData;
}
export default class LineAreaChart extends Chart<LineAreaChartOptions> {
modules = [stackSeriesData, dataRange, scale, axes, plot];
constructor(props: LineAreaChartProps) {
super({
el: props.el,
options: props.options,
series: props.data.series as RawSeries,
categories: props.data.categories,
});
}
initialize() {
super.initialize();
this.componentManager.add(Title);
this.componentManager.add(Plot);
this.componentManager.add(Legend);
this.componentManager.add(AreaSeries);
this.componentManager.add(LineSeries);
this.componentManager.add(Axis, { name: 'yAxis' });
this.componentManager.add(Axis, { name: 'xAxis' });
this.componentManager.add(Axis, { name: 'secondaryYAxis' });
this.componentManager.add(DataLabels);
this.componentManager.add(AxisTitle, { name: 'xAxis' });
this.componentManager.add(AxisTitle, { name: 'yAxis' });
this.componentManager.add(AxisTitle, { name: 'secondaryYAxis' });
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(Zoom);
this.painter.addGroups([
basicBrush,
axisBrush,
lineSeriesBrush,
legendBrush,
labelBrush,
exportMenuBrush,
dataLabelBrush,
resetButtonBrush,
]);
}
public addData = (
data: LineSeriesDataType[] | AreaSeriesDataType[],
category: string,
chartType: 'line' | 'area'
) => {
this.store.dispatch('addData', { data, category, chartType });
};
}