|  | /* | 
|  | * 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('   '); | 
|  | } | 
|  | }, | 
|  | 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); | 
|  | }); | 
|  | } | 
|  | } |