203 lines
6.1 KiB
HTML
203 lines
6.1 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<meta name="description" content="ECharts">
|
||
|
<meta name="author" content="kener.linfeng@gmail.com">
|
||
|
<title>ECharts · Example</title>
|
||
|
|
||
|
<link rel="shortcut icon" href="../asset/ico/favicon.png">
|
||
|
|
||
|
<link href="../asset/css/font-awesome.min.css" rel="stylesheet">
|
||
|
<link href="../asset/css/bootstrap.css" rel="stylesheet">
|
||
|
<link href="../asset/css/carousel.css" rel="stylesheet">
|
||
|
<link href="../asset/css/echartsHome.css" rel="stylesheet">
|
||
|
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||
|
<!--[if lt IE 9]>
|
||
|
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||
|
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||
|
<![endif]-->
|
||
|
|
||
|
<script src="./www/js/echarts.js"></script>
|
||
|
<script src="../asset/js/codemirror.js"></script>
|
||
|
<script src="../asset/js/javascript.js"></script>
|
||
|
|
||
|
<link href="../asset/css/codemirror.css" rel="stylesheet">
|
||
|
<link href="../asset/css/monokai.css" rel="stylesheet">
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
<!-- Fixed navbar -->
|
||
|
<div class="navbar navbar-default navbar-fixed-top" role="navigation" id="head"></div>
|
||
|
|
||
|
|
||
|
<div class="container-fluid">
|
||
|
<div class="row-fluid example">
|
||
|
<div id="sidebar-code" class="col-md-4">
|
||
|
<div class="well sidebar-nav">
|
||
|
<div class="nav-header"><a href="#" onclick="autoResize()" class="glyphicon glyphicon-resize-full" id ="icon-resize" ></a>option</div>
|
||
|
<textarea id="code" name="code">
|
||
|
|
||
|
var nodes = [];
|
||
|
var links = [];
|
||
|
var constMaxDepth = 4;
|
||
|
var constMaxChildren = 3;
|
||
|
var constMinChildren = 2;
|
||
|
var constMaxRadius = 10;
|
||
|
var constMinRadius = 2;
|
||
|
var mainDom = document.getElementById('main');
|
||
|
|
||
|
function rangeRandom(min, max) {
|
||
|
return Math.random() * (max - min) + min;
|
||
|
}
|
||
|
|
||
|
function createRandomNode(depth) {
|
||
|
var x = mainDom.clientWidth / 2 + (.5 - Math.random()) * 200;
|
||
|
var y = (mainDom.clientHeight - 20) * depth / (constMaxDepth + 1) + 20;
|
||
|
var node = {
|
||
|
name : 'NODE_' + nodes.length,
|
||
|
value : rangeRandom(constMinRadius, constMaxRadius),
|
||
|
// Custom properties
|
||
|
id : nodes.length,
|
||
|
depth : depth,
|
||
|
initial : [x, y],
|
||
|
fixY : true,
|
||
|
category : depth === constMaxDepth ? 0 : 1
|
||
|
}
|
||
|
nodes.push(node);
|
||
|
|
||
|
return node;
|
||
|
}
|
||
|
|
||
|
function forceMockThreeData() {
|
||
|
var depth = 0;
|
||
|
|
||
|
var rootNode = createRandomNode(0);
|
||
|
rootNode.name = 'ROOT';
|
||
|
rootNode.category = 2;
|
||
|
|
||
|
function mock(parentNode, depth) {
|
||
|
var nChildren = Math.round(rangeRandom(constMinChildren, constMaxChildren));
|
||
|
|
||
|
for (var i = 0; i < nChildren; i++) {
|
||
|
var childNode = createRandomNode(depth);
|
||
|
links.push({
|
||
|
source : parentNode.id,
|
||
|
target : childNode.id,
|
||
|
weight : 1
|
||
|
});
|
||
|
if (depth < constMaxDepth) {
|
||
|
mock(childNode, depth + 1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
mock(rootNode, 1);
|
||
|
}
|
||
|
|
||
|
forceMockThreeData();
|
||
|
|
||
|
option = {
|
||
|
title : {
|
||
|
text: 'Force',
|
||
|
subtext: 'Force-directed tree',
|
||
|
x:'right',
|
||
|
y:'bottom'
|
||
|
},
|
||
|
tooltip : {
|
||
|
trigger: 'item',
|
||
|
formatter: '{a} : {b}'
|
||
|
},
|
||
|
toolbox: {
|
||
|
show : true,
|
||
|
feature : {
|
||
|
restore : {show: true},
|
||
|
magicType: {show: true, type: ['force', 'chord']},
|
||
|
saveAsImage : {show: true}
|
||
|
}
|
||
|
},
|
||
|
legend: {
|
||
|
x: 'left',
|
||
|
data:['叶子节点','非叶子节点', '根节点']
|
||
|
},
|
||
|
series : [
|
||
|
{
|
||
|
type:'force',
|
||
|
name : "Force tree",
|
||
|
ribbonType: false,
|
||
|
categories : [
|
||
|
{
|
||
|
name: '叶子节点',
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color : '#ff7f50'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
name: '非叶子节点',
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color : '#6f57bc'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
name: '根节点',
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color : '#af0000'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
label: {
|
||
|
show: false
|
||
|
},
|
||
|
nodeStyle : {
|
||
|
brushType : 'both',
|
||
|
strokeColor : 'rgba(255,215,0,0.6)',
|
||
|
lineWidth : 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
minRadius : constMinRadius,
|
||
|
maxRadius : constMaxRadius,
|
||
|
nodes : nodes,
|
||
|
links : links
|
||
|
}
|
||
|
]
|
||
|
};
|
||
|
|
||
|
</textarea>
|
||
|
</div><!--/.well -->
|
||
|
</div><!--/span-->
|
||
|
<div id="graphic" class="col-md-8">
|
||
|
<div id="main" class="main"></div>
|
||
|
<div>
|
||
|
<button type="button" class="btn btn-sm btn-success" onclick="refresh(true)">刷 新</button>
|
||
|
<span class="text-primary">切换主题</span>
|
||
|
<select id="theme-select"></select>
|
||
|
|
||
|
<span id='wrong-message' style="color:red"></span>
|
||
|
</div>
|
||
|
</div><!--/span-->
|
||
|
</div><!--/row-->
|
||
|
|
||
|
</div><!--/.fluid-container-->
|
||
|
|
||
|
<footer id="footer"></footer>
|
||
|
<!-- Le javascript
|
||
|
================================================== -->
|
||
|
<!-- Placed at the end of the document so the pages load faster -->
|
||
|
<script src="../asset/js/jquery.min.js"></script>
|
||
|
<script type="text/javascript" src="../asset/js/echartsHome.js"></script>
|
||
|
<script src="../asset/js/bootstrap.min.js"></script>
|
||
|
<script src="../asset/js/echartsExample.js"></script>
|
||
|
</body>
|
||
|
</html>
|