openflashchart.inc in Charts 7
@author Bruno Massa http://drupal.org/user/67164
Use Open Flash Chart on your site.
File
openflashchart/openflashchart.incView source
<?php
/**
* @author Bruno Massa http://drupal.org/user/67164
* @file
* Use Open Flash Chart on your site.
*/
/**
* Convert all Chart-level data.
*
* @param &$chart
* Object. The Open Flash Chart object
* @param &$data
* Array. The raw data.
*/
function _openflashchart_chart(&$chart, &$data) {
$chart
->set_title($data['#title']);
$chart
->set_width($data['#width']);
$chart
->set_height($data['#height']);
$chart
->set_bg_colour($data['#color']['#background']);
}
/**
* Implementation of hook_charts_render().
*
* Its a Charts module hook. It transform the data into a HTML chart.
*
* @param &$data
* Array. The
*/
function _openflashchart_charts_render(&$data) {
$chart = new open_flash_chart_api();
if ($error = _openflashchart_chart($chart, $data)) {
return $error;
}
if ($error = _openflashchart_series($chart, $data)) {
return $error;
}
return $chart
->render();
}
/**
* Convert all Series-level data.
*
* @param &$chart
* Object. The Open Flash Chart object
* @param &$data
* Array. The raw data.
*/
function _openflashchart_series(&$chart, &$data) {
foreach (element_children($data) as $series) {
// Get the color
$color = empty($data[$series]['#color']) ? '' : $data[$series]['#color'];
switch ($data['#type']) {
case 'line2D':
$chart
->line(1, $color);
break;
case 'vbar2D':
$chart
->bar(75, $color);
break;
case 'vbar3D':
$chart
->bar_3D(75, $color);
break;
case 'pie2D':
$chart
->pie(75, '#000000', 'font-size: 12px;');
break;
default:
return t('This type is not possible using %chartplugin', array(
'%chartplugin' => 'Open Flash Chart',
));
}
// Insert a new series of values
if ($data['#type'] != 'pie2D') {
_openflashchart_series_generic($chart, $data, $series);
}
elseif (empty($series)) {
_openflashchart_series_pie($chart, $data, $series);
}
}
}
function _openflashchart_series_generic(&$chart, &$data, $series) {
static $max;
// Get only the numeric values from the series
$series_data = _charts_series_values($data[$series]);
$chart
->set_data($series_data);
// Get the highest value on the series, to be a reference point
$max = $max < max($series_data) ? max($series_data) : $max;
// Y labels
$chart
->set_y_max($max);
// X labels
$value_labels = array();
$toogle = FALSE;
foreach (array_keys($series_data) as $value) {
if (empty($data[$series][$value]['#label'])) {
$value_labels[] = '';
}
else {
$value_labels[] = $data[$series][$value]['#label'];
$toogle = TRUE;
}
}
if (!empty($toogle)) {
$chart
->set_x_labels($value_labels);
}
}
function _openflashchart_series_pie(&$chart, &$data, $series) {
// Get only the numeric values from the series
$series_data = _charts_series_values($data[$series]);
if (empty($series)) {
// Pieces labels
$value_labels = array();
foreach (array_keys($series_data) as $value) {
if (empty($data[$series][$value]['#label'])) {
$value_labels[] = '';
}
else {
$value_labels[] = $data[$series][$value]['#label'];
}
$color[] = $data[$series][$value]['#color'];
}
$chart
->pie_values($series_data, $value_labels, array());
$chart
->pie_slice_colours($color);
}
}
Functions
Name![]() |
Description |
---|---|
_openflashchart_chart | Convert all Chart-level data. |
_openflashchart_charts_render | Implementation of hook_charts_render(). |
_openflashchart_series | Convert all Series-level data. |
_openflashchart_series_generic | |
_openflashchart_series_pie |