-
Notifications
You must be signed in to change notification settings - Fork 322
/
columnChart.ts
84 lines (73 loc) 路 2.78 KB
/
columnChart.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
import Chart from './chart';
import dataRange from '@src/store/dataRange';
import stackSeriesData from '@src/store/stackSeriesData';
import scale from '@src/store/scale';
import axes from '@src/store/axes';
import plot from '@src/store/plot';
import Axis from '@src/component/axis';
import BoxSeries from '@src/component/boxSeries';
import BoxStackSeries from '@src/component/boxStackSeries';
import Plot from '@src/component/plot';
import Tooltip from '@src/component/tooltip';
import Legend from '@src/component/legend';
import DataLabels from '@src/component/dataLabels';
import Title from '@src/component/title';
import AxisTitle from '@src/component/axisTitle';
import ExportMenu from '@src/component/exportMenu';
import ZeroAxis from '@src/component/zeroAxis';
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 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 { ColumnChartOptions, BoxSeriesData, BoxSeriesDataType } from '@t/options';
export interface ColumnChartProps {
el: HTMLElement;
options: ColumnChartOptions;
data: BoxSeriesData;
}
export default class ColumnChart extends Chart<ColumnChartOptions> {
modules = [stackSeriesData, dataRange, scale, axes, plot];
constructor({ el, options, data }: ColumnChartProps) {
super({
el,
options,
series: {
column: data.series,
},
categories: data.categories,
});
}
initialize() {
super.initialize();
this.componentManager.add(Title);
this.componentManager.add(Plot);
this.componentManager.add(Legend);
this.componentManager.add(BoxStackSeries, { name: 'column' });
this.componentManager.add(BoxSeries, { name: 'column' });
this.componentManager.add(ZeroAxis);
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(DataLabels);
this.componentManager.add(Tooltip, { chartEl: this.el });
this.painter.addGroups([
basicBrush,
axisBrush,
legendBrush,
labelBrush,
exportMenuBrush,
dataLabelBrush,
]);
}
public addData = (data: BoxSeriesDataType[], category: string) => {
this.store.dispatch('addData', { data, category });
};
}