2018-07-18 10:12:45 +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">
|
|
|
|
<title>画廊-</title>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
<style>
|
|
|
|
#mountNode {
|
|
|
|
width: 760px;
|
|
|
|
height: 744px;
|
|
|
|
background: url(https://gw.alipayobjects.com/zos/rmsportal/OSujrQtOvnOJVzRLmfIP.png);
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<div id="mountNode"></div>
|
|
|
|
<script src="../build/g6.js"></script>
|
|
|
|
<script src="../build/plugin.edge.polyline.js"></script>
|
|
|
|
<script>
|
|
|
|
G6.registerNode('card', {
|
|
|
|
width: 134,
|
|
|
|
height: 60,
|
|
|
|
anchor: {
|
|
|
|
intersectBox: 'rect',
|
2018-07-18 12:02:26 +08:00
|
|
|
points(node) {
|
|
|
|
const hierarchy = node.getHierarchy();
|
|
|
|
const parent = node.getParent();
|
2018-07-18 10:12:45 +08:00
|
|
|
if(parent && hierarchy > 2) {
|
2018-07-18 12:02:26 +08:00
|
|
|
const bbox = node.getBBox();
|
2018-07-18 10:12:45 +08:00
|
|
|
const parentBBox = parent.getBBox();
|
|
|
|
if(parentBBox.centerY > bbox.centerY) {
|
|
|
|
return [
|
|
|
|
[0, 0.5],
|
|
|
|
[1, 0.5],
|
|
|
|
[0.5, 1]
|
|
|
|
]
|
|
|
|
} else {
|
|
|
|
return [
|
|
|
|
[0, 0.5],
|
|
|
|
[1, 0.5],
|
|
|
|
[0.5, 0],
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return [
|
|
|
|
[0, 0.5],
|
|
|
|
[1, 0.5],
|
|
|
|
[0.5, 0],
|
|
|
|
[0.5, 1]
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
getScoreTextStyle() {
|
|
|
|
return {
|
|
|
|
textAlign: 'center',
|
2018-07-18 12:02:26 +08:00
|
|
|
fontWeight: 900,
|
|
|
|
fontSize: 14,
|
|
|
|
fill: '#000'
|
2018-07-18 10:12:45 +08:00
|
|
|
};
|
|
|
|
},
|
|
|
|
getTeamNameTextStyle() {
|
|
|
|
return {
|
|
|
|
textAlign: 'center',
|
|
|
|
fill: 'rgba(0, 0, 0, 0.45)'
|
|
|
|
};
|
|
|
|
},
|
|
|
|
draw(item) {
|
|
|
|
const group = item.getGraphicGroup();
|
|
|
|
const model = item.getModel();
|
|
|
|
const scoreTextStyle = this.getScoreTextStyle(item);
|
|
|
|
const teamNameTextStyle = this.getTeamNameTextStyle(item);
|
|
|
|
const width = this.width;
|
|
|
|
const height = this.height;
|
|
|
|
const keyShape = group.addShape('rect', {
|
|
|
|
attrs: {
|
|
|
|
x: 0,
|
|
|
|
y: 0,
|
|
|
|
width,
|
|
|
|
height,
|
|
|
|
fill: '#fff',
|
|
|
|
radius: 4,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
group.addShape('image', {
|
|
|
|
attrs: {
|
|
|
|
x: 8,
|
|
|
|
y: 8,
|
|
|
|
width: 40,
|
|
|
|
height: 24,
|
|
|
|
img: model.flagA
|
|
|
|
}
|
|
|
|
});
|
|
|
|
group.addShape('image', {
|
|
|
|
attrs: {
|
|
|
|
x: 86,
|
|
|
|
y: 8,
|
|
|
|
width: 40,
|
|
|
|
height: 24,
|
|
|
|
img: model.flagB
|
|
|
|
}
|
|
|
|
});
|
|
|
|
group.addShape('text', {
|
|
|
|
attrs: {
|
2018-07-18 12:02:26 +08:00
|
|
|
...teamNameTextStyle,
|
2018-07-18 10:12:45 +08:00
|
|
|
x: 28,
|
|
|
|
y: 52,
|
|
|
|
text: model.teamA,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
group.addShape('text', {
|
|
|
|
attrs: {
|
2018-07-18 12:02:26 +08:00
|
|
|
...teamNameTextStyle,
|
2018-07-18 10:12:45 +08:00
|
|
|
x: 106,
|
|
|
|
y: 52,
|
|
|
|
text: model.teamB,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
group.addShape('text', {
|
|
|
|
attrs: {
|
2018-07-18 12:02:26 +08:00
|
|
|
...scoreTextStyle,
|
2018-07-18 10:12:45 +08:00
|
|
|
x: 67,
|
|
|
|
y: 52,
|
|
|
|
text: model.scoreA + ' : '+ model.scoreB,
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return keyShape;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
const data = {
|
|
|
|
roots: [{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
}, {
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
}, {
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}, {
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
children: [
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
teamA: '巴西',
|
|
|
|
flagA: 'https://gw.alipayobjects.com/zos/rmsportal/kPbSJtcjvzRsIKkfRUlf.jpg',
|
|
|
|
teamB: '法国',
|
|
|
|
flagB: 'https://gw.alipayobjects.com/zos/rmsportal/yHYaCVIPRwEmmjbNqJjW.jpg',
|
|
|
|
scoreA: 2,
|
|
|
|
scoreB: 0,
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}]
|
|
|
|
}]
|
|
|
|
};
|
|
|
|
const layout = new G6.Layouts.CompactBoxTree({
|
|
|
|
direction: 'V',
|
|
|
|
getHGap() {
|
|
|
|
return 12;
|
|
|
|
},
|
|
|
|
getVGap() {
|
|
|
|
return 16;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
const tree = new G6.Tree({
|
|
|
|
container: 'mountNode',
|
|
|
|
width: 760,
|
|
|
|
height: 744,
|
|
|
|
layout,
|
|
|
|
fitView: 'cc'
|
|
|
|
});
|
|
|
|
tree.node({
|
|
|
|
shape: 'card'
|
|
|
|
});
|
|
|
|
tree.edge({
|
|
|
|
shape: 'polyline-round',
|
|
|
|
style: {
|
|
|
|
stroke: 'white',
|
|
|
|
lineWidth: 1,
|
|
|
|
strokeOpacity: 1
|
|
|
|
}
|
|
|
|
});
|
|
|
|
tree.read(data);
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|