charts.api.php in Charts 8.4
Same filename and directory in other branches
Documentation on hooks provided by the Charts module.
Charts module provides 4 element types that can be used to construct a chart. In its most basic form, a chart may be created by specifying an element with the #type property "chart".
$chart = [
'#type' => 'chart',
'#chart_type' => 'pie',
'#data' => [
[
'Male',
10,
],
[
'Female',
20,
],
],
];
On charts that have multiple axes, you'll need to add individual sub-elements for each series of data. If you desire, you may also customize the axes by providing an axis element too.
$chart = [
'#type' => 'chart',
'#chart_type' => 'column',
];
$chart['male'] = [
'#type' => 'chart_data',
'#title' => t('Male'),
'#data' => [
10,
20,
30,
],
];
$chart['xaxis'] = [
'#type' => 'chart_xaxis',
'#title' => t('Month'),
'#labels' => [
t('Jan'),
t('Feb'),
t('Mar'),
],
];
Once you have generated a chart object, you can run \Drupal::service('renderer')->render() on it to turn it into HTML:
$output = \Drupal::service('renderer')
->render($chart);
There are many, many properties available for the four chart types (chart, chart_data, chart_xaxis, and chart_yaxis). For a full list, see the charts_element_info() function.
This module also includes a number of examples for reference, which can be views at "charts/examples". The source code may be read in the "charts.examples.inc" file in the includes directory.
See also
Drupal\charts\Element folder
File
charts.api.phpView source
<?php
/**
* @file
* Documentation on hooks provided by the Charts module.
*
* Charts module provides 4 element types that can be used to construct a chart.
* In its most basic form, a chart may be created by specifying an element
* with the #type property "chart".
*
* @code
* $chart = [
* '#type' => 'chart',
* '#chart_type' => 'pie',
* '#data' => [['Male', 10], ['Female', 20]],
* ];
* @endcode
*
* On charts that have multiple axes, you'll need to add individual sub-elements
* for each series of data. If you desire, you may also customize the axes by
* providing an axis element too.
*
* @code
* $chart = [
* '#type' => 'chart',
* '#chart_type' => 'column',
* ];
* $chart['male'] = [
* '#type' => 'chart_data',
* '#title' => t('Male'),
* '#data' => [10, 20, 30],
* ];
* $chart['xaxis'] = [
* '#type' => 'chart_xaxis',
* '#title' => t('Month'),
* '#labels' => [t('Jan'), t('Feb'), t('Mar')],
* ];
* @endcode
*
* Once you have generated a chart object, you can run
* \Drupal::service('renderer')->render() on it to turn it into HTML:
*
* @code
* $output = \Drupal::service('renderer')->render($chart);
* @endcode
*
* There are many, many properties available for the four chart types (chart,
* chart_data, chart_xaxis, and chart_yaxis). For a full list, see the
* charts_element_info() function.
*
* This module also includes a number of examples for reference, which can be
* views at "charts/examples". The source code may be read in the
* "charts.examples.inc" file in the includes directory.
*
* @see Drupal\charts\Element folder
*/
/**
* Alter an individual chart before it is printed.
*
* @param array $element
* The chart renderable. Passed in by reference.
* @param string $chart_id
* The chart identifier, pulled from the $chart['#chart_id'] property
* (if any). Not all charts have a chart identifier.
*/
function hook_chart_alter(array &$element, $chart_id) {
if ($chart_id === 'view_name__display_name') {
// Individual properties may be modified.
$element['#title_font_size'] = 20;
}
}
/**
* Alter an individual chart before it's rendered.
*
* Same as hook_chart_alter(), only including the $chart_id in the function
* name instead of being passed in as an argument.
*
* @see hook_chart_alter()
*/
function hook_chart_CHART_ID_alter(array &$element) {
}
/**
* Alter an individual chart's raw library representation.
*
* This hook is called AFTER hook_chart_alter(), after Charts module has
* converted the renderable into the chart definition that will be used by the
* library. Note that the structure of $definition will differ based on the
* charting library used. Switching charting libraries may cause your code
* to break when using this hook.
*
* Even though this hook may be fragile, it may provide developers with access
* to library-specific functionality.
*
* @param array $definition
* The chart definition to be modified. The raw values are passed directly to
* the charting library.
* @param array $element
* The chart renderable. This may be used for reference (or read to add
* support for new properties), but any changes to this variable will not
* have an effect on output.
* @param string $chart_id
* The chart ID, derived from the $chart['#chart_id'] property. Note that not
* all charts may have a $chart_id.
*/
function hook_chart_definition_alter(array &$definition, array $element, $chart_id) {
if ($element['#chart_library'] === 'google') {
$definition['options']['titleTextStyle']['fontSize'] = 20;
}
elseif ($element['#chart_library'] === 'highcharts') {
$definition['title']['style']['fontSize'] = 20;
}
}
/**
* Alter an individual chart before it's rendered.
*
* Same as hook_chart_definition_alter(), only including the $chart_id in the
* function name instead of being passed in as an argument.
*
* @see hook_chart_definition_alter()
*/
function hook_chart_definition_CHART_ID_alter(array &$definition, array $element, $chart_id) {
}
Functions
Name | Description |
---|---|
hook_chart_alter | Alter an individual chart before it is printed. |
hook_chart_CHART_ID_alter | Alter an individual chart before it's rendered. |
hook_chart_definition_alter | Alter an individual chart's raw library representation. |
hook_chart_definition_CHART_ID_alter | Alter an individual chart before it's rendered. |