From c243e29002a46c5e53f416deb8e806f594491478 Mon Sep 17 00:00:00 2001 From: "Chen, Tai-Lin" Date: Sun, 10 Dec 2023 01:25:27 +0800 Subject: [PATCH] fix: re-calculate completed rate in analytics --- packages/analytics/src/controllers/index.js | 8 ++++---- packages/analytics/src/models/profiles.js | 20 ++++++++++++++++++++ packages/analytics/views/home.handlebars | 8 ++++---- 3 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 packages/analytics/src/models/profiles.js diff --git a/packages/analytics/src/controllers/index.js b/packages/analytics/src/controllers/index.js index d5a6967..aa9980f 100644 --- a/packages/analytics/src/controllers/index.js +++ b/packages/analytics/src/controllers/index.js @@ -1,15 +1,15 @@ import { userCount } from '../models/users.js' -import { sessionCount, sessionCompleted } from '../models/sessions.js' +import { questCount, questCompleted } from '../models/profiles.js' // eslint-disable-next-line import/prefer-default-export export async function homeController(req, res) { const payload = { title: 'Linux Odyssey Admin', userCount: await userCount(), - sessionCount: await sessionCount(), - sessionCompleted: await sessionCompleted(), + questCount: await questCount(), + questCompleted: await questCompleted(), } payload.completedRate = - Math.round((payload.sessionCompleted / payload.sessionCount) * 10000) / 100 + Math.round((payload.questCompleted / payload.questCount) * 10000) / 100 res.render('home', payload) } diff --git a/packages/analytics/src/models/profiles.js b/packages/analytics/src/models/profiles.js new file mode 100644 index 0000000..669afff --- /dev/null +++ b/packages/analytics/src/models/profiles.js @@ -0,0 +1,20 @@ +/* eslint-disable object-shorthand */ +/* eslint-disable func-names */ +import { UserProfile } from '@linux-odyssey/models' + +export function questCount() { + return UserProfile.find().count() +} + +export function questCompleted() { + return UserProfile.find({ + $where: function () { + for (const key in this.progress) { + if (this.progress[key].completed === true) { + return true + } + } + return false + }, + }).count() +} diff --git a/packages/analytics/views/home.handlebars b/packages/analytics/views/home.handlebars index cd8148a..3098257 100644 --- a/packages/analytics/views/home.handlebars +++ b/packages/analytics/views/home.handlebars @@ -7,12 +7,12 @@ {{userCount}} - Session Count - {{sessionCount}} + Total Started Quests + {{questCount}} - Completed Session - {{sessionCompleted}} + Completed Quests + {{questCompleted}} Completed Rate