You are here

public function ChartsApiExample::display in Charts 8.4

Same name and namespace in other branches
  1. 8.3 modules/charts_api_example/src/Controller/ChartsApiExample.php \Drupal\charts_api_example\Controller\ChartsApiExample::display()
  2. 5.0.x modules/charts_api_example/src/Controller/ChartsApiExample.php \Drupal\charts_api_example\Controller\ChartsApiExample::display()

Display.

Return value

array Array to render.

1 string reference to 'ChartsApiExample::display'
charts_api_example.routing.yml in modules/charts_api_example/charts_api_example.routing.yml
modules/charts_api_example/charts_api_example.routing.yml

File

modules/charts_api_example/src/Controller/ChartsApiExample.php, line 59

Class

ChartsApiExample
Charts Api Example.

Namespace

Drupal\charts_api_example\Controller

Code

public function display() {
  $library = $this->chartSettings['library'];
  if (empty($library)) {
    $this->messenger
      ->addError($this
      ->t('You need to first configure Charts default settings'));
    return [];
  }

  // If you want to include raw options, you can do so like this.
  // $options = [
  // 'chart' => [
  // 'backgroundColor' => '#000000'
  // ]
  // ];.
  $build = [
    '#type' => 'chart',
    '#chart_type' => $this->chartSettings['type'],
    '#title' => $this
      ->t('Chart title'),
    '#title_position' => 'out',
    '#tooltips' => $this->chartSettings['display']['tooltips'],
    '#data_labels' => $this->chartSettings['data_labels'] ?? '',
    '#colors' => $this->chartSettings['display']['colors'],
    '#background' => $this->chartSettings['display']['background'] ? $this->chartSettings['display']['background'] : 'transparent',
    '#legend' => !empty($this->chartSettings['display']['legend_position']),
    '#legend_position' => $this->chartSettings['display']['legend_position'] ? $this->chartSettings['display']['legend_position'] : '',
    '#width' => $this->chartSettings['display']['dimensions']['width'],
    '#height' => $this->chartSettings['display']['dimensions']['height'],
    '#width_units' => $this->chartSettings['display']['dimensions']['width_units'],
    '#height_units' => $this->chartSettings['display']['dimensions']['height_units'],
    // '#raw_options' => $options,
    '#chart_id' => 'foobar',
  ];
  $categories = [
    'Category 1',
    'Category 2',
    'Category 3',
    'Category 4',
  ];
  $build['xaxis'] = [
    '#type' => 'chart_xaxis',
    '#labels' => $categories,
    '#title' => $this->chartSettings['xaxis']['title'] ? $this->chartSettings['xaxis']['title'] : FALSE,
    '#labels_rotation' => $this->chartSettings['xaxis']['labels_rotation'],
    '#axis_type' => $this->chartSettings['type'],
  ];
  $build['yaxis'] = [
    '#type' => 'chart_yaxis',
    '#title' => $this->chartSettings['yaxis']['title'] ? $this->chartSettings['yaxis']['title'] : '',
    '#labels_rotation' => $this->chartSettings['yaxis']['labels_rotation'],
    '#max' => $this->chartSettings['yaxis']['max'],
    '#min' => $this->chartSettings['yaxis']['min'],
  ];
  $i = 0;
  $build[$i] = [
    '#type' => 'chart_data',
    '#data' => [
      250,
      350,
      400,
      200,
    ],
    '#title' => 'Series 1',
  ];

  // Sample data format.
  $seriesData[] = [
    'name' => 'Series 1',
    'color' => '#0d233a',
    'type' => $this->chartSettings['type'],
    'data' => [
      250,
      350,
      400,
      200,
    ],
  ];
  switch ($this->chartSettings['type']) {
    default:
      $seriesData[] = [
        'name' => 'Series 2',
        'color' => '#8bbc21',
        'type' => 'line',
        'data' => [
          150,
          450,
          500,
          300,
        ],
      ];
      $seriesData[] = [
        'name' => 'Series 3',
        'color' => '#910000',
        'type' => 'area',
        'data' => [
          0,
          0,
          60,
          90,
        ],
      ];
    case 'pie':
    case 'donut':
  }
  foreach ($seriesData as $index => $data) {
    $build[$index] = [
      '#type' => 'chart_data',
      '#data' => $data['data'],
      '#title' => $data['name'],
      '#color' => $data['color'],
      '#chart_type' => $data['type'],
    ];
  }

  // Creates a UUID for the chart ID.
  $chartId = 'chart-' . $this->uuidService
    ->generate();
  $build['#id'] = $chartId;
  return $build;
}