Skip to content

Commit bcdd15e

Browse files
authored
docs(demo): add a new demo about how to handle element multiple selected (#3253)
1 parent e7fec10 commit bcdd15e

File tree

6 files changed

+213
-0
lines changed

6 files changed

+213
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import { Column } from '@antv/g2plot';
2+
3+
const data = [
4+
{
5+
name: 'London',
6+
月份: 'Jan.',
7+
月均降雨量: 18.9,
8+
},
9+
{
10+
name: 'London',
11+
月份: 'Feb.',
12+
月均降雨量: 28.8,
13+
},
14+
{
15+
name: 'London',
16+
月份: 'Mar.',
17+
月均降雨量: 39.3,
18+
},
19+
{
20+
name: 'London',
21+
月份: 'Apr.',
22+
月均降雨量: 81.4,
23+
},
24+
{
25+
name: 'London',
26+
月份: 'May',
27+
月均降雨量: 47,
28+
},
29+
{
30+
name: 'London',
31+
月份: 'Jun.',
32+
月均降雨量: 20.3,
33+
},
34+
{
35+
name: 'London',
36+
月份: 'Jul.',
37+
月均降雨量: 24,
38+
},
39+
{
40+
name: 'London',
41+
月份: 'Aug.',
42+
月均降雨量: 35.6,
43+
},
44+
{
45+
name: 'Berlin',
46+
月份: 'Jan.',
47+
月均降雨量: 12.4,
48+
},
49+
{
50+
name: 'Berlin',
51+
月份: 'Feb.',
52+
月均降雨量: 23.2,
53+
},
54+
{
55+
name: 'Berlin',
56+
月份: 'Mar.',
57+
月均降雨量: 34.5,
58+
},
59+
{
60+
name: 'Berlin',
61+
月份: 'Apr.',
62+
月均降雨量: 99.7,
63+
},
64+
{
65+
name: 'Berlin',
66+
月份: 'May',
67+
月均降雨量: 52.6,
68+
},
69+
{
70+
name: 'Berlin',
71+
月份: 'Jun.',
72+
月均降雨量: 35.5,
73+
},
74+
{
75+
name: 'Berlin',
76+
月份: 'Jul.',
77+
月均降雨量: 37.4,
78+
},
79+
{
80+
name: 'Berlin',
81+
月份: 'Aug.',
82+
月均降雨量: 42.4,
83+
},
84+
];
85+
86+
const plot = new Column('container', {
87+
data,
88+
isGroup: true,
89+
xField: '月份',
90+
yField: '月均降雨量',
91+
seriesField: 'name',
92+
interactions: [{ type: 'element-selected' }]
93+
});
94+
95+
plot.render();
96+
// 如果业务中还有单选联动,可以考虑使用按住某个键来区分交互 (或者多选之后,让用户自己去触发查询)
97+
document.addEventListener('keyup', (evt) => {
98+
if (evt.key === 'Shift') {
99+
const states = plot.getStates();
100+
// 获取选中元素
101+
// states.filter(d => d.state === 'selected')
102+
}
103+
});
104+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Funnel } from '@antv/g2plot';
2+
3+
const data = [
4+
{ stage: '简历筛选', number: 253 },
5+
{ stage: '初试人数', number: 151 },
6+
{ stage: '复试人数', number: 113 },
7+
{ stage: '录取人数', number: 87 },
8+
{ stage: '入职人数', number: 59 },
9+
];
10+
11+
const funnelPlot = new Funnel('container', {
12+
data: data,
13+
xField: 'stage',
14+
yField: 'number',
15+
legend: false,
16+
interactions: [{ type: 'element-active' }, { type: 'element-selected' }],
17+
});
18+
19+
funnelPlot.render();
20+
// 如果业务中还有单选联动,可以考虑使用按住某个键来区分交互 (或者多选之后,让用户自己去触发查询)
21+
document.addEventListener('keyup', (evt) => {
22+
if (evt.key === 'Shift') {
23+
console.info(evt);
24+
const states = funnelPlot.getStates();
25+
console.info(states.filter((d) => d.state === 'selected'));
26+
// 获取选中元素
27+
// states.filter(d => d.state === 'selected')
28+
}
29+
});
+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"title": {
3+
"zh": "中文分类",
4+
"en": "Category"
5+
},
6+
"demos": [
7+
{
8+
"filename": "element-selected",
9+
"title": {
10+
"zh": "元素多选交互",
11+
"en": "Element selected"
12+
},
13+
"screenshot": "https://gw.alipayobjects.com/zos/antfincdn/VoiPvFL%26U5/pie-tooltip.gif"
14+
},
15+
{
16+
"filename": "pie-element-selected",
17+
"title": {
18+
"zh": "饼图 - 元素多选交互",
19+
"en": "Element selected"
20+
},
21+
"screenshot": "https://gw.alipayobjects.com/zos/antfincdn/VoiPvFL%26U5/pie-tooltip.gif"
22+
},
23+
{
24+
"filename": "funnelelement-selected",
25+
"title": {
26+
"zh": "漏斗图 元素多选交互",
27+
"en": "Element selected"
28+
},
29+
"screenshot": "https://gw.alipayobjects.com/zos/antfincdn/VoiPvFL%26U5/pie-tooltip.gif"
30+
}
31+
]
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Pie } from '@antv/g2plot';
2+
3+
const data = [
4+
{ type: '分类一', value: 27 },
5+
{ type: '分类二', value: 25 },
6+
{ type: '分类三', value: 18 },
7+
{ type: '分类四', value: 15 },
8+
{ type: '分类五', value: 10 },
9+
{ type: '其他', value: 5 },
10+
];
11+
12+
const piePlot = new Pie('container', {
13+
appendPadding: 10,
14+
data,
15+
angleField: 'value',
16+
colorField: 'type',
17+
radius: 0.9,
18+
label: {
19+
type: 'inner',
20+
offset: '-30%',
21+
content: ({ percent }) => `${(percent * 100).toFixed(0)}%`,
22+
style: {
23+
fontSize: 14,
24+
textAlign: 'center',
25+
},
26+
},
27+
interactions: [{ type: 'element-active' }, { type: 'element-selected' }],
28+
});
29+
30+
piePlot.render();
31+
// 如果业务中还有单选联动,可以考虑使用按住某个键来区分交互 (或者多选之后,让用户自己去触发查询)
32+
document.addEventListener('keyup', (evt) => {
33+
if (evt.key === 'Shift') {
34+
console.info(evt);
35+
const states = piePlot.getStates();
36+
console.info(states.filter((d) => d.state === 'selected'));
37+
// 获取选中元素
38+
// states.filter(d => d.state === 'selected')
39+
}
40+
});
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Advanced interactions
3+
order: 4
4+
---
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: 高级交互
3+
order: 4
4+
---

0 commit comments

Comments
 (0)