| <!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"> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |         <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> | 
 |         <!-- <script src="ut/lib/canteen.js"></script> --> | 
 |         <link rel="stylesheet" href="lib/reset.css" /> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |         </style> | 
 |  | 
 |  | 
 |  | 
 |         <div id="refer_by_id"></div> | 
 |         <div id="auto_axis_second_setOption_only_toolbox_dz"></div> | 
 |         <div id="auto_axis_second_setOption_normal_dz"></div> | 
 |         <div id="specified_axis_second_setOption_normal_dz"></div> | 
 |         <div id="remove_dz"></div> | 
 |         <div id="duplicated_dataZoom_ref"></div> | 
 |         <div id="main0"></div> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |         require(['echarts'], function (echarts) { | 
 |             var option; | 
 |  | 
 |             option = { | 
 |                 grid: [{ | 
 |                     bottom: '55%' | 
 |                 }, { | 
 |                     id: 'g1', | 
 |                     top: '55%' | 
 |                 }], | 
 |                 xAxis: [{ | 
 |  | 
 |                 }, { | 
 |                     id: 'x1', | 
 |                     gridId: 'g1' | 
 |                 }], | 
 |                 yAxis: [{ | 
 |  | 
 |                 }, { | 
 |                     id: 'y1', | 
 |                     gridId: 'g1' | 
 |                 }], | 
 |                 dataZoom: [{ | 
 |                     xAxisId: 'x1', | 
 |                     type: 'slider' | 
 |                 }, { | 
 |                     xAxisId: 'x1', | 
 |                     type: 'inside' | 
 |                 }], | 
 |                 series: [{ | 
 |                     type: 'line', | 
 |                     data: [[11, 22], [33, 44]] | 
 |                 }, { | 
 |                     type: 'line', | 
 |                     xAxisId: 'x1', | 
 |                     yAxisId: 'y1', | 
 |                     data: [[233, 432], [154, 552]] | 
 |                 }] | 
 |             }; | 
 |  | 
 |             var chart = testHelper.create(echarts, 'refer_by_id', { | 
 |                 title: [ | 
 |                     'refer axis by id', | 
 |                     'Two grids, dataZoom should **only refer to bottom grid**', | 
 |                 ], | 
 |                 option: option, | 
 |                 height: 300, | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |         require(['echarts'], function (echarts) { | 
 |             function makeFirstGridOption() { | 
 |                 return { | 
 |                     grid: [{ | 
 |                         bottom: '60%' | 
 |                     }], | 
 |                     xAxis: [{ | 
 |                     }, { | 
 |                     }], | 
 |                     yAxis: [{ | 
 |                     }], | 
 |                     series: [{ | 
 |                         type: 'line', | 
 |                         data: [[333, 22], [666, 44]] | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         xAxisIndex: 1, | 
 |                         data: [[88888, 52], [99999, 74]] | 
 |                     }] | 
 |                 }; | 
 |             } | 
 |  | 
 |             var option = makeFirstGridOption(); | 
 |  | 
 |             option.toolbox = { | 
 |                 left: 'center', | 
 |                 feature: { | 
 |                     dataZoom: {} | 
 |                 } | 
 |             }; | 
 |             option.grid.push( | 
 |                 { | 
 |                     id: 'gb', | 
 |                     top: '60%' | 
 |                 } | 
 |             ); | 
 |             option.xAxis.push( | 
 |                 { | 
 |                     id: 'xb0', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 }, { | 
 |                     id: 'xb1', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 } | 
 |             ); | 
 |             option.yAxis.push( | 
 |                 { | 
 |                     id: 'yb', | 
 |                     gridIndex: 1 | 
 |                 } | 
 |             ); | 
 |             option.series.push( | 
 |                 { | 
 |                     id: 'sb0', | 
 |                     type: 'line', | 
 |                     xAxisIndex: 2, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[63, 432], [98, 552]] | 
 |                 }, { | 
 |                     id: 'sb1', | 
 |                     type: 'line', | 
 |                     xAxisIndex: 3, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[87654, 1432], [56789, 1552]] | 
 |                 } | 
 |             ); | 
 |  | 
 |             var chart = testHelper.create(echarts, 'auto_axis_second_setOption_only_toolbox_dz', { | 
 |                 title: [ | 
 |                     '[Only toolbox dataZoom] two grids, each has two xAxis.', | 
 |                     'toolbox zoom should work on **all grids**.', | 
 |                     'Click btn "remove top grid".', | 
 |                     'toolbox zoom should work only on **bottom grids**.', | 
 |                     'Click btn "addback top grid".', | 
 |                     'toolbox zoom should work on **all grids**.', | 
 |                     'Click btn "remove all grids".', | 
 |                     'Should **no error**.', | 
 |                     'Check toolbox zoom should **not work on the original area**.', | 
 |                     'Click btn "addback top grid".', | 
 |                     'toolbox zoom should work only on **top grids**.', | 
 |                 ], | 
 |                 option: option, | 
 |                 height: 350, | 
 |                 buttons: [{ | 
 |                     text: 'remove top grid', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             grid: [{ | 
 |                                 id: 'gb', | 
 |                             }], | 
 |                             xAxis: [{ | 
 |                                 id: 'xb0', | 
 |                             }, { | 
 |                                 id: 'xb1', | 
 |                             }], | 
 |                             yAxis: [{ | 
 |                                 id: 'yb' | 
 |                             }], | 
 |                             series: [{ | 
 |                                 id: 'sb0', | 
 |                             }, { | 
 |                                 id: 'sb1', | 
 |                             }] | 
 |                         }, { replaceMerge: ['grid', 'xAxis', 'yAxis', 'series'] }); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'addback top grid', | 
 |                     onclick: function () { | 
 |                         chart.setOption(makeFirstGridOption()); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'remove all grids', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             grid: [], | 
 |                             xAxis: [], | 
 |                             yAxis: [], | 
 |                             series: [] | 
 |                         }, { replaceMerge: ['grid', 'xAxis', 'yAxis', 'series'] }); | 
 |                     } | 
 |                 }] | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |         require(['echarts'], function (echarts) { | 
 |  | 
 |             function makeFirstGridOption() { | 
 |                 return { | 
 |                     grid: [{ | 
 |                         bottom: '60%' | 
 |                     }], | 
 |                     xAxis: [{ | 
 |                     }, { | 
 |                     }], | 
 |                     yAxis: [{ | 
 |                     }], | 
 |                     series: [{ | 
 |                         type: 'line', | 
 |                         symbolSize: 20, | 
 |                         data: [[11, 22], [33, 44]] | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         xAxisIndex: 1, | 
 |                         symbolSize: 20, | 
 |                         data: [[11111, 52], [21133, 74]] | 
 |                     }] | 
 |                 }; | 
 |             } | 
 |  | 
 |             var option = makeFirstGridOption(); | 
 |  | 
 |             option.toolbox = { | 
 |                 left: 'center', | 
 |                 feature: { | 
 |                     dataZoom: {} | 
 |                 } | 
 |             }; | 
 |             option.grid.push( | 
 |                 { | 
 |                     id: 'gb', | 
 |                     top: '60%' | 
 |                 } | 
 |             ); | 
 |             option.xAxis.push( | 
 |                 { | 
 |                     id: 'xb0', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 }, { | 
 |                     id: 'xb1', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 } | 
 |             ); | 
 |             option.yAxis.push( | 
 |                 { | 
 |                     id: 'yb', | 
 |                     gridIndex: 1 | 
 |                 } | 
 |             ); | 
 |             option.dataZoom = [ | 
 |                 { | 
 |                     type: 'slider' | 
 |                 }, { | 
 |                     type: 'inside' | 
 |                 } | 
 |             ]; | 
 |             option.series.push( | 
 |                 { | 
 |                     id: 'sb0', | 
 |                     type: 'line', | 
 |                     symbolSize: 20, | 
 |                     xAxisIndex: 2, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[23, 432], [54, 552]] | 
 |                 }, { | 
 |                     id: 'sb1', | 
 |                     type: 'line', | 
 |                     symbolSize: 20, | 
 |                     xAxisIndex: 3, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[222233, 1432], [111154, 1552]] | 
 |                 } | 
 |             ); | 
 |  | 
 |             var chart = testHelper.create(echarts, 'auto_axis_second_setOption_normal_dz', { | 
 |                 title: [ | 
 |                     'Test: **Auto axis** remove coord sys (dataZoom not remove)', | 
 |                     'two grids, each has two xAxis.', | 
 |                     'dataZoom should **only control all 2 xAxis of top** grid.', | 
 |                     'Click btn "remove top grid".', | 
 |                     'dataZoom should **only control all 2 xAxis of bottom** grid.', | 
 |                     '**inside dataZoom** on top grid area **should be removed**.', | 
 |                     '**toolbox zoom** should only control bottom grid.', | 
 |                     'Click btn "addback top grid".', | 
 |                     'dataZoom should **only control all 2 xAxis of top** grid.', | 
 |                     '**inside dataZoom** on bottom grid area **should be removed**.', | 
 |                     'Click btn "remove all grids".', | 
 |                     'Should no error.', | 
 |                     'Click btn "addback top grid".', | 
 |                     'Functionalities should be OK.' | 
 |                 ], | 
 |                 option: option, | 
 |                 height: 350, | 
 |                 buttons: [{ | 
 |                     text: 'remove top grid', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             grid: [{ | 
 |                                 id: 'gb', | 
 |                             }], | 
 |                             xAxis: [{ | 
 |                                 id: 'xb0', | 
 |                             }, { | 
 |                                 id: 'xb1', | 
 |                             }], | 
 |                             yAxis: [{ | 
 |                                 id: 'yb' | 
 |                             }], | 
 |                             series: [{ | 
 |                                 id: 'sb0', | 
 |                             }, { | 
 |                                 id: 'sb1', | 
 |                             }] | 
 |                         }, { replaceMerge: ['grid', 'xAxis', 'yAxis', 'series'] }); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'addback top grid', | 
 |                     onclick: function () { | 
 |                         chart.setOption(makeFirstGridOption()); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'remove all grids', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             grid: [], | 
 |                             xAxis: [], | 
 |                             yAxis: [], | 
 |                             series: [] | 
 |                         }, { replaceMerge: ['grid', 'xAxis', 'yAxis', 'series'] }); | 
 |                     } | 
 |                 }] | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |         require(['echarts'], function (echarts) { | 
 |  | 
 |             function makeFirstGridOption() { | 
 |                 return { | 
 |                     grid: [{ | 
 |                         bottom: '60%' | 
 |                     }], | 
 |                     xAxis: [{ | 
 |                     }, { | 
 |                     }], | 
 |                     yAxis: [{ | 
 |                     }], | 
 |                     series: [{ | 
 |                         type: 'line', | 
 |                         symbol: 'emptyTriangle', | 
 |                         symbolSize: 20, | 
 |                         data: [[11, 22], [33, 44]] | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         symbol: 'emptyTriangle', | 
 |                         symbolSize: 20, | 
 |                         xAxisIndex: 1, | 
 |                         data: [[11111, 52], [21133, 74]] | 
 |                     }] | 
 |                 }; | 
 |             } | 
 |  | 
 |             var option = makeFirstGridOption(); | 
 |  | 
 |             option.toolbox = { | 
 |                 left: 'center', | 
 |                 feature: { | 
 |                     dataZoom: {} | 
 |                 } | 
 |             }; | 
 |             option.grid.push( | 
 |                 { | 
 |                     id: 'gb', | 
 |                     top: '60%' | 
 |                 } | 
 |             ); | 
 |             option.xAxis.push( | 
 |                 { | 
 |                     id: 'xb0', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 }, { | 
 |                     id: 'xb1', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 } | 
 |             ); | 
 |             option.yAxis.push( | 
 |                 { | 
 |                     id: 'yb', | 
 |                     gridIndex: 1 | 
 |                 } | 
 |             ); | 
 |             option.dataZoom = [ | 
 |                 { | 
 |                     type: 'slider', | 
 |                     xAxisIndex: 'all' | 
 |                 }, { | 
 |                     type: 'inside', | 
 |                     xAxisIndex: 'all' | 
 |                 } | 
 |             ]; | 
 |             option.series.push( | 
 |                 { | 
 |                     id: 'sb0', | 
 |                     type: 'line', | 
 |                     symbol: 'emptyTriangle', | 
 |                     symbolSize: 20, | 
 |                     xAxisIndex: 2, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[23, 432], [54, 552], [124, 324], [341, 134], [888, 213]] | 
 |                 }, { | 
 |                     id: 'sb1', | 
 |                     type: 'line', | 
 |                     symbol: 'emptyTriangle', | 
 |                     symbolSize: 20, | 
 |                     xAxisIndex: 3, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[222233, 1432], [111154, 1552], [222223, 1231], [131313, 3322], [717171, 5512]] | 
 |                 } | 
 |             ); | 
 |  | 
 |             var chart = testHelper.create(echarts, 'specified_axis_second_setOption_normal_dz', { | 
 |                 title: [ | 
 |                     'Test: **xAxisIndex: "all"** remove coord sys (dataZoom not remove)', | 
 |                     'two grids, each has two xAxis.', | 
 |                     'dataZoom should **only control all 4 xAxis**.', | 
 |                     'Click btn "remove top grid".', | 
 |                     'dataZoom should **only control all 2 xAxis of bottom** grid.', | 
 |                     '**inside dataZoom** on top grid area **should be removed**.', | 
 |                     '**toolbox zoom** should only control bottom grid.', | 
 |                     'Click btn "addback top grid".', | 
 |                     'dataZoom should **only control all 4 xAxis**.', | 
 |                     '**inside dataZoom** on bottom grid area **should be removed**.', | 
 |                     'Click btn "remove all grids".', | 
 |                     'Should no error.', | 
 |                     'Click btn "addback top grid".', | 
 |                     'Functionalities should be OK.' | 
 |                 ], | 
 |                 option: option, | 
 |                 height: 350, | 
 |                 buttons: [{ | 
 |                     text: 'remove top grid', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             grid: [{ | 
 |                                 id: 'gb', | 
 |                             }], | 
 |                             xAxis: [{ | 
 |                                 id: 'xb0', | 
 |                             }, { | 
 |                                 id: 'xb1', | 
 |                             }], | 
 |                             yAxis: [{ | 
 |                                 id: 'yb' | 
 |                             }], | 
 |                             series: [{ | 
 |                                 id: 'sb0', | 
 |                             }, { | 
 |                                 id: 'sb1', | 
 |                             }] | 
 |                         }, { replaceMerge: ['grid', 'xAxis', 'yAxis', 'series'] }); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'addback top grid', | 
 |                     onclick: function () { | 
 |                         chart.setOption(makeFirstGridOption()); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'remove all grids', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             grid: [], | 
 |                             xAxis: [], | 
 |                             yAxis: [], | 
 |                             series: [] | 
 |                         }, { replaceMerge: ['grid', 'xAxis', 'yAxis', 'series'] }); | 
 |                     } | 
 |                 }] | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |         require(['echarts'], function (echarts) { | 
 |  | 
 |             function makeFirstGridOption() { | 
 |                 return { | 
 |                     grid: [{ | 
 |                         bottom: '60%' | 
 |                     }], | 
 |                     xAxis: [{ | 
 |                     }, { | 
 |                     }], | 
 |                     yAxis: [{ | 
 |                     }], | 
 |                     series: [{ | 
 |                         type: 'line', | 
 |                         symbol: 'emptyTriangle', | 
 |                         symbolSize: 20, | 
 |                         data: [[11, 22], [33, 44]] | 
 |                     }, { | 
 |                         type: 'line', | 
 |                         symbol: 'emptyTriangle', | 
 |                         symbolSize: 20, | 
 |                         xAxisIndex: 1, | 
 |                         data: [[11111, 52], [21133, 74]] | 
 |                     }] | 
 |                 }; | 
 |             } | 
 |  | 
 |             var option = makeFirstGridOption(); | 
 |  | 
 |             var option = { | 
 |                 toolbox: { | 
 |                     left: 'center', | 
 |                     feature: { | 
 |                         dataZoom: {} | 
 |                     } | 
 |                 }, | 
 |                 grid: [{ | 
 |                     right: '60%' | 
 |                 }, { | 
 |                     id: 'gb', | 
 |                     left: '60%' | 
 |                 }], | 
 |                 xAxis: [{ | 
 |                 }, { | 
 |                     id: 'xb', | 
 |                     gridIndex: 1 | 
 |                 }], | 
 |                 yAxis: [{ | 
 |                 }, { | 
 |                 }, { | 
 |                     id: 'yb0', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 }, { | 
 |                     id: 'yb1', | 
 |                     type: 'category', | 
 |                     gridIndex: 1 | 
 |                 }], | 
 |                 dataZoom: [{ | 
 |                     type: 'slider', | 
 |                     left: 10, | 
 |                     yAxisIndex: [0, 1] | 
 |                 }, { | 
 |                     type: 'inside', | 
 |                     yAxisIndex: [0, 1] | 
 |                 }], | 
 |                 series: [{ | 
 |                     type: 'line', | 
 |                     symbol: 'emptyTriangle', | 
 |                     symbolSize: 20, | 
 |                     data: [[22, 11], [44, 33]] | 
 |                 }, { | 
 |                     type: 'line', | 
 |                     symbol: 'emptyTriangle', | 
 |                     symbolSize: 20, | 
 |                     yAxisIndex: 1, | 
 |                     data: [[52, 11111], [74, 21133]] | 
 |                 }, { | 
 |                     id: 'sb0', | 
 |                     type: 'line', | 
 |                     symbol: 'emptyTriangle', | 
 |                     symbolSize: 20, | 
 |                     xAxisIndex: 1, | 
 |                     yAxisIndex: 2, | 
 |                     data: [[432, 23], [552, 54], [324, 124], [134, 341], [213, 888]] | 
 |                 }, { | 
 |                     id: 'sb1', | 
 |                     type: 'line', | 
 |                     symbol: 'emptyTriangle', | 
 |                     symbolSize: 20, | 
 |                     xAxisIndex: 1, | 
 |                     yAxisIndex: 3, | 
 |                     data: [[1432, 222233], [1552, 111154], [1231, 222223], [3322, 131313], [5512, 717171]] | 
 |                 }] | 
 |             }; | 
 |  | 
 |             var chart = testHelper.create(echarts, 'remove_dz', { | 
 |                 title: [ | 
 |                     'Test: remove dataZoom', | 
 |                     'two grids, each has two yAxis.', | 
 |                     'dataZoom should **only control all 2 yAxis of left** grid.', | 
 |                     'Click btn "remove left dataZoom".', | 
 |                     'dz disappear and insideZoom should **no longer work**.', | 
 |                     '**toolbox zoom** should still work.', | 
 |                     'Click btn "add right dataZoom".', | 
 |                     'dataZoom should **only control all 2 yAxis of right** grid.', | 
 |                     'Click btn "dataZoom control x".', | 
 |                     'dataZoom should lay full of bottom and **only control all xAxis**.', | 
 |                 ], | 
 |                 option: option, | 
 |                 height: 350, | 
 |                 buttons: [{ | 
 |                     text: 'remove left dataZoom', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                         }, { replaceMerge: ['dataZoom'] }); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'add right dataZoom', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             dataZoom: [{ | 
 |                                 type: 'slider', | 
 |                                 right: 10, | 
 |                                 yAxisIndex: [2, 3] | 
 |                             }, { | 
 |                                 type: 'inside', | 
 |                                 yAxisIndex: [2, 3] | 
 |                             }] | 
 |                         }); | 
 |                     } | 
 |                 }, { | 
 |                     text: 'dataZoom control x', | 
 |                     onclick: function () { | 
 |                         chart.setOption({ | 
 |                             dataZoom: [{ | 
 |                                 bottom: 10, | 
 |                                 left: 20, | 
 |                                 right: 20, | 
 |                                 width: null, | 
 |                                 xAxisIndex: 'all', | 
 |                                 yAxisIndex: 'none' | 
 |                             }, { | 
 |                                 xAxisIndex: 'all', | 
 |                                 yAxisIndex: 'none' | 
 |                             }] | 
 |                         }); | 
 |                     } | 
 |                 }] | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |         require(['echarts'], function (echarts) { | 
 |  | 
 |             var option = { | 
 |                 toolbox: { | 
 |                     left: 'center', | 
 |                     feature: { | 
 |                         dataZoom: {} | 
 |                     } | 
 |                 }, | 
 |                 xAxis: [{ | 
 |                 }], | 
 |                 yAxis: [{ | 
 |                 }], | 
 |                 dataZoom: [{ | 
 |                     type: 'slider', | 
 |                     // Duplicated declaration | 
 |                     yAxisIndex: [0, 0] | 
 |                 }, { | 
 |                     type: 'inside', | 
 |                     // Duplicated declaration | 
 |                     yAxisIndex: [0, 0] | 
 |                 }], | 
 |                 series: [{ | 
 |                     type: 'line', | 
 |                     data: [[22, 11], [44, 33]] | 
 |                 }] | 
 |             }; | 
 |  | 
 |             var chart = testHelper.create(echarts, 'duplicated_dataZoom_ref', { | 
 |                 title: [ | 
 |                     'Use dataZoom, should no error thrown.', | 
 |                 ], | 
 |                 option: option, | 
 |                 height: 350 | 
 |             }); | 
 |         }); | 
 |         </script> | 
 |  | 
 |         <script> | 
 |             require(['echarts'], function (echarts) { | 
 |                 var option = { | 
 |                     dataZoom: [{ | 
 |                         id: 'dataZoomX', | 
 |                         type: 'slider', | 
 |                         xAxisIndex: 0, | 
 |                         filterMode: 'filter' | 
 |                     }], | 
 |                     legend: { | 
 |                         data: ['语文'], | 
 |                         top: '0' | 
 |                     }, | 
 |                     tooltip: { | 
 |                         trigger: 'axis', | 
 |                         formatter: '{b0}<br />', | 
 |                         axisPointer: { | 
 |                             animation: true, | 
 |                             type: 'line', | 
 |                             lineStyle: { | 
 |                                 type: 'dashed' | 
 |                             } | 
 |                         } | 
 |                     }, | 
 |                     grid: { | 
 |                         left: 20, | 
 |                         top: 38, | 
 |                         right: 20, | 
 |                         bottom: 65 | 
 |                     }, | 
 |                     xAxis: { | 
 |                         type: 'category', | 
 |                         data: [ | 
 |                         '第1周', | 
 |                         '第2周', | 
 |                         '第3周', | 
 |                         '第4周', | 
 |                         '第5周', | 
 |                         '第6周', | 
 |                         '第7周', | 
 |                         '第8周', | 
 |                         '第9周', | 
 |                         '第10周', | 
 |                         '第11周', | 
 |                         '第12周', | 
 |                         '第13周', | 
 |                         '第14周', | 
 |                         '第15周', | 
 |                         '第16周', | 
 |                         '第17周', | 
 |                         '第18周', | 
 |                         '第19周', | 
 |                         '第20周', | 
 |                         '第21周', | 
 |                         '第22周' | 
 |                         ], | 
 |                         boundaryGap: false | 
 |                     }, | 
 |                     yAxis: { | 
 |                         type: 'category', | 
 |                         boundaryGap: false, | 
 |                         name: '等级', | 
 |                         data: ['0', 'D', 'C', 'B', 'A'], | 
 |                         splitLine: { | 
 |                             show: true | 
 |                         } | 
 |                     }, | 
 |                     series: [{ | 
 |                         labelLine: { show: true }, | 
 |                         symbolSize: 16, | 
 |                         type: 'line', | 
 |                         smooth: true, | 
 |                         name: '语文', | 
 |                         data: [ | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             'D', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-', | 
 |                             '-' | 
 |                         ] | 
 |                     }] | 
 |                 }; | 
 |  | 
 |                 var chart = testHelper.create(echarts, 'main0', { | 
 |                     title: [ | 
 |                         'The dataZoom should be displayed at bottom', | 
 |                     ], | 
 |                     option: option, | 
 |                     height: 350 | 
 |                 }); | 
 |             }); | 
 |             </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |     </body> | 
 | </html> | 
 |  |