<style>
    [id^=yt_tooltip] {
        width: 450px;
    }
</style>

<div class="row">
    <div id="floChart"></div>
</div>


<script src="lib/echarts.min.js"></script>
<script>
    var floChart = null;

    $(function () {
        initChart();
        chartHandler();
    })

    function initChart() {
        let chartDom = $("#floChart")[0];
        floChart = echarts.init(chartDom, null, { width: 'auto' });
    }

    function getSvg() {
        "/upload/floor_map/c0de2199-e62b-4f82-b7f7-abacd4e1cd17.svg"
    }

    function chartHandler() {
        floChart.clear();
        $.get(`${baseImgUrl}/upload/floor_map/c0de2199-e62b-4f82-b7f7-abacd4e1cd17.svg`, function (svg) {

            if (svg == undefined || svg == null) {
                return;
            }

            echarts.registerMap('floor_svg', { svg: svg });

            option = {
                // animationDurationUpdate: 1500,
                tooltip: {
                    formatter: function (params) {
                        if (params.data.device_node_guid != undefined && params.data.device_node_guid != null && params.data.device_node_guid != "") {
                            return `名稱:${params.data.device_node_full_name}<br>
                                    Guid:${params.data.device_node_guid}`
                        }
                        else {
                            return `名稱:${params.data.device_full_name}<br>
                                    Guid:${params.data.device_guid}`
                        }
                    }
                },
                toolbox: { //工具欄
                    show: false
                },
                geo: {
                    map: 'floor_svg',
                    roam: true,
                    scaleLimit: {  //限制放大縮小倍數
                        max: 32,
                        min: 2.5
                    },
                    layoutSize: '100%',
                    layoutCenter: ['50%', '50%'],
                    zoom: 2.5,
                    silent: true
                },
                series: [
                    {   //不管有無被選擇(圓點)
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        symbol: 'circle',
                        symbolSize: 10,
                        symbolOffset: [10, 10],
                        label: {
                            show: false
                        },
                        data: currentData,
                        z: 2
                    },
                    {   //未選擇的設備(icon)
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        symbolSize: 30,
                        label: {
                            formatter: '{b}',
                            position: 'bottom',
                            show: true,
                            backgroundColor: 'orange'
                        },
                        emphasis: {
                            label: {
                                show: true,
                                fontSize: '20',
                                fontWeight: 'bold',
                                color: 'yellow'
                            }
                        },
                        selectedMode: 'single',
                        data: null,
                        z: 1
                    },
                    {   //被選擇的設備(icon)
                        type: 'effectScatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        showEffectOn: 'render',
                        symbolSize: 30,
                        label: {
                            formatter: '{b}',
                            position: 'bottom',
                            show: true,
                            backgroundColor: 'orange'
                        },
                        emphasis: {
                            label: {
                                show: true,
                                fontSize: '20',
                                fontWeight: 'bold',
                                color: 'yellow'
                            }
                        },
                        selectedMode: 'single',
                        data: null,
                        z: 1
                    },
                    {   //編輯模式底下的設備(圓點,只會有一個)
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        symbol: 'circle',
                        symbolSize: 10,
                        symbolOffset: [10, 10],
                        label: {
                            show: false
                        },
                        data: currentData,
                        z: 2
                    },
                    {   //編輯模式底下的設備(icon,只會有一個)
                        type: 'scatter',
                        coordinateSystem: 'geo',
                        geoIndex: 0,
                        symbolSize: 30,
                        label: {
                            formatter: '{b}',
                            position: 'bottom',
                            show: true,
                            backgroundColor: 'orange'
                        },
                        emphasis: {
                            label: {
                                show: true,
                                fontSize: '20',
                                fontWeight: 'bold',
                                color: 'yellow'
                            }
                        },
                        data: null,
                        z: 1
                    },
                ],
            };

            floChart.setOption(option);

            floChart.getZr().on('click', function (params) {
                console.log("click", params);
                var pixelPoint = [params.offsetX, params.offsetY];
                var dataPoint = floChart.convertFromPixel({ geoIndex: 0 }, pixelPoint);
                console.log(dataPoint);

                if (floor_map_mode == "edit") {

                    temp_device_on_floor_map = [{
                        device_guid: selected_temp_device.device_guid,
                        device_full_name: selected_temp_device.device_full_name,
                        device_node_guid: selected_temp_device.device_node_guid ? selected_temp_device.device_node_guid : null,
                        device_node_full_name: selected_temp_device.device_node_full_name ? selected_temp_device.device_node_full_name : null,
                        status: selected_temp_device.status,
                        value: dataPoint
                    }];

                   
                }


                // currentData.push([dataPoint[0], dataPoint[1], 1]);
                // floChart.setOption(option);
            });

            floChart.on('selectchanged', function (params) {
              
                console.log("selectchanged", params);
                // currentData.push([dataPoint[0], dataPoint[1], 1]);
                // floChart.setOption(option);

                currentData = $.map(currentData, function (item) {
                    item.selected = false;
                    return item;
                });

                if (params.selected.length > 0) {
                    currentData[params.selected[0].seriesIndex - 1].selected = true;
                }

                
            });

            // floChart.getZr().on('mousewheel', function (params) {
            //     console.log(params)
            // })
            floChart.on('georoam', function (params) {
               
                 var zoom = floChart.getOption().geo[0].zoom;

                if (zoom <= 2.5) {
                    ResetFloorMap();
                    floChart.setOption({
                        geo: {
                            roam: 'scale'
                        },
                    });
                } else {
                    floChart.setOption({
                        geo: {
                            roam: true
                        },
                    });
                }

               
            });
        })
            .fail(function () {
                toast_warning("查無該樓層地圖")
                floChart.clear();
            });
    }
</script>