|
@@ -28,7 +28,9 @@ Page({
|
|
|
|
|
|
uptokenURL: '',
|
|
|
domain: '',
|
|
|
- uploadURL: ''
|
|
|
+ uploadURL: '',
|
|
|
+
|
|
|
+ userList:[],
|
|
|
|
|
|
},
|
|
|
|
|
@@ -54,6 +56,7 @@ Page({
|
|
|
contentpadding,
|
|
|
contentHeight
|
|
|
});
|
|
|
+ this.getuser()
|
|
|
this.order()
|
|
|
this.showRandomImage()
|
|
|
},
|
|
@@ -110,49 +113,88 @@ Page({
|
|
|
async order() {
|
|
|
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);
|
|
|
-
|
|
|
+ console.log(todayStart, todayEnd);
|
|
|
+
|
|
|
|
|
|
ActivityDataquery.greaterThanOrEqualTo('createdAt', todayStart);
|
|
|
ActivityDataquery.lessThanOrEqualTo('createdAt', todayEnd);
|
|
|
- ActivityDataquery.include('user');
|
|
|
-
|
|
|
+
|
|
|
|
|
|
- ActivityDataquery.descending('steps');
|
|
|
-
|
|
|
- let r = await ActivityDataquery.find();
|
|
|
- let todayList = r.map(item => {
|
|
|
- let itemData = item.toJSON();
|
|
|
-
|
|
|
- const now = new Date();
|
|
|
- const formattedTime = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}/${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;
|
|
|
- itemData.currentTime = formattedTime;
|
|
|
- return itemData;
|
|
|
- });
|
|
|
- let sharList = []
|
|
|
- todayList.forEach((item, index) => {
|
|
|
- if (item.user.objectId == currentUser.id) {
|
|
|
- sharList.push({
|
|
|
- ...item,
|
|
|
- rank: index + 1
|
|
|
- });
|
|
|
+ ActivityDataquery.include('user');
|
|
|
+
|
|
|
+ try {
|
|
|
+ let P = await ActivityDataquery.find();
|
|
|
+ let todayList = P.map(item => {
|
|
|
+ let itemData = item.toJSON();
|
|
|
+
|
|
|
+ const now = new Date();
|
|
|
+ const formattedTime = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, '0')}/${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}`;
|
|
|
+ itemData.currentTime = formattedTime;
|
|
|
+ return itemData;
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ const userStepsMap = {};
|
|
|
+
|
|
|
+
|
|
|
+ todayList.forEach(item => {
|
|
|
+ const userId = item.user.objectId;
|
|
|
+ const steps = item.steps;
|
|
|
+ const distance = item.distance||0;
|
|
|
+ if (steps) {
|
|
|
+ if (!userStepsMap[userId]) {
|
|
|
+ userStepsMap[userId] = {
|
|
|
+ ...item.user,
|
|
|
+ currentTime: item.currentTime,
|
|
|
+ totalSteps: 0,
|
|
|
+ totaldistance:0,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ userStepsMap[userId].totalSteps += steps;
|
|
|
+ userStepsMap[userId].totaldistance += distance;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ const aggregatedList = Object.values(userStepsMap);
|
|
|
+
|
|
|
+
|
|
|
+ aggregatedList.sort((a, b) => b.totalSteps - a.totalSteps);
|
|
|
+
|
|
|
+
|
|
|
+ let currentRank = 1;
|
|
|
+ for (let i = 0; i < aggregatedList.length; i++) {
|
|
|
+ if (i > 0 && aggregatedList[i].totalSteps === aggregatedList[i - 1].totalSteps) {
|
|
|
+
|
|
|
+ aggregatedList[i].rank = aggregatedList[i - 1].rank;
|
|
|
+ } else {
|
|
|
+
|
|
|
+ aggregatedList[i].rank = currentRank;
|
|
|
+ }
|
|
|
+ currentRank++;
|
|
|
}
|
|
|
- })
|
|
|
-
|
|
|
- this.setData({
|
|
|
- sharList
|
|
|
- });
|
|
|
- this.saveImage()
|
|
|
- console.log(this.data.sharList);
|
|
|
+ console.log('aggregatedList',aggregatedList);
|
|
|
+ aggregatedList.forEach(item=>{
|
|
|
+ if(item.objectId == currentUser.id){
|
|
|
+ this.setData({
|
|
|
+ sharList:item,
|
|
|
+ });
|
|
|
+ console.log('sharList',this.data.sharList);
|
|
|
+ this.saveImage()
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ } catch (error) {
|
|
|
+ console.error('Error fetching today\'s data:', error);
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
showRandomImage: function () {
|
|
@@ -183,6 +225,20 @@ Page({
|
|
|
});
|
|
|
})
|
|
|
},
|
|
|
+
|
|
|
+ async getuser(){
|
|
|
+ const currentUser = Parse.User.current();
|
|
|
+ let user = new Parse.Query('_User');
|
|
|
+ user.equalTo('company', company);
|
|
|
+ user.notEqualTo('isDeleted', true);
|
|
|
+ user.equalTo('objectId', currentUser.id);
|
|
|
+ let P = await user.find();
|
|
|
+ let userList = P.map(item => item.toJSON());
|
|
|
+ this.setData({
|
|
|
+ userList,
|
|
|
+ })
|
|
|
+ console.log('userList',this.data.userList);
|
|
|
+ },
|
|
|
|
|
|
async saveImage() {
|
|
|
|
|
@@ -241,11 +297,11 @@ Page({
|
|
|
}
|
|
|
|
|
|
|
|
|
- const nickname = this.data.sharList[0].user.nickname;
|
|
|
- const currentTime = this.data.sharList[0].currentTime;
|
|
|
- const rank = this.data.sharList[0].rank;
|
|
|
- const steps = this.data.sharList[0].steps || 0;
|
|
|
- const distance = this.data.sharList[0].distance || 0;
|
|
|
+ const nickname = this.data.userList[0].nickname;
|
|
|
+ const currentTime = this.data.sharList.currentTime;
|
|
|
+ const rank = this.data.sharList.rank;
|
|
|
+ const steps = this.data.sharList.totalSteps || 0;
|
|
|
+ const distance = this.data.sharList.totaldistance || 0;
|
|
|
|
|
|
canvas.setFontSize(this.rpxToPx(30));
|
|
|
canvas.fillText(nickname, this.rpxToPx(140), this.rpxToPx(580));
|