Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
x649585723
incubator-echarts
提交
d9e79ccf
I
incubator-echarts
项目概览
x649585723
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
d9e79ccf
编写于
3月 14, 2014
作者:
K
kener
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
多图联动支持 close #248
上级
b8e73cc7
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
700 addition
and
35 deletion
+700
-35
doc/example/mix8.html
doc/example/mix8.html
+490
-0
src/chart/calculableBase.js
src/chart/calculableBase.js
+2
-1
src/component/legend.js
src/component/legend.js
+16
-1
src/component/tooltip.js
src/component/tooltip.js
+4
-0
src/config.js
src/config.js
+3
-2
src/echarts.js
src/echarts.js
+185
-31
未找到文件。
doc/example/mix8.html
0 → 100644
浏览文件 @
d9e79ccf
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"utf-8"
>
<title>
ECharts
</title>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1.0"
>
<meta
name=
"description"
content=
"ECharts"
>
<meta
name=
"author"
content=
"linzhifeng@baidu.com"
>
<script
src=
"../asset/js/esl/esl.js"
></script>
<script
src=
"../asset/js/codemirror.js"
></script>
<script
src=
"../asset/js/javascript.js"
></script>
<link
href=
"../asset/css/bootstrap.css"
rel=
"stylesheet"
>
<link
href=
"../asset/css/bootstrap-responsive.css"
rel=
"stylesheet"
>
<link
href=
"../asset/css/codemirror.css"
rel=
"stylesheet"
>
<link
href=
"../asset/css/monokai.css"
rel=
"stylesheet"
>
<link
href=
"../asset/css/echartsHome.css"
rel=
"stylesheet"
>
<link
rel=
"shortcut icon"
href=
"../asset/ico/favicon.png"
>
<style
type=
"text/css"
>
.CodeMirror
{
height
:
500px
;
}
</style>
</head>
<body>
<!-- NAVBAR
================================================== -->
<div
class=
"navbar navbar-inverse navbar-fixed-top"
>
<div
class=
"navbar-inner"
>
<div
class=
"container"
>
<button
type=
"button"
class=
"btn btn-navbar"
data-toggle=
"collapse"
data-target=
".nav-collapse"
>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
<span
class=
"icon-bar"
></span>
</button>
<a
class=
"brand"
href=
"../../index.html"
>
ECharts
</a>
<div
class=
"nav-collapse collapse"
>
<a
id=
"forkme_banner"
href=
"https://github.com/ecomfe/echarts"
>
View on GitHub
</a>
<ul
class=
"nav"
>
<li><a
href=
"../../index.html"
><i
class=
"icon-home icon-white"
></i>
Home
</a></li>
<li
class=
"active"
><a
href=
"../example.html"
class=
"active"
>
Example
</a></li>
<li><a
href=
"../doc.html"
>
API
&
Doc
</a></li>
<li
class=
"dropdown"
>
<a
href=
"#"
class=
"dropdown-toggle"
data-toggle=
"dropdown"
><i
class=
"icon-download-alt icon-white"
></i>
Download
<b
class=
"caret"
></b></a>
<ul
class=
"dropdown-menu"
>
<li><a
id=
"last-release-link"
href=
""
>
</a></li>
<li><a
href=
"https://github.com/ecomfe/echarts/archive/master.zip"
>
ZIP (Latest)
</a></li>
</ul>
</li>
<li
class=
"dropdown"
>
<a
href=
"#"
class=
"dropdown-toggle"
data-toggle=
"dropdown"
>
Link
<b
class=
"caret"
></b></a>
<ul
class=
"dropdown-menu"
>
<li><a
href=
"https://github.com/ecomfe"
target=
"_blank"
>
Ecom-FE
</a></li>
<li><a
href=
"http://fe.baidu.com/doc/ecom/tech/topic/dv/index.html"
target=
"_blank"
>
Data Visualization
</a></li>
<li
class=
"divider"
></li>
<!--li class="nav-header">Library</li-->
<li><a
href=
"http://ecomfe.github.io/zrender/index.html"
target=
"_blank"
>
ZRender
</a></li>
</ul>
</li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
<!-- /.container -->
</div>
<!-- /.navbar-inner -->
</div>
<!-- /.navbar-wrapper -->
<div
class=
"container-fluid"
>
<div
class=
"row-fluid"
>
<div
id=
"sidebar-code"
class=
"span4"
>
<div
class=
"well sidebar-nav"
>
<div
class=
"nav-header"
><a
href=
"#"
onclick=
"autoResize()"
class=
"icon-resize-full"
id =
"icon-resize"
></a>
option
</div>
<textarea
id=
"code"
name=
"code"
>
var axisData = [
"2013/1/24", "2013/1/25", "2013/1/28", "2013/1/29", "2013/1/30",
"2013/1/31", "2013/2/1", "2013/2/4", "2013/2/5", "2013/2/6",
"2013/2/7", "2013/2/8", "2013/2/18", "2013/2/19", "2013/2/20",
"2013/2/21", "2013/2/22", "2013/2/25", "2013/2/26", "2013/2/27",
"2013/2/28", "2013/3/1", "2013/3/4", "2013/3/5", "2013/3/6",
"2013/3/7", "2013/3/8", "2013/3/11", "2013/3/12", "2013/3/13",
"2013/3/14", "2013/3/15", "2013/3/18", "2013/3/19", "2013/3/20",
"2013/3/21", "2013/3/22", "2013/3/25", "2013/3/26", "2013/3/27",
"2013/3/28", "2013/3/29", "2013/4/1", "2013/4/2", "2013/4/3",
"2013/4/8", "2013/4/9", "2013/4/10", "2013/4/11", "2013/4/12",
"2013/4/15", "2013/4/16", "2013/4/17", "2013/4/18", "2013/4/19",
"2013/4/22", "2013/4/23", "2013/4/24", "2013/4/25", "2013/4/26",
"2013/5/2", "2013/5/3", "2013/5/6", "2013/5/7", "2013/5/8",
"2013/5/9", "2013/5/10", "2013/5/13", "2013/5/14", "2013/5/15",
"2013/5/16", "2013/5/17", "2013/5/20", "2013/5/21", "2013/5/22",
"2013/5/23", "2013/5/24", "2013/5/27", "2013/5/28", "2013/5/29",
"2013/5/30", "2013/5/31", "2013/6/3", "2013/6/4", "2013/6/5",
"2013/6/6", "2013/6/7", "2013/6/13"
];
option = {
title : {
text: '2013年上半年上证指数'
},
tooltip : {
trigger: 'axis'
},
legend: {
data:['上证指数','成交金额(万)','虚拟数据']
},
toolbox: {
show : true,
feature : {
mark : true,
dataZoom : true,
dataView : {readOnly: false},
magicType:['line', 'bar'],
restore : true
}
},
dataZoom : {
y: 250,
show : true,
realtime: true,
start : 50,
end : 100
},
grid: {
x: 80,
y: 40,
x2:20,
y2:25
},
xAxis : [
{
type : 'category',
boundaryGap : true,
axisTick: {onGap:false},
splitLine: {show:false},
data : axisData
}
],
yAxis : [
{
type : 'value',
scale:true,
precision: 2,
boundaryGap: [0.05, 0.05],
splitArea : {show : true}
}
],
series : [
{
name:'上证指数',
type:'k',
data:[ // 开盘,收盘,最低,最高
[2320.26,2302.6,2287.3,2362.94],
[2300,2291.3,2288.26,2308.38],
[2295.35,2346.5,2295.35,2346.92],
[2347.22,2358.98,2337.35,2363.8],
[2360.75,2382.48,2347.89,2383.76],
[2383.43,2385.42,2371.23,2391.82],
[2377.41,2419.02,2369.57,2421.15],
[2425.92,2428.15,2417.58,2440.38],
[2411,2433.13,2403.3,2437.42],
[2432.68,2434.48,2427.7,2441.73],
[2430.69,2418.53,2394.22,2433.89],
[2416.62,2432.4,2414.4,2443.03],
[2441.91,2421.56,2415.43,2444.8],
[2420.26,2382.91,2373.53,2427.07],
[2383.49,2397.18,2370.61,2397.94],
[2378.82,2325.95,2309.17,2378.82],
[2322.94,2314.16,2308.76,2330.88],
[2320.62,2325.82,2315.01,2338.78],
[2313.74,2293.34,2289.89,2340.71],
[2297.77,2313.22,2292.03,2324.63],
[2322.32,2365.59,2308.92,2366.16],
[2364.54,2359.51,2330.86,2369.65],
[2332.08,2273.4,2259.25,2333.54],
[2274.81,2326.31,2270.1,2328.14],
[2333.61,2347.18,2321.6,2351.44],
[2340.44,2324.29,2304.27,2352.02],
[2326.42,2318.61,2314.59,2333.67],
[2314.68,2310.59,2296.58,2320.96],
[2309.16,2286.6,2264.83,2333.29],
[2282.17,2263.97,2253.25,2286.33],
[2255.77,2270.28,2253.31,2276.22],
[2269.31,2278.4,2250,2312.08],
[2267.29,2240.02,2239.21,2276.05],
[2244.26,2257.43,2232.02,2261.31],
[2257.74,2317.37,2257.42,2317.86],
[2318.21,2324.24,2311.6,2330.81],
[2321.4,2328.28,2314.97,2332],
[2334.74,2326.72,2319.91,2344.89],
[2318.58,2297.67,2281.12,2319.99],
[2299.38,2301.26,2289,2323.48],
[2273.55,2236.3,2232.91,2273.55],
[2238.49,2236.62,2228.81,2246.87],
[2229.46,2234.4,2227.31,2243.95],
[2234.9,2227.74,2220.44,2253.42],
[2232.69,2225.29,2217.25,2241.34],
[2196.24,2211.59,2180.67,2212.59],
[2215.47,2225.77,2215.47,2234.73],
[2224.93,2226.13,2212.56,2233.04],
[2236.98,2219.55,2217.26,2242.48],
[2218.09,2206.78,2204.44,2226.26],
[2199.91,2181.94,2177.39,2204.99],
[2169.63,2194.85,2165.78,2196.43],
[2195.03,2193.8,2178.47,2197.51],
[2181.82,2197.6,2175.44,2206.03],
[2201.12,2244.64,2200.58,2250.11],
[2236.4,2242.17,2232.26,2245.12],
[2242.62,2184.54,2182.81,2242.62],
[2187.35,2218.32,2184.11,2226.12],
[2213.19,2199.31,2191.85,2224.63],
[2203.89,2177.91,2173.86,2210.58],
[2170.78,2174.12,2161.14,2179.65],
[2179.05,2205.5,2179.05,2222.81],
[2212.5,2231.17,2212.5,2236.07],
[2227.86,2235.57,2219.44,2240.26],
[2242.39,2246.3,2235.42,2255.21],
[2246.96,2232.97,2221.38,2247.86],
[2228.82,2246.83,2225.81,2247.67],
[2247.68,2241.92,2231.36,2250.85],
[2238.9,2217.01,2205.87,2239.93],
[2217.09,2224.8,2213.58,2225.19],
[2221.34,2251.81,2210.77,2252.87],
[2249.81,2282.87,2248.41,2288.09],
[2286.33,2299.99,2281.9,2309.39],
[2297.11,2305.11,2290.12,2305.3],
[2303.75,2302.4,2292.43,2314.18],
[2293.81,2275.67,2274.1,2304.95],
[2281.45,2288.53,2270.25,2292.59],
[2286.66,2293.08,2283.94,2301.7],
[2293.4,2321.32,2281.47,2322.1],
[2323.54,2324.02,2321.17,2334.33],
[2316.25,2317.75,2310.49,2325.72],
[2320.74,2300.59,2299.37,2325.53],
[2300.21,2299.25,2294.11,2313.43],
[2297.1,2272.42,2264.76,2297.1],
[2270.71,2270.93,2260.87,2276.86],
[2264.43,2242.11,2240.07,2266.69],
[2242.26,2210.9,2205.07,2250.63],
[2190.1,2148.35,2126.22,2190.1]
]
},
{
name:'成交金额(万)',
type:'line',
symbol: 'none',
data:[]
},
{
name:'虚拟数据',
type:'bar',data:[]
}
]
};
option2 = {
tooltip : {
trigger: 'axis'
},
legend: {
y : -30,
data:['上证指数','成交金额(万)','虚拟数据']
},
toolbox: {
y : -30,
show : true,
feature : {
mark : true,
dataZoom : true,
dataView : {readOnly: false},
magicType:['line', 'bar'],
restore : true,
saveAsImage : true
}
},
dataZoom : {
show : true,
realtime: true,
start : 50,
end : 100
},
grid: {
x: 80,
y:5,
x2:20,
y2:40
},
xAxis : [
{
type : 'category',
position:'top',
boundaryGap : true,
axisLabel:{show:false},
axisTick: {onGap:false},
splitLine: {show:false},
data : axisData
}
],
yAxis : [
{
type : 'value',
scale:true,
boundaryGap: [0.05, 0.05],
splitArea : {show : true}
}
],
series : [
{
name:'成交金额(万)',
type:'line',
symbol: 'none',
data:[
13560434, 8026738.5, 11691637, 12491697, 12485603,
11620504, 12555496, 15253370, 12709611, 10458354,
10933507, 9896523, 10365702, 10633095, 9722230,
12662783, 8757982, 7764234, 10591719, 8826293,
11591827, 11153111, 14304651, 11672120, 12536480,
12608589, 8843860, 7391994.5, 10063709, 7768895.5,
6921859, 10157810, 8148617.5, 7551207, 11397426,
10478607, 8595132, 8541862, 9181132, 8570842,
10759351, 7335819, 6699753.5, 7759666.5, 6880135.5,
7366616.5, 7313504, 7109021.5, 6213270, 5619688,
5816217.5, 6695584.5, 5998655.5, 6188812.5, 9538301,
8224500, 8221751.5, 7897721, 8448324, 6525151,
5987761, 7831570, 8162560.5, 7904092, 8139084.5,
9116529, 8128014, 7919148, 7566047, 6665826.5,
10225527, 11124881, 12884353, 11302521, 11529046,
11105205, 9202153, 9992016, 12035250, 11431155,
10354677, 10070399, 9164861, 9237718, 7114268,
7526158.5, 8105835, 7971452.5
]
}
]
};
myChart2 = echarts.init(document.getElementById('main2'));
myChart2.setOption(option2);
option3 = {
tooltip : {
trigger: 'axis'
},
legend: {
y : -30,
data:['上证指数','成交金额(万)','虚拟数据']
},
toolbox: {
y : -30,
show : true,
feature : {
mark : true,
dataZoom : true,
dataView : {readOnly: false},
magicType:['line', 'bar'],
restore : true,
saveAsImage : true
}
},
dataZoom : {
y:200,
show : true,
realtime: true,
start : 50,
end : 100
},
grid: {
x: 80,
y:5,
x2:20,
y2:30
},
xAxis : [
{
type : 'category',
position:'bottom',
boundaryGap : true,
axisTick: {onGap:false},
splitLine: {show:false},
data : axisData
}
],
yAxis : [
{
type : 'value',
scale:true,
splitNumber:3,
boundaryGap: [0.05, 0.05],
splitArea : {show : true}
}
],
series : [
{
name:'虚拟数据',
type:'bar',
symbol: 'none',
data:[
560434, 226738, 696370, 249697, 248563,
620504, 555496, 525337, 270968, 458354,
933507, 896523, 365702, 633095, 722230,
662783, 875798, 776423, 105979, 882629,
598278, 231253, 430465, 672208, 253648,
608589, 884386, 739994, 263709, 776889,
692859, 105780, 848675, 755207, 397426,
478607, 859532, 854862, 983288, 857084,
759358, 733589, 669975, 775965, 688035,
736666, 733504, 709025, 623270, 569688,
586275, 669558, 599865, 688825, 953830,
822450, 822755, 789772, 844832, 652558,
598776, 783570, 862560, 794092, 839084,
965298, 828048, 799480, 756647, 665826,
102257, 248870, 288435, 302528, 529046,
105205, 920253, 999206, 203525, 435588,
103546, 703990, 964868, 923778, 742688,
752658, 805835, 797452
]
}
]
};
myChart3 = echarts.init(document.getElementById('main3'));
myChart3.setOption(option3);
myChart.connect([myChart2, myChart3]);
myChart2.connect([myChart, myChart3]);
myChart3.connect([myChart, myChart2]);
setTimeout(function(){
window.onresize = function() {
myChart.resize();
myChart2.resize();
myChart3.resize();
}
},200)
</textarea>
</div>
<!--/.well -->
</div>
<!--/span-->
<div
id=
"graphic"
class=
"span8"
>
<div
id=
"main"
class=
"main"
style=
'height:230px;margin-bottom:1px;padding-bottom:0;border-bottom-width:0'
></div>
<div
id=
"main2"
class=
"main"
style=
'height:145px;margin-bottom:1px;padding:1px 10px;border-width:0 1px;'
></div>
<div
id=
"main3"
class=
"main"
style=
'height:105px;padding-top:1px;border-top-width:0'
></div>
<div>
<button
onclick=
"refresh(true)"
>
Refresh ~
</button>
<span
id=
'wrong-message'
style=
"color:red"
></span>
</div>
</div>
<!--/span-->
</div>
<!--/row-->
<hr>
<!-- FOOTER -->
<footer>
<p
class=
"pull-right"
><a
href=
"#"
>
Back to top
</a></p>
<p>
©
2014
<a
href=
"http://efe.baidu.com"
target=
"_blank"
>
EFE
</a>
·
<a
href=
"https://github.com/ecomfe/echarts/blob/master/LICENSE.txt"
target=
"_blank"
>
License
</a>
·
<a
href=
"../changelog.html"
target=
"_blank"
>
Changelog
</a></p>
</footer>
</div>
<!--/.fluid-container-->
<script
src=
"../asset/js/jquery.js"
></script>
<script
src=
"../asset/js/bootstrap-transition.js"
></script>
<script
src=
"../asset/js/bootstrap-alert.js"
></script>
<script
src=
"../asset/js/bootstrap-modal.js"
></script>
<script
src=
"../asset/js/bootstrap-dropdown.js"
></script>
<script
src=
"../asset/js/bootstrap-scrollspy.js"
></script>
<script
src=
"../asset/js/bootstrap-tab.js"
></script>
<script
src=
"../asset/js/bootstrap-tooltip.js"
></script>
<script
src=
"../asset/js/bootstrap-popover.js"
></script>
<script
src=
"../asset/js/bootstrap-button.js"
></script>
<script
src=
"../asset/js/bootstrap-collapse.js"
></script>
<script
src=
"../asset/js/bootstrap-carousel.js"
></script>
<script
src=
"../asset/js/bootstrap-typeahead.js"
></script>
<script
src=
"../asset/js/echartsExample.js"
></script>
<script
type=
"text/javascript"
>
function
refresh
(
isBtnRefresh
){
if
(
isBtnRefresh
)
{
needRefresh
=
true
;
focusGraphic
();
myChart2
.
showLoading
();
myChart3
.
showLoading
();
return
;
}
needRefresh
=
false
;
myChart
=
echarts
.
init
(
domMain
);
(
new
Function
(
editor
.
doc
.
getValue
()))();
myChart
.
setOption
(
option
,
true
);
domMessage
.
innerHTML
=
''
;
window
.
onresize
=
function
()
{
myChart
.
resize
();
myChart2
.
resize
();
myChart3
.
resize
();
}
}
</script>
</body>
</html>
\ No newline at end of file
src/chart/calculableBase.js
浏览文件 @
d9e79ccf
...
...
@@ -140,9 +140,10 @@ define(function(require) {
if
(
self
.
selectedMap
[
itemName
]
!=
legendSelected
[
itemName
])
{
// 有一项不一致都需要重绘
status
.
needRefresh
=
true
;
return
;
}
self
.
selectedMap
[
itemName
]
=
legendSelected
[
itemName
];
}
return
;
}
/**
...
...
src/component/legend.js
浏览文件 @
d9e79ccf
...
...
@@ -587,7 +587,6 @@ define(function (require) {
}
}
legendOption
=
option
.
legend
;
self
.
clear
();
_buildShape
();
}
...
...
@@ -679,6 +678,21 @@ define(function (require) {
function
getSelectedMap
()
{
return
_selectedMap
;
}
/**
* 图例选择
*/
function
onlegendSelected
(
param
,
status
)
{
var
legendSelected
=
param
.
selected
;
for
(
var
itemName
in
_selectedMap
)
{
if
(
_selectedMap
[
itemName
]
!=
legendSelected
[
itemName
])
{
// 有一项不一致都需要重绘
status
.
needRefresh
=
true
;
}
_selectedMap
[
itemName
]
=
legendSelected
[
itemName
];
}
return
;
}
self
.
init
=
init
;
self
.
refresh
=
refresh
;
...
...
@@ -691,6 +705,7 @@ define(function (require) {
self
.
setItemShape
=
setItemShape
;
self
.
isSelected
=
isSelected
;
self
.
getSelectedMap
=
getSelectedMap
;
self
.
onlegendSelected
=
onlegendSelected
;
init
(
option
);
}
...
...
src/component/tooltip.js
浏览文件 @
d9e79ccf
...
...
@@ -1130,6 +1130,10 @@ define(function (require) {
my
)
)
{
!
_event
.
connectTrigger
&&
messageCenter
.
dispatch
(
ecConfig
.
EVENT
.
TOOLTIP_IN_GRID
,
_event
);
_showingTicket
=
setTimeout
(
_tryShow
,
_showDelay
);
}
else
if
(
_needAxisTrigger
...
...
src/config.js
浏览文件 @
d9e79ccf
...
...
@@ -891,7 +891,7 @@ define(function() {
RESIZE
:
'
resize
'
,
CLICK
:
'
click
'
,
HOVER
:
'
hover
'
,
MOUSEWHEEL
:
'
mousewheel
'
,
//
MOUSEWHEEL: 'mousewheel',
// -------业务交互逻辑
DATA_CHANGED
:
'
dataChanged
'
,
DATA_ZOOM
:
'
dataZoom
'
,
...
...
@@ -903,7 +903,8 @@ define(function() {
DATA_VIEW_CHANGED
:
'
dataViewChanged
'
,
MAP_ROAM
:
'
mapRoam
'
,
// -------内部通信
TOOLTIP_HOVER
:
'
tooltipHover
'
TOOLTIP_HOVER
:
'
tooltipHover
'
,
TOOLTIP_IN_GRID
:
'
tooltipInGrid
'
},
DRAG_ENABLE_TIME
:
150
,
// 降低图表内元素拖拽敏感度,单位ms,不建议外部干预
// 默认标志图形类型列表
...
...
src/echarts.js
浏览文件 @
d9e79ccf
...
...
@@ -20,6 +20,7 @@ define(function(require) {
var
echarts
=
self
;
// 提供内部反向使用静态方法;
var
_canvasSupported
=
!!
document
.
createElement
(
'
canvas
'
).
getContext
;
var
_idBase
=
new
Date
()
-
0
;
var
_instances
=
{};
// ECharts实例map索引
var
DOM_ATTRIBUTE_KEY
=
'
_echarts_instance_
'
;
...
...
@@ -35,7 +36,7 @@ define(function(require) {
// dom与echarts实例映射索引
var
key
=
dom
.
getAttribute
(
DOM_ATTRIBUTE_KEY
);
if
(
!
key
)
{
key
=
new
Date
()
-
0
;
key
=
_idBase
++
;
dom
.
setAttribute
(
DOM_ATTRIBUTE_KEY
,
key
);
}
if
(
_instances
[
key
])
{
...
...
@@ -65,13 +66,13 @@ define(function(require) {
var
_themeConfig
=
require
(
'
zrender/tool/util
'
).
clone
(
ecConfig
);
var
self
=
this
;
var
_id
=
'
__ECharts__
'
+
(
new
Date
()
-
0
);
var
_zr
;
var
_option
;
var
_optionBackup
;
// for各种change和zoom
var
_optionRestore
;
// for restore;
var
_chartList
;
// 图表实例
var
_messageCenter
;
// Echarts层的消息中心,做zrender原始事件转换
var
_connected
=
false
;
var
_status
=
{
// 用于图表间通信
dragIn
:
false
,
...
...
@@ -109,35 +110,17 @@ define(function(require) {
// 添加消息中心的事件分发器特性
var
zrEvent
=
require
(
'
zrender/tool/event
'
);
zrEvent
.
Dispatcher
.
call
(
_messageCenter
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
LEGEND_SELECTED
,
_onlegendSelected
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
DATA_ZOOM
,
_ondataZoom
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
DATA_RANGE
,
_ondataRange
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
MAGIC_TYPE_CHANGED
,
_onmagicTypeChanged
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
DATA_VIEW_CHANGED
,
_ondataViewChanged
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
TOOLTIP_HOVER
,
_tooltipHover
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
RESTORE
,
_onrestore
);
_messageCenter
.
bind
(
ecConfig
.
EVENT
.
REFRESH
,
_onrefresh
);
for
(
var
e
in
ecConfig
.
EVENT
)
{
if
(
e
!=
'
CLICK
'
&&
e
!=
'
HOVER
'
&&
e
!=
'
MAP_ROAM
'
)
{
_messageCenter
.
bind
(
ecConfig
.
EVENT
[
e
],
_onevent
);
}
}
var
zrConfig
=
require
(
'
zrender/config
'
);
_zr
.
on
(
zrConfig
.
EVENT
.
CLICK
,
_onclick
);
_zr
.
on
(
zrConfig
.
EVENT
.
MOUSEOVER
,
_onhover
);
_zr
.
on
(
zrConfig
.
EVENT
.
MOUSEWHEEL
,
_onmousewheel
);
//
_zr.on(zrConfig.EVENT.MOUSEWHEEL, _onmousewheel);
_zr
.
on
(
zrConfig
.
EVENT
.
DRAGSTART
,
_ondragstart
);
_zr
.
on
(
zrConfig
.
EVENT
.
DRAGEND
,
_ondragend
);
_zr
.
on
(
zrConfig
.
EVENT
.
DRAGENTER
,
_ondragenter
);
...
...
@@ -177,6 +160,112 @@ define(function(require) {
_disposeChartList
();
}
/**
* ECharts事件处理中心
*/
var
_curEventType
=
null
;
function
_onevent
(
param
){
param
.
__echarts_id__
=
param
.
__echarts_id__
||
self
.
id
;
var
fromMyself
=
true
;
if
(
param
.
__echarts_id__
!=
self
.
id
)
{
// 来自其他联动图表的事件
fromMyself
=
false
;
}
if
(
!
_curEventType
)
{
_curEventType
=
param
.
type
;
}
switch
(
param
.
type
)
{
case
ecConfig
.
EVENT
.
LEGEND_SELECTED
:
_onlegendSelected
(
param
);
break
;
case
ecConfig
.
EVENT
.
DATA_ZOOM
:
if
(
!
fromMyself
)
{
var
dz
=
self
.
component
.
dataZoom
;
if
(
dz
)
{
dz
.
silence
(
true
);
dz
.
absoluteZoom
(
param
.
zoom
);
dz
.
silence
(
false
);
}
}
_ondataZoom
(
param
);
break
;
case
ecConfig
.
EVENT
.
DATA_RANGE
:
fromMyself
&&
_ondataRange
(
param
);
break
;
case
ecConfig
.
EVENT
.
MAGIC_TYPE_CHANGED
:
if
(
!
fromMyself
)
{
var
tb
=
self
.
component
.
toolbox
;
if
(
tb
)
{
tb
.
silence
(
true
);
tb
.
setMagicType
(
param
.
magicType
);
tb
.
silence
(
false
);
}
}
_onmagicTypeChanged
(
param
);
break
;
case
ecConfig
.
EVENT
.
DATA_VIEW_CHANGED
:
fromMyself
&&
_ondataViewChanged
(
param
);
break
;
case
ecConfig
.
EVENT
.
TOOLTIP_HOVER
:
fromMyself
&&
_tooltipHover
(
param
);
break
;
case
ecConfig
.
EVENT
.
RESTORE
:
_onrestore
();
break
;
case
ecConfig
.
EVENT
.
REFRESH
:
fromMyself
&&
_onrefresh
(
param
);
break
;
// 鼠标同步
case
ecConfig
.
EVENT
.
TOOLTIP_IN_GRID
:
if
(
fromMyself
&&
_connected
)
{
// 存在多图联动,修改参数分发
var
grid
=
self
.
component
.
grid
;
if
(
grid
)
{
param
.
x
=
(
param
.
event
.
zrenderX
-
grid
.
getX
())
/
grid
.
getWidth
();
param
.
y
=
(
param
.
event
.
zrenderY
-
grid
.
getY
())
/
grid
.
getHeight
();
}
}
else
if
(
!
fromMyself
)
{
// 只处理来自外部的鼠标同步
var
grid
=
self
.
component
.
grid
;
if
(
grid
)
{
_zr
.
trigger
(
'
mousemove
'
,
{
connectTrigger
:
true
,
zrenderX
:
grid
.
getX
()
+
param
.
x
*
grid
.
getWidth
(),
zrenderY
:
grid
.
getY
()
+
param
.
y
*
grid
.
getHeight
()
}
);
}
}
break
;
/*
case ecConfig.EVENT.RESIZE :
case ecConfig.EVENT.DATA_CHANGED :
case ecConfig.EVENT.PIE_SELECTED :
case ecConfig.EVENT.MAP_SELECTED :
break;
*/
}
// 多图联动,只做自己的一级事件分发,避免级联事件循环
if
(
_connected
&&
fromMyself
&&
_curEventType
==
param
.
type
)
{
for
(
var
c
in
_connected
)
{
_connected
[
c
].
connectEventHandler
(
param
);
}
// 分发完毕后复位
_curEventType
=
null
;
}
if
(
!
fromMyself
)
{
_curEventType
=
null
;
}
}
/**
* 点击事件,响应zrender事件,包装后分发到Echarts层
*/
...
...
@@ -217,7 +306,6 @@ define(function(require) {
/**
* 滚轮回调,孤岛可计算特性
*/
function _onmousewheel(param) {
_messageCenter.dispatch(
ecConfig.EVENT.MOUSEWHEEL,
...
...
@@ -225,6 +313,7 @@ define(function(require) {
_eventPackage(param.target)
);
}
*/
/**
* dragstart回调,可计算特性实现
...
...
@@ -422,7 +511,7 @@ define(function(require) {
self
.
refresh
(
param
);
_refreshInside
=
false
;
}
/**
* 当前正在使用的option,还原可能存在的dataZoom
*/
...
...
@@ -726,7 +815,7 @@ define(function(require) {
_zr
.
render
();
var
imgId
=
'
IMG
'
+
_
id
;
var
imgId
=
'
IMG
'
+
self
.
id
;
var
img
=
document
.
getElementById
(
imgId
);
if
(
magicOption
.
renderAsImage
&&
_canvasSupported
)
{
// IE8- 不支持图片渲染形式
...
...
@@ -1195,7 +1284,7 @@ define(function(require) {
}
if
(
_chartList
.
length
===
0
)
{
// 渲染为图片
var
imgId
=
'
IMG
'
+
_
id
;
var
imgId
=
'
IMG
'
+
self
.
id
;
var
img
=
document
.
getElementById
(
imgId
);
if
(
img
)
{
return
img
.
src
;
...
...
@@ -1244,6 +1333,68 @@ define(function(require) {
return
self
;
}
/**
* 多图联动
* @param connectTarget{ECharts | Array <ECharts>} connectTarget 联动目标
*/
function
connect
(
connectTarget
)
{
if
(
!
connectTarget
)
{
return
self
;
}
if
(
!
_connected
)
{
_connected
=
{};
}
if
(
connectTarget
instanceof
Array
)
{
for
(
var
i
=
0
,
l
=
connectTarget
.
length
;
i
<
l
;
i
++
)
{
_connected
[
connectTarget
[
i
].
id
]
=
connectTarget
[
i
];
}
}
else
{
_connected
[
connectTarget
.
id
]
=
connectTarget
;
}
return
self
;
}
/**
* 解除多图联动
* @param connectTarget{ECharts | Array <ECharts>} connectTarget 解除联动目标
*/
function
disConnect
(
connectTarget
)
{
if
(
!
connectTarget
||
!
_connected
)
{
return
self
;
}
if
(
connectTarget
instanceof
Array
)
{
for
(
var
i
=
0
,
l
=
connectTarget
.
length
;
i
<
l
;
i
++
)
{
delete
_connected
[
connectTarget
[
i
].
id
];
}
}
else
{
delete
_connected
[
connectTarget
.
id
];
}
for
(
var
k
in
_connected
)
{
return
self
;
// 非空
}
// 空,转为标志位
_connected
=
false
;
return
self
;
}
/**
* 联动事件响应
*/
function
connectEventHandler
(
param
)
{
if
(
param
.
__echarts_id__
!=
self
.
id
)
{
// 来自其他联动图表的事件
_onevent
(
param
);
}
}
/**
* 显示loading过渡
* @param {Object} loadingOption
...
...
@@ -1406,6 +1557,9 @@ define(function(require) {
self
.
getImage
=
getImage
;
self
.
on
=
on
;
self
.
un
=
un
;
self
.
connect
=
connect
;
self
.
disConnect
=
disConnect
;
self
.
connectEventHandler
=
connectEventHandler
;
self
.
showLoading
=
showLoading
;
self
.
hideLoading
=
hideLoading
;
self
.
setTheme
=
setTheme
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录