diff --git a/modules/charts_google/charts_google.inc b/modules/charts_google/charts_google.inc index 5359896..4630559 100644 --- a/modules/charts_google/charts_google.inc +++ b/modules/charts_google/charts_google.inc @@ -90,6 +90,11 @@ function _charts_google_populate_chart_options($chart, $chart_definition) { $chart_definition['options']['animation']['duration'] = 10000; $chart_definition['options']['animation']['easing'] = 'out'; + // Merge in chart raw options. + if (isset($chart['#raw_options'])) { + $chart_definition['options'] = drupal_array_merge_deep($chart_definition['options'], $chart['#raw_options']); + } + return $chart_definition; } @@ -130,6 +135,11 @@ function _charts_google_populate_chart_axes($chart, $chart_definition) { $axis['viewWindow']['max'] = strlen($chart[$key]['#max']) ? (int) $chart[$key]['#max'] : NULL; $axis['viewWindow']['min'] = strlen($chart[$key]['#min']) ? (int) $chart[$key]['#min'] : NULL; + // Merge in axis raw options. + if (isset($chart[$key]['#raw_options'])) { + $axis = drupal_array_merge_deep($axis, $chart[$key]['#raw_options']); + } + // Multi-axis support only applies to the major axis in Google charts. $chart_type_info = chart_get_type($chart['#chart_type']); $axis_index = $chart[$key]['#opposite'] ? 1 : 0; @@ -245,6 +255,11 @@ function _charts_google_populate_chart_data(&$chart, $chart_definition) { $series['type'] = $data_chart_type; } + // Merge in series raw options. + if (isset($chart[$key]['#raw_options'])) { + $series = drupal_array_merge_deep($series, $chart[$key]['#raw_options']); + } + // Add the series to the main chart definition. charts_trim_array($series); $chart_definition['options']['series'][$series_number] = $series; @@ -266,6 +281,12 @@ function _charts_google_populate_chart_data(&$chart, $chart_definition) { // Color role not yet supported. See https://code.google.com/p/google-visualization-api-issues/issues/detail?id=1267 $chart_definition['_data'][$sub_key + 1][$series_number + 1]['color'] = $data_item['#color']; $chart_definition['_data'][$sub_key + 1][$series_number + 1]['tooltip'] = $data_item['#title']; + + // Merge in data point raw options. + if (isset($data_item['#raw_options'])) { + $chart_definition['_data'][$sub_key + 1][$series_number + 1] = drupal_array_merge_deep($chart_definition['_data'][$sub_key + 1][$series_number + 1], $data_item['#raw_options']); + } + charts_trim_array($chart_definition['_data'][$sub_key + 1][$series_number + 1]); } }