|  | <!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/testHelper.js"></script> | 
|  | <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
|  | <link rel="stylesheet" href="lib/reset.css" /> | 
|  | </head> | 
|  | <body> | 
|  | <style> | 
|  | .test-title { | 
|  | background: rgb(97, 17, 97); | 
|  | } | 
|  | .test-chart { | 
|  | height: 400px; | 
|  | } | 
|  | </style> | 
|  |  | 
|  |  | 
|  | <div id="specify-dimensions"></div> | 
|  | <div id="key-columns"></div> | 
|  | <div id="category-no-encode-two-value-axis"></div> | 
|  | <div id="category-no-axis-data-multi"></div> | 
|  | <div id="category-no-encode-no-axis-data-single"></div> | 
|  | <div id="category-no-encode-has-axis-data"></div> | 
|  | <div id="category"></div> | 
|  | <div id="two-value-axes"></div> | 
|  | <div id="empty-data"></div> | 
|  | <div id="empty-source"></div> | 
|  | <div id="dynamic-category"></div> | 
|  | <div id="dynamic-time"></div> | 
|  | <div id="dimension-but-no-column1"></div> | 
|  | <div id="dimension-but-no-column2"></div> | 
|  | <div id="dimension-but-no-column3"></div> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | var keyColumnsDrink = { | 
|  | 'product': ['2012', '2013', '2014', '2015', '2016', '2017'], | 
|  | 'Matcha Latte': [41.1, 30.4, 65.1, 53.3, 83.8, 98.7], | 
|  | 'Milk Tea': [86.5, 92.1, 85.7, 83.1, 73.4, 55.1], | 
|  | 'Cheese Cocoa': [24.1, 67.2, 79.5, 86.4, 65.2, 82.5], | 
|  | 'Walnut Brownie': [55.2, 67.1, 69.2, 72.4, 53.9, 39.1] | 
|  | }; | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | [21, 120, 220, 150, 320, 820], | 
|  | [31, 132, 182, 232, 332, 932], | 
|  | [41, 101, 191, 201, 301, 901], | 
|  | [51, 134, 234, 154, 334, 934], | 
|  | [61, 90, 290, 190, 309, 1290], | 
|  | [71, 230, 330, 330, 330, 1330], | 
|  | [81, 210, 310, 410, 320, 1320] | 
|  | ]; | 
|  |  | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | grid: {}, | 
|  | xAxis: {}, | 
|  | yAxis: {}, | 
|  | dataZoom: [{}, {type: 'inside'}], | 
|  | dataset: [{ | 
|  | dimensions: ['G', 'H', 'I', 'Q', 'R'], | 
|  | // sourceHeader: true, | 
|  | source: source | 
|  | }], | 
|  | series: [ | 
|  | {type:'scatter', label: {show: true, position: 'top', textBorderWidth: 2, textBorderColor: '#fff'}, dimensions: ['cccccccccc', 'ddddddddddd']}, | 
|  | {type:'scatter', label: {show: true, position: 'top', textBorderWidth: 2, textBorderColor: '#fff'}}, | 
|  | {type:'scatter', label: {show: true, position: 'top', textBorderWidth: 2, textBorderColor: '#fff'}, sourceHeader: true} | 
|  | ] | 
|  | }; | 
|  | testHelper.create(echarts, 'specify-dimensions', { | 
|  | title: 'speify dimensions', | 
|  | dataTable: source, | 
|  | option: option, | 
|  | info: { | 
|  | dimensions: option.dataset[0].dimensions, | 
|  | serise: option.series | 
|  | } | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | grid: {}, | 
|  | xAxis: {type: 'category'}, | 
|  | yAxis: {}, | 
|  | dataset: [{ | 
|  | source: keyColumnsDrink | 
|  | }], | 
|  | series: [ | 
|  | {type:'line'}, | 
|  | {type:'line'}, | 
|  | {type:'line'} | 
|  | ] | 
|  | }; | 
|  | testHelper.create(echarts, 'key-columns', { | 
|  | title: 'category: no encode declared, two value axis', | 
|  | dataTable: keyColumnsDrink, | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | [21, 120, 220, 150, 320, 820], | 
|  | [21, 132, 182, 232, 332, 932], | 
|  | [21, 101, 191, 201, 301, 901], | 
|  | [21, 134, 234, 154, 334, 934], | 
|  | [21, 90, 290, 190, 309, 1290], | 
|  | [21, 230, 330, 330, 330, 1330], | 
|  | [21, 210, 310, 410, 320, 1320] | 
|  | ]; | 
|  | var option = { | 
|  | legend: { | 
|  | data: ['A', 'B', 'C'] | 
|  | }, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | grid: { | 
|  | left: '3%', | 
|  | right: '4%', | 
|  | bottom: '3%', | 
|  | containLabel: true | 
|  | }, | 
|  | xAxis: {}, | 
|  | yAxis: {}, | 
|  | dataset: [{ | 
|  | source: source | 
|  | }], | 
|  | series: [ | 
|  | { | 
|  | name:'A', | 
|  | type:'line', | 
|  | }, | 
|  | { | 
|  | name:'B', | 
|  | type:'line', | 
|  | }, | 
|  | { | 
|  | name:'C', | 
|  | type:'line', | 
|  | } | 
|  | ] | 
|  | }; | 
|  | testHelper.create(echarts, 'category-no-encode-two-value-axis', { | 
|  | title: 'category: no encode declared, two value axis', | 
|  | option: option, | 
|  | dataTable: source | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | ['周一', 120, '苹果', 150, 320, 820], | 
|  | ['周二', 132, '狸猫', 232, 332, 932], | 
|  | ['周三', 101, '周一', 201, 301, 901], | 
|  | ['周四', 134, '周八', 154, 334, 934], | 
|  | ['周五', 90, '周六', 190, 309, 1290], | 
|  | ['周六', 230, '-', 330, 330, 1330], | 
|  | ['周日', 210, '周日', 410, 320, 1320] | 
|  | ]; | 
|  | var option = { | 
|  | legend: { | 
|  | data:[ | 
|  | '{x: 0, y: 1}', | 
|  | '{x: 2, y: 3}', | 
|  | '{x: 2, y: 4}', | 
|  | '{x: 1, y: 2}', | 
|  | '{x: 2, y: 0}' | 
|  | ] | 
|  | }, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | grid: { | 
|  | bottom: 70 | 
|  | }, | 
|  | xAxis: [{ | 
|  | type: 'category', | 
|  | boundaryGap: false | 
|  | }], | 
|  | dataZoom: { | 
|  | type: 'slider' | 
|  | }, | 
|  | yAxis: [{ | 
|  | type: 'value' | 
|  | }, { | 
|  | type: 'category' | 
|  | }], | 
|  | dataset: [{ | 
|  | source: source | 
|  | }, { | 
|  | source: [ | 
|  | [122, '第二个 dataset', 44], | 
|  | [56, '周六', 10], | 
|  | [96, '狸猫', 112] | 
|  | ] | 
|  | }], | 
|  | series: [ | 
|  | { | 
|  | name:'{x: 0, y: 1}', | 
|  | type:'line', | 
|  | encode: {x: 0, y: 1} | 
|  | }, | 
|  | { | 
|  | name:'{x: 2, y: 3}', | 
|  | type:'line', | 
|  | encode: {x: 2, y: 3} | 
|  | }, | 
|  | { | 
|  | name:'{x: 2, y: 4}', | 
|  | type:'line', | 
|  | encode: {x: 2, y: 4} | 
|  | }, | 
|  | { | 
|  | name:'{x: 1, y: 2}', | 
|  | type:'line', | 
|  | encode: {x: 1, y: 2}, | 
|  | datasetIndex: 1 | 
|  | }, | 
|  | { | 
|  | name: '{x: 2, y: 0}', | 
|  | type: 'scatter', | 
|  | yAxisIndex: 1, | 
|  | symbolSize: function (val) { | 
|  | return val[5] / 30; | 
|  | }, | 
|  | encode: {x: 2, y: 0} | 
|  | } | 
|  | ] | 
|  | }; | 
|  |  | 
|  | testHelper.create(echarts, 'category-no-axis-data-multi', { | 
|  | title: 'category: no axis.data, multi category', | 
|  | dataTable: source, | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | ['周一', 120, 220, 150, 320, 820], | 
|  | ['周二', 132, 182, 232, 332, 932], | 
|  | ['周三', 101, 191, 201, 301, 901], | 
|  | ['周四', 134, 234, 154, 334, 934], | 
|  | ['周五', 90, 290, 190, 309, 1290], | 
|  | ['周六', 230, 330, 330, 330, 1330], | 
|  | ['周日', 210, 310, 410, 320, 1320] | 
|  | ]; | 
|  | var option = { | 
|  | legend: { | 
|  | data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] | 
|  | }, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | grid: { | 
|  | left: '3%', | 
|  | right: '4%', | 
|  | bottom: '3%', | 
|  | containLabel: true | 
|  | }, | 
|  | xAxis: [ | 
|  | { | 
|  | type: 'category', | 
|  | boundaryGap: false | 
|  | } | 
|  | ], | 
|  | yAxis: [ | 
|  | { | 
|  | type: 'value' | 
|  | } | 
|  | ], | 
|  | dataset: { | 
|  | source: source | 
|  | }, | 
|  | series: [ | 
|  | { | 
|  | name:'邮件营销', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'联盟广告', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'视频广告', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'直接访问', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'搜索引擎', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | label: {show: true}, | 
|  | areaStyle: {normal: {}} | 
|  | } | 
|  | ] | 
|  | }; | 
|  |  | 
|  | testHelper.create(echarts, 'category-no-encode-no-axis-data-single', { | 
|  | title: 'category: no encode declared, no axis.data, single category', | 
|  | dataTable: source, | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | ['周一', 120, 220, 150, 320, 820], | 
|  | ['周二', 132, 182, 232, 332, 932], | 
|  | ['周三', 101, 191, 201, 301, 901], | 
|  | ['周四', 134, 234, 154, 334, 934], | 
|  | ['周五', 90, 290, 190, 309, 1290], | 
|  | ['周六', 230, 330, 330, 330, 1330], | 
|  | ['周日', 210, 310, 410, 320, 1320] | 
|  | ]; | 
|  | var option = { | 
|  | legend: { | 
|  | data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] | 
|  | }, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | grid: { | 
|  | left: '3%', | 
|  | right: '4%', | 
|  | bottom: '3%', | 
|  | containLabel: true | 
|  | }, | 
|  | xAxis: [ | 
|  | { | 
|  | type: 'category', | 
|  | boundaryGap: false, | 
|  | data: ['周零', '周一', '周二', '周三', '周四', '周五', '周六', '周日'] | 
|  | } | 
|  | ], | 
|  | yAxis: [ | 
|  | { | 
|  | type: 'value' | 
|  | } | 
|  | ], | 
|  | dataset: { | 
|  | source: source | 
|  | }, | 
|  | series: [ | 
|  | { | 
|  | name:'邮件营销', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'联盟广告', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'视频广告', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'直接访问', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}} | 
|  | }, | 
|  | { | 
|  | name:'搜索引擎', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | label: {show: true}, | 
|  | areaStyle: {normal: {}} | 
|  | } | 
|  | ] | 
|  | }; | 
|  | testHelper.create(echarts, 'category-no-encode-has-axis-data', { | 
|  | title: 'category: no encode declared, axis.data given', | 
|  | dataTable: source, | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | ['周一', 120, 220, 150, 320, 820], | 
|  | ['周二', 132, 182, 232, 332, 932], | 
|  | ['周三', 101, 191, 201, 301, 901], | 
|  | ['周四', 134, 234, 154, 334, 934], | 
|  | ['周五', 90, 290, 190, 309, 1290], | 
|  | ['周六', 230, 330, 330, 330, 1330], | 
|  | ['周日', 210, 310, 410, 320, 1320] | 
|  | ]; | 
|  | var option = { | 
|  | tooltip: { | 
|  | trigger: 'axis', | 
|  | axisPointer: { | 
|  | type: 'cross', | 
|  | label: { | 
|  | backgroundColor: '#6a7985' | 
|  | } | 
|  | } | 
|  | }, | 
|  | legend: { | 
|  | data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] | 
|  | }, | 
|  | toolbox: { | 
|  | feature: { | 
|  | saveAsImage: {} | 
|  | } | 
|  | }, | 
|  | grid: { | 
|  | left: '3%', | 
|  | right: '4%', | 
|  | bottom: '3%', | 
|  | containLabel: true | 
|  | }, | 
|  | xAxis: [ | 
|  | { | 
|  | type: 'category', | 
|  | boundaryGap: false | 
|  | } | 
|  | ], | 
|  | yAxis: [ | 
|  | { | 
|  | type: 'value' | 
|  | } | 
|  | ], | 
|  | dataset: { | 
|  | source: source | 
|  | }, | 
|  | series: [ | 
|  | { | 
|  | name:'邮件营销', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 0, y: 1} | 
|  | }, | 
|  | { | 
|  | name:'联盟广告', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 0, y: 2} | 
|  | }, | 
|  | { | 
|  | name:'视频广告', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 0, y: 3} | 
|  | }, | 
|  | { | 
|  | name:'直接访问', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 0, y: 4} | 
|  | }, | 
|  | { | 
|  | name:'搜索引擎', | 
|  | type:'line', | 
|  | stack: '总量', | 
|  | label: { | 
|  | normal: { | 
|  | show: true, | 
|  | position: 'top' | 
|  | } | 
|  | }, | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 0, y: 5} | 
|  | } | 
|  | ] | 
|  | }; | 
|  | testHelper.create(echarts, 'category', { | 
|  | title: 'category: encode declared', | 
|  | dataTable: source, | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var source = [ | 
|  | ['周一', 120, 220, 150, 320, 820], | 
|  | ['周二', 132, 182, 232, 332, 932], | 
|  | ['周三', 101, 191, 201, 301, 901], | 
|  | ['周四', 134, 234, 154, 334, 934], | 
|  | ['周五', 90, 290, 190, 309, 1290], | 
|  | ['周六', 230, 330, 330, 330, 1330], | 
|  | ['周日', 210, 310, 410, 320, 1320] | 
|  | ]; | 
|  | var option = { | 
|  | tooltip: { | 
|  | }, | 
|  | legend: { | 
|  | data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎'] | 
|  | }, | 
|  | toolbox: { | 
|  | feature: { | 
|  | saveAsImage: {} | 
|  | } | 
|  | }, | 
|  | grid: { | 
|  | left: '3%', | 
|  | right: '4%', | 
|  | bottom: '3%', | 
|  | containLabel: true | 
|  | }, | 
|  | xAxis: {}, | 
|  | yAxis: {}, | 
|  | grid: { | 
|  | right: 50, | 
|  | bottom: 70 | 
|  | }, | 
|  | legend: { | 
|  | left: 'center', | 
|  | data: ['A Series', 'B Series'] | 
|  | }, | 
|  | dataZoom: [{ | 
|  | xAxisIndex: 0, | 
|  | type: 'inside' | 
|  | }, { | 
|  | yAxisIndex: 0, | 
|  | type: 'inside' | 
|  | }, { | 
|  | xAxisIndex: 0, | 
|  | type: 'slider' | 
|  | }, { | 
|  | yAxisIndex: 0, | 
|  | type: 'slider' | 
|  | }], | 
|  | dataset: { | 
|  | source: source | 
|  | }, | 
|  | series: [ | 
|  | { | 
|  | name:'A Series', | 
|  | type:'scatter', | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 2, y: 1} | 
|  | }, | 
|  | { | 
|  | name:'B Series', | 
|  | type:'scatter', | 
|  | areaStyle: {normal: {}}, | 
|  | encode: {x: 4, y: 1} | 
|  | } | 
|  | ] | 
|  | }; | 
|  | testHelper.create(echarts, 'two-value-axes', { | 
|  | title: 'two value axes (A: {x: 2, y: 1}, B: {x: 4, y: 1})', | 
|  | dataTable: source, | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  |  | 
|  | var option = { | 
|  | xAxis: {}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | { | 
|  | type:'line' | 
|  | } | 
|  | ] | 
|  | }; | 
|  |  | 
|  | testHelper.create(echarts, 'empty-data', { | 
|  | title: 'data and dataset undefined, only axis shown.', | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  |  | 
|  | var option = { | 
|  | xAxis: {}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | { | 
|  | type:'line' | 
|  | } | 
|  | ], | 
|  | dataset: { | 
|  | source: [] | 
|  | } | 
|  | }; | 
|  |  | 
|  | testHelper.create(echarts, 'empty-source', { | 
|  | title: 'data.source = [], only axis shown.', | 
|  | option: option | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | xAxis: {type: 'category'}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | {type:'line', encode: {x: 'date', y: 'Matcha Latte', itemId: 'date'}}, | 
|  | {type:'line', encode: {x: 'date', y: 'Milk Tea', itemId: 'date'}}, | 
|  | {type:'line', encode: {x: 'date', y: 'Cheese Cocoa', itemId: 'date'}}, | 
|  | {type:'line', encode: {x: 'date', y: 'Walnut Brownie', itemId: 'date'}} | 
|  | ] | 
|  | }; | 
|  |  | 
|  | var baseSource = [ | 
|  | ['date', 'Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'], | 
|  | ['2012-03-01', 11.1, 40.4, 65.1, 13.3], | 
|  | ['2012-03-02', 36.5, 52.1, 85.7, 23.1], | 
|  | ['2012-03-03', 64.1, 17.2, 99.5, 16.4], | 
|  | ['2012-03-04', 15.2, 77.1, 29.2, 62.4], | 
|  | ['2012-03-05', 55.4, 73.1, 49.2, 22.9], | 
|  | ['2012-03-06', 35.2, 27.1, 24.6, 92.7], | 
|  | ['2012-03-07', 51.7, 57.1, 89.1, 69.2] | 
|  | ]; | 
|  | var lastDate = +echarts.number.parseDate('2012-03-07'); | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'dynamic-category', { | 
|  | title: 'dynamic-category', | 
|  | dataTable: keyColumnsDrink, | 
|  | option: option, | 
|  | info: baseSource | 
|  | }); | 
|  |  | 
|  | if (chart) { | 
|  | setInterval(function () { | 
|  | lastDate += 3600 * 24 * 1000; | 
|  |  | 
|  | baseSource.push([ | 
|  | echarts.format.formatTime('yyyy-MM-dd', lastDate), | 
|  | +(Math.random() * 100).toFixed(1), | 
|  | +(Math.random() * 100).toFixed(1), | 
|  | +(Math.random() * 100).toFixed(1), | 
|  | +(Math.random() * 100).toFixed(1) | 
|  | ]); | 
|  |  | 
|  | baseSource.splice(1, 1); | 
|  |  | 
|  | chart.setOption({ | 
|  | dataset: { | 
|  | source: baseSource | 
|  | } | 
|  | }); | 
|  | }, 1000); | 
|  | } | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {trigger: 'axis'}, | 
|  | xAxis: {type: 'time'}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | {type:'line', encode: {x: 'date', y: 'Matcha Latte', itemId: 'date'}}, | 
|  | {type:'line', encode: {x: 'date', y: 'Milk Tea', itemId: 'date'}}, | 
|  | {type:'line', encode: {x: 'date', y: 'Cheese Cocoa', itemId: 'date'}}, | 
|  | {type:'line', encode: {x: 'date', y: 'Walnut Brownie', itemId: 'date'}} | 
|  | ] | 
|  | }; | 
|  |  | 
|  | var baseSource = [ | 
|  | ['date', 'Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'], | 
|  | ['2012-03-01', 11.1, 40.4, 65.1, 13.3], | 
|  | ['2012-03-02', 36.5, 52.1, 85.7, 23.1], | 
|  | ['2012-03-03', 64.1, 17.2, 99.5, 16.4], | 
|  | ['2012-03-04', 15.2, 77.1, 29.2, 62.4], | 
|  | ['2012-03-05', 55.4, 73.1, 49.2, 22.9], | 
|  | ['2012-03-06', 35.2, 27.1, 24.6, 92.7], | 
|  | ['2012-03-07', 51.7, 57.1, 89.1, 69.2] | 
|  | ]; | 
|  | var lastDate = +echarts.number.parseDate('2012-03-07'); | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'dynamic-time', { | 
|  | title: 'dynamic-time', | 
|  | dataTable: keyColumnsDrink, | 
|  | option: option, | 
|  | info: baseSource | 
|  | }); | 
|  |  | 
|  | if (chart) { | 
|  | setInterval(function () { | 
|  | lastDate += 3600 * 24 * 1000; | 
|  |  | 
|  | baseSource.push([ | 
|  | echarts.format.formatTime('yyyy-MM-dd', lastDate), | 
|  | +(Math.random() * 100).toFixed(1), | 
|  | +(Math.random() * 100).toFixed(1), | 
|  | +(Math.random() * 100).toFixed(1), | 
|  | +(Math.random() * 100).toFixed(1) | 
|  | ]); | 
|  |  | 
|  | baseSource.splice(1, 1); | 
|  |  | 
|  | chart.setOption({ | 
|  | dataset: { | 
|  | source: baseSource | 
|  | } | 
|  | }); | 
|  | }, 1000); | 
|  | } | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  |  | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {}, | 
|  | dataset: { | 
|  | dimensions: ['product', '2015', '2016', '2017'], | 
|  | source: [ | 
|  | {product: 'Matcha Latte', '2015': 43.3, '2016': 85.8}, | 
|  | {product: 'Milk Tea', '2015': 83.1, '2016': 73.4}, | 
|  | {product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2}, | 
|  | {product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9} | 
|  | ] | 
|  | }, | 
|  | xAxis: {type: 'category'}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | {type: 'bar'}, | 
|  | {type: 'bar'} | 
|  | ] | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'dimension-but-no-column1', { | 
|  | title: '[obejct array] No 2017, but chart should be rendered', | 
|  | dataTable: option.dataset.source, | 
|  | option: option, | 
|  | info: option.dataset.dimensions, | 
|  | infoKey: 'dimensions' | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  |  | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {}, | 
|  | dataset: { | 
|  | dimensions: ['product', '2015', '2016', '2017'], | 
|  | source: [ | 
|  | ['Matcha Latte', 43.3, 85.8], | 
|  | ['Milk Tea', 83.1, 73.4], | 
|  | ['Cheese Cocoa', 86.4, 65.2], | 
|  | ['Walnut Brownie', 72.4, 53.9] | 
|  | ] | 
|  | }, | 
|  | xAxis: {type: 'category'}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | {type: 'bar'}, | 
|  | {type: 'bar'} | 
|  | ] | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'dimension-but-no-column2', { | 
|  | title: '[2d-array] No 2017, but chart should be rendered', | 
|  | dataTable: option.dataset.source, | 
|  | option: option, | 
|  | info: option.dataset.dimensions, | 
|  | infoKey: 'dimensions' | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  |  | 
|  | var option = { | 
|  | legend: {}, | 
|  | tooltip: {}, | 
|  | dataset: { | 
|  | dimensions: ['product', '2015', '2016', '2017'], | 
|  | source: { | 
|  | 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'], | 
|  | '2015': [43.3, 83.1, 86.4, 72.4], | 
|  | '2016': [85.8, 73.4, 65.2, 53.9] | 
|  | } | 
|  | }, | 
|  | xAxis: {type: 'category'}, | 
|  | yAxis: {}, | 
|  | series: [ | 
|  | {type: 'bar'}, | 
|  | {type: 'bar'} | 
|  | ] | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'dimension-but-no-column3', { | 
|  | title: '[key columns] No 2017, but chart should be rendered', | 
|  | dataTable: option.dataset.source, | 
|  | option: option, | 
|  | info: option.dataset.dimensions, | 
|  | infoKey: 'dimensions' | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  | </body> | 
|  | </html> |