예제 #1
0
 public static function report_step_by_assignee($step_id, $args)
 {
     $defaults = array('start_date' => date('Y-m-d', strtotime('-1 year')), 'check_permissions' => true, 'base_url' => admin_url('admin.php?page=gravityflow-reports'));
     $args = array_merge($defaults, $args);
     $step = gravity_flow()->get_step($step_id);
     if (empty($step)) {
         return;
     }
     $rows = Gravity_Flow_Activity::get_report_data_for_step_by_assignee($step_id, $args['start_date']);
     if (empty($rows)) {
         esc_html_e('No data to display', 'gravityflow');
         return;
     }
     $chart_data = array();
     $chart_data[] = array(esc_html__('Assignee', 'gravityflow'), esc_html__('Completed', 'gravityflow'), esc_html__('Average Duration (hours)', 'gravityflow'));
     foreach ($rows as $row) {
         if ($row->assignee_type == 'user_id') {
             $user = get_user_by('id', $row->assignee_id);
             $display_name = $user->display_name;
         } else {
             $display_name = $row->assignee_id;
         }
         $chart_data[] = array($display_name, absint($row->c), absint($row->av) / HOUR_IN_SECONDS);
     }
     $chart_options = array('chart' => array('title' => esc_html($step->get_name()), 'subtitle' => esc_html__('Step completed and average duration by assignee', 'gravityflow')), 'bars' => 'horizontal', 'height' => 200 + count($rows) * 100, 'series' => array(array('axis' => 'count'), array('axis' => 'average_duration')), 'axes' => array('x' => array('count' => array('side' => 'top', 'label' => esc_html__('Completed', 'gravityflow')), 'average_duration' => array('label' => esc_html__('Average Duration (hours)', 'gravityflow')))));
     $data_table_json = htmlentities(json_encode($chart_data), ENT_QUOTES, 'UTF-8', true);
     $options_json = htmlentities(json_encode($chart_options), ENT_QUOTES, 'UTF-8', true);
     echo '<div id="gravityflow_chart_top_level" style="padding:20px;background-color:white;" class="gravityflow_chart" data-type="Bar" data-table="' . $data_table_json . '" data-options="' . $options_json . '""></div>';
 }