You are here

class Flot in Flot 8

Provides a flot render element.

Plugin annotation

@RenderElement("flot");

Hierarchy

Expanded class hierarchy of Flot

1 file declares its use of Flot
Overview.php in flot_examples/src/Element/Overview.php
1 string reference to 'Flot'
flot.info.yml in ./flot.info.yml
flot.info.yml
30 #type uses of Flot
Ajax::content in flot_examples/src/Controller/Ajax.php
Function realtime.
Annotating::content in flot_examples/src/Controller/Annotating.php
Function realtime.
AxesInteracting::content in flot_examples/src/Controller/AxesInteracting.php
Zooming.
AxesMultiple::content in flot_examples/src/Controller/AxesMultiple.php
Multiple Axes.
AxesTime::content in flot_examples/src/Controller/AxesTime.php
Time Axes.

... See full list

File

src/Element/Flot.php, line 13

Namespace

Drupal\flot\Element
View source
class Flot extends RenderElement {

  /**
   * Define the available options for our new render element.
   */
  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,
    ];
  }

  /**
   * PreRender Function.
   *
   * Before rendering, we will scan the element's variables to see which
   * libraries need to be included. Add the appropriate libraries, and add
   * the necessary variables to drupalSettings so that the JS can access them.
   */
  public static function preRenderPlot($element) {
    $element['#id'] = $element['#id'] === NULL ? Html::getUniqueId('flot-chart') : $element['#id'];

    // Initaialize with current library list in case some have already
    // been specified.
    $libraries = isset($element['#attached']['library']) ? $element['#attached']['library'] : [];

    // Add the main flot library.
    $libraries[] = 'flot/flot';

    // Add if user want to resize the chart.
    if ($element['#resizable']) {
      $libraries[] = 'flot/resize';
    }

    // Examine the options variable to see what js files we need to include.
    if (isset($element['#options']['xaxis']['mode']) && $element['#options']['xaxis']['mode'] == 'categories') {
      $libraries[] = 'flot/categories';
    }

    // Examine all the xaxes elements to see if any are time-series.
    $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';
    }

    // Check if the selection option is set.
    if (isset($element['#options']['selection'])) {
      $libraries[] = 'flot/selection';
    }

    // Check if the crosshair option is set.
    if (isset($element['#options']['crosshair'])) {
      $libraries[] = 'flot/crosshair';
    }

    // Check if the pan or zoom options are set.
    if (isset($element['#options']['pan']) || isset($element['#options']['zoom'])) {
      $libraries[] = 'flot/navigate';
    }

    // Check if the stack option is set.
    if (isset($element['#options']['series']['stack'])) {
      $libraries[] = 'flot/stack';
    }

    // Check if the images option is set.
    if (isset($element['#options']['series']['images'])) {
      $libraries[] = 'flot/images';
    }

    // Check if the chart is a pie chart.
    if (isset($element['#options']['series']['pie'])) {
      $libraries[] = 'flot/pie';
    }

    // Check if the canvas option is set.
    if (isset($element['#options']['canvas']) && $element['#options']['canvas']) {
      $libraries[] = 'flot/canvas';
    }

    // Examine the data to see what js files we need to include.
    $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';
      }
    }

    // Create a collection of the data and options for the javascript files.
    $drupalsettings['flot'][$element['#id']] = [
      'data' => $element['#data'],
      'options' => $element['#options'],
    ];
    $element['#attached'] = [
      'drupalSettings' => $drupalsettings,
      'library' => $libraries,
    ];
    return $element;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
Flot::getInfo public function Define the available options for our new render element. Overrides ElementInterface::getInfo 1
Flot::preRenderPlot public static function PreRender Function. 1
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
RenderElement::preRenderAjaxForm public static function Adds Ajax information about an element to communicate with JavaScript.
RenderElement::preRenderGroup public static function Adds members of this group as actual elements for rendering.
RenderElement::processAjaxForm public static function Form element processing handler for the #ajax form property. 1
RenderElement::processGroup public static function Arranges elements into groups.
RenderElement::setAttributes public static function Sets a form element's class attribute. Overrides ElementInterface::setAttributes
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.