aboutsummaryrefslogtreecommitdiff
path: root/app/Models/StatsDAO.php
diff options
context:
space:
mode:
authorGravatar maTh <math-home@web.de> 2021-10-16 12:00:07 +0200
committerGravatar GitHub <noreply@github.com> 2021-10-16 12:00:07 +0200
commit02641de32ecc6e0e4fd9de030399728080b6ed41 (patch)
treec01ce17b89c8225f51a796e0bef589498e56a14f /app/Models/StatsDAO.php
parentebf9c70ebd4356d98fa7c2513aaab48fa14c7c9b (diff)
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 <alexandre@alapetite.fr>
Diffstat (limited to 'app/Models/StatsDAO.php')
-rw-r--r--app/Models/StatsDAO.php30
1 files changed, 24 insertions, 6 deletions
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'];
}