
<!--
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.
-->

<!-- THIS IS A TEST FOR CHECKING BUILD OF SOURCE RELEASE-->
<html>
    <head>
        <meta charset="utf-8">
        <script src="../dist/echarts.js"></script>
    </head>
    <body>
        <style>
            html, body {
                width: 100%;
                height: 100%;
            }
        </style>
        <div id="main"></div>
        <script>
            function makeChart () {
                var main = document.getElementById('main');
                var div = document.createElement('div');
                var width = document.body.clientWidth;
                div.style.cssText = width + 'px; height:400px';
                main.appendChild(div);
                return echarts.init(div);
            }

            function makeLine () {
                var chart = makeChart();

                var option = {
                    tooltip : {
                        trigger: 'axis'
                    },
                    legend: {
                        data:['Email Marketing','Website Ads','Video Ads','Direct Access','Search Engine']
                    },
                    toolbox: {
                        top: 25,
                        feature: {
                            magicType: {
                                type: ['line', 'bar', 'stack', 'tiled']
                            },
                            dataView: {},
                            restore: {},
                            saveAsImage: {
                                pixelRatio: 2
                            },
                            myTool1: {
                                show: true,
                                title: 'Custom Icon. Reload Option',
                                icon: 'path://M432.45,595.444c0,2.177-4.661,6.82-11.305,6.82c-6.475,0-11.306-4.567-11.306-6.82s4.852-6.812,11.306-6.812C427.841,588.632,432.452,593.191,432.45,595.444L432.45,595.444z M421.155,589.876c-3.009,0-5.448,2.495-5.448,5.572s2.439,5.572,5.448,5.572c3.01,0,5.449-2.495,5.449-5.572C426.604,592.371,424.165,589.876,421.155,589.876L421.155,589.876z M421.146,591.891c-1.916,0-3.47,1.589-3.47,3.549c0,1.959,1.554,3.548,3.47,3.548s3.469-1.589,3.469-3.548C424.614,593.479,423.062,591.891,421.146,591.891L421.146,591.891zM421.146,591.891',
                                onclick: function (){
                                    chart.setOption(option);
                                    alert('chart.setOption(option) DONE!')
                                }
                            }
                        }
                    },
                    xAxis : [
                        {
                            type : 'category',
                            boundaryGap : false,
                            data : ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
                        }
                    ],
                    yAxis : [
                        {
                            type : 'value'
                        }
                    ],
                    series : [
                        {
                            name:'Email Marketing',
                            type:'line',
                            stack: 'all',
                            symbolSize: 8,
                            data:[120, 132, 101, 134, 90, 230, 210]
                        },
                        {
                            name:'Website Ads',
                            type:'line',
                            stack: 'all',
                            symbol: 'diamond',
                            symbolSize: 8,
                            data:[220, 182, 191, 234, 290, 330, 310]
                        },
                        {
                            name:'Video Ads',
                            type:'line',
                            stack: 'all',
                            symbol: 'square',
                            symbolSize: 8,
                            data:[150, 232, 201, 154, 190, 330, 410]
                        },
                        {
                            name:'Direct Access',
                            type:'line',
                            stack: 'all',
                            symbol: 'triangle',
                            symbolSize: 8,
                            data:[320, 332, 301, 334, 390, 330, 320]
                        },
                        {
                            name:'Search Engine',
                            type:'line',
                            stack: 'all',
                            symbol: 'triangle',
                            symbolSize: 8,
                            symbolRotate: 180,
                            data:[820, 932, 901, 934, 1290, 1330, 1320]
                        }
                    ]
                }

                chart.setOption(option);
            }
            function makeBar () {
                var chart = makeChart();

                chart.setOption({
                    tooltip : {
                        trigger: 'axis'
                    },
                    legend: {
                        data:['Email Marketing','Website Ads','Video Ads','Direct Access','Search Engine']
                    },
                    xAxis : [
                        {
                            type : 'category',
                            data : ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
                        }
                    ],
                    yAxis : [
                        {
                            type : 'value'
                        }
                    ],
                    series : [
                        {
                            name:'Email Marketing',
                            type:'bar',
                            stack: 'all',
                            data:[120, 132, 101, 134, 90, 230, 210]
                        },
                        {
                            name:'Website Ads',
                            type:'bar',
                            stack: 'all',
                            data:[220, 182, 191, 234, 290, 330, 310]
                        },
                        {
                            name:'Video Ads',
                            type:'bar',
                            stack: 'all',
                            data:[150, 232, 201, 154, 190, 330, 410]
                        },
                        {
                            name:'Direct Access',
                            type:'bar',
                            stack: 'all',
                            data:[320, 332, 301, 334, 390, 330, 320]
                        },
                        {
                            name:'Search Engine',
                            type:'bar',
                            stack: 'all',
                            data:[820, 932, 901, 934, 1290, 1330, 1320]
                        }
                    ]
                });
            }

            function makeScatter() {
                var chart = makeChart();
                var data1 = [];
                for (var j = 0; j < 20; j++) {
                    data1.push([
                        (Math.random() * 5).toFixed(2),
                        (Math.random() * 5).toFixed(2),
                        (Math.random() * 5).toFixed(2)
                    ]);
                }

                chart.setOption({
                    title : {
                        text: 'Height and weight distribution of males and females',
                        subtext: 'Samples from: Heinz  2003'
                    },
                    tooltip : {
                        trigger: 'axis',
                        showDelay : 0,
                        formatter : function (params) {
                            if (params.value && params.value.length > 1) {
                                return params.seriesName + ' :<br/>'
                                   + params.value[0] + 'cm '
                                   + params.value[1] + 'kg ';
                            }
                            else {
                                return params.seriesName + ' :<br/>'
                                   + params.name + ' : '
                                   + params.value + 'kg ';
                            }
                        },
                        axisPointer:{
                            show: true,
                            type : 'cross',
                            lineStyle: {
                                type : 'dashed',
                                width : 1
                            }
                        }
                    },
                    legend: {
                        data:['Female','Male']
                    },
                    toolbox: {
                        show : true,
                        feature : {
                            mark : {show: true},
                            dataZoom : {show: true},
                            dataView : {show: true, readOnly: false},
                            restore : {show: true},
                            saveAsImage : {show: true}
                        }
                    },
                    xAxis : [
                        {
                            type : 'value',
                            scale:true,
                            axisLabel : {
                                formatter: '{value} cm'
                            }
                        }
                    ],
                    yAxis : [
                        {
                            type : 'value',
                            scale:true,
                            axisLabel : {
                                formatter: '{value} kg'
                            }
                        }
                    ],
                    series : [
                        {
                            name:'Female',
                            type:'scatter',
                            data: [[161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6],
                                [170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2],
                                [172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0],
                                [147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8],
                                [159.5, 50.6], [175.0, 82.5], [166.8, 57.2], [176.5, 87.8], [170.2, 72.8],
                                [174.0, 54.5], [173.0, 59.8], [179.9, 67.3], [170.5, 67.8], [160.0, 47.0],
                                [154.4, 46.2], [162.0, 55.0], [176.5, 83.0], [160.0, 54.4], [152.0, 45.8],
                                [162.1, 53.6], [170.0, 73.2], [160.2, 52.1], [161.3, 67.9], [166.4, 56.6],
                                [168.9, 62.3], [163.8, 58.5], [167.6, 54.5], [160.0, 50.2], [161.3, 60.3],
                                [167.6, 58.3], [165.1, 56.2], [160.0, 50.2], [170.0, 72.9], [157.5, 59.8],
                                [167.6, 61.0], [160.7, 69.1], [163.2, 55.9], [152.4, 46.5], [157.5, 54.3],
                                [168.3, 54.8], [180.3, 60.7], [165.5, 60.0], [165.0, 62.0], [164.5, 60.3],
                                [156.0, 52.7], [160.0, 74.3], [163.0, 62.0], [165.7, 73.1], [161.0, 80.0],
                                [162.0, 54.7], [166.0, 53.2], [174.0, 75.7], [172.7, 61.1], [167.6, 55.7],
                                [151.1, 48.7], [164.5, 52.3], [163.5, 50.0], [152.0, 59.3], [169.0, 62.5],
                                [164.0, 55.7], [161.2, 54.8], [155.0, 45.9], [170.0, 70.6], [176.2, 67.2],
                                [170.0, 69.4], [162.5, 58.2], [170.3, 64.8], [164.1, 71.6], [169.5, 52.8],
                                [163.2, 59.8], [154.5, 49.0], [159.8, 50.0], [173.2, 69.2], [170.0, 55.9],
                                [161.4, 63.4], [169.0, 58.2], [166.2, 58.6], [159.4, 45.7], [162.5, 52.2],
                                [159.0, 48.6], [162.8, 57.8], [159.0, 55.6], [179.8, 66.8], [162.9, 59.4],
                                [161.0, 53.6], [151.1, 73.2], [168.2, 53.4], [168.9, 69.0], [173.2, 58.4],
                                [171.8, 56.2], [178.0, 70.6], [164.3, 59.8], [163.0, 72.0], [168.5, 65.2],
                                [166.8, 56.6], [172.7, 105.2], [163.5, 51.8], [169.4, 63.4], [167.8, 59.0],
                                [159.5, 47.6], [167.6, 63.0], [161.2, 55.2], [160.0, 45.0], [163.2, 54.0],
                                [162.2, 50.2], [161.3, 60.2], [149.5, 44.8], [157.5, 58.8], [163.2, 56.4],
                                [172.7, 62.0], [155.0, 49.2], [156.5, 67.2], [164.0, 53.8], [160.9, 54.4],
                                [162.8, 58.0], [167.0, 59.8], [160.0, 54.8], [160.0, 43.2], [168.9, 60.5],
                                [158.2, 46.4], [156.0, 64.4], [160.0, 48.8], [167.1, 62.2], [158.0, 55.5],
                                [167.6, 57.8], [156.0, 54.6], [162.1, 59.2], [173.4, 52.7], [159.8, 53.2],
                                [170.5, 64.5], [159.2, 51.8], [157.5, 56.0], [161.3, 63.6], [162.6, 63.2],
                                [160.0, 59.5], [168.9, 56.8], [165.1, 64.1], [162.6, 50.0], [165.1, 72.3],
                                [166.4, 55.0], [160.0, 55.9], [152.4, 60.4], [170.2, 69.1], [162.6, 84.5],
                                [170.2, 55.9], [158.8, 55.5], [172.7, 69.5], [167.6, 76.4], [162.6, 61.4],
                                [167.6, 65.9], [156.2, 58.6], [175.2, 66.8], [172.1, 56.6], [162.6, 58.6],
                                [160.0, 55.9], [165.1, 59.1], [182.9, 81.8], [166.4, 70.7], [165.1, 56.8],
                                [177.8, 60.0], [165.1, 58.2], [175.3, 72.7], [154.9, 54.1], [158.8, 49.1],
                                [172.7, 75.9], [168.9, 55.0], [161.3, 57.3], [167.6, 55.0], [165.1, 65.5],
                                [175.3, 65.5], [157.5, 48.6], [163.8, 58.6], [167.6, 63.6], [165.1, 55.2],
                                [165.1, 62.7], [168.9, 56.6], [162.6, 53.9], [164.5, 63.2], [176.5, 73.6],
                                [168.9, 62.0], [175.3, 63.6], [159.4, 53.2], [160.0, 53.4], [170.2, 55.0],
                                [162.6, 70.5], [167.6, 54.5], [162.6, 54.5], [160.7, 55.9], [160.0, 59.0],
                                [157.5, 63.6], [162.6, 54.5], [152.4, 47.3], [170.2, 67.7], [165.1, 80.9],
                                [172.7, 70.5], [165.1, 60.9], [170.2, 63.6], [170.2, 54.5], [170.2, 59.1],
                                [161.3, 70.5], [167.6, 52.7], [167.6, 62.7], [165.1, 86.3], [162.6, 66.4],
                                [152.4, 67.3], [168.9, 63.0], [170.2, 73.6], [175.2, 62.3], [175.2, 57.7],
                                [160.0, 55.4], [165.1, 104.1], [174.0, 55.5], [170.2, 77.3], [160.0, 80.5],
                                [167.6, 64.5], [167.6, 72.3], [167.6, 61.4], [154.9, 58.2], [162.6, 81.8],
                                [175.3, 63.6], [171.4, 53.4], [157.5, 54.5], [165.1, 53.6], [160.0, 60.0],
                                [174.0, 73.6], [162.6, 61.4], [174.0, 55.5], [162.6, 63.6], [161.3, 60.9],
                                [156.2, 60.0], [149.9, 46.8], [169.5, 57.3], [160.0, 64.1], [175.3, 63.6],
                                [169.5, 67.3], [160.0, 75.5], [172.7, 68.2], [162.6, 61.4], [157.5, 76.8],
                                [176.5, 71.8], [164.4, 55.5], [160.7, 48.6], [174.0, 66.4], [163.8, 67.3]
                            ],
                            markPoint : {
                                data : [
                                    {type : 'max', name: 'Max'},
                                    {type : 'min', name: 'Min'}
                                ]
                            },
                            makeLine : {
                                data : [
                                    {type : 'average', name: 'Avg'}
                                ]
                            }
                        },
                        {
                            name:'Male',
                            type:'scatter',
                            data: [[174.0, 65.6], [175.3, 71.8], [193.5, 80.7], [186.5, 72.6], [187.2, 78.8],
                                [181.5, 74.8], [184.0, 86.4], [184.5, 78.4], [175.0, 62.0], [184.0, 81.6],
                                [180.0, 76.6], [177.8, 83.6], [192.0, 90.0], [176.0, 74.6], [174.0, 71.0],
                                [184.0, 79.6], [192.7, 93.8], [171.5, 70.0], [173.0, 72.4], [176.0, 85.9],
                                [176.0, 78.8], [180.5, 77.8], [172.7, 66.2], [176.0, 86.4], [173.5, 81.8],
                                [178.0, 89.6], [180.3, 82.8], [180.3, 76.4], [164.5, 63.2], [173.0, 60.9],
                                [183.5, 74.8], [175.5, 70.0], [188.0, 72.4], [189.2, 84.1], [172.8, 69.1],
                                [170.0, 59.5], [182.0, 67.2], [170.0, 61.3], [177.8, 68.6], [184.2, 80.1],
                                [186.7, 87.8], [171.4, 84.7], [172.7, 73.4], [175.3, 72.1], [180.3, 82.6],
                                [182.9, 88.7], [188.0, 84.1], [177.2, 94.1], [172.1, 74.9], [167.0, 59.1],
                                [169.5, 75.6], [174.0, 86.2], [172.7, 75.3], [182.2, 87.1], [164.1, 55.2],
                                [163.0, 57.0], [171.5, 61.4], [184.2, 76.8], [174.0, 86.8], [174.0, 72.2],
                                [177.0, 71.6], [186.0, 84.8], [167.0, 68.2], [171.8, 66.1], [182.0, 72.0],
                                [167.0, 64.6], [177.8, 74.8], [164.5, 70.0], [192.0, 101.6], [175.5, 63.2],
                                [171.2, 79.1], [181.6, 78.9], [167.4, 67.7], [181.1, 66.0], [177.0, 68.2],
                                [174.5, 63.9], [177.5, 72.0], [170.5, 56.8], [182.4, 74.5], [197.1, 90.9],
                                [180.1, 93.0], [175.5, 80.9], [180.6, 72.7], [184.4, 68.0], [175.5, 70.9],
                                [180.6, 72.5], [177.0, 72.5], [177.1, 83.4], [181.6, 75.5], [176.5, 73.0],
                                [175.0, 70.2], [174.0, 73.4], [165.1, 70.5], [177.0, 68.9], [192.0, 102.3],
                                [176.5, 68.4], [169.4, 65.9], [182.1, 75.7], [179.8, 84.5], [175.3, 87.7],
                                [184.9, 86.4], [177.3, 73.2], [167.4, 53.9], [178.1, 72.0], [168.9, 55.5],
                                [157.2, 58.4], [180.3, 83.2], [170.2, 72.7], [177.8, 64.1], [172.7, 72.3],
                                [165.1, 65.0], [186.7, 86.4], [165.1, 65.0], [174.0, 88.6], [175.3, 84.1],
                                [185.4, 66.8], [177.8, 75.5], [180.3, 93.2], [180.3, 82.7], [177.8, 58.0],
                                [177.8, 79.5], [177.8, 78.6], [177.8, 71.8], [177.8, 116.4], [163.8, 72.2],
                                [188.0, 83.6], [198.1, 85.5], [175.3, 90.9], [166.4, 85.9], [190.5, 89.1],
                                [166.4, 75.0], [177.8, 77.7], [179.7, 86.4], [172.7, 90.9], [190.5, 73.6],
                                [185.4, 76.4], [168.9, 69.1], [167.6, 84.5], [175.3, 64.5], [170.2, 69.1],
                                [190.5, 108.6], [177.8, 86.4], [190.5, 80.9], [177.8, 87.7], [184.2, 94.5],
                                [176.5, 80.2], [177.8, 72.0], [180.3, 71.4], [171.4, 72.7], [172.7, 84.1],
                                [172.7, 76.8], [177.8, 63.6], [177.8, 80.9], [182.9, 80.9], [170.2, 85.5],
                                [167.6, 68.6], [175.3, 67.7], [165.1, 66.4], [185.4, 102.3], [181.6, 70.5],
                                [172.7, 95.9], [190.5, 84.1], [179.1, 87.3], [175.3, 71.8], [170.2, 65.9],
                                [193.0, 95.9], [171.4, 91.4], [177.8, 81.8], [177.8, 96.8], [167.6, 69.1],
                                [167.6, 82.7], [180.3, 75.5], [182.9, 79.5], [176.5, 73.6], [186.7, 91.8],
                                [188.0, 84.1], [188.0, 85.9], [177.8, 81.8], [174.0, 82.5], [177.8, 80.5],
                                [171.4, 70.0], [185.4, 81.8], [185.4, 84.1], [188.0, 90.5], [188.0, 91.4],
                                [182.9, 89.1], [176.5, 85.0], [175.3, 69.1], [175.3, 73.6], [188.0, 80.5],
                                [188.0, 82.7], [175.3, 86.4], [170.5, 67.7], [179.1, 92.7], [177.8, 93.6],
                                [175.3, 70.9], [182.9, 75.0], [170.8, 93.2], [188.0, 93.2], [180.3, 77.7],
                                [177.8, 61.4], [185.4, 94.1], [168.9, 75.0], [185.4, 83.6], [180.3, 85.5],
                                [174.0, 73.9], [167.6, 66.8], [182.9, 87.3], [160.0, 72.3], [180.3, 88.6],
                                [167.6, 75.5], [186.7, 101.4], [175.3, 91.1], [175.3, 67.3], [175.9, 77.7],
                                [175.3, 81.8], [179.1, 75.5], [181.6, 84.5], [177.8, 76.6], [182.9, 85.0],
                                [177.8, 102.5], [184.2, 77.3], [179.1, 71.8], [176.5, 87.9], [188.0, 94.3],
                                [174.0, 70.9], [167.6, 64.5], [170.2, 77.3], [167.6, 72.3], [188.0, 87.3],
                                [174.0, 80.0], [176.5, 82.3], [180.3, 73.6], [167.6, 74.1], [188.0, 85.9],
                                [180.3, 73.2], [167.6, 76.3], [183.0, 65.9], [183.0, 90.9], [179.1, 89.1],
                                [170.2, 62.3], [177.8, 82.7], [179.1, 79.1], [190.5, 98.2], [177.8, 84.1],
                                [180.3, 83.2], [180.3, 83.2]
                            ],
                            markPoint : {
                                data : [
                                    {type : 'max', name: 'Max'},
                                    {type : 'min', name: 'Min'}
                                ]
                            },
                            makeLine : {
                                data : [
                                    {type : 'average', name: 'Avg'}
                                ]
                            }
                        }
                    ]
                });
            }

            function makeFunnel() {
                var chart = makeChart();
                chart.setOption({
                    title : {
                        text: 'Funnel',
                        subtext: 'Fake Data'
                    },
                    tooltip : {
                        trigger: 'item',
                        formatter: '{a} <br/>{b} : {c}%'
                    },
                    legend: {
                        data : ['Show','Click','Visit','Inquiry','Order']
                    },
                    series: [
                        {
                            name:'Funnel',
                            type:'funnel',
                            gap: 3,
                            sort: 'ascending',
                            label: {
                                normal: {
                                    position: 'inside'
                                }
                            },
                            data:[
                                {value:60, name:'Visit'},
                                {value:40, name:'Inquiry'},
                                {value:20, name:'Order'},
                                {value:80, name:'Click'},
                                {value:100, name:'Show'}
                            ]
                        }
                    ]
                });
            }


            function makePie() {
                var chart = makeChart();
                chart.setOption({
                    legend: {
                    },
                    tooltip: {

                    },
                    series: [{
                        name: 'pie',
                        type: 'pie',
                        selectedMode: 'single',
                        hoverAnimation: false,
                        selectedOffset: 30,
                        clockwise: true,
                        radius: [50, 100],
                        animation: false,
                        data:[
                            {value:0, name:'Direct Access'},
                            {value:310, name:'Email Marketing'},
                            {value:234, name:'Website Ads'},
                            {value:135, name:'Video Ads'},
                            {value:1548, name:'Search Engine'}
                        ]
                    }]
                });
            }

            function makeDataZoom() {
                var chart = makeChart();
                var data = [];
                var categoryData = [];
                var y = Math.random() * 1000;
                for (var i = 0; i < 50; i++) {
                    categoryData.push('C' + i);
                    data.push(y);
                    y += 100 * Math.random() - 50;
                }
                chart.setOption({
                    xAxis: {
                        data: categoryData
                    },
                    yAxis: {},
                    dataZoom: [{
                        start: 0,
                        end: 30
                    }],
                    series: [
                        {
                            type: 'line',
                            animation: false,
                            data: data
                            // smooth: true
                        }
                    ]
                });
            }

            function makeGraph() {
                var chart = makeChart();
                chart.setOption({
                    tooltip: {},
                    animationDurationUpdate: 1500,
                    animationEasingUpdate: 'quinticInOut',
                    series : [
                        {
                            type: 'graph',
                            layout: 'none',
                            symbolSize: 50,
                            roam: true,
                            label: {
                                normal: {
                                    show: true
                                }
                            },
                            edgeSymbol: ['circle', 'arrow'],
                            edgeSymbolSize: [4, 10],
                            edgeLabel: {
                                normal: {
                                    textStyle: {
                                        fontSize: 20
                                    }
                                }
                            },
                            data: [{
                                name: 'Node 1',
                                x: 300,
                                y: 300
                            }, {
                                name: 'Node 2',
                                x: 800,
                                y: 300
                            }, {
                                name: 'Node 3',
                                x: 550,
                                y: 100
                            }, {
                                name: 'Node 4',
                                x: 550,
                                y: 500
                            }],
                            // links: [],
                            links: [{
                                source: 'Node 1',
                                target: 'Node 2',
                                symbolSize: [5, 20],
                                label: {
                                    normal: {
                                        show: true
                                    }
                                },
                                lineStyle: {
                                    normal: {
                                        width: 5,
                                        curveness: 0.2
                                    }
                                }
                            }, {
                                source: 'Node 2',
                                target: 'Node 1',
                                label: {
                                    normal: {
                                        show: true
                                    }
                                },
                                lineStyle: {
                                    normal: { curveness: 0.2 }
                                }
                            }, {
                                source: 'Node 1',
                                target: 'Node 3'
                            }, {
                                source: 'Node 2',
                                target: 'Node 3'
                            }, {
                                source: 'Node 2',
                                target: 'Node 4'
                            }, {
                                source: 'Node 1',
                                target: 'Node 4'
                            }],
                            lineStyle: {
                                normal: {
                                    curveness: 0
                                }
                            }
                        }
                    ]
                });
            }

            setTimeout(function () {
                makeLine();
            }, 200);
            setTimeout(function () {
                makeBar();
            }, 400);
            setTimeout(function () {
                makePie();
            }, 800);
            setTimeout(function () {
                makeScatter();
            }, 1000);
            setTimeout(function () {
                makeFunnel();
            }, 1200);
            setTimeout(function () {
                makeDataZoom();
            }, 1400);
            setTimeout(function () {
                makeGraph();
            }, 1600);
        </script>
    </body>
</html>