/** * Get the progress line chart. * * @since 1.0 * * @param Release $release * * @return Chart\Base */ private function get_progress_chart(Release $release) { if ($release->get_status() == Release::STATUS_DRAFT) { return null; } $raw = $release->get_first_14_days_of_upgrades(); $now = new \DateTime(); $diff = $release->get_start_date()->diff($now); $days = min(14, max($diff->days + 1, 1)); $data = array(); $day = \ITELIC\convert_gmt_to_local(clone $release->get_start_date()); $sql_df = 'Y-m-d'; for ($i = 0; $i < $days; $i++) { $key = $day->format($sql_df); if (isset($raw[$key])) { $data[$key] = $raw[$key]; } else { $data[$key] = 0; } $day = $day->add(new \DateInterval('P1D')); } $df = 'M j'; $labels = array_map(function ($day) use($df) { $day = new \DateTime($day); return $day->format($df); }, array_keys($data)); $chart = new Chart\Line($labels, 698, 200, array('scaleIntegersOnly' => true, 'scaleBeginAtZero' => true, 'ibdLoadOn' => 'loadProgressChart', 'responsive' => true)); $chart->add_data_set(array_values($data), '', array('fillColor' => "rgba(151,187,205,0.2)", 'strokeColor' => "rgba(151,187,205,1)", 'pointColor' => "rgba(151,187,205,1)", 'pointStrokeColor' => "#fff", 'pointHighlightFill' => "#fff", 'pointHighlightStroke' => "rgba(151,187,205,1)")); return $chart; }