Fix "Top 10 boards" metric order

This commit is contained in:
garciadavy 2023-02-15 11:27:59 +01:00 committed by GitHub
parent 3083302e14
commit f8bc186252
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

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