From 6fdcae73208be88dc7bb9bbd6eac940fd7d210f0 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 22 Feb 2021 17:06:28 -0500 Subject: [PATCH] feat: req.query parsing and dynamically loading data instead --- public/src/admin/modules/dashboard-line-graph.js | 16 +++++++++++++--- src/controllers/admin/dashboard.js | 11 +++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/public/src/admin/modules/dashboard-line-graph.js b/public/src/admin/modules/dashboard-line-graph.js index 5e12067cee..473fb81964 100644 --- a/public/src/admin/modules/dashboard-line-graph.js +++ b/public/src/admin/modules/dashboard-line-graph.js @@ -29,7 +29,7 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress pointHoverBackgroundColor: 'rgba(151,187,205,1)', pointBorderColor: '#fff', pointHoverBorderColor: 'rgba(151,187,205,1)', - data: dataset, + data: dataset || [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], }, ], }; @@ -66,6 +66,10 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress }, }, }); + + if (!dataset) { + Graph.update(set); + } }); $('[data-action="updateGraph"]:not([data-units="custom"])').on('click', function () { @@ -146,7 +150,12 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress }); }; - Graph.update = (set, units, until, amount) => { + Graph.update = ( + set, + units = ajaxify.data.query.units || 'hours', + until = ajaxify.data.query.until, + amount = ajaxify.data.query.amount + ) => { if (!Graph._current) { return; } @@ -162,7 +171,7 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress Graph._current.data.labels = Graph._current.data.xLabels; Graph._current.update(); - // Update the View as JSON button url + // Update address bar and "View as JSON" button url var apiEl = $('#view-as-json'); var newHref = $.param({ units: units || 'hours', @@ -170,6 +179,7 @@ define('admin/modules/dashboard-line-graph', ['Chart', 'translator', 'benchpress count: amount, }); apiEl.attr('href', `${config.relative_path}/api/v3/admin/analytics/${ajaxify.data.set}?${newHref}`); + ajaxify.updateHistory(`${ajaxify.data.url.slice(1)}?${newHref}`, true); }); }; diff --git a/src/controllers/admin/dashboard.js b/src/controllers/admin/dashboard.js index ca62f07735..e5f89d684f 100644 --- a/src/controllers/admin/dashboard.js +++ b/src/controllers/admin/dashboard.js @@ -231,7 +231,6 @@ async function getLastRestart() { dashboardController.getLogins = async (req, res) => { let stats = await getStats(); - const dataset = await analytics.getHourlyStatsForSet('analytics:logins', Date.now(), 24); stats = stats.filter(stat => stat.name === '[[admin/dashboard:logins]]').map(({ ...stat }) => { delete stat.href; return stat; @@ -244,15 +243,14 @@ dashboardController.getLogins = async (req, res) => { res.render('admin/dashboard/logins', { set: 'logins', + query: req.query, stats, - dataset, summary, }); }; dashboardController.getUsers = async (req, res) => { let stats = await getStats(); - const dataset = await analytics.getHourlyStatsForSet('analytics:registrations', Date.now(), 24); stats = stats.filter(stat => stat.name === '[[admin/dashboard:new-users]]').map(({ ...stat }) => { delete stat.href; return stat; @@ -263,17 +261,18 @@ dashboardController.getUsers = async (req, res) => { month: stats[0].thismonth, }; + // List of recently registered users + res.render('admin/dashboard/users', { set: 'registrations', + query: req.query, stats, - dataset, summary, }); }; dashboardController.getTopics = async (req, res) => { let stats = await getStats(); - const dataset = await analytics.getHourlyStatsForSet('analytics:topics', Date.now(), 24); stats = stats.filter(stat => stat.name === '[[admin/dashboard:topics]]').map(({ ...stat }) => { delete stat.href; return stat; @@ -286,8 +285,8 @@ dashboardController.getTopics = async (req, res) => { res.render('admin/dashboard/topics', { set: 'topics', + query: req.query, stats, - dataset, summary, }); };