public static function report_form_by_step($form_id, $args) { $defaults = array('start_date' => date('Y-m-d', strtotime('-1 year')), 'check_permissions' => true, 'base_url' => admin_url()); $args = array_merge($defaults, $args); $rows = Gravity_Flow_Activity::get_report_data_for_form_by_step($form_id, $args['start_date']); if (empty($rows)) { esc_html_e('No data to display', 'gravityflow'); return; } $chart_data = array(); $chart_data[] = array(esc_html__('Step', 'gravityflow'), esc_html__('Completed', 'gravityflow'), esc_html__('Average Duration (hours)', 'gravityflow')); foreach ($rows as $row) { $step = gravity_flow()->get_step($row->feed_id); if (empty($step)) { continue; } $name = esc_html($step->get_name()); $chart_data[] = array($name, absint($row->c), absint($row->av) / HOUR_IN_SECONDS); } $form = GFAPI::get_form($form_id); $chart_options = array('chart' => array('title' => esc_html($form['title']), 'subtitle' => esc_html__('Step completed and average duration', '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>'; }