Quellcode durchsuchen

Fix monthly stats averages

Divides by the actual number of day in the month.
Benjamin Morel vor 6 Jahren
Ursprung
Commit
92c2bbdcbe
1 geänderte Dateien mit 8 neuen und 17 gelöschten Zeilen
  1. 8 17
      src/Packagist/WebBundle/Controller/PackageController.php

+ 8 - 17
src/Packagist/WebBundle/Controller/PackageController.php

@@ -984,7 +984,7 @@ class PackageController extends Controller
             foreach ($values as $valueKey) {
                 $value += $dlData[$valueKey] ?? 0;
             }
-            $datePoints[$label] = $value;
+            $datePoints[$label] = ceil($value / count($datePoints[$label]));
         }
 
         $datePoints = array(
@@ -994,17 +994,6 @@ class PackageController extends Controller
 
         $datePoints['average'] = $average;
 
-        if ($average !== 'daily') {
-            $dividers = [
-                'monthly' => 30.41,
-                'weekly' => 7,
-            ];
-            $divider = $dividers[$average];
-            $datePoints['values'] = array_map(function ($val) use ($divider) {
-                return ceil($val / $divider);
-            }, $datePoints['values']);
-        }
-
         if (empty($datePoints['labels']) && empty($datePoints['values'])) {
             $datePoints['labels'][] = date('Y-m-d');
             $datePoints['values'][] = 0;
@@ -1101,13 +1090,15 @@ class PackageController extends Controller
         $dateKey = 'Ymd';
         $dateFormat = $average === 'monthly' ? 'Y-m' : 'Y-m-d';
         $dateJump = '+1day';
-        if ($average === 'monthly') {
-            $from = new DateTimeImmutable('first day of ' . $from->format('Y-m'));
-            $to = new DateTimeImmutable('last day of ' . $to->format('Y-m'));
-        }
 
         $nextDataPointLabel = $from->format($dateFormat);
-        $nextDataPoint = $from->modify($interval);
+
+        if ($average === 'monthly') {
+            $nextDataPoint = new DateTimeImmutable('first day of ' . $from->format('Y-m'));
+            $nextDataPoint = $nextDataPoint->modify($interval);
+        } else {
+            $nextDataPoint = $from->modify($interval);
+        }
 
         $datePoints = [];
         while ($from <= $to) {