// nova-werun/pages/home/ranking/index.js
const Parse = getApp().Parse;
const company = getApp().globalData.company;
Page({

    /**
     * 页面的初始数据
     */
    data: {
        //屏幕高度
        statusBarHeight: 0, // 状态栏高度
        screenHeight: 0, // 屏幕高度
        customHeight: 0, // 自定义导航栏高度（如小程序右上角胶囊按钮）
        bottomNavHeight: 0, // 底部导航栏高度
        contentHeight: 0, // 可用内容高度
        contentHeight2: 0,
        contentpadding: 0, //顶部padding高度
        //
        changetitle:'today',
        //本日排行
        todayList:[],
        myList:[]
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 计算
        const systemInfo = wx.getSystemInfoSync();
        const statusBarHeight = systemInfo.statusBarHeight || 0;
        const screenHeight = systemInfo.screenHeight || 0;
        const custom = wx.getMenuButtonBoundingClientRect();
        const customHeight = custom.height + 10 + 2 || 0;
        const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0;

        const contentpadding = (statusBarHeight + customHeight) * 750 / systemInfo.windowWidth;
        const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth;
        this.setData({
            statusBarHeight,
            screenHeight,
            customHeight,
            bottomNavHeight,
            contentpadding,
            contentHeight
        });
        this.gettoday()
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    },
    change() {
        // 使用数组来简化切换逻辑
        const titles = ['today', 'weekdday', 'month'];
        const currentIndex = titles.indexOf(this.data.changetitle);//获取index
        const nextIndex = (currentIndex + 1) % titles.length; // 循环切换
        this.setData({
            changetitle: titles[nextIndex]
        });
        if(this.data.changetitle=='today'){
            this.gettoday()
        }
        if(this.data.changetitle=='weekdday'){
           console.log('weekdday');
        }
        if(this.data.changetitle=='month'){
            console.log('month');
         }
    },
    // 获取本日排行
    async gettoday() {
        const currentUser = Parse.User.current();
        let ActivityDataquery = new Parse.Query('ActivityData');
        ActivityDataquery.equalTo('company', company);
        ActivityDataquery.equalTo('type', "today");
        ActivityDataquery.notEqualTo('isDeleted', true);
        
        // 获取今天的日期
        const today = new Date();
        const todayStart = new Date(today.getFullYear(), today.getMonth(), today.getDate()); // 今天的开始时间
        const todayEnd = new Date(todayStart);
        todayEnd.setHours(23, 59, 59, 999); // 今天的结束时间
    
        // 在查询条件中添加对 createdAt 的限制
        ActivityDataquery.greaterThanOrEqualTo('createdAt', todayStart);
        ActivityDataquery.lessThanOrEqualTo('createdAt', todayEnd);
        
        // 根据 steps 字段进行降序排序
        ActivityDataquery.descending('steps');
        ActivityDataquery.include('user');
    
        try {
            let P = await ActivityDataquery.find();
            let todayList = P.map(item => item.toJSON());
    
            // 初始化 myList
            let myList = [];
            
            // 找到当前用户的数据并计算排名
            todayList.forEach((item, index) => {
                if (item.user.objectId === currentUser.id) {
                    myList.push({
                        ...item, // 包含用户数据
                        rank: index + 1 // 计算排名（index 从 0 开始，所以加 1）
                    });
                }
            });
    
            // 更新页面数据
            this.setData({
                todayList,
                myList
            });
    
            console.log(this.data.todayList, this.data.myList);
        } catch (error) {
            console.error('Error fetching today\'s data:', error);
        }
    },
})