| <!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> | 
 |         <script src="lib/testHelper.js"></script> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |         <link rel="stylesheet" href="lib/reset.css"> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |             h2 { | 
 |                 line-height: 60px; | 
 |                 height: 60px; | 
 |                 background: #146402; | 
 |                 text-align: center; | 
 |                 font-weight: bold; | 
 |                 color: #eee; | 
 |                 font-size: 14px; | 
 |             } | 
 |             .chart { | 
 |                 height: 600px; | 
 |             } | 
 |             button { | 
 |                 font-size: 16px; | 
 |             } | 
 |         </style> | 
 |  | 
 |         <button onclick="change()">CHANGE</button> | 
 |         <div class="chart" id="main2"></div> | 
 |  | 
 |         <h2>Default Label Animation</h2> | 
 |         <div class="chart" id="main0"></div> | 
 |  | 
 |  | 
 |         <h2>Label Animation with animationDelay callback</h2> | 
 |         <div class="chart" id="main1"></div> | 
 |  | 
 |         <h2>Line Animation should be continued when calling setOption again.</h2> | 
 |         <div class="chart" id="main3"></div> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |             require([ | 
 |                 'echarts' | 
 |             ], function (echarts) { | 
 |                 var groupCategories = []; | 
 |                 var groupColors = []; | 
 |                 var chart = echarts.init(document.getElementById('main2')); | 
 |  | 
 |                 var base = +new Date(1968, 9, 3); | 
 |                 var oneDay = 24 * 3600 * 1000; | 
 |                 var date = []; | 
 |                 var data = []; | 
 |  | 
 |                 for (var i = 0; i < 10; i++) { | 
 |                     var now = new Date(base += oneDay); | 
 |                     date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/')); | 
 |                     // data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1])); | 
 |                     data.push(i * i - 15); | 
 |                 } | 
 |  | 
 |                 option = { | 
 |                     tooltip: { | 
 |                         trigger: 'axis', | 
 |                         position: function (pt) { | 
 |                             return [pt[0], '10%']; | 
 |                         } | 
 |                     }, | 
 |                     legend: { | 
 |                         data: ['large area'] | 
 |                     }, | 
 |                     toolbox: { | 
 |                         feature: { | 
 |                             dataZoom: { | 
 |                                 yAxisIndex: 'none' | 
 |                             }, | 
 |                             restore: {}, | 
 |                             saveAsImage: {} | 
 |                         } | 
 |                     }, | 
 |                     grid: { | 
 |                         containLabel: true | 
 |                     }, | 
 |                     xAxis: { | 
 |                         type: 'category', | 
 |                         boundaryGap: false, | 
 |                         data: date, | 
 |                         axisTick: { | 
 |                             interval: 0 | 
 |                         }, | 
 |                         axisLabel: { | 
 |                             interval: 0 | 
 |                         } | 
 |                     }, | 
 |                     yAxis: { | 
 |                         type: 'value', | 
 |                         boundaryGap: [0, '100%'] | 
 |                     }, | 
 |                     dataZoom: [{ | 
 |                         type: 'inside', | 
 |                         // start: 0, | 
 |                         // end: 10 | 
 |                     }, { | 
 |                         start: 0, | 
 |                         end: 10, | 
 |                         handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', | 
 |                         handleSize: '80%', | 
 |                         handleStyle: { | 
 |                             color: '#fff', | 
 |                             shadowBlur: 3, | 
 |                             shadowColor: 'rgba(0, 0, 0, 0.6)', | 
 |                             shadowOffsetX: 2, | 
 |                             shadowOffsetY: 2 | 
 |                         } | 
 |                     }], | 
 |                     series: [ | 
 |                         { | 
 |                             name:'large area', | 
 |                             type:'line', | 
 |                             symbol: 'none', | 
 |                             // type:'scatter', | 
 |                             // smooth:true, | 
 |                             // symbol: 'none', | 
 |                             sampling: 'average', | 
 |                             itemStyle: { | 
 |                                 normal: { | 
 |                                     color: 'rgb(255, 70, 131)' | 
 |                                 } | 
 |                             }, | 
 |                             lineStyle: { | 
 |                                 normal: { | 
 |                                     shadowBlur: 6, | 
 |                                     shadowColor: '#999', | 
 |                                     shadowOffsetX: 10, | 
 |                                     shadowOffsetY: 10 | 
 |                                 } | 
 |                             }, | 
 |                             areaStyle: { | 
 |                                 // origin: 'end', | 
 |                                 color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ | 
 |                                     offset: 0, | 
 |                                     color: 'rgb(255, 158, 68)' | 
 |                                 }, { | 
 |                                     offset: 1, | 
 |                                     color: 'rgb(255, 70, 131)' | 
 |                                 }]) | 
 |                             }, | 
 |                             data: data | 
 |                         } | 
 |                     ], | 
 |                     animationDurationUpdate: 2000 | 
 |                 }; | 
 |  | 
 |  | 
 |                 chart.setOption(option); | 
 |  | 
 |                 window.change = function () { | 
 |                     chart.dispatchAction({ | 
 |                         type: 'dataZoom', | 
 |                         end: 20 | 
 |                     }); | 
 |                 } | 
 |  | 
 |             }); | 
 |  | 
 |  | 
 |         </script> | 
 |  | 
 |         <script> | 
 |  | 
 |             require([ | 
 |                 'echarts' | 
 |             ], function (echarts) { | 
 |                 var chart = echarts.init(document.getElementById('main0')); | 
 |  | 
 |                 var xData = []; | 
 |                 var data = []; | 
 |                 var value = 200; | 
 |                 var positive = 1; | 
 |                 for (let i = 0; i < 100; ++i) { | 
 |                     xData.push(i + ''); | 
 |                     value = positive * Math.round(Math.random() * 50) + value; | 
 |                     data.push(value); | 
 |  | 
 |                     if (Math.random() > 0.7) { | 
 |                         positive = -1 * positive; | 
 |                     } | 
 |                 } | 
 |  | 
 |                 option = { | 
 |                     title: [{ | 
 |                         text: 'Default Line Animation, all should be left-to-right, bottom-to top', | 
 |                         subtext: 'Symbol and text should sync with line clipPath\n\naxis not inversed', | 
 |                         textAlign: 'center', | 
 |                         left: '50%', | 
 |                         top: 0 | 
 |                     }, { | 
 |                         subtext: 'axis inversed', | 
 |                         textAlign: 'center', | 
 |                         left: '50%', | 
 |                         top: '52%' | 
 |                     }, { | 
 |                         text: 'left-to-right', | 
 |                         left: '25%', | 
 |                         textAlign: 'center', | 
 |                         top: 70 | 
 |                     }, { | 
 |                         text: 'bottom-to-top', | 
 |                         left: '75%', | 
 |                         textAlign: 'center', | 
 |                         top: 70 | 
 |                     }, { | 
 |                         text: 'right-to-left', | 
 |                         left: '25%', | 
 |                         textAlign: 'center', | 
 |                         top: '55%' | 
 |                     }, { | 
 |                         text: 'top-to-bottom', | 
 |                         left: '75%', | 
 |                         textAlign: 'center', | 
 |                         top: '55%' | 
 |                     }], | 
 |                     xAxis: [{ | 
 |                         data: xData | 
 |                     }, { | 
 |                         gridIndex: 1 | 
 |                     }, { | 
 |                         data: xData, | 
 |                         inverse: true, | 
 |                         gridIndex: 2 | 
 |                     }, { | 
 |                         gridIndex: 3, | 
 |                         inverse: true | 
 |                     }], | 
 |                     yAxis: [{ | 
 |                     }, { | 
 |                         data: xData, | 
 |                         gridIndex: 1 | 
 |                     }, { | 
 |                         inverse: true, | 
 |                         gridIndex: 2 | 
 |                     }, { | 
 |                         data: xData, | 
 |                         gridIndex: 3, | 
 |                         inverse: true | 
 |                     }], | 
 |                     grid: [{ | 
 |                         left: 80, | 
 |                         top: 100, | 
 |                         right: '52%', | 
 |                         bottom: '55%' | 
 |                     }, { | 
 |                         left: '52%', | 
 |                         top: 100, | 
 |                         right: 50, | 
 |                         bottom: '55%' | 
 |                     }, { | 
 |                         left: 80, | 
 |                         right: '52%', | 
 |                         top: '60%', | 
 |                         bottom: 30 | 
 |                     }, { | 
 |                         left: '52%', | 
 |                         right: 50, | 
 |                         top: '60%', | 
 |                         bottom: 30 | 
 |                     }], | 
 |                     series: [{ | 
 |                         type: 'line', | 
 |                         data: data, | 
 |                         label: { | 
 |                             show: true | 
 |                         }, | 
 |                         labelLayout: { | 
 |                             hideOverlap: true | 
 |                         } | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         data: data, | 
 |                         label: { | 
 |                             show: true | 
 |                         }, | 
 |                         labelLayout: { | 
 |                             hideOverlap: true | 
 |                         }, | 
 |                         xAxisIndex: 1, | 
 |                         yAxisIndex: 1 | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         data: data, | 
 |                         label: { | 
 |                             show: true | 
 |                         }, | 
 |                         labelLayout: { | 
 |                             hideOverlap: true | 
 |                         }, | 
 |                         xAxisIndex: 2, | 
 |                         yAxisIndex: 2 | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         data: data, | 
 |                         label: { | 
 |                             show: true | 
 |                         }, | 
 |                         labelLayout: { | 
 |                             hideOverlap: true | 
 |                         }, | 
 |                         xAxisIndex: 3, | 
 |                         yAxisIndex: 3 | 
 |                     }], | 
 |                     animationDuration: 10000, | 
 |                     animationDurationUpdate: 1000 | 
 |                 }; | 
 |                 chart.setOption(option); | 
 |  | 
 |             }); | 
 |  | 
 |         </script> | 
 |  | 
 |  | 
 |         <script> | 
 |             require([ | 
 |                 'echarts' | 
 |             ], function (echarts) { | 
 |                 var chart = echarts.init(document.getElementById('main1')); | 
 |  | 
 |                 var xData = []; | 
 |                 var data = []; | 
 |                 var value = 200; | 
 |                 var positive = 1; | 
 |                 for (let i = 0; i < 100; ++i) { | 
 |                     xData.push(i + ''); | 
 |                     value = positive * Math.round(Math.random() * 50) + value; | 
 |                     data.push(value); | 
 |  | 
 |                     if (Math.random() > 0.7) { | 
 |                         positive = -1 * positive; | 
 |                     } | 
 |                 } | 
 |  | 
 |                 var duration = 10000; | 
 |                 option = { | 
 |                     title: { | 
 |                         text: 'Label Animation with animationDelay callback', | 
 |                         subtext: 'Symbol and text should sync with line clipPath' | 
 |                     }, | 
 |                     xAxis: { | 
 |                         data: xData | 
 |                     }, | 
 |                     yAxis: {}, | 
 |                     series: [{ | 
 |                         type: 'line', | 
 |                         data: data, | 
 |                         label: { | 
 |                             show: true | 
 |                         }, | 
 |                         animationEasing: 'cubicIn', | 
 |                         animationDelay: function (i) { | 
 |                             if (i == null) { | 
 |                                 return null; | 
 |                             } | 
 |                             else { | 
 |                                 // cubicIn is x=t^3 so t=x^(1/3) | 
 |                                 return (Math.pow((i + 0.5) / data.length, 1 / 3)) * duration; | 
 |                             } | 
 |                         } | 
 |                     }], | 
 |                     animationDuration: duration, | 
 |                     animationDurationUpdate: 1000 | 
 |                 }; | 
 |                 chart.setOption(option); | 
 |  | 
 |             }); | 
 |  | 
 |         </script> | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |             require([ | 
 |                 'echarts' | 
 |             ], function (echarts) { | 
 |                 var chart = echarts.init(document.getElementById('main3'), null, { | 
 |                     renderer: 'svg' | 
 |                 }); | 
 |                 option = { | 
 |                     xAxis: { | 
 |                         type: 'category', | 
 |                         boundaryGap: false, | 
 |                         data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] | 
 |                     }, | 
 |                     yAxis: { | 
 |                         type: 'value' | 
 |                     }, | 
 |                     series: [{ | 
 |                         data: [820, 932, 901, 934, 1290, 1330, 1320], | 
 |                         type: 'line', | 
 |                         areaStyle: {} | 
 |                     }], | 
 |                     animationDuration: 10000, | 
 |                     animationDurationUpdate: 10000 | 
 |                 }; | 
 |  | 
 |                 chart.setOption(option); | 
 |  | 
 |                 setTimeout(function() { | 
 |                     chart.setOption(option); | 
 |                 }, 1000); | 
 |  | 
 |             }); | 
 |  | 
 |         </script> | 
 |  | 
 |  | 
 |     </body> | 
 | </html> |