visualn-8.x-1.x-dev/modules/visualn_basic_drawers/src/Plugin/VisualN/DataGenerator/LinechartBasicDataGenerator.php

modules/visualn_basic_drawers/src/Plugin/VisualN/DataGenerator/LinechartBasicDataGenerator.php
<?php

// @todo: sync generator config with drawer preview config settings (?)

namespace Drupal\visualn_basic_drawers\Plugin\VisualN\DataGenerator;

use Drupal\visualn\Core\DataGeneratorBase;
use Drupal\Core\Form\FormStateInterface;

// @todo: as a good practice, use the same machine name as for main compatible drawer
//   document in best practices

/**
 * Provides an 'Linechart Basic' VisualN data generator.
 *
 * @ingroup data_generator_plugins
 *
 * @VisualNDataGenerator(
 *  id = "visualn_linechart_basic",
 *  label = @Translation("Linechart Basic"),
 *  compatible_drawers = {
 *    "visualn_linechart_basic"
 *  }
 * )
 */
class LinechartBasicDataGenerator extends DataGeneratorBase {

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'number' => '5',
      'series_number' => '1',
    ] + parent::defaultConfiguration();
 }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    $form['number'] = [
      '#type' => 'number',
      '#title' => t('Number of points'),
      '#default_value' => $this->configuration['number'],
      '#min' => 1,
      '#max' => 15,
      '#required' => TRUE,
    ];

    // @todo: currently no way to set different number of points for each series
    $form['series_number'] = [
      '#type' => 'number',
      '#title' => t('Number of series'),
      '#default_value' => $this->configuration['series_number'],
      '#min' => 1,
      '#max' => 10,
      '#required' => TRUE,
    ];

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function generateData() {
    $data = [];
    for ($i = 0; $i < $this->configuration['number']; $i++) {
      $data[$i]['x'] = $i+1;
      for ($j = 1; $j <= $this->configuration['series_number']; $j++) {
        $data[$i]['data' . $j] = mt_rand(0, 9);
      }
    }

    return $data;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc