Browse Source

Fix "Top 10 boards" metric order

garciadavy 2 years ago
parent
commit
f8bc186252
1 changed files with 26 additions and 19 deletions
  1. 26 19
      models/server/metrics.js

+ 26 - 19
models/server/metrics.js

@@ -9,21 +9,27 @@ function acceptedIpAddress(ipAddress) {
   );
 }
 
-const getBoardIdWithMostActivities = (dateWithXdaysAgo, nbLimit) => {
+const getBoardTitleWithMostActivities = (dateWithXdaysAgo, nbLimit) => {
   return Promise.await(
     Activities.rawCollection()
       .aggregate([
-        {
-          $match: {
-            modifiedAt: { $gte: dateWithXdaysAgo },
-          },
-        },
-        { $group: { _id: '$boardId', count: { $sum: 1 } } },
-        { $sort: { count: -1 } },
-      ])
-      .limit(nbLimit)
-      .toArray(),
-  );
+      {
+          $match: { modifiedAt: { $gte: dateWithXdaysAgo }}
+      },
+      {
+       $group: { _id: '$boardId', count: { $sum: 1 } }
+      },
+      {
+       $sort: { count: -1 }
+      },
+      {
+       $lookup: { from: 'boards', localField: '_id', foreignField: '_id', as: 'lookup'}
+      },
+      {
+       $project: { "lookup.title":1, "count":1}
+      }])
+      .limit(nbLimit).toArray()
+      );
 };
 
 const getBoards = (boardIds) => {
@@ -163,21 +169,22 @@ Meteor.startup(() => {
 
         metricsRes +=
           '# Top 10 boards with most activities dated 30 days ago\n';
-        //Get top 10 table with most activities in current month
-        const boardIdWithMostActivities = getBoardIdWithMostActivities(
+        //Get top 10 table with most activities in current month       
+        const boardTitleWithMostActivities = getBoardTitleWithMostActivities(
           dateWithXdaysAgo,
           xdays,
         );
-        const boardWithMostActivities = boardIdWithMostActivities.map(
-          (board) => board._id,
+        
+        const boardWithMostActivities = boardTitleWithMostActivities.map(
+          (board) => board.lookup[0].title,
         );
 
-        getBoards(boardWithMostActivities).forEach((board, index) => {
+        boardWithMostActivities.forEach((title, index) => {
           metricsRes +=
-            `wekan_top10BoardsWithMostActivities{n="${board.title}"} ${
+            `wekan_top10BoardsWithMostActivities{n="${title}"} ${
               index + 1
             }` + '\n';
-        });
+        });       
 
         res.writeHead(200); // HTTP status
         res.end(metricsRes);