
<!--
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="lib/simpleRequire.js"></script>
        <script src="lib/config.js"></script>
        <script src="lib/jquery.min.js"></script>
        <script src="lib/testHelper.js"></script>
        <link rel="stylesheet" href="lib/reset.css"/>
    </head>
    <body>

        <div id="main"></div>

        <script>
            require(['echarts'], function (echarts) {

                window.onresize = function () {
                    chart.resize();
                };

                // Data used to test the circle
                // var data = {
                //     nodes: [
                //         {name: 'Brazil'},
                //         {name: 'Canada'},
                //         {name: 'Mexico'},
                //         {name: 'USA'},
                //         {name: 'Portugal'},
                //         {name: 'France'},
                //         {name: 'Spain'},
                //         {name: 'England'},
                //         {name: 'Angola'},
                //         {name: 'Senegal'},
                //         {name: 'Morocco'},
                //         {name: 'South Africa'},
                //         {name: 'Mali'},
                //         {name: 'China'},
                //         {name: 'India'},
                //         {name: 'Japan'}
                //     ],
                //     links: [
                //         {source: 'Brazil', target: 'Portugal', value: 5},
                //         {source: 'Brazil', target: 'France', value: 1},
                //         {source: 'Brazil', target: 'Spain', value: 1},
                //         {source: 'Brazil', target: 'England', value: 1},
                //         {source: 'Canada', target: 'Portugal', value: 1},
                //         {source: 'Canada', target: 'France', value: 5},
                //         {source: 'Canada', target: 'England', value: 1},
                //         {source: 'Mexico', target: 'Portugal', value: 1},
                //         {source: 'Mexico', target: 'France', value: 1},
                //         {source: 'Mexico', target: 'Spain', value: 5},
                //         {source: 'Mexico', target: 'England', value: 1},
                //         {source: 'USA', target: 'Portugal', value: 1},
                //         {source: 'USA', target: 'France', value: 1},
                //         {source: 'USA', target: 'Spain', value: 1},
                //         {source: 'USA', target: 'England', value: 5},
                //         {source: 'Portugal', target: 'Angola', value: 2},
                //         {source: 'Portugal', target: 'Senegal', value: 1},
                //         {source:'Portugal', target: 'Morocco', value: 1},
                //         {source: 'Portugal', target: 'South Africa', value: 3},
                //         {source: 'France', target: 'Angola', value: 1},
                //         {source: 'France', target: 'Senegal', value: 3},
                //         {source: 'France', target: 'Mali', value: 3},
                //         {source: 'France', target: 'Morocco', value: 3},
                //         {source: 'France', target: 'South Africa', value: 1},
                //         {source: 'Spain', target: 'Senegal', value: 1},
                //         {source: 'Spain', target: 'Morocco', value: 3},
                //         {source: 'Spain', target: 'South Africa', value: 1},
                //         {source: 'England', target: 'Angola', value: 1},
                //         {source: 'England', target: 'Senegal', value: 1},
                //         {source: 'England', target: 'Morocco', value: 2},
                //         {source: 'England', target: 'South Africa', value: 7},
                //         {source: 'South Africa', target: 'China', value: 5},
                //         {source: 'South Africa', target: 'India', value: 1},
                //         {source: 'South Africa', target: 'Japan', value: 3},
                //         {source: 'Angola', target: 'China', value: 5},
                //         {source: 'Angola', target: 'India', value: 1},
                //         {source: 'Angola', target: 'Japan', value: 3},
                //         {source: 'Senegal', target: 'China', value: 5},
                //         {source: 'Senegal', target: 'India', value: 1},
                //         {source: 'Senegal', target: 'Japan', value: 3},
                //         {source: 'Mali', target: 'China', value: 5},
                //         {source: 'Mali', target: 'India', value: 1},
                //         {source: 'Mali', target: 'Japan', value: 3},
                //         {source: 'Morocco', target: 'China', value: 5},
                //         {source: 'Morocco', target: 'India', value: 1},
                //         {source: 'Morocco', target: 'Japan', value: 3}
                //     ]
                // };

                var testData =  {
                    nodes: [
                        {
                            name: 'a',
                            emphasis: {
                                itemStyle: {
                                    color: 'yellow',
                                    opacity: 0.6
                                }
                            }
                        },
                        {
                            name: 'b',
                            value: 4
                        },
                        {
                            name: 'a1'
                        },
                        {
                            name: 'b1'
                        },
                        {
                            name: 'c'
                        },
                        {
                            name: 'e',
                            value: 10
                        }
                    ],
                    links: [
                        {
                            source: 'a',
                            target: 'a1',
                            value: 5,
                            emphasis: {
                                lineStyle: {
                                    color: 'green',
                                    opacity: 0.2
                                }
                            }
                        },
                        {
                            source: 'e',
                            target: 'b',
                            value: 3
                        },
                        {
                            source: 'a',
                            target: 'b1',
                            value: 3
                        },
                        {
                            source: 'b1',
                            target: 'a1',
                            value: 1
                        },
                        {
                            source: 'b1',
                            target: 'c',
                            value: 2
                        },
                        {
                            source: 'b',
                            target: 'c',
                            value: 1
                        }
                    ]
                };

                var option = {
                    color: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],
                    tooltip: {
                        trigger: 'item',
                        triggerOn: 'mousemove',
                        formatter: function (params) {
                            return params.name + ': ' + params.value;
                        }
                    },
                    animation: false,
                    series: [
                        {
                            type: 'sankey',
                            bottom: '10%',
                            focusNodeAdjacency: 'allEdges',
                            data: testData.nodes,
                            links: testData.links,
                            orient: 'vertical',
                            label: {
                                position: 'top'
                            },
                            lineStyle: {
                                normal: {
                                    color: 'source'
                                }
                            }
                        }
                    ]
                };

                var chart = testHelper.create(echarts, 'main' , {
                    title: [
                        "1. when hover on node 'a1' the edge 'a1-a' is green with opacity 0.2 and the node 'a' is yellow with opacity 0.6.",
                        "2. when hover on edge 'a1-a' the color is green with opacity 0.2 and the node 'a' is yellow with opacity 0.6.",
                        "3. when hover on node 'a' the color is yellow with opacity 0.6 and the edge 'a1-a' is green with opacity 0.2.",
                        "4. node 'e' and node 'b''s value is customized which is longer than the max sum of inEdges or outEdges."
                    ],
                    option: option,
                    height: 700
                });
            });
        </script>
    </body>
</html>