|
|
|
@ -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); |
|
|
|
|