-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchart-on-component-click.ts
57 lines (49 loc) · 1.85 KB
/
chart-on-component-click.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
import { Chart } from '../../../src';
const componentNames = [
// legend group
'legend-category',
// legend item marker
'legend-category-item-marker',
// legend item label
'legend-category-item-label',
// axis
'grid-line',
// tick
'axis-tick-item',
// axis label
'axis-label-item',
];
export function chartOnComponentClick(context) {
const { container, canvas } = context;
const chart = new Chart({ container, canvas });
chart
.interval()
.data([
{ month: 'Jan.', profit: 387264, start: 0, end: 387264 },
{ month: 'Feb.', profit: 772096, start: 387264, end: 1159360 },
{ month: 'Mar.', profit: 638075, start: 1159360, end: 1797435 },
{ month: 'Apr.', profit: -211386, start: 1797435, end: 1586049 },
{ month: 'May', profit: -138135, start: 1586049, end: 1447914 },
{ month: 'Jun', profit: -267238, start: 1447914, end: 1180676 },
{ month: 'Jul.', profit: 431406, start: 1180676, end: 1612082 },
{ month: 'Aug.', profit: 363018, start: 1612082, end: 1975100 },
{ month: 'Sep.', profit: -224638, start: 1975100, end: 1750462 },
{ month: 'Oct.', profit: -299867, start: 1750462, end: 1450595 },
{ month: 'Nov.', profit: 607365, start: 1450595, end: 2057960 },
{ month: 'Dec.', profit: 1106986, start: 2057960, end: 3164946 },
{ month: 'Total', start: 0, end: 3164946 },
])
.encode('x', 'month')
.encode('y', ['end', 'start'])
.encode('color', (d) =>
d.month === 'Total' ? 'Total' : d.profit > 0 ? 'Increase' : 'Decrease',
)
.axis('y', { labelFormatter: '~s' })
.tooltip(['start', 'end']);
chart.on('component:click', () => console.log('click component'));
componentNames.forEach((name) => {
chart.on(`${name}:click`, () => console.log(`click ${name}`));
});
const finished = chart.render();
return { chart, finished };
}