Example #1
0
 public function getAvgAmountPerPlan($from, $to)
 {
     if (!$this->usr->canRead()) {
         return array();
     }
     //можно заменить на FULL OUTER JOIN , когда будет реалзован в SQLITE
     //$amounts = $this->getAvgAmount($from, $to);
     $amounts = $this->getSumAmount($from, $to);
     $plans = $this->getList();
     $mb = months_between($from, $to);
     $ret = array();
     $sum_plan = 0;
     $sum_fact = 0;
     foreach ($plans as $plan) {
         $sum = 0;
         foreach ($amounts as $amount) {
             if ($amount['group'] == $plan["grp_id"]) {
                 $sum = $amount["amount"];
                 break;
             }
         }
         if (floatval($plan["plan"]) == 0 && $sum == 0) {
             continue;
         }
         //months between
         $plan["plan"] = round($plan["plan"] * $mb, 2);
         $sum_plan += floatval($plan["plan"]);
         $sum_fact += $sum;
         $ret[] = array('id' => $plan["grp_id"], 'tname' => $plan["name"], 'plan' => floatval($plan["plan"]), 'fact' => $sum);
     }
     $ret[] = array('id' => -1, 'tname' => "Итог", 'plan' => $sum_plan, 'fact' => $sum_fact);
     return $ret;
 }
 /** Shows a timeline of experiments */
 public function timeline()
 {
     $experiments = $this->experimentModel->get_all_experiments(FALSE);
     // Retrieve the months between the selected dates
     $date_start = $this->input->post('date_start');
     $date_end = $this->input->post('date_end');
     $min_date = $date_start ? input_date($date_start) : input_date(date('Y-01-01'));
     $max_date = $date_end ? input_date($date_end) : input_date(date('Y-12-31'));
     $months = months_between($min_date, $max_date);
     // Loop over experiments, count participations per year/month
     $tested = array();
     foreach ($experiments as $experiment) {
         // For every new experiment, add default counts
         foreach ($months as $month) {
             $default_counts[$month] = 0;
         }
         $tested[$experiment->name] = $default_counts;
         $month_counts = $this->experimentModel->count_participations_per_month($experiment->id, $min_date, $max_date);
         foreach ($month_counts as $mc) {
             $tested[$experiment->name][$mc->month] = array();
             $tested[$experiment->name][$mc->month]['count'] = $mc->count;
             $tested[$experiment->name][$mc->month]['color'] = 'none';
         }
         if ($experiment->date_start) {
             $e_months = months_between(max(input_date($experiment->date_start), $min_date), min(input_date($experiment->date_end), $max_date));
             foreach ($e_months as $month) {
                 if (!isset($tested[$experiment->name][$month]['count'])) {
                     $tested[$experiment->name][$month] = array();
                     $tested[$experiment->name][$month]['count'] = 0;
                 }
                 $tested[$experiment->name][$month]['color'] = $experiment->experiment_color;
             }
         }
     }
     ksort($tested);
     $data['page_title'] = lang('timeline');
     $data['action'] = 'experiment/timeline/';
     $data['tested'] = $tested;
     $data['date_start'] = output_date($min_date, TRUE);
     $data['date_end'] = output_date($max_date, TRUE);
     $this->load->view('templates/header', $data);
     $this->load->view('experiment_timeline_view', $data);
     $this->load->view('templates/footer');
 }