diff --git a/src/analytics.js b/src/analytics.js index 03be429637..73a2f164b8 100644 --- a/src/analytics.js +++ b/src/analytics.js @@ -237,23 +237,26 @@ Analytics.getDailyStatsForSet = async function (set, day, numDays) { set = `analytics:${set}`; } - const daysArr = []; day = new Date(day); // set the date to tomorrow, because getHourlyStatsForSet steps *backwards* 24 hours to sum up the values day.setDate(day.getDate() + 1); day.setHours(0, 0, 0, 0); - while (numDays > 0) { - /* eslint-disable no-await-in-loop */ + async function getHourlyStats(hour) { const dayData = await Analytics.getHourlyStatsForSet( set, - day.getTime() - (1000 * 60 * 60 * 24 * (numDays - 1)), + hour, 24 ); - daysArr.push(dayData.reduce((cur, next) => cur + next)); + return dayData.reduce((cur, next) => cur + next); + } + const hours = []; + while (numDays > 0) { + hours.push(day.getTime() - (1000 * 60 * 60 * 24 * (numDays - 1))); numDays -= 1; } - return daysArr; + + return await Promise.all(hours.map(getHourlyStats)); }; Analytics.getUnwrittenPageviews = function () { diff --git a/src/controllers/admin/dashboard.js b/src/controllers/admin/dashboard.js index ac9f4fc130..193476f1af 100644 --- a/src/controllers/admin/dashboard.js +++ b/src/controllers/admin/dashboard.js @@ -128,12 +128,13 @@ async function getStats() { } let results = await Promise.all([ - getStatsForSet('ip:recent', 'uniqueIPCount'), + getStatsFromAnalytics('uniquevisitors', 'uniqueIPCount'), getStatsFromAnalytics('logins', 'loginCount'), getStatsForSet('users:joindate', 'userCount'), getStatsForSet('posts:pid', 'postCount'), getStatsForSet('topics:tid', 'topicCount'), ]); + results[0].name = '[[admin/dashboard:unique-visitors]]'; results[1].name = '[[admin/dashboard:logins]]';