<!DOCTYPE html>
<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/facePrint.js"></script>
        <script src="lib/testHelper.js"></script>
        <script src="lib/enableGraphEditRoughly.js"></script>
        <link rel="stylesheet" href="lib/reset.css" />

    </head>
    <body>
        <style>
        </style>


        <div id="main0"></div>
        <div id="main1"></div>




        <script>
        function addScaleplate(chart) {
            if (!chart) {
                return;
            }
            var dom = chart.getDom();
            var zr = chart.getZr();

            window.__upateScaleplate = upateScaleplate;
            var els = [];


            upateScaleplate(100);

            function upateScaleplate(r) {
                for (var i = 0; i < els.length; i++) {
                    zr.remove(els[i]);
                }
                els.length = 0;

                var cx = 500;
                var cy = 300;
                var rCurve = r;

                // var cpx1 = cx + rCurve;
                // var cpy1 = cy;
                // var cpx2 = cx;
                // var cpy2 = cy + rCurve;

                var rCp = rCurve / 3 * 4 / Math.cos(Math.PI / 4);
                var cpx1 = cx + rCp;
                var cpy1 = cy;
                var cpx2 = cx;
                var cpy2 = cy + rCp;

                els.push(new echarts.graphic.Circle({
                    shape: {cx: cx, cy: cy, r: r},
                    style: {fill: 'rgba(0,0,0,0.2)'}
                }));
                els.push(new echarts.graphic.BezierCurve({
                    shape: {
                        x1: cx, y1: cy,
                        x2: cx, y2: cy,
                        cpx1: cpx1, cpy1: cpy1,
                        cpx2: cpx2, cpy2: cpy2
                    },
                    style: {lineWidth: 2, stroke: 'red'}
                }));
                els.push(new echarts.graphic.Circle({
                    shape: {cx: cpx1, cy: cpy1, r: 5},
                    style: {fill: 'rgb(10,30,50)'}
                }));
                els.push(new echarts.graphic.Circle({
                    shape: {cx: cpx2, cy: cpy2, r: 5},
                    style: {fill: 'rgb(10,30,50)'}
                }));
                els.push(new echarts.graphic.Polyline({
                    shape: {points: [[cx, cy], [cpx1, cpy1], [cpx2, cpy2], [cx, cy]]},
                    style: {stroke: 'rgb(10,30,50)'}
                }));
                for (var i = 0; i < els.length; i++) {
                    zr.add(els[i]);
                }
            }
        }
        </script>



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

            var option = {
                tooltip: {},
                series: [{
                    id: 'grh',
                    type: 'graph',
                    symbolSize: 100,
                    roam: 'scale',
                    // draggable : true,1
                    // selectedMode: true,
                    label: {
                        show: true,
                    },
                    edgeSymbol: ['circle', 'arrow'],
                    edgeSymbolSize: [4, 10],
                    edgeLabel: {
                        color: 'green',
                        fontSize: 12,
                        color: 'red',
                        fontSize: 30,
                    },
                    // focusNodeAdjacency: focusNodeAdjacency,
                    lineStyle: {
                        width: 3,
                        color: '#184029',
                        curveness: 0
                    },
                    itemStyle: {
                        opacity: 0.5
                    },
                    emphasis: {
                        focus: 'adjacency'
                    },
                    data: [{
                        name: 'node_1',
                        x: 300,
                        y: 300,
                        value: 'set_style_on_item'
                    }, {
                        name: 'node_2',
                        x: 800,
                        y: 300
                    }, {
                        name: 'node_3',
                        x: 350,
                        y: 100
                    }, {
                        name: 'node_4',
                        x: 550,
                        y: 500
                    }
                    ],
                    links: [{
                        id: 'a',
                        source: 0,
                        target: 1,
                        symbolSize: [5, 20],
                        lineStyle: {
                            width: 5,
                            opacity: 1,
                            curveness: 0.2
                        },
                        emphasis: {
                            lineStyle: {
                                color: 'blue',
                                width: 20,
                                opacity: 0.1
                            }
                        }
                    }, {
                        id: 'b',
                        source: 'node_2',
                        target: 'node_1',
                        label: {
                            show: true
                        },
                        lineStyle: {
                            curveness: 0.2
                        }
                    }, {
                        id: 'c',
                        source: 'node_2',
                        target: 'node_1',
                        lineStyle: {
                            curveness: 0.8
                        }
                    }, {
                        id: 'd',
                        source: 'node_1',
                        target: 'node_3',
                        emphasis: {
                            label: {
                                show: true
                            }
                        }
                    }, {
                        id: 'e',
                        source: 'node_1',
                        target: 'node_4'
                    },

                    {
                        id: 'f',
                        source: 'node_1',
                        target: 'node_1',
                    },
                    {
                        id: 'g',
                        source: 'node_1',
                        target: 'node_1',
                        lineStyle: {
                            // curveness: 0.9
                        },
                        label: {
                            show: true
                        }
                    },

                    ],
                    autoCurveness: true
                }
            ]};


            var chart = testHelper.create(echarts, 'main0', {
                option: option,
                height: 600,
                title: [
                    'Drag a node to modify the angles',
                    'Drag an edge to modify the curveness',
                    'Wheel to scale',
                ]
            });

            if (chart) {
                enableGraphEditRoughly({
                    chart: chart,
                    option: option,
                    seriesId: 'grh',
                    drag: true,
                    editNodeSize: true,
                    editSelfLoopEdgeCount: true,
                    selfLoopEdgeNodeName: 'node_1'
                });
                // addScaleplate(chart);
            }

        });
        </script>










        <script>
        require(['echarts'], function (echarts) {
            var option = {
                tooltip: {},
                animationDurationUpdate: 1500,
                animationEasingUpdate: 'quinticInOut',
                series : [
                    {
                        type: 'graph',
                        id: 'grh',
                        symbolSize: 120,
                        roam: 'scale',
                        // draggable : true,1
                        // selectedMode: true,
                        label: {
                            normal: {
                                show: true
                            }
                        },
                        edgeSymbol: ['circle', 'arrow'],
                        edgeSymbolSize: [4, 10],
                        // focusNodeAdjacency: focusNodeAdjacency,
                        lineStyle: {
                            width: 3,
                            color: '#184029',
                            curveness: 0
                        },
                        itemStyle: {
                            opacity: 0.5
                        },
                        data: [{
                            name: 'node_1',
                            x: 300,
                            y: 300,
                            value: 'set_style_on_item'
                        }, {
                            name: 'node_2',
                            x: 800,
                            y: 300
                        }
                        ],
                        links: [{
                            source: 'node_2',
                            target: 'node_1',
                            label: {
                                show: true
                            },
                            lineStyle: {
                                curveness: 0.2
                            }
                        },
                        {
                            source: 'node_1',
                            target: 'node_1',
                        },
                        {
                            source: 'node_1',
                            target: 'node_1',
                            lineStyle: {
                                curveness: 0.9
                            },
                            label: {
                                show: true
                            }
                        },

                        ],
                        autoCurveness: true
                    }
                ]
            };
            var chart = testHelper.create(echarts, 'main1', {
                option: option,
                height: 500,
                title: [
                    'Drag a node to modify the angles',
                    'Drag an edge to modify the curveness',
                    'Wheel to scale',
                ]
            });

            if (chart) {
                enableGraphEditRoughly({
                    chart: chart,
                    option: option,
                    seriesId: 'grh',
                    drag: true,
                    editNodeSize: true,
                    editSelfLoopEdgeCount: true,
                    selfLoopEdgeNodeName: 'node_1'
                });
            }
        });
        </script>



    </body>
</html>