| <!DOCTYPE html> | 
 | <!-- | 
 | Licensed to the Apache Software Foundation (ASF) under one | 
 | or more contributor license agreements.  See the NOTICE file | 
 | distributed with this work for additional information | 
 | regarding copyright ownership.  The ASF licenses this file | 
 | to you under the Apache License, Version 2.0 (the | 
 | "License"); you may not use this file except in compliance | 
 | with the License.  You may obtain a copy of the License at | 
 |  | 
 |    http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, | 
 | software distributed under the License is distributed on an | 
 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | KIND, either express or implied.  See the License for the | 
 | specific language governing permissions and limitations | 
 | under the License. | 
 | --> | 
 |  | 
 |  | 
 | <html> | 
 |     <head> | 
 |         <meta charset="utf-8"> | 
 |         <script src="lib/simpleRequire.js"></script> | 
 |         <script src="lib/config.js"></script> | 
 |         <script src="lib/jquery.min.js"></script> | 
 |         <script src="lib/facePrint.js"></script> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |         <!-- <link rel="stylesheet" href="lib/reset.css"> --> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |             * { | 
 |                 /* Test tooltip trigger */ | 
 |                 pointer-events: auto !important; | 
 |             } | 
 |             html { | 
 |                 position: static; | 
 |  | 
 |             } | 
 |             body { | 
 |                 position: static; | 
 |                 background: #ffe; | 
 |             } | 
 |             .chart { | 
 |                 position: relative; | 
 |                 width: 500px; | 
 |                 height: 300px; | 
 |                 border: 10px solid rgba(0,0,0,0.5); | 
 |                 margin: 30px auto 30px auto; | 
 |             } | 
 |             .try-box { | 
 |                 position: relative; | 
 |                 background: green; | 
 |                 padding: 0; | 
 |                 border-width: 0; | 
 |                 line-height: 1; | 
 |                 text-align: center; | 
 |                 font-size: 12px; | 
 |                 color: yellow; | 
 |                 /* box-sizing: content-box; */ | 
 |             } | 
 |             .try-box-check { | 
 |                 position: absolute; | 
 |                 background: grey; | 
 |                 padding: 0; | 
 |                 border-width: 0; | 
 |                 line-height: 1; | 
 |                 text-align: center; | 
 |                 font-size: 12px; | 
 |             } | 
 |             .try-coord-marker { | 
 |                 position: absolute; | 
 |                 background: red; | 
 |                 width: 0; height: 0; | 
 |                 /* width: 5px; height: 5px; */ | 
 |             } | 
 |             .pointer-marker { | 
 |                 position: absolute; | 
 |                 width: 6px; | 
 |                 height: 6px; | 
 |                 margin: -3px 0 0 -3px; | 
 |                 padding: 0; | 
 |                 background: orange; | 
 |             } | 
 |         </style> | 
 |  | 
 |         <div | 
 |             style=" | 
 |                 position: fixed; left: 10px; bottom: 10px; color: red; padding: 2px; | 
 |                 font-size: 20px; border: 1px solid red; background: #fff; z-index: 999"> | 
 |             Also need test pinch | 
 |         </div> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <div id="allCharts" style="margin: 30px;"> | 
 |  | 
 |             <div data-ec-title="css transform 2d" class="chart" id="main0" | 
 |                 style=" | 
 |                     transform: scale(0.5, 0.5) rotate(15deg); | 
 |                 "> | 
 |             </div> | 
 |  | 
 |             <div data-ec-title="css transform 3d" style="perspective: 171px;"> | 
 |                 <div class="chart" id="main1" | 
 |                     style=" | 
 |                         transform: translate(100px) rotateY(18deg) rotateX(12deg); | 
 |                         transform-style: preserve-3d; | 
 |                     "> | 
 |                 </div> | 
 |             </div> | 
 |  | 
 |             <div style="height: 300px;width: 10px;"></div> | 
 |  | 
 |             <div style=" | 
 |                 transform: scale(0.7, 0.7) rotate(75deg); | 
 |             "> | 
 |                 <div style="perspective: 271px;"> | 
 |                     <div data-ec-title="nested transform" class="chart" id="main2" | 
 |                         style=" | 
 |                             transform: scale3d(1, -1.5, 1) rotateY(-28deg) rotateZ(-32deg); | 
 |                             transform-style: preserve-3d; | 
 |                         "> | 
 |                     </div> | 
 |                 </div> | 
 |             </div> | 
 |  | 
 |             <div style="height: 400px;width: 10px;"></div> | 
 |  | 
 |             <div style=" | 
 |                 perspective: 231px; | 
 |             "> | 
 |                 <canvas data-ec-title="Not support iOS (pre-create a canvas)" class="chart" id="main3" | 
 |                     style=" | 
 |                         transform: translateX(140px) rotateX(28deg) rotateZ(12deg); | 
 |                         transform-style: preserve-3d; | 
 |                     "> | 
 |                 </canvas> | 
 |             </div> | 
 |  | 
 |         </idv> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |             function $createOption(title) { | 
 |                 var xAxisData = []; | 
 |                 var data1 = []; | 
 |                 var data2 = []; | 
 |                 var data3 = []; | 
 |                 var bigTooltipBound = 10; | 
 |  | 
 |                 for (var i = 0; i < 50; i++) { | 
 |                     xAxisData.push('类目' + i); | 
 |                     data1.push(+(Math.random() + 0.5).toFixed(3)); | 
 |                     data2.push(+(Math.random() + 0.5).toFixed(3)); | 
 |                     data3.push(+(Math.random() + 0.5).toFixed(3)); | 
 |                 } | 
 |  | 
 |                 function getSymbolSize(value, param) { | 
 |                     if (param.dataIndex <= bigTooltipBound) { | 
 |                         return 30; | 
 |                     } | 
 |                     return 10; | 
 |                 } | 
 |  | 
 |                 var itemStyle = { | 
 |                     normal: { | 
 |                         borderColor: 'white', | 
 |                         borderWidth: 3, | 
 |                         lineStyle: { | 
 |                             width: 1 | 
 |                         } | 
 |                     } | 
 |                 }; | 
 |  | 
 |                 return { | 
 |                     backgroundColor: '#eee', | 
 |                     title: { | 
 |                         text: title || '' | 
 |                     }, | 
 |                     legend: { | 
 |                         data: ['line', 'line2', 'line3'], | 
 |                         itemWidth: 50, | 
 |                         itemHeight: 40, | 
 |                         right: 50, | 
 |                         bottom: 0 | 
 |                     }, | 
 |                     visualMap: null, // 用于测试 option 中含有null的情况。 | 
 |                     tooltip: { | 
 |                         trigger: 'axis', | 
 |                         // set enterable as false to check coord of event triggered by tooltip. | 
 |                         enterable: false, | 
 |                         axisPointer: { | 
 |                             type: 'cross' | 
 |                         }, | 
 |                         formatter: function () { | 
 |                             return [ | 
 |                                 '<div>', | 
 |                                     'Move inside the tooltip<br>', | 
 |                                     'The original interactions of<br>', | 
 |                                     'the chart under the tooltip <br>', | 
 |                                     'should be normally triggered.<br>', | 
 |                                     'That means the coord of <br>', | 
 |                                     'the event <br>', | 
 |                                     'triggered by tooltip<br>', | 
 |                                     'is correct<br>', | 
 |                                     '----<br>', | 
 |                                     '----<br>', | 
 |                                 '</div>' | 
 |                             ].join(''); | 
 |                         }, | 
 |                         position: function (point, params, dom, rect, size) { | 
 |                             var viewSize = size.viewSize; | 
 |                             var contentSize = size.contentSize; | 
 |                             return [ | 
 |                                 viewSize[0] - contentSize[0], | 
 |                                 viewSize[1] - contentSize[1], | 
 |                             ]; | 
 |                         } | 
 |                     }, | 
 |                     xAxis: { | 
 |                         data: xAxisData, | 
 |                         boundaryGap: false, | 
 |                         splitArea: { | 
 |                             show: false | 
 |                         }, | 
 |                         splitLine: { | 
 |                             show: false | 
 |                         } | 
 |                     }, | 
 |                     grid: { | 
 |                         left: '10%', | 
 |                         right: 2, | 
 |                         bottom: 100 | 
 |                     }, | 
 |                     yAxis: { | 
 |                         splitArea: { | 
 |                             show: true | 
 |                         } | 
 |                     }, | 
 |                     dataZoom: [{ | 
 |                         type: 'inside', | 
 |                         start: 10, | 
 |                         end: 30 | 
 |                     }, { | 
 |                         type: 'slider', | 
 |                         bottom: 40 | 
 |                     }], | 
 |                     series: [{ | 
 |                         name: 'line', | 
 |                         type: 'line', | 
 |                         stack: 'all', | 
 |                         symbol: 'circle', | 
 |                         symbolSize: getSymbolSize, | 
 |                         data: data1, | 
 |                         itemStyle: itemStyle, | 
 |                         step: 'end' | 
 |                     }, { | 
 |                         name: 'line2', | 
 |                         type: 'line', | 
 |                         stack: 'all', | 
 |                         symbol: 'circle', | 
 |                         symbolSize: getSymbolSize, | 
 |                         data: data2, | 
 |                         itemStyle: itemStyle, | 
 |                         step: 'end' | 
 |                     }, { | 
 |                         name: 'line3', | 
 |                         type: 'line', | 
 |                         stack: 'all', | 
 |                         symbol: 'triangle', | 
 |                         symbolSize: getSymbolSize, | 
 |                         data: data3, | 
 |                         itemStyle: itemStyle, | 
 |                         step: 'end' | 
 |                     }] | 
 |                 }; | 
 |             } | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |             initCharts(); | 
 |  | 
 |             function initCharts() { | 
 |                 var allCharts = document.getElementById('allCharts'); | 
 |                 allCharts.style.display = 'block'; | 
 |  | 
 |                 function addEventListener(chart) { | 
 |                     chart.getZr().on('click', function (e) { | 
 |                         console.log('zr e.offsetX e.offsetY', e.offsetX, e.offsetY); | 
 |                         facePrint({'zr-e-offsetX': e.offsetX, 'zr-e-offsetY': e.offsetY}); | 
 |                     }); | 
 |                 } | 
 |  | 
 |                 require([ | 
 |                     'echarts' | 
 |                 ], function (echarts) { | 
 |                     var el = document.getElementById('main0'); | 
 |                     if (!el) { | 
 |                         return; | 
 |                     } | 
 |                     var chart = echarts.init(el); | 
 |                     addEventListener(chart); | 
 |                     chart.setOption($createOption(el.getAttribute('data-ec-title'))); | 
 |                 }); | 
 |  | 
 |                 require([ | 
 |                     'echarts' | 
 |                 ], function (echarts) { | 
 |                     var el = document.getElementById('main1'); | 
 |                     if (!el) { | 
 |                         return; | 
 |                     } | 
 |                     var chart = echarts.init(el, null, { | 
 |                     }); | 
 |                     addEventListener(chart); | 
 |                     chart.setOption($createOption(el.getAttribute('data-ec-title'))); | 
 |                 }); | 
 |  | 
 |                 require([ | 
 |                     'echarts' | 
 |                 ], function (echarts) { | 
 |                     var el = document.getElementById('main2'); | 
 |                     if (!el) { | 
 |                         return; | 
 |                     } | 
 |                     var chart = echarts.init(el, null, { | 
 |                     }); | 
 |                     addEventListener(chart); | 
 |                     chart.setOption($createOption(el.getAttribute('data-ec-title'))); | 
 |                 }); | 
 |  | 
 |                 require([ | 
 |                     'echarts' | 
 |                 ], function (echarts) { | 
 |                     var canvasEl = document.getElementById('main3'); | 
 |                     if (!canvasEl) { | 
 |                         return; | 
 |                     } | 
 |                     var chart = echarts.init(canvasEl, null, { | 
 |                         devicePixelRatio: 2, | 
 |                         // FIXME: weird | 
 |                         width: canvasEl.offsetWidth, | 
 |                         height: canvasEl.offsetHeight | 
 |                     }); | 
 |                     addEventListener(chart); | 
 |                     chart.setOption($createOption(canvasEl.getAttribute('data-ec-title'))); | 
 |                 }); | 
 |             } | 
 |  | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |     </body> | 
 | </html> |