public function HighchartsHandler::render in Visualization API 8
Renders a chart using Highcharts.
Overrides VisualizationHandlerInterface::render
File
- src/
Plugin/ visualization/ handler/ HighchartsHandler.php, line 44 - Drupal\visualization\Plugin\visualization\handler\HighchartsHandler.
Class
- HighchartsHandler
- Library plugin for Visualization implementing support for Highcharts.
Namespace
Drupal\visualization\Plugin\visualization\handlerCode
public function render($chart_id, $data, $options) {
// Chart options.
$highchart = new \stdClass();
// Chart.
$highchart->chart = (object) array(
'plotBackgroundColor' => NULL,
'plotBorderWidth' => NULL,
'plotShadow' => FALSE,
);
// Set title.
$highchart->title = new \stdClass();
$highchart->title->text = $options['title'];
$x_axis = array();
if (!empty($options['xAxis']['labelField'])) {
foreach ($data as $row) {
$x_axis[] = SafeMarkup::checkPlain(strip_tags((string) $row[$options['xAxis']['labelField']]));
}
}
if (!empty($x_axis)) {
$highchart->xAxis = (object) array(
'categories' => $x_axis,
);
}
if (!empty($options['yAxis']['title'])) {
$highchart->yAxis = (object) array(
'title' => (object) array(
'text' => $options['yAxis']['title'],
),
);
}
// Series.
$highchart->series = array();
foreach ($options['fields'] as $name => $column) {
if (!empty($column['enabled'])) {
$serie = new \stdClass();
$serie->name = $column['label'];
$serie->type = $options['type'];
$serie->data = array();
foreach ($data as $row) {
$value = (int) $row[$name];
if (!empty($column['enabled'])) {
$serie->data[] = (object) array(
'name' => SafeMarkup::checkPlain(strip_tags($row[$options['xAxis']['labelField']])),
'y' => $value,
);
}
else {
$serie->data[] = $value;
}
}
$highchart->series[] = $serie;
}
}
$highchart->plotOptions = new \stdClass();
$highchart->plotOptions->pie = (object) array(
'allowPointSelect' => TRUE,
'cursor' => 'pointer',
'dataLabels' => (object) array(
'enabled' => TRUE,
),
'showInLegend' => TRUE,
);
$highchart->plotOptions->bar = (object) array(
'dataLabels' => (object) array(
'enabled' => TRUE,
),
);
$highchart->credits = new \stdClass();
$highchart->credits->enabled = FALSE;
// Rendering.
$highchart->chart->renderTo = $chart_id;
$information = array(
'library' => 'highcharts',
'options' => $highchart,
);
// Add Drupal.settings for this chart.
$chart['#attached']['js'][] = array(
'type' => 'setting',
'data' => array(
'visualization' => array(
$chart_id => $information,
),
),
);
return $chart;
}