|  | 
 | <!-- | 
 | 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> | 
 |         <link rel="stylesheet" href="lib/reset.css" /> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |             h1 { | 
 |                 line-height: 60px; | 
 |                 height: 60px; | 
 |                 background: #146402; | 
 |                 text-align: center; | 
 |                 font-weight: bold; | 
 |                 color: #eee; | 
 |                 font-size: 14px; | 
 |             } | 
 |         </style> | 
 |  | 
 |         <div id="main1"></div> | 
 |         <div id="main2"></div> | 
 |         <div id="main3"></div> | 
 |         <div id="main4"></div> | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |         require([ | 
 |             'echarts', | 
 |             'data/life-expectancy-table.json' | 
 |         ], function (echarts, data) { | 
 |             var updateFrequency = 5000; | 
 |             var dimension = 1; | 
 |  | 
 |             var years = []; | 
 |             for (var i = 0; i < data.length; ++i) { | 
 |                 if (years.length === 0 || years[years.length - 1] !== data[i][4]) { | 
 |                     years.push(data[i][4]); | 
 |                 } | 
 |             } | 
 |  | 
 |             var option = { | 
 |                 grid: { | 
 |                     left: 150, | 
 |                     right: 150 | 
 |                 }, | 
 |                 xAxis: { | 
 |                     max: 'dataMax', | 
 |                     label: { | 
 |                         formatter: function (n) { | 
 |                             return Math.round(n); | 
 |                         } | 
 |                     }, | 
 |                     splitLine: { | 
 |                         lineStyle: { | 
 |                             color: 'red' | 
 |                         } | 
 |                     } | 
 |                 }, | 
 |                 dataset: { | 
 |                     source: data.slice(1).filter(d => { | 
 |                         return d[4] === 1800; | 
 |                     }) | 
 |                 }, | 
 |                 yAxis: { | 
 |                     type: 'category', | 
 |                     inverse: true, | 
 |                     max: 10, | 
 |                     axisLabel: { | 
 |                         show: true | 
 |                     }, | 
 |                     animationDuration: 300, | 
 |                     animationDurationUpdate: 300 | 
 |                 }, | 
 |                 series: [{ | 
 |                     realtimeSort: true, | 
 |                     seriesLayoutBy: 'column', | 
 |                     type: 'bar', | 
 |                     encode: { | 
 |                         x: dimension, | 
 |                         y: 3 | 
 |                     }, | 
 |                     label: { | 
 |                         show: true, | 
 |                         position: 'right', | 
 |                         formatter: function (param) { | 
 |                             return param.value[dimension]; | 
 |                         }, | 
 |                         valueAnimation: true, | 
 |                         fontFamily: 'monospace' | 
 |                     } | 
 |                 }], | 
 |                 animationDurationUpdate: updateFrequency, | 
 |                 animationEasing: 'linear', | 
 |                 animationEasingUpdate: 'linear', | 
 |                 graphic: { | 
 |                     elements: [{ | 
 |                         type: 'text', | 
 |                         right: 160, | 
 |                         bottom: 60, | 
 |                         style: { | 
 |                             text: '1960', | 
 |                             font: 'bolder 80px monospace', | 
 |                             fill: 'rgba(100, 100, 100, 0.25)' | 
 |                         }, | 
 |                         z: 100 | 
 |                     }] | 
 |                 } | 
 |             }; | 
 |  | 
 |             for (var i = 1; i < years.length; ++i) { | 
 |                 (function (i) { | 
 |                     setTimeout(function () { | 
 |                         updateYear(years[i + 1]); | 
 |                     }, (i - 1) * updateFrequency); | 
 |                 })(i); | 
 |             } | 
 |  | 
 |             function updateYear(year) { | 
 |                 var source = data.slice(1).filter(d => { | 
 |                     return d[4] === year; | 
 |                 }); | 
 |                 option.series[0].data = source; | 
 |                 option.graphic.elements[0].style.text = year; | 
 |                 chart.setOption(option); | 
 |             } | 
 |  | 
 |             var chart = testHelper.create(echarts, 'main1', { | 
 |                 title: [ | 
 |                     'Bar Racing' | 
 |                 ], | 
 |                 option: option | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |         require([ | 
 |             'echarts' | 
 |         ], | 
 |             function (echarts) { | 
 |                 var option = { | 
 |                     xAxis: { | 
 |                         max: 'dataMax' | 
 |                     }, | 
 |                     yAxis: { | 
 |                         type: 'category', | 
 |                         data: ['A', 'B', 'C', 'D'], | 
 |                         inverse: true, | 
 |                         axisLabel: { | 
 |                             formatter: function (label, id) { | 
 |                                 return label + 0 + id; | 
 |                             } | 
 |                         }, | 
 |                         animationDuration: 300, | 
 |                         animationDurationUpdate: 300, | 
 |                         max: 2 | 
 |                     }, | 
 |                     series: [{ | 
 |                         realtimeSort: true, | 
 |                         name: 'X', | 
 |                         type: 'bar', | 
 |                         data: [{ | 
 |                             value: 120, | 
 |                             itemStyle: { | 
 |                                 color: 'red' | 
 |                             } | 
 |                         }, { | 
 |                             value: 200, | 
 |                             itemStyle: { | 
 |                                 color: 'orange' | 
 |                             } | 
 |                         }, { | 
 |                             value: 90, | 
 |                             itemStyle: { | 
 |                                 color: 'yellow' | 
 |                             } | 
 |                         }, { | 
 |                             value: 240, | 
 |                             itemStyle: { | 
 |                                 color: 'green' | 
 |                             } | 
 |                         }], | 
 |                         label: { | 
 |                             show: true, | 
 |                             position: 'right', | 
 |                             formatter: '{c}元', | 
 |                             valueAnimation: true | 
 |                         } | 
 |                     }], | 
 |                     legend: { | 
 |                         show: true | 
 |                     }, | 
 |                     animationDurationUpdate: 5000, | 
 |                     animationEasing: 'linear', | 
 |                     animationEasingUpdate: 'linear' | 
 |                 }; | 
 |  | 
 |                 setTimeout(() => { | 
 |                     var data = option.series[0].data; | 
 |                     data[1].value += 100; | 
 |                     chart.setOption(option); | 
 |                 }, 1000); | 
 |  | 
 |                 setTimeout(() => { | 
 |                     var data = option.series[0].data; | 
 |                     data[3].value += 100; | 
 |                     chart.setOption(option); | 
 |                 }, 3400); | 
 |  | 
 |                 const buttons = []; | 
 |                 const texts = ['A++', 'B++', 'C++', 'D++']; | 
 |                 for (var x = 0; x < 4; ++x) { | 
 |                     (function (x) { | 
 |                         buttons.push({ | 
 |                             text: texts[x], | 
 |                             onclick() { | 
 |                                 var data = option.series[0].data; | 
 |                                 data[x].value += Math.round(100 * Math.random()); | 
 |                                 chart.setOption(option); | 
 |                             } | 
 |                         }); | 
 |                     })(x); | 
 |                 } | 
 |  | 
 |                 var chart = testHelper.create(echarts, 'main2', { | 
 |                     title: [ | 
 |                         'Update Data Dynamically' | 
 |                     ], | 
 |                     option: option, | 
 |                     buttons | 
 |                 }); | 
 |             } | 
 |         ); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |         require(['echarts'], | 
 |             function (echarts) { | 
 |  | 
 |                 var option = { | 
 |                     title: { | 
 |                         text: 'When yAxis max is larger than yAxis data length, it should not get error' | 
 |                     }, | 
 |                     xAxis: { | 
 |                     }, | 
 |                     yAxis: { | 
 |                         type: 'category', | 
 |                         data: ['A', 'B', 'C'], | 
 |                         max: 5 | 
 |                     }, | 
 |                     series: [{ | 
 |                         realtimeSort: true, | 
 |                         type: 'bar', | 
 |                         data: [10, 8, 2] | 
 |                     }] | 
 |                 }; | 
 |  | 
 |                 var chart = testHelper.create(echarts, 'main3', { | 
 |                     title: [ | 
 |                         'When yAxis max is larger than yAxis data length, it should not get error' | 
 |                     ], | 
 |                     option: option | 
 |                 }); | 
 |             } | 
 |  | 
 |         ); | 
 |         </script> | 
 |  | 
 |         <script> | 
 |  | 
 |             require(['echarts'], | 
 |                 function (echarts) { | 
 |                     var data = [0, 1, 10, 100, 1000]; | 
 |                     var option = { | 
 |                         xAxis: { | 
 |                             type: 'log' | 
 |                         }, | 
 |                         yAxis: { | 
 |                             type: 'category', | 
 |                             data: ['a', 'b', 'c', 'd', 'e'] | 
 |                         }, | 
 |                         series: [{ | 
 |                             type: 'bar', | 
 |                             data: data, | 
 |                             label: { | 
 |                                 show: true, | 
 |                                 position: 'right', | 
 |                                 valueAnimation: true | 
 |                             } | 
 |                         }] | 
 |                     }; | 
 |  | 
 |                     var chart = testHelper.create(echarts, 'main4', { | 
 |                         title: [ | 
 |                             'click "all +10"', | 
 |                             'check the x extent should be correct', | 
 |                             'the 0 bar should be displayed with animation' | 
 |                         ], | 
 |                         option: option, | 
 |                         buttons: [{ | 
 |                             text: 'all +10', | 
 |                             onclick: function () { | 
 |                                 for (var i = 0; i < data.length; i++) { | 
 |                                     data[i] += 10; | 
 |                                 } | 
 |                                 chart.setOption({ | 
 |                                     series: { | 
 |                                         data: data | 
 |                                     } | 
 |                                 }); | 
 |                             } | 
 |                         }] | 
 |                     }); | 
 |                 } | 
 |             ); | 
 |         </script> | 
 |  | 
 |         <script> | 
 |         require(['echarts'], | 
 |             function (echarts) { | 
 |                 var data = [4000, 3000, 2000]; | 
 |                 var option = { | 
 |                     xAxis: { | 
 |                     }, | 
 |                     yAxis: { | 
 |                         type: 'category', | 
 |                         data: ['a', 'b', 'c'], | 
 |                         max: 1, | 
 |                         inverse: true, | 
 |                         animationDuration: 300, | 
 |                         animationDurationUpdate: 300 | 
 |                     }, | 
 |                     series: [{ | 
 |                         realtimeSort: true, | 
 |                         type: 'bar', | 
 |                         data: data, | 
 |                         label: { | 
 |                             show: true, | 
 |                             position: 'right', | 
 |                             valueAnimation: true | 
 |                         }, | 
 |                         animationDuration: 0, | 
 |                         animationDurationUpdate: 5000, | 
 |                         animationEasing: 'linear', | 
 |                         animationEasingUpdate: 'linear' | 
 |                     }] | 
 |                 }; | 
 |  | 
 |                 var chart = testHelper.create(echarts, 'main4', { | 
 |                     title: [ | 
 |                     ], | 
 |                     option: option, | 
 |                     buttons: [{ | 
 |                         text: 'next', | 
 |                         onclick: function () { | 
 |                             data[0] += 300; | 
 |                             data[1] += 2000; | 
 |                             data[2] += 2800; | 
 |                             chart.setOption({ | 
 |                                 series: { | 
 |                                     data: data | 
 |                                 } | 
 |                             }); | 
 |                         } | 
 |                     }] | 
 |                 }); | 
 |             } | 
 |         ); | 
 |         </script> | 
 |     </body> | 
 | </html> |