提交 d9e79ccf 编写于 作者: K kener

多图联动支持 close #248

上级 b8e73cc7
<!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 &amp; 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>&copy; 2014 <a href="http://efe.baidu.com" target="_blank">EFE</a> &middot; <a href="https://github.com/ecomfe/echarts/blob/master/LICENSE.txt" target="_blank">License</a> &middot; <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
......@@ -140,9 +140,10 @@ define(function(require) {
if (self.selectedMap[itemName] != legendSelected[itemName]) {
// 有一项不一致都需要重绘
status.needRefresh = true;
return;
}
self.selectedMap[itemName] = legendSelected[itemName];
}
return;
}
/**
......
......@@ -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);
}
......
......@@ -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
......
......@@ -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,不建议外部干预
// 默认标志图形类型列表
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册