blob: 616de63d67437d4bb26c85d944c13e8451156c75 [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.
*/
function renderHomepage3Demo(echarts) {
var mainColor = '#dd4541';
var minValueSpan = 15;
var dataZoomStartValue = 9;
var dataZoomEndValue = 45;
var backgroundColor = '#fff';
var axisLabelColor = '#979797';
var globalFontFamily = 'Arial';
var pcGlobalFontSize = 12;
var mobileGlobalFontSize = 12;
var bgAreaColor = '#e4e4e4';
var bgAreaColorTooltip = '#aaa';
var categoryData = ['03/01','03/02','03/03','03/04','03/05','03/06','03/07','03/08','03/09','03/10','03/11','03/12','03/13','03/14','03/15','03/16','03/17','03/18','03/19','03/20','03/21','03/22','03/23','03/24','03/25','03/26','03/27','03/28','03/29','03/30','03/31','04/01','04/02','04/03','04/04','04/05','04/06','04/07','04/08','04/09','04/10','04/11','04/12','04/13','04/14','04/15','04/16','04/17','04/18','04/19','04/20','04/21','04/22','04/23','04/24','04/25','04/26','04/27','04/28','04/29','04/30','05/01','05/02','05/03','05/04','05/05','05/06','05/07','05/08','05/09','05/10','05/11','05/12','05/13','05/14','05/15']; // jshint ignore:line
var series0Data = [23,32.65,61.06,47.84,54.2,65.96,41.47,48.16,27.59,65.96,52.24,37.22,44.73,53.22,60.08,68.24,58.29,74.78,62.2,71.67,66.78,71.18,46.47,56.39,34.02,47.41,47.11,25.67,28.94,34.73,40.29,46.86,52.96,64.82,51.63,72.33,61.39,66.94,60.57,51.27,47.18,56.49,50.12,52.57,42.45,47.18,34.45,38.69,25.63,35.1,31.51,40.82,30.69,34.45,41.31,46.69,48.82,41.31,52.24,55.51,47.51,32.65,37.71,26.78,16.65,21.06,17.31,26.61,32.98,45.06,41.63,53.39,63.67,58.94,43.92,50.29]; // jshint ignore:line
var series1Data = [0.48,0.54,0.62,0.75,1.05,1.33,1.44,1.38,1.16,0.97,0.77,0.64,0.61,0.67,0.82,1.03,1.25,1.39,1.46,1.41,1.28,1.05,0.80,0.66,0.64,0.72,0.94,1.22,1.38,1.43,1.33,1.1,0.85,0.7,0.73,0.9,1.13,1.26,1.33,1.3,1.18,0.86,0.73,0.69,0.75,0.94,1.26,1.4,1.44,1.45,1.32,1.02,0.72,0.56,0.51,0.59,0.69,0.91,1.16,1.33,1.4,1.38,1.26,1.07,0.74,0.61,0.54,0.58,0.76,1.1,1.3,1.35,1.3,0.98,0.77,0.63]; // jshint ignore:line
var series2Data = [1.63,1.61,1.58,1.54,1.5,1.47,1.47,1.5,1.57,1.67,1.74,1.83,1.91,1.96,1.98,1.94,1.84,1.68,1.55,1.43,1.32,1.27,1.26,1.31,1.46,1.59,1.67,1.68,1.62,1.56,1.52,1.52,1.64,1.89,2.2,2.39,2.47,2.46,2.37,2.24,2.06,1.92,1.87,1.86,1.92,2.06,2.18,2.24,2.22,2.09,1.93,1.82,1.78,1.79,1.81,1.85,1.94,2,2.01,1.96,1.9,1.76,1.65,1.56,1.49,1.45,1.44,1.46,1.54,1.59,1.57,1.54,1.54,1.62,1.74,1.85]; // jshint ignore:line
var pcXAxisTextStyle = {
fontSize: pcGlobalFontSize,
fontFamily: globalFontFamily,
color: axisLabelColor
};
var pcYAxisTextStyle = {
fontSize: pcGlobalFontSize,
fontFamily: globalFontFamily,
color: axisLabelColor
};
var mobileXAxisTextStyle = {
fontSize: mobileGlobalFontSize,
fontFamily: globalFontFamily,
color: axisLabelColor
};
var mobileYAxisTextStyle = {
fontSize: mobileGlobalFontSize,
fontFamily: globalFontFamily,
color: axisLabelColor
};
var pcAxisPointerTextStyle = {
color: '#333'
};
function getSeriesA() {
return {
type: 'bar',
name: 'seriesA',
id: 'gridScatter',
showSymbol: false,
symbolSize: 10,
hoverAnimation: false,
itemStyle: {
normal: {
color: mainColor,
barBorderRadius: 8
}
},
data: series0Data
};
}
function getSeriesB() {
return {
type: 'line',
name: 'seriesB',
yAxisIndex: 1,
xAxisIndex: 1,
smooth: true,
symbolSize: 10,
showSymbol: false,
hoverAnimation: false,
areaStyle: {
normal: {
color: mainColor,
opacity: 1,
shadowOffsetX: 0,
shadowOffsetY: 4,
shadowBlur: 30,
shadowColor: '#555'
}
},
lineStyle: {
normal: {
width: 0
}
},
data: series1Data,
z: 10
};
}
function getSeriesC() {
return {
type: 'line',
name: 'seriesC',
xAxisIndex: 1,
yAxisIndex: 1,
smooth: true,
showSymbol: false,
symbolSize: 0,
hoverAnimation: false,
areaStyle: {
normal: {
color: bgAreaColor,
opacity: 1
}
},
lineStyle: {
normal: {
width: 0
}
},
data: series2Data,
z: 9
};
}
function getSeriesAxisPointer() {
return {
type: 'bar',
xAxisIndex: 1,
yAxisIndex: 1,
barWidth: 1,
animation: false,
hoverAnimation: false,
silent: true,
itemStyle: {
normal: {
color: 'transparent'
},
emphasis: {
color: '#fff'
}
},
data: series1Data,
z: 10
};
}
function getXAxis(xAxis0, xAxis1) {
return [
echarts.util.merge({
splitLine: {
show: false
},
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: '#ddd'
}
},
axisLabel: {
show: false
},
axisPointer: {
type: 'shadow',
label: {
show: false
},
shadowStyle: {
color: '#eee'
// color: bgAreaColor
// color: 'rgba(221,69,65,0.15)'
},
z: -100
},
data: categoryData
}, xAxis0),
echarts.util.merge({
gridIndex: 1,
splitLine: {
show: false
},
axisTick: {
show: false,
lineStyle: {
color: '#ddd'
}
},
axisLine: {
show: false,
lineStyle: {
color: '#ddd'
}
},
axisLabel: {
// textStyle: pcXAxisTextStyle
},
axisPointer: {
type: 'none',
label: {
backgroundColor: bgAreaColor,
textStyle: pcAxisPointerTextStyle
}
},
data: categoryData
}, xAxis1)
];
}
function getYAxis(yAxis0, yAxis1) {
return [
echarts.util.merge({
min: 0,
max: 80,
nameTextStyle: {
color: '#ccc',
fontSize: 18
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false
},
axisLabel: {
},
axisPointer: {
label: {
backgroundColor: bgAreaColor,
textStyle: pcAxisPointerTextStyle
}
}
}, yAxis0),
echarts.util.merge({
gridIndex: 1,
minInterval: 1,
nameTextStyle: {
color: '#ccc',
fontSize: 18
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
lineStyle: {
color: bgAreaColor
}
},
axisLabel: {
formatter: '{value} m'
},
axisPointer: {
label: {
backgroundColor: bgAreaColor,
textStyle: pcAxisPointerTextStyle
}
}
}, yAxis1)
];
}
var option = {
backgroundColor: backgroundColor,
textStyle: {
fontFamily: globalFontFamily,
fontSize: pcGlobalFontSize
},
toolbox: {
show: false
},
brush: {
toolbox: ['lineX'],
outOfBrush: {
color: bgAreaColor
},
brushType: 'lineX',
brushStyle: {
borderWidth: 0,
color: 'rgba(0,0,0,0)'
},
xAxisIndex: 0
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross'
},
padding: 5,
backgroundColor: '#fff',
borderWidth: 0,
textStyle: {
color: '#222'
},
extraCssText: 'z-index: 200;box-shadow: 0px 3px 15px rgba(0,0,0,0.3)',
formatter: function (params) {
var dataIndex = params[0].dataIndex;
return echarts.util.map([
['seriesA', mainColor, series0Data],
['seriesB', mainColor, series1Data],
['seriesC', bgAreaColorTooltip, series2Data]
], function (def, idx) {
return echarts.format.getTooltipMarker(def[1], !idx ? 'border-radius: 0;' : '')
+ '<span style="color:' + echarts.format.encodeHTML(def[1]) + '">'
+ def[0] + ': ' + def[2][dataIndex] + (idx ? ' m' : '')
+ '</span>';
}).join('<br>');
}
},
axisPointer: {
link: [{xAxisIndex: 'all'}],
label: {
textStyle: {
color: '#222'
}
},
z: 500
},
xAxis: getXAxis({
axisLabel: {
textStyle: pcXAxisTextStyle
}
}, {
axisLabel: {
textStyle: pcXAxisTextStyle
}
}),
yAxis: getYAxis({
axisLabel: {
textStyle: pcYAxisTextStyle
}
}, {
axisLabel: {
textStyle: pcYAxisTextStyle
}
}),
grid: [{
left: 50,
right: 38,
bottom: 228,
height: 123
}, {
left: 50,
right: 38,
bottom: 84,
height: 112
}],
dataZoom: [{
startValue: dataZoomStartValue,
endValue: dataZoomEndValue,
left: 50,
right: 38,
bottom: 35,
height: 4,
showDataShadow: false,
borderColor: 'transparent',
backgroundColor: '#e2e2e2',
// handleIcon: 'M10.7,11.9H9.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.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.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z', // jshint ignore:line
// handleIcon: 'M10.93,0.61c5.927,0,10.733,4.762,10.733,10.637S16.857,21.883,10.93,21.883 c-5.928,0-10.733-4.762-10.733-10.636S5.002,0.61,10.93,0.61z M15.646,10.247H6.215v2h9.431V10.247z', // jshint ignore:line
handleIcon: 'image://data/handle.png', // jshint ignore:line
handleSize: 20,
handleStyle: {
color: mainColor,
shadowBlur: 6,
shadowOffsetX: 1,
shadowOffsetY: 2,
shadowColor: '#aaa'
},
fillerColor: mainColor,
labelFormatter: '',
// borderColor: 'rgba(0,0,0,0.2)',
xAxisIndex: [0, 1],
minValueSpan: minValueSpan
}, {
startValue: dataZoomStartValue,
endValue: dataZoomEndValue,
type: 'inside',
xAxisIndex: [0, 1],
minValueSpan: minValueSpan
}],
series: [
getSeriesA(),
getSeriesB(),
getSeriesC(),
getSeriesAxisPointer()
]
};
var option2 = {
backgroundColor: backgroundColor,
textStyle: {
fontFamily: globalFontFamily,
fontSize: mobileGlobalFontSize
},
toolbox: {
show: false
},
brush: {
toolbox: ['lineX'],
outOfBrush: {
color: bgAreaColor
},
brushType: 'lineX',
brushStyle: {
borderWidth: 0,
color: 'rgba(0,0,0,0)'
},
xAxisIndex: 0
},
tooltip: {
show: true,
triggerOn: 'none',
alwaysShowContent: true,
position: function (pos, params, dom, rect, size) {
return {top: 10, left: 'center'};
},
backgroundColor: 'transparent',
transitionDuration: 0,
formatter: function (params) {
var dataIndex = params[0].dataIndex;
return echarts.util.map([
['seriesA', mainColor, series0Data],
['seriesB', mainColor, series1Data],
['seriesC', bgAreaColorTooltip, series2Data]
], function (def, idx) {
return echarts.format.getTooltipMarker(def[1], !idx ? 'border-radius: 0;' : '')
+ '<span style="display:inline-block;width: 100px;color:' + echarts.format.encodeHTML(def[1]) + '">'
+ def[0] + ': ' + def[2][dataIndex] + (idx ? ' m' : '')
+ '</span>';
}).join('&nbsp;&nbsp;&nbsp;');
}
},
axisPointer: {
triggerOn: 'none',
link: [{xAxisIndex: 'all'}],
label: {
textStyle: {
color: '#222'
}
},
z: 500
},
xAxis: getXAxis({
axisLabel: {
textStyle: mobileXAxisTextStyle
},
axisPointer: {
show: true
}
}, {
axisLabel: {
textStyle: mobileXAxisTextStyle
},
axisPointer: {
value: '04/12',
handle: {
show: true,
icon: 'image://./data/handle2.png',
size: [36, 40],
color: mainColor,
shadowBlur: 12,
shadowOffsetX: 2,
shadowOffsetY: 4,
shadowColor: '#aaa'
}
}
}),
yAxis: getYAxis({
axisLabel: {
textStyle: mobileYAxisTextStyle
}
}, {
axisLabel: {
textStyle: mobileYAxisTextStyle
}
}),
grid: [{
top: 63,
left: 36,
right: 14,
height: 212
}, {
top: 335,
left: 36,
right: 14,
height: 230
}],
dataZoom: [{
startValue: dataZoomStartValue,
endValue: dataZoomEndValue,
type: 'inside',
xAxisIndex: [0, 1],
minValueSpan: minValueSpan
}],
series: [
getSeriesA(),
getSeriesB(),
getSeriesC(),
getSeriesAxisPointer()
]
};
var myChart = echarts.init($('.ch-pc-chart')[0]);
myChart.setOption(option);
var myChart2 = echarts.init($('.ch-mobile-chart')[0]);
myChart2.setOption(option2);
bindAction(myChart, myChart2, 'a');
bindAction(myChart2, myChart, 'b');
myChart.dispatchAction({
type: 'brush',
areas: [
{
xAxisIndex: 0,
brushType: 'lineX',
coordRange: [17, 27]
}
]
});
function bindAction(fromChart, toChart, flag) {
fromChart.on('updateAxisPointer', function (params) {
toChart.dispatchAction(
toChart.makeActionFromEvent(params),
true
);
});
fromChart.on('dataZoom', function (params) {
var payload = params.batch ? params.batch[0] : params;
toChart.dispatchAction({
type: 'dataZoom',
dataZoomIndex: 0,
start: payload.start,
end: payload.end
}, true);
});
fromChart.on('brush', function (params) {
params.areas[0] && toChart.dispatchAction({
type: 'brush',
areas: [
{
xAxisIndex: 0,
brushType: 'lineX',
coordRange: params.areas[0].coordRange
}
]
}, true);
});
}
}