From 02641de32ecc6e0e4fd9de030399728080b6ed41 Mon Sep 17 00:00:00 2001 From: maTh Date: Sat, 16 Oct 2021 12:00:07 +0200 Subject: Stats: replace flotr2 with chart.js (#3858) * include Chart.js * page: main statistics. Flotr.js replaced with Chart.js * main stats + repartition * Delete: repartition.js + stats.js * delete flotr2 * add libs in README * polish * code polish * fixed amount of week days and months * added manget link for LibreJS * added: @license-end * phpcbf + jshint formatting * delete old code * fix stats * fix Comments * finally I found the issue and fixed its best * fix the month stats * Whitespace fixes * Remove flotr2 * Rename to chart.min.js * Remove console.log Co-authored-by: Alexandre Alapetite --- app/Models/StatsDAO.php | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) (limited to 'app/Models/StatsDAO.php') diff --git a/app/Models/StatsDAO.php b/app/Models/StatsDAO.php index 824535c2d..33e5426b5 100644 --- a/app/Models/StatsDAO.php +++ b/app/Models/StatsDAO.php @@ -98,7 +98,7 @@ SQL; * Calculates the number of article per hour of the day per feed * * @param integer $feed id - * @return string + * @return array */ public function calculateEntryRepartitionPerFeedPerHour($feed = null) { return $this->calculateEntryRepartitionPerFeedPerPeriod('%H', $feed); @@ -108,7 +108,7 @@ SQL; * Calculates the number of article per day of week per feed * * @param integer $feed id - * @return string + * @return array */ public function calculateEntryRepartitionPerFeedPerDayOfWeek($feed = null) { return $this->calculateEntryRepartitionPerFeedPerPeriod('%w', $feed); @@ -118,18 +118,22 @@ SQL; * Calculates the number of article per month per feed * * @param integer $feed - * @return string + * @return array */ public function calculateEntryRepartitionPerFeedPerMonth($feed = null) { - return $this->calculateEntryRepartitionPerFeedPerPeriod('%m', $feed); + $monthRepartition = $this->calculateEntryRepartitionPerFeedPerPeriod('%m', $feed); + // cut out the 0th month (Jan=1, Dec=12) + \array_splice($monthRepartition, 0, 1); + return $monthRepartition; } + /** * Calculates the number of article per period per feed * * @param string $period format string to use for grouping * @param integer $feed id - * @return string + * @return array */ protected function calculateEntryRepartitionPerFeedPerPeriod($period, $feed = null) { $restrict = ''; @@ -148,7 +152,21 @@ SQL; $stm = $this->pdo->query($sql); $res = $stm->fetchAll(PDO::FETCH_NAMED); - $repartition = array(); + switch ($period) { + case '%H': + $periodMax = 24; + break; + case '%w': + $periodMax = 7; + break; + case '%m': + $periodMax = 12; + break; + default: + $periodMax = 30; + } + + $repartition = array_fill(0, $periodMax, 0); foreach ($res as $value) { $repartition[(int) $value['period']] = (int) $value['count']; } -- cgit v1.2.3