661 lines
21 KiB
HTML
Generated
661 lines
21 KiB
HTML
Generated
|
|
<!--
|
|
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="../dist/echarts.js"></script>
|
|
<script src="lib/testHelper.js"></script>
|
|
<script src="lib/facePrint.js"></script>
|
|
<script src="lib/jquery.min.js"></script>
|
|
<script src="lib/config.js"></script>
|
|
<script src="lib/simpleRequire.js"></script>
|
|
<link rel="stylesheet" href="lib/reset.css" />
|
|
</head>
|
|
<body>
|
|
<style>
|
|
h1 {
|
|
line-height: 60px;
|
|
background: #360;
|
|
text-align: center;
|
|
font-weight: bold;
|
|
color: #eee;
|
|
font-size: 14px;
|
|
margin: 0;
|
|
}
|
|
.chart {
|
|
height: 400px;
|
|
}
|
|
.by-dispatch-action {
|
|
padding: 5px;
|
|
}
|
|
</style>
|
|
|
|
<div id="main0"></div>
|
|
<div id="main2"></div>
|
|
<div id="main3"></div>
|
|
<div id="main4"></div>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
function makeButtons(ctx) {
|
|
|
|
function printStates() {
|
|
var option = ctx.chart.getOption();
|
|
var dzs = option.dataZoom;
|
|
var info = [{
|
|
type: dzs[0].type,
|
|
start: dzs[0].start,
|
|
end: dzs[0].end,
|
|
startValue: dzs[0].startValue,
|
|
endValue: dzs[0].endValue
|
|
}, {
|
|
type: dzs[1].type,
|
|
start: dzs[1].start,
|
|
end: dzs[1].end,
|
|
startValue: dzs[1].startValue,
|
|
endValue: dzs[1].endValue
|
|
}]
|
|
console.log('!!! ' + ctx.hint + ' !!!\n' + JSON.stringify(info, null, 2));
|
|
// alert(
|
|
// '!!! ' + ctx.hint + ' !!!\n' + JSON.stringify(info, null, 2)
|
|
// );
|
|
}
|
|
|
|
function dispatchPercent(start, end) {
|
|
ctx.chart.dispatchAction({
|
|
type: 'dataZoom',
|
|
batch: [
|
|
{id: 'dz-in', start: start, end: end},
|
|
{id: 'dz-s', start: start, end: end}
|
|
]
|
|
});
|
|
}
|
|
function dispatchValue(startValue, endValue) {
|
|
ctx.chart.dispatchAction({
|
|
type: 'dataZoom',
|
|
batch: [
|
|
{id: 'dz-in', startValue: startValue, endValue: endValue},
|
|
{id: 'dz-s', startValue: startValue, endValue: endValue}
|
|
]
|
|
});
|
|
}
|
|
|
|
var buttons = [];
|
|
|
|
echarts.util.each(ctx.percentButttons, function (item) {
|
|
buttons.push({
|
|
text: item.text,
|
|
onclick: function () {
|
|
dispatchPercent(item.start, item.end);
|
|
printStates();
|
|
}
|
|
})
|
|
});
|
|
echarts.util.each(ctx.valueButtons, function (item) {
|
|
buttons.push({
|
|
text: item.text,
|
|
onclick: function () {
|
|
dispatchValue(item.startValue, item.endValue);
|
|
printStates();
|
|
}
|
|
})
|
|
});
|
|
|
|
return buttons;
|
|
}
|
|
|
|
function getDefaultPercentButtons() {
|
|
return [{
|
|
text: '{start: -5, end: 5} over min',
|
|
start: -5,
|
|
end: 5
|
|
}, {
|
|
text: '{start: 95, end: 105} over max',
|
|
start: 95,
|
|
end: 105
|
|
}, {
|
|
text: '{start: 40, end: 60}',
|
|
start: 40,
|
|
end: 60
|
|
}, {
|
|
text: '{start: 40, end: 90} (over maxSpan)',
|
|
start: 40,
|
|
end: 90
|
|
}, {
|
|
text: '{start: 40, end: 41} (over minSpan)',
|
|
start: 40,
|
|
end: 41
|
|
}];
|
|
}
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
require(['./data/ec-star.json'], function (data) {
|
|
|
|
var minStartValue = '2013-06-06';
|
|
var maxEndValue = '2017-10-17';
|
|
|
|
var currStartValue = '2017-01-01';
|
|
var currEndValue = maxEndValue;
|
|
|
|
var option = {
|
|
animationDurationUpdate: 1000,
|
|
tooltip: {
|
|
trigger: 'axis'
|
|
},
|
|
xAxis: [{
|
|
type: 'time',
|
|
boundaryGap: false,
|
|
axisLabel:{
|
|
textStyle:{
|
|
fontSize:14
|
|
}
|
|
},
|
|
splitLine: {
|
|
show: false,
|
|
lineStyle:{
|
|
color:'#f7f7f7'
|
|
}
|
|
}
|
|
}],
|
|
yAxis: [{
|
|
type: 'value',
|
|
name: 'Github Star',
|
|
nameGap: 30,
|
|
nameTextStyle: {
|
|
fontSize: 20
|
|
},
|
|
axisLabel: {
|
|
fontSize: 15
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle:{
|
|
color:'#f7f7f7'
|
|
}
|
|
}
|
|
}],
|
|
grid: {
|
|
top: 120,
|
|
left: 30,
|
|
right: 30,
|
|
bottom: 50,
|
|
containLabel: true
|
|
},
|
|
dataZoom: [{
|
|
id: 'dz',
|
|
type: 'inside',
|
|
xAxisIndex: 0,
|
|
startValue: currStartValue,
|
|
endValue: currEndValue,
|
|
minValueSpan: 3600 * 24 * 1000 * 10
|
|
}, {
|
|
type: 'slider',
|
|
xAxisIndex: 0,
|
|
startValue: currStartValue,
|
|
endValue: currEndValue,
|
|
height: 20,
|
|
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
|
handleSize: '90%',
|
|
minSpanValue: 3600 * 24 * 1000 * 10
|
|
}],
|
|
visualMap: {
|
|
show: false,
|
|
type: 'continuous',
|
|
seriesIndex: 0,
|
|
min: 0,
|
|
max: 23000
|
|
},
|
|
series: [{
|
|
type: 'line',
|
|
name: 'Star',
|
|
lineStyle: {
|
|
normal: {
|
|
width: 4
|
|
}
|
|
},
|
|
itemStyle: {
|
|
normal: {
|
|
borderColor: '#fff',
|
|
borderWidth: 2
|
|
}
|
|
},
|
|
showSymbol: false,
|
|
symbol: 'circle',
|
|
hoverAnimation: false,
|
|
symbolSize: 15,
|
|
sampling: 'average',
|
|
// smooth: true,
|
|
// symbol: 'none',
|
|
data: data
|
|
}]
|
|
};
|
|
|
|
var myChart = testHelper.create(echarts, 'main0', {
|
|
option: option,
|
|
height: 300,
|
|
buttons: [{
|
|
text: 'Change Start Value',
|
|
onclick: function (phase) {
|
|
currStartValue = '2014-09-01';
|
|
myChart.dispatchAction({
|
|
type: 'dataZoom',
|
|
id: 'dz',
|
|
startValue: currStartValue
|
|
});
|
|
}
|
|
}, {
|
|
text: 'Change End Value',
|
|
onclick: function (phase) {
|
|
currEndValue = '2017-02-05';
|
|
myChart.dispatchAction({
|
|
type: 'dataZoom',
|
|
id: 'dz',
|
|
endValue: currEndValue
|
|
});
|
|
}
|
|
}, {
|
|
text: 'firstFocus',
|
|
onclick: function (phase) {
|
|
currStartValue = minStartValue;
|
|
currEndValue = '2013-11-06';
|
|
myChart.dispatchAction({
|
|
type: 'dataZoom',
|
|
id: 'dz',
|
|
startValue: currStartValue,
|
|
endValue: currEndValue
|
|
});
|
|
}
|
|
}]
|
|
});
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
var option;
|
|
|
|
var base = +new Date(1990, 9, 3);
|
|
var oneDay = 24 * 3600 * 1000;
|
|
var startValue = Math.random() * 300;
|
|
var data1 = [];
|
|
var category = [];
|
|
var specialNormal = [];
|
|
var specialLong = [];
|
|
var specialShort = [];
|
|
|
|
for (var i = 0; i < 100; i++) {
|
|
var now = new Date(base += oneDay);
|
|
var cat = [now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-');
|
|
category.push(cat);
|
|
value = Math.round((Math.random() - 0.5) * 20 + (!i ? startValue : data1[i - 1]));
|
|
data1.push(value);
|
|
if (i === 40) {
|
|
specialNormal[0] = cat;
|
|
specialLong[0] = cat;
|
|
specialShort[0] = cat;
|
|
}
|
|
else if (i === 42) {
|
|
specialShort[1] = cat;
|
|
}
|
|
else if (i === 55) {
|
|
specialNormal[1] = cat;
|
|
}
|
|
else if (i === 85) {
|
|
specialLong[1] = cat;
|
|
}
|
|
}
|
|
|
|
var option = {
|
|
tooltip: {
|
|
trigger: 'axis'
|
|
},
|
|
toolbox: {
|
|
feature: {
|
|
dataZoom: {
|
|
yAxisIndex: 'none'
|
|
},
|
|
restore: {},
|
|
saveAsImage: {}
|
|
}
|
|
},
|
|
xAxis: [{
|
|
type: 'category',
|
|
boundaryGap: false,
|
|
data: category
|
|
}],
|
|
yAxis: [{
|
|
type: 'value',
|
|
boundaryGap: [0, '100%']
|
|
}],
|
|
dataZoom: [{
|
|
type: 'inside',
|
|
id: 'dz-in',
|
|
start: 0,
|
|
end: 10,
|
|
minSpan: 5,
|
|
maxSpan: 30,
|
|
xAxisIndex: 0
|
|
}, {
|
|
id: 'dz-s',
|
|
start: 0,
|
|
end: 10,
|
|
minSpan: 5,
|
|
maxSpan: 30,
|
|
xAxisIndex: 0
|
|
}],
|
|
series: [{
|
|
type:'line',
|
|
symbolSize: 10,
|
|
data: data1
|
|
}]
|
|
};
|
|
|
|
function getBtnLabel(special, extra) {
|
|
extra = extra || '';
|
|
return 'startValue: "' + special[0] + ', endValue: "' + special[1] + '" ' + extra;
|
|
}
|
|
|
|
var ctx = {
|
|
hint: 'category axis value should be integer',
|
|
percentButttons: getDefaultPercentButtons(),
|
|
valueButtons: [{
|
|
text: getBtnLabel(specialNormal),
|
|
startValue: specialNormal[0],
|
|
endValue: specialNormal[1]
|
|
}, {
|
|
text: getBtnLabel(specialLong, 'over maxSpan'),
|
|
startValue: specialLong[0],
|
|
endValue: specialLong[1]
|
|
}, {
|
|
text: getBtnLabel(specialShort, 'over minSpan'),
|
|
startValue: specialShort[0],
|
|
endValue: specialShort[1]
|
|
}, {
|
|
}]
|
|
};
|
|
ctx.chart = testHelper.create(echarts, 'main2', {
|
|
option: option,
|
|
title: [
|
|
'(category axis) dispatchAction: {type: "dataZoom"}',
|
|
'range should not out of bound',
|
|
'minSpan: 5, maxSpan: 30'
|
|
],
|
|
height: 200,
|
|
buttons: makeButtons(ctx)
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
var option;
|
|
|
|
var base = +new Date(1990, 9, 3);
|
|
var oneDay = 24 * 3600 * 1000;
|
|
var startValue = Math.random() * 300;
|
|
var data2 = [];
|
|
var specialNormal = [];
|
|
var specialShort = [];
|
|
var specialLong = [];
|
|
|
|
for (var i = 0; i < 100; i++) {
|
|
var now = new Date(base += oneDay);
|
|
value = Math.round((Math.random() - 0.5) * 20 + (!i ? startValue : data2[i - 1][1]));
|
|
data2.push([now, value]);
|
|
if (i === 30) {
|
|
specialNormal[0] = +now;
|
|
specialShort[0] = +now;
|
|
specialLong[0] = +now;
|
|
}
|
|
else if (i === 32) {
|
|
specialShort[1] = +now;
|
|
}
|
|
else if (i === 38) {
|
|
specialNormal[1] = +now;
|
|
}
|
|
else if (i === 70) {
|
|
specialLong[1] = +now;
|
|
}
|
|
}
|
|
|
|
var option = {
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
position: function (pt) {
|
|
return [pt[0], '10%'];
|
|
}
|
|
},
|
|
toolbox: {
|
|
feature: {
|
|
dataZoom: {
|
|
yAxisIndex: 'none'
|
|
},
|
|
restore: {},
|
|
saveAsImage: {}
|
|
}
|
|
},
|
|
xAxis: [{
|
|
type: 'time'
|
|
}],
|
|
yAxis: [{
|
|
}],
|
|
dataZoom: [{
|
|
type: 'inside',
|
|
id: 'dz-in',
|
|
maxSpan: 30,
|
|
minSpan: 5,
|
|
start: 0,
|
|
end: 10
|
|
}, {
|
|
id: 'dz-s',
|
|
maxSpan: 30,
|
|
minSpan: 5,
|
|
start: 0,
|
|
end: 10
|
|
}],
|
|
series: [{
|
|
type:'line',
|
|
symbolSize: 10,
|
|
data: data2
|
|
}]
|
|
};
|
|
|
|
function fmt2Str(dt) {
|
|
return echarts.format.formatTime('yyyy-MM-dd', +dt)
|
|
}
|
|
function getBtnLabel(special, extra) {
|
|
extra = extra || '';
|
|
return 'startValue: "' + fmt2Str(special[0]) + '"('
|
|
+ special[0] + '), endValue: "' + fmt2Str(special[1])
|
|
+ '"(' + special[1] + ') ' + extra;
|
|
}
|
|
|
|
var ctx = {
|
|
hint: 'time axis value should be integer',
|
|
percentButttons: getDefaultPercentButtons(),
|
|
valueButtons: [{
|
|
text: getBtnLabel(specialNormal),
|
|
startValue: fmt2Str(specialNormal[0]),
|
|
endValue: fmt2Str(specialNormal[1])
|
|
}, {
|
|
text: getBtnLabel(specialShort, 'over minSpan'),
|
|
startValue: fmt2Str(specialShort[0]),
|
|
endValue: fmt2Str(specialShort[1])
|
|
}, {
|
|
text: getBtnLabel(specialLong, 'over maxSpan'),
|
|
startValue: fmt2Str(specialLong[0]),
|
|
endValue: fmt2Str(specialLong[1])
|
|
}]
|
|
};
|
|
ctx.chart = testHelper.create(echarts, 'main3', {
|
|
option: option,
|
|
title: [
|
|
'(time axis) dispatchAction: {type: "dataZoom"}',
|
|
'range should not out of bound',
|
|
'maxSpan: 30, minSpan: 5',
|
|
],
|
|
height: 200,
|
|
buttons: makeButtons(ctx)
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
var option;
|
|
|
|
var base = +new Date(1990, 9, 3);
|
|
var oneDay = 24 * 3600 * 1000;
|
|
var startValue = Math.random() * 300;
|
|
var data1 = [];
|
|
var category = []
|
|
|
|
for (var i = 0; i < 1000; i++) {
|
|
var now = new Date(base += oneDay);
|
|
category.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('-'));
|
|
value = Math.round((Math.random() - 0.5) * 20 + (!i ? startValue : data1[i - 1]));
|
|
data1.push(value);
|
|
}
|
|
|
|
var option = {
|
|
tooltip: {
|
|
trigger: 'axis'
|
|
},
|
|
toolbox: {
|
|
feature: {
|
|
dataZoom: {
|
|
yAxisIndex: 'none'
|
|
},
|
|
restore: {},
|
|
saveAsImage: {}
|
|
}
|
|
},
|
|
xAxis: [{
|
|
type: 'category',
|
|
boundaryGap: false,
|
|
data: category
|
|
}],
|
|
yAxis: [{
|
|
type: 'value',
|
|
boundaryGap: [0, '100%']
|
|
}],
|
|
dataZoom: [{
|
|
type: 'inside',
|
|
id: 'dz-in',
|
|
start: 0,
|
|
end: 10,
|
|
minValueSpan: 50,
|
|
maxValueSpan: 300,
|
|
xAxisIndex: 0
|
|
}, {
|
|
id: 'dz-s',
|
|
start: 0,
|
|
end: 10,
|
|
minValueSpan: 50,
|
|
maxValueSpan: 300,
|
|
xAxisIndex: 0
|
|
}],
|
|
series: [{
|
|
type:'line',
|
|
symbolSize: 10,
|
|
data: data1
|
|
}]
|
|
};
|
|
|
|
var ctx = {
|
|
hint: 'category axis value should be integer',
|
|
percentButttons: getDefaultPercentButtons(),
|
|
valueButtons: [{
|
|
text: 'startValue: 30, endValue: 500, over maxValueSpan',
|
|
startValue: 30,
|
|
endValue: 500
|
|
}, {
|
|
text: 'startValue: 30, endValue: 32, over minValueSpan',
|
|
startValue: 30,
|
|
endValue: 32
|
|
}]
|
|
};
|
|
ctx.chart = testHelper.create(echarts, 'main4', {
|
|
title: [
|
|
'(category axis)',
|
|
'dispatchAction: {type: "dataZoom"}',
|
|
'range should not out of bound',
|
|
'minValueSpan: 50, maxValueSpan: 300'
|
|
],
|
|
option: option,
|
|
height: 200,
|
|
buttons: makeButtons(ctx)
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html> |