get_items('field'); $data = array(); $highcharts_config = json_decode(file_get_contents(drupal_get_path("module", "highcharts_views") . '/defaults/bar-basic.json')); $highcharts_config->chart->defaultSeriesType = $options['format']['chart_type']; $highcharts_config->title->text = $options['format']['title']; $highcharts_config->subtitle->text = $options['format']['subtitle']; $highcharts_config->legend->enabled = $options['format']['legend_enabled']; if ($options['format']['chart_type']!= 'pie') { $highcharts_config->yAxis->title->text = $options['y_axis']['title']; $highcharts_config->yAxis->title->align = $options['y_axis']['title_align']; if ($options['x_axis']["reversed"] != FALSE) { $highcharts_config->xAxis->reversed = TRUE; } if ($options['y_axis']["reversed"] != FALSE) { $highcharts_config->yAxis->reversed = TRUE; } if ($options['format']['swap_axes'] != FALSE) { $highcharts_config->chart->inverted = TRUE; } } $highcharts_config->series = array(); $highcharts_config->xAxis->categories = array(); if (is_array($options) && is_array($options['x_axis']['dataset_data']) && is_array($fields)) { foreach ($options['x_axis']['dataset_data'] as $key) { if ($key != FALSE) { $vars['fields'][$key] = $fields[$key]; } } } $highcharts_config->xAxis->categories = array(); foreach ($view->style_plugin->render_tokens as $result_index => $row) { foreach ($row as $field_name => $field) { $f = str_replace(array('[',']'), '', $field_name); if ($options['x_axis']['dataset_data'][$f]) { $data[$f][] = (float)$field; } } if (!empty($options['x_axis']['dataset_label'])) { $highcharts_config->xAxis->categories[] = $row["[".$options['x_axis']['dataset_label']."]"]; } } if (function_exists("highcharts_series_" . $options['format']['chart_type'])) { // If there's a specialized data writer, return data from data writer. $highcharts_config->series = array(call_user_func("highcharts_views_series_".$options['format']['chart_type'], $data, $fields, $options)); } else { // Get a standard series. $highcharts_config->series = highcharts_views_series($data, $vars['fields']); } // Render the chart options object, and retrieve the chart id. highcharts_render($highcharts_config); // Define required and optional chart container attributes. $attributes = array( // Required chart id passed by reference. 'id' => $highcharts_config->chart->renderTo, // @todo add optional views config for styles or any other valid attribute. // Example: 'style' => 'height: 400px;' ); $vars['attributes'] = $attributes; } /** * Standard highcharts views series data writer. * * @param array $data * @param array $fields * * @return * The highcharts series data object. */ function highcharts_views_series($data, $fields) { $toReturn = array(); foreach ($fields as $key => $field) { $item = new stdClass; $item->name = (array_key_exists("label", $field)) ? $field['label'] : $field['id']; $item->data = $data[$key]; $toReturn[] = $item; } return $toReturn; } /** * Specialized pie highcharts views series data writer. * * @param array $data * @param array $fields * @param array $options * * @return * The highcharts series data object. */ function highcharts_views_series_pie($data, $fields, $options) { $toReturn = new StdClass(); $toReturn->type = $options['format']['chart_type']; $toReturn->name = $options['format']['title']; $toReturn->data = array(); foreach ($fields as $key => $field) { $pie = 0; if (array_key_exists($key, $data)) { foreach($data[$key] as $value) { if (is_numeric($value)) { $pie += $value; } } $toReturn->data[] = array( array_key_exists("label", $field) ? $field['label'] : $field['id'], $pie, ); } } return $toReturn; }