Merge branch 'master' into uat
[readifood.git] / lib / report.php
index d8699d2..b2bc16d 100644 (file)
     $oldest = date('Y-m-d', $date);
     $then = $date;
 
-    echo "<select name=\"from\">\n";
-    for ($date = $then; $date <= $now; $date += 86400) {
-      option("from", date('Y-m-d', $date), date('j F Y', $date), $from);
-    }
-    echo "</select> to <select name=\"to\">\n";
-    for ($date = $then; $date <= $now; $date += 86400) {
-      option("to", date('Y-m-d', $date), date('j F Y', $date), $to);
-    }
-    echo "</select>\n";
+    datepicker("from", $from, true, null, false, "to");
+    echo " to ";
+    datepicker("to", $to, true, "from", false);
 
     submit("show_reports", "Show");
     end_form();
     $q->withColumn('count(*)', 'count');
     $q->addGroupByColumn('week')->orderByUpdated();
     $rows = $q->find();
+    $year_offset = 0;
     $week_offset = 0;
     $week = 1;
     $last_week = 0;
     $total = 0;
     echo "<table class=\"report\">\n";
     foreach ($rows as $row) {
-      /* Convert week of year to date range. */
-      if (! $week_offset) $week_offset = $row->getWeek() - 1;
-      else $week = $row->getWeek() - $week_offset;
+      /*
+        Convert week of year to date range.
+        Beware that week 201401 comes after 201352.
+      */
+      $yearweek = $row->getWeek();
+      if (! $week_offset) {
+        $year_offset = substr($yearweek, 0, 4);
+        $week_offset = substr($yearweek, 4, 2) - 1;
+      }
+      else {
+        $y = substr($yearweek, 0, 4);
+        $w = substr($yearweek, 4, 2);
+        $week = (($y - $year_offset) * 52) + ($w - $week_offset);
+      }
       $total += $row->getCount();
       /* Fill in missing weeks. XXX */
       for ($missing_week = $last_week + 1; $missing_week < $week; $missing_week++) {