
<!--
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">
        <script src="./lib/esl.js"></script>
        <script src="./lib/config.js"></script>
        <link rel="stylesheet" href="./lib/reset.css">
    </head>
    <body>
        <style>
            body {
                background: #000;
                width: 100%;
                height: 100%;
                margin: 0;
            }
            #chart1, #chart2 {
                width: 50%;
                height: 100%;
                float: left;
            }
        </style>
        <div id="main">
            <div id="chart1"></div>
            <div id="chart2"></div>
        </div>

        <script>

            // Schema:
            // date,AQIindex,PM2.5,PM10,CO,NO2,SO2
            var schema = [
                {name: 'date', index: 0, text: '日'},
                {name: 'AQIindex', index: 1, text: 'AQI指数'},
                {name: 'PM25', index: 2, text: 'PM2.5'},
                {name: 'PM10', index: 3, text: 'PM10'},
                {name: 'CO', index: 4, text: '一氧化碳（CO）'},
                {name: 'NO2', index: 5, text: '二氧化氮（NO2）'},
                {name: 'SO2', index: 6, text: '二氧化硫（SO2）'}
            ];

            require([
                'data/aqi/BJdata',
                'data/aqi/GZdata',
                'data/aqi/SHdata',
                'echarts'
                // 'echarts/chart/scatter',
                // 'echarts/component/legend',
                // 'echarts/component/tooltip',
                // 'echarts/component/grid',
                // 'echarts/component/visualMapContinuous'
            ], function (dataBJ, dataGZ, dataSH, echarts) {

                var chart1 = echarts.init(document.getElementById('chart1'));
                var chart2 = echarts.init(document.getElementById('chart2'));

                var option1 = makeChartOption();
                var option2 = makeChartOption();
                option1.visualMap.inRange = {
                    symbolSize: [10, 70]
                };
                option1.visualMap.outOfRange = {
                    symbolSize: [10, 70],
                    color: ['rgba(255,255,255,.2)']
                };
                option1.visualMap.dimension = 'value';
                option1.visualMap.max = 250;

                option2.visualMap.inRange = {
                    colorLightness: [1, 0.5]
                };
                option2.visualMap.outOfRange = {
                    color: ['rgba(255,255,255,.2)']
                };
                option2.visualMap.dimension = 'value';
                option2.visualMap.max = 250;

                chart1.setOption(option1);
                chart2.setOption(option2);

                echarts.connect([chart1, chart2]);

                function makeChartOption(legend) {
                    var itemStyle = {
                        normal: {
                            opacity: 0.8,
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowOffsetY: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    };

                    return {
                        color: [
                            '#dd4444', '#fec42c', '#80F1BE'
                        ],
                        legend: {
                            top: 'top',
                            data: ['北京', '上海', '广州'],
                            textStyle: {
                                color: '#fff',
                                fontSize: 20
                            }
                        },
                        grid: {
                            left: '10%',
                            right: 200,
                            top: '15%',
                            bottom: '10%'
                        },
                        tooltip: {
                            padding: 10,
                            backgroundColor: '#222',
                            borderColor: '#777',
                            borderWidth: 1,
                            formatter: function (obj) {
                                var value = obj.value;
                                return '<div style="border-bottom: 1px solid rgba(255,255,255,.3); font-size: 18px;padding-bottom: 7px;margin-bottom: 7px">'
                                    + obj.seriesName + ' ' + value[0] + '日：'
                                    + value[7]
                                    + '</div>'
                                    + schema[1].text + '：' + value[1] + '<br>'
                                    + schema[2].text + '：' + value[2] + '<br>'
                                    + schema[3].text + '：' + value[3] + '<br>'
                                    + schema[4].text + '：' + value[4] + '<br>'
                                    + schema[5].text + '：' + value[5] + '<br>'
                                    + schema[6].text + '：' + value[6] + '<br>';
                            }
                        },
                        xAxis: {
                            type: 'value',
                            name: '日期',
                            nameGap: 16,
                            nameTextStyle: {
                                color: '#fff',
                                fontSize: 14
                            },
                            max: 31,
                            splitLine: {
                                show: false
                            },
                            axisTick: {
                                lineStyle: {
                                    color: '#777'
                                }
                            },
                            axisLabel: {
                                formatter: '{value}',
                                textStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        yAxis: {
                            type: 'value',
                            name: 'AQI指数',
                            nameLocation: 'end',
                            nameGap: 20,
                            nameTextStyle: {
                                color: '#fff',
                                fontSize: 20
                            },
                            axisTick: {
                                lineStyle: {
                                    color: '#777'
                                }
                            },
                            splitLine: {
                                show: false
                            },
                            axisLabel: {
                                textStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        visualMap: {
                            left: 'right',
                            top: 'top',
                            min: 0,
                            itemWidth: 30,
                            itemHeight: 130,
                            calculable: true,
                            precision: 0.1,
                            text: ['圆形大小：PM2.5'],
                            textGap: 30,
                            textStyle: {
                                color: '#fff'
                            },
                            inRange: {
                                symbolSize: [10, 70]
                            },
                            outOfRange: {
                                symbolSize: [10, 70],
                                color: ['rgba(255,255,255,.2)']
                            },
                            controller: {
                                outOfRange: {
                                    color: ['#444']
                                }
                            }
                        },
                        series: [
                            {
                                name: '北京',
                                type: 'scatter',
                                itemStyle: itemStyle,
                                symbolSize: 20,
                                data: dataBJ
                            },
                            {
                                name: '上海',
                                type: 'scatter',
                                itemStyle: itemStyle,
                                symbolSize: 20,
                                data: dataSH
                            },
                            {
                                name: '广州',
                                type: 'scatter',
                                itemStyle: itemStyle,
                                symbolSize: 20,
                                data: dataGZ
                            }
                        ]
                    };
                }
            });
        </script>
    </body>
</html>