Flot.php in Flot 8
File
src/Element/Flot.php
View source
<?php
namespace Drupal\flot\Element;
use Drupal\Component\Utility\Html;
use Drupal\Core\Render\Element\RenderElement;
class Flot extends RenderElement {
public function getInfo() {
$class = get_class($this);
return [
'#pre_render' => [
[
$class,
'preRenderPlot',
],
],
'#attached' => array(),
'#theme' => 'flot_element',
'#data' => NULL,
'#options' => NULL,
'#id' => NULL,
'#resizable' => FALSE,
];
}
public static function preRenderPlot($element) {
$element['#id'] = $element['#id'] === NULL ? Html::getUniqueId('flot-chart') : $element['#id'];
$libraries = isset($element['#attached']['library']) ? $element['#attached']['library'] : [];
$libraries[] = 'flot/flot';
if ($element['#resizable']) {
$libraries[] = 'flot/resize';
}
if (isset($element['#options']['xaxis']['mode']) && $element['#options']['xaxis']['mode'] == 'categories') {
$libraries[] = 'flot/categories';
}
$time_axis = FALSE;
if (isset($element['#options']['xaxes']) && is_array($element['#options']['xaxes'])) {
foreach ($element['#options']['xaxes'] as $xaxis) {
if (isset($xaxis['mode']) && $xaxis['mode'] == 'time') {
$time_axis = TRUE;
}
}
}
if ($time_axis || isset($element['#options']['xaxis']['mode']) && $element['#options']['xaxis']['mode'] == 'time') {
$libraries[] = 'flot/time';
}
if (isset($element['#options']['selection'])) {
$libraries[] = 'flot/selection';
}
if (isset($element['#options']['crosshair'])) {
$libraries[] = 'flot/crosshair';
}
if (isset($element['#options']['pan']) || isset($element['#options']['zoom'])) {
$libraries[] = 'flot/navigate';
}
if (isset($element['#options']['series']['stack'])) {
$libraries[] = 'flot/stack';
}
if (isset($element['#options']['series']['images'])) {
$libraries[] = 'flot/images';
}
if (isset($element['#options']['series']['pie'])) {
$libraries[] = 'flot/pie';
}
if (isset($element['#options']['canvas']) && $element['#options']['canvas']) {
$libraries[] = 'flot/canvas';
}
$found_symbol = FALSE;
foreach ($element['#data'] as $series) {
if (isset($series['points']['symbol']) && !$found_symbol) {
$libraries[] = 'flot/symbol';
$found_symbol = TRUE;
}
if (isset($series['threshold'])) {
$libraries[] = 'flot/threshold';
}
if (isset($series['fillBetween'])) {
$libraries[] = 'flot/fillbetween';
}
if (isset($series['points']['errorbars'])) {
$libraries[] = 'flot/errorbars';
}
}
$drupalsettings['flot'][$element['#id']] = [
'data' => $element['#data'],
'options' => $element['#options'],
];
$element['#attached'] = [
'drupalSettings' => $drupalsettings,
'library' => $libraries,
];
return $element;
}
}
Classes
Name |
Description |
Flot |
Provides a flot render element. |