| /* |
| * 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. |
| */ |
| |
| /*jshint unused:false*/ |
| /*jshint camelcase:false*/ |
| |
| function createChart(id, echarts, option, height) { |
| return window.testHelper.createChart(echarts, id, option, height); |
| } |
| |
| function extend(target, source) { |
| for (var key in source) { |
| if (source.hasOwnProperty(key)) { |
| target[key] = source[key]; |
| } |
| } |
| return target; |
| } |
| |
| function makeCategoryData(scale, catePrefix, dataCount) { |
| var categoryData = []; |
| var data1 = []; |
| var data2 = []; |
| var data3 = []; |
| scale = scale || 1; |
| catePrefix = catePrefix || 'category'; |
| dataCount = dataCount || 10; |
| |
| categoryData.push(catePrefix + -1); |
| data1.push('-'); |
| data2.push('-'); |
| data3.push('-'); |
| |
| for (var i = 0; i < 5; i++) { |
| categoryData.push(catePrefix + i); |
| data1.push(((-Math.random() - 0.2) * scale).toFixed(3)); |
| data2.push(((Math.random() + 0.3) * scale).toFixed(3)); |
| data3.push(((Math.random() + 0.2) * scale).toFixed(3)); |
| } |
| |
| categoryData.push(catePrefix + i); |
| data1.push('-'); |
| data2.push('-'); |
| data3.push('-'); |
| |
| for (; i < dataCount - 1; i++) { |
| categoryData.push(catePrefix + i); |
| data1.push(((-Math.random() - 0.2) * scale).toFixed(3)); |
| data2.push(((Math.random() + 0.3) * scale).toFixed(3)); |
| data3.push(((Math.random() + 0.2) * scale).toFixed(3)); |
| } |
| categoryData.push(catePrefix + i); |
| data1.push('-'); |
| data2.push('-'); |
| data3.push('-'); |
| |
| return {categoryData: categoryData, data1: data1, data2: data2, data3: data3}; |
| } |
| |
| function makeValueData() { |
| var data1 = []; |
| var data2 = []; |
| var data3 = []; |
| |
| data1.push(['-', '-']); |
| data2.push(['-', '-']); |
| data3.push(['-', '-']); |
| |
| for (var i = 0; i < 5; i++) { |
| data1.push([(Math.random() * 1000).toFixed(2), (-Math.random() - 0.4).toFixed(3)]); |
| data2.push([(Math.random() * 1000).toFixed(2), (Math.random() + 1.8).toFixed(3)]); |
| data3.push([(Math.random() * 1000).toFixed(2), (Math.random() + 0.2).toFixed(3)]); |
| } |
| |
| data1.push(['-', '-']); |
| data2.push(['-', '-']); |
| data3.push(['-', '-']); |
| |
| for (; i < 10; i++) { |
| data1.push([(Math.random() * 1000).toFixed(2), (-Math.random() - 0.2).toFixed(3)]); |
| data2.push([(Math.random() * 1000).toFixed(2), (Math.random() + 0.3).toFixed(3)]); |
| data3.push([(Math.random() * 1000).toFixed(2), (Math.random() + 0.2).toFixed(3)]); |
| } |
| data1.push(['-', '-']); |
| data2.push(['-', '-']); |
| data3.push(['-', '-']); |
| |
| return {data1: data1, data2: data2, data3: data3}; |
| } |
| |
| |
| function makeTimeData() { |
| var data1 = []; |
| var data2 = []; |
| var data3 = []; |
| |
| data1.push(['-', '-']); |
| data2.push(['-', '-']); |
| data3.push(['-', '-']); |
| |
| var day = 3600 * 1000 * 24; |
| var time = +new Date(2017, 2, 15); |
| for (var i = 0; i < 100; i++, time += day) { |
| var d = new Date(time); |
| var dayStr = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-'); |
| data1.push([dayStr, (-Math.random() - 0.2).toFixed(3)]); |
| var val2 = (Math.random() + 0.3).toFixed(3); |
| if (i >= 25 && i <= 30) { |
| val2 = '-'; |
| } |
| var val3 = (Math.random() + 0.2).toFixed(3); |
| if (i >= 25 && i <= 30) { |
| val3 = '-'; |
| } |
| data2.push([dayStr, val2]); |
| data3.push([dayStr, val3]); |
| } |
| |
| return {data1: data1, data2: data2, data3: data3}; |
| } |
| |
| function getArray(obj, name) { |
| return (obj[name] = obj[name] || []); |
| } |
| |
| function makeCategoryPolar(option, patterns, inV) { |
| var data = makeCategoryData(); |
| var key = Math.random().toFixed(5); |
| |
| option.legend = option.legend || { |
| tooltip: {show: true} |
| }; |
| getArray(option.legend, 'data').push('line1' + key, 'line2' + key, 'line3' + key); |
| |
| var polar = extend({}, patterns.polar); |
| polar.id = 'polar' + key; |
| getArray(option, 'polar').push(polar); |
| |
| var axisNames = ['radiusAxis', 'angleAxis']; |
| inV && axisNames.reverse(); |
| |
| getArray(option, axisNames[0]).push(extend({ |
| id: axisNames[0] + key, |
| polarId: polar.id, |
| data: data.categoryData, |
| boundaryGap: false, |
| splitArea: { |
| show: true |
| } |
| }, patterns[axisNames[0]])); |
| |
| getArray(option, axisNames[1]).push(extend({ |
| id: axisNames[1] + key, |
| polarId: polar.id, |
| nameLocation: 'middle', |
| nameGap: 40 |
| }, patterns[axisNames[1]])); |
| |
| var patternsSeries = patterns.series || []; |
| |
| getArray(option, 'series').push( |
| extend({ |
| id: 'line1-id' + key, |
| name: 'line1' + key, |
| coordinateSystem: 'polar', |
| polarId: polar.id, |
| type: 'line', |
| symbolSize: 10, |
| data: data.data1, |
| connectNulls: true |
| }, patternsSeries[0]), |
| extend({ |
| id: 'line2-id' + key, |
| name: 'line2' + key, |
| coordinateSystem: 'polar', |
| polarId: polar.id, |
| type: 'line', |
| symbolSize: 10, |
| data: data.data2 |
| }, patternsSeries[1]), |
| extend({ |
| id: 'line3-id' + key, |
| name: 'line3' + key, |
| coordinateSystem: 'polar', |
| polarId: polar.id, |
| type: 'line', |
| symbolSize: 10, |
| symbol: 'circle', |
| data: data.data3, |
| label: { |
| normal: { |
| show: true |
| } |
| } |
| }, patternsSeries[2]) |
| ); |
| } |
| |
| function makeCategoryGrid(option, patterns, inV, dataCount, seriesType, catePrefix) { |
| var data = makeCategoryData(null, catePrefix, dataCount); |
| var key = Math.random().toFixed(5); |
| seriesType = seriesType || 'line'; |
| |
| option.legend = option.legend || { |
| tooltip: {show: true} |
| }; |
| getArray(option.legend, 'data').push('line1' + key, 'line2' + key, 'line3' + key); |
| |
| var grid = extend({}, patterns.grid); |
| grid.id = 'grid' + key; |
| getArray(option, 'grid').push(grid); |
| |
| var axisNames = ['xAxis', 'yAxis']; |
| inV && axisNames.reverse(); |
| |
| getArray(option, axisNames[0]).push(extend({ |
| id: axisNames[0] + key, |
| gridId: grid.id, |
| data: data.categoryData, |
| boundaryGap: false, |
| splitArea: { |
| show: true |
| } |
| }, patterns[axisNames[0]])); |
| |
| getArray(option, axisNames[1]).push(extend({ |
| id: axisNames[1] + key, |
| gridId: grid.id, |
| nameLocation: 'middle', |
| nameGap: 40 |
| }, patterns[axisNames[1]])); |
| |
| var patternsSeries = patterns.series || []; |
| |
| getArray(option, 'series').push( |
| extend({ |
| id: 'line1-id' + key, |
| name: 'line1' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: seriesType, |
| symbolSize: 10, |
| data: data.data1, |
| smooth: true, |
| connectNulls: true |
| }, patternsSeries[0]), |
| extend({ |
| id: 'line2-id' + key, |
| name: 'line2' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: seriesType, |
| symbolSize: 10, |
| data: data.data2, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[1]), |
| extend({ |
| id: 'line3-id' + key, |
| name: 'line3' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: seriesType, |
| symbolSize: 10, |
| symbol: 'circle', |
| data: data.data3, |
| label: { |
| normal: { |
| show: true |
| } |
| }, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[2]) |
| ); |
| } |
| |
| function makeValueGrid(option, patterns) { |
| var data = makeValueData(); |
| var key = Math.random().toFixed(5); |
| |
| option.legend = option.legend || { |
| tooltip: {show: true} |
| }; |
| getArray(option.legend, 'data').push('line1' + key, 'line2' + key, 'line3' + key); |
| |
| var grid = extend({}, patterns.grid); |
| grid.id = 'grid' + key; |
| getArray(option, 'grid').push(grid); |
| |
| getArray(option, 'xAxis').push(extend({ |
| id: 'xAxis' + key, |
| gridId: grid.id, |
| type: 'value', |
| splitArea: { |
| show: true |
| } |
| }, patterns['xAxis'])); |
| |
| getArray(option, 'yAxis').push(extend({ |
| id: 'yAxis' + key, |
| gridId: grid.id, |
| nameLocation: 'middle', |
| nameGap: 40 |
| }, patterns['yAxis'])); |
| |
| var patternsSeries = patterns.series || []; |
| |
| getArray(option, 'series').push( |
| extend({ |
| id: 'scatter1-id' + key, |
| name: 'scatter1' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: 'scatter', |
| symbolSize: 10, |
| data: data.data1, |
| smooth: true, |
| connectNulls: true |
| }, patternsSeries[0]), |
| extend({ |
| id: 'scatter2-id' + key, |
| name: 'scatter2' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: 'scatter', |
| symbolSize: 10, |
| data: data.data2, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[1]), |
| extend({ |
| id: 'scatter3-id' + key, |
| name: 'scatter3' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: 'scatter', |
| symbolSize: 10, |
| symbol: 'circle', |
| data: data.data3, |
| label: { |
| normal: { |
| show: true, |
| textStyle: {color: '#333'} |
| } |
| }, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[2]) |
| ); |
| } |
| |
| |
| function makeTimeGrid(option, patterns) { |
| var data = makeTimeData(); |
| var key = Math.random().toFixed(5); |
| |
| option.legend = option.legend || { |
| tooltip: {show: true} |
| }; |
| getArray(option.legend, 'data').push('scatter1' + key, 'scatter2' + key, 'scatter3' + key); |
| |
| var grid = extend({}, patterns.grid); |
| grid.id = 'grid' + key; |
| getArray(option, 'grid').push(grid); |
| |
| getArray(option, 'xAxis').push(extend({ |
| id: 'xAxis' + key, |
| type: 'time', |
| gridId: grid.id, |
| splitArea: { |
| show: true |
| } |
| }, patterns['xAxis'])); |
| |
| getArray(option, 'yAxis').push(extend({ |
| id: 'yAxis' + key, |
| gridId: grid.id, |
| nameLocation: 'middle', |
| nameGap: 40 |
| }, patterns['yAxis'])); |
| |
| var patternsSeries = patterns.series || []; |
| |
| getArray(option, 'series').push( |
| extend({ |
| id: 'scatter1-id' + key, |
| name: 'scatter1' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: 'line', |
| symbolSize: 5, |
| label: { |
| emphasis: { |
| show: true, |
| textStyle: { |
| color: '#333' |
| } |
| } |
| }, |
| data: data.data1, |
| smooth: true, |
| connectNulls: true |
| }, patternsSeries[0]), |
| extend({ |
| id: 'scatter2-id' + key, |
| name: 'scatter2' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: 'line', |
| symbolSize: 5, |
| label: { |
| emphasis: { |
| show: true, |
| textStyle: { |
| color: '#333' |
| } |
| } |
| }, |
| data: data.data2, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[1]), |
| extend({ |
| id: 'scatter3-id' + key, |
| name: 'scatter3' + key, |
| xAxisId: 'xAxis' + key, |
| yAxisId: 'yAxis' + key, |
| type: 'line', |
| symbolSize: 5, |
| symbol: 'circle', |
| data: data.data3, |
| label: { |
| emphasis: { |
| show: true, |
| textStyle: { |
| color: '#333' |
| } |
| } |
| }, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[2]) |
| ); |
| } |
| |
| function makeCategoryCartesian(option, patterns, xAxisIndex, yAxisIndex, scale, catePrefix) { |
| var data = makeCategoryData(scale, catePrefix); |
| var key = Math.random().toFixed(5); |
| |
| var axisColors = [ |
| '#2f4554', '#c23531', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3' |
| ]; |
| if (option.___test_axisColorIndex == null) { |
| option.___test_axisColorIndex = 0; |
| } |
| |
| option.legend = option.legend || { |
| tooltip: {show: true} |
| }; |
| getArray(option.legend, 'data').push('line1' + key, 'line2' + key, 'line3' + key); |
| |
| var xAxes = getArray(option, 'xAxis'); |
| var yAxes = getArray(option, 'yAxis'); |
| |
| if (!xAxes[xAxisIndex]) { |
| xAxes[xAxisIndex] = extend({ |
| data: data.categoryData, |
| boundaryGap: false, |
| splitArea: { |
| show: true |
| }, |
| axisLine: { |
| lineStyle: { |
| color: axisColors[option.___test_axisColorIndex++] |
| } |
| } |
| }, patterns['xAxis']); |
| } |
| if (!yAxes[yAxisIndex]) { |
| yAxes[yAxisIndex] = extend({ |
| nameLocation: 'middle', |
| nameGap: 40, |
| axisLine: { |
| lineStyle: { |
| color: axisColors[option.___test_axisColorIndex++] |
| } |
| } |
| }, patterns['yAxis']); |
| } |
| |
| var patternsSeries = patterns.series || []; |
| |
| getArray(option, 'series').push( |
| extend({ |
| id: 'line1-id' + key, |
| name: 'line1' + key, |
| xAxisIndex: xAxisIndex, |
| yAxisIndex: yAxisIndex, |
| type: 'line', |
| symbolSize: 10, |
| itemStyle: { |
| normal: { |
| color: yAxes[yAxisIndex].axisLine.lineStyle.color |
| } |
| }, |
| data: data.data1, |
| smooth: true, |
| connectNulls: true |
| }, patternsSeries[0]), |
| extend({ |
| id: 'line2-id' + key, |
| name: 'line2' + key, |
| xAxisIndex: xAxisIndex, |
| yAxisIndex: yAxisIndex, |
| itemStyle: { |
| normal: { |
| color: yAxes[yAxisIndex].axisLine.lineStyle.color |
| } |
| }, |
| type: 'line', |
| symbolSize: 10, |
| data: data.data2, |
| connectNulls: true, |
| smooth: true |
| }, patternsSeries[1]) |
| ); |
| } |