blob: 0ec73d9ca03f45e43ded0b6d1db0104c65bf62ec [file] [log] [blame]
/*
* 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])
);
}