NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2-brush/demos/ds-state.html

106 lines
2.4 KiB
HTML
Raw Normal View History

2023-09-14 14:47:11 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="geometry" content="diagram">
<link rel="stylesheet" href="./assets/common.css">
<title>DataSet State</title>
</head>
<body>
<div id="canvas1"></div>
<div id="canvas2"></div>
<script src="./assets/jquery-3.2.1.min.js"></script>
<script src="./assets/data-set.min.js"></script>
<script src="./assets/g2.min.js"></script>
<script src="../build/g2-brush.js"></script>
<script>
$.getJSON('./data/sp500.json', function(data) {
const ds = new DataSet({
state: {
dates: null
}
});
const totalDv = ds.createView().source(data);
const dv = ds.createView();
dv.source(data)
.transform({
type: 'filter',
callback: obj => {
if (ds.state.dates) {
return ds.state.dates.indexOf(obj.date) > -1;
}
return obj;
}
});
const chart1 = new G2.Chart({
container: 'canvas1',
forceFit: true,
height: window.innerHeight * (4 / 5),
animate: false,
padding: [ 50, 40, 50, 80 ]
});
chart1.source(dv, {
date: {
tickCount: 10,
type: 'time',
mask: 'MMM D YYYY'
},
price: {
min: totalDv.min('price'),
max: totalDv.max('price')
}
});
chart1.area()
.position('date*price')
.shape('smooth')
.opacity(0.85);
chart1.render();
// second chart
const chart2 = new G2.Chart({
container: 'canvas2',
forceFit: true,
height: window.innerHeight * (1.5 / 5),
padding: [ 5, 40, 60, 80 ]
});
chart2.source(data, {
date: {
tickCount: 10,
type: 'time',
mask: 'YYYY'
}
});
chart2.tooltip(false);
chart2.axis('price', false);
chart2.area()
.position('date*price')
.active(false)
.shape('smooth')
.opacity(0.85);
chart2.render();
new Brush({
canvas: chart2.get('canvas'),
chart: chart2,
type: 'X',
dragable: true,
onBrushmove(ev) {
const { date } = ev;
ds.setState('dates', date);
},
onDragmove(ev) {
const { date } = ev;
ds.setState('dates', date);
}
});
});
</script>
</body>
</html>