blob: e0d510aa118d202d41485494093492df6c864e73 [file]
<!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>
<link rel="stylesheet" href="lib/reset.css" />
</head>
<body>
<style>
.chart {
height: 350px;
margin: 20px 0;
}
</style>
<div id="main0" class="chart"></div>
<div id="main1" class="chart"></div>
<div id="main2" class="chart"></div>
<div id="main3" class="chart"></div>
<div id="main4" class="chart"></div>
<div id="main5" class="chart"></div>
<div id="main6" class="chart"></div>
<div id="main7" class="chart"></div>
<div id="main8" class="chart"></div>
<div id="main9" class="chart"></div>
<script>
require(['echarts'], function (echarts) {
// Basic data
var baseData = [820, 932, 901, 934, 1290, 1330, 1320];
var days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
// Data with negative values
var negativeData = [120, -132, 201, -234, 290, -330, 320];
// Log axis data (must be positive)
var logData = [5, 20, 36, 100, 500, 1200, 3500];
// Test 1: Basic dataMax usage (dataMax > actual data maximum)
var chart1 = testHelper.create(echarts, 'main0', {
title: 'dataMax > actual data',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'value',
dataMax: 1555, // Greater than actual data maximum 1330
},
series: [
{
data: baseData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 2: dataMax < actual data maximum (should not affect range)
var chart2 = testHelper.create(echarts, 'main1', {
title: 'dataMax < actual data (no effect on range)',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'value',
dataMax: 1000, // Less than actual data maximum 1330, should not affect
},
series: [
{
data: baseData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 3: Negative data + dataMin usage (dataMin < actual data minimum)
var chart3 = testHelper.create(echarts, 'main2', {
title: 'Negative data + dataMin < actual data',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'value',
dataMin: -500, // Less than actual data minimum -330
},
series: [
{
data: negativeData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 4: Negative data + dataMin > actual data minimum (should not affect range)
var chart4 = testHelper.create(echarts, 'main3', {
title: 'Negative data + dataMin > actual data (no effect on range)',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'value',
dataMin: -100, // Greater than actual data minimum -330, should not affect
},
series: [
{
data: negativeData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 5: Negative data + using both dataMin and dataMax
var chart5 = testHelper.create(echarts, 'main4', {
title: 'Negative data + using both dataMin and dataMax',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'value',
dataMin: -500,
dataMax: 500,
},
series: [
{
data: negativeData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 6: Comparing with min/max properties
var chart6 = testHelper.create(echarts, 'main5', {
title: 'min/max vs dataMin/dataMax (negative data)',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'value',
min: -500,
max: 500,
},
series: [
{
data: negativeData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 7: Using dataMin/dataMax on category axis (should have no effect)
var chart7 = testHelper.create(echarts, 'main6', {
title: 'dataMin/dataMax on category axis (no effect)',
option: {
yAxis: {
type: 'category',
data: days,
dataMin: 2, // No effect on category axis
dataMax: 5, // No effect on category axis
},
xAxis: {
type: 'value'
},
series: [
{
data: negativeData,
type: 'bar'
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 8: Log axis + dataMin usage
var chart8 = testHelper.create(echarts, 'main7', {
title: 'Log axis + dataMin usage',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'log',
dataMin: 0.5, // Using a smaller fraction, much less than actual data minimum 5
},
series: [
{
data: logData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 9: Log axis + dataMax usage
var chart9 = testHelper.create(echarts, 'main8', {
title: 'Log axis + dataMax usage',
option: {
xAxis: {
type: 'category',
data: days
},
yAxis: {
type: 'log',
dataMax: 100000, // Greater than actual data maximum 3500
},
series: [
{
data: logData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis'
}
}
});
// Test 10: Time axis + dataMin/dataMax usage
var timeData = [];
var timeLabels = [];
var baseTime = new Date('2024-01-01').getTime();
for (let i = 0; i < 7; i++) {
var time = baseTime + i * 24 * 3600 * 1000; // Add days
timeLabels.push(time);
timeData.push([time, 820 + Math.random() * 500]);
}
var chart10 = testHelper.create(echarts, 'main9', {
title: 'Time axis + dataMin/dataMax usage',
option: {
xAxis: {
type: 'time',
dataMin: baseTime - 2 * 24 * 3600 * 1000, // 2 days before first data point
dataMax: baseTime + 8 * 24 * 3600 * 1000, // 1 day after last data point
},
yAxis: {
type: 'value'
},
series: [
{
data: timeData,
type: 'line',
smooth: true
}
],
tooltip: {
trigger: 'axis',
formatter: function (params) {
var date = new Date(params[0].value[0]);
return date.toLocaleDateString() + '<br/>' +
params[0].seriesName + ': ' + params[0].value[1].toFixed(2);
}
}
}
});
});
</script>
</body>
</html>