const app = getApp()
const db = wx.cloud.database()

Page({
    data: {
        roomId: '',
        center: { latitude: 39.9, longitude: 116.4 },
        markers: [],
        recommendations: [],
        scale: 13,
        selectedIndex: -1  // 当前选中的索引
    },

    onLoad: function (options) {
        this.setData({ roomId: options.roomId })
        this.fetchResult()
    },

    async fetchResult() {
        wx.showLoading({ title: '加载结果...' })
        try {
            const res = await db.collection('rooms').doc(this.data.roomId).get()
            const data = res.data

            if (data && data.result && data.result.success) {
                const result = data.result
                const center = result.center
                const recommendations = result.recommendations || []

                // 构建 Markers
                const markers = []

                // 中心点 Marker
                markers.push({
                    id: 0,
                    latitude: center.lat,
                    longitude: center.lng,
                    iconPath: '',
                    width: 0,
                    height: 0,
                    callout: {
                        content: '最佳中心点',
                        display: 'ALWAYS',
                        padding: 8,
                        borderRadius: 4,
                        bgColor: '#FF6B6B',
                        color: '#FFFFFF',
                        fontSize: 12
                    }
                })

                // 推荐点 Markers
                recommendations.forEach((place, index) => {
                    markers.push({
                        id: index + 1, // ID 从 1 开始
                        latitude: place.location.lat,
                        longitude: place.location.lng,
                        iconPath: '',
                        width: 0,
                        height: 0,
                        callout: {
                            content: `${index + 1}`, // 默认只显示序号
                            display: 'ALWAYS',
                            padding: 6,
                            borderRadius: 4,
                            bgColor: '#4CAF50',
                            color: '#FFFFFF',
                            fontSize: 11
                        }
                    })
                })

                this.setData({
                    center: { latitude: center.lat, longitude: center.lng },
                    recommendations: recommendations,
                    markers: markers
                })
            } else {
                wx.showToast({ title: '暂无结果', icon: 'none' })
            }
            wx.hideLoading()
        } catch (err) {
            console.error(err)
            wx.hideLoading()
            wx.showToast({ title: '加载失败', icon: 'none' })
        }
    },

    onListTap(e) {
        const index = e.currentTarget.dataset.index
        const place = this.data.recommendations[index]

        // 如果点击已选中的，取消选中
        const newSelectedIndex = this.data.selectedIndex === index ? -1 : index

        // 更新选中状态
        this.setData({ selectedIndex: newSelectedIndex })

        // 更新地图标记的 callout
        const markers = this.data.markers
        markers.forEach((marker, markerIndex) => {
            if (marker.id > 0) { // 推荐点 Marker（ID 从 1 开始）
                const placeIndex = marker.id - 1
                if (newSelectedIndex === placeIndex) {
                    // 选中的地点显示名称
                    markers[markerIndex].callout.content = `${index + 1}. ${place.name}`
                    markers[markerIndex].callout.bgColor = '#FF6B6B' // 红色背景
                    markers[markerIndex].callout.fontSize = 12
                } else {
                    // 未选中的地点只显示序号
                    markers[markerIndex].callout.content = `${placeIndex + 1}`
                    markers[markerIndex].callout.bgColor = '#4CAF50' // 绿色背景
                    markers[markerIndex].callout.fontSize = 11
                }
            }
        })

        // 更新 markers 数据
        this.setData({ markers })

        // 移动地图到选中地点
        if (newSelectedIndex >= 0) {
            this.setData({
                center: { latitude: place.location.lat, longitude: place.location.lng }
            })
        }
    }
})
