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

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

namespace Drupal\visualn_basic_drawers\Plugin\VisualN\DataGenerator;

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

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

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'center_lat' => '51.8',
      'center_lng' => '104.8',
      'number' => '3',
    ] + parent::defaultConfiguration();
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
    $form['description'] = [
      '#markup' => '<div>' . t('Enter coordinates for the center') . '</div>',
    ];
    $form['center_lat'] = [
      '#type' => 'textfield',
      '#title' => t('Center latitude'),
      '#default_value' => $this->configuration['center_lat'],
      '#required' => TRUE,
      '#size' => 10,
    ];
    $form['center_lng'] = [
      '#type' => 'textfield',
      '#title' => t('Center longitude'),
      '#default_value' => $this->configuration['center_lng'],
      '#required' => TRUE,
      '#size' => 10,
    ];
    $form['number'] = [
      '#type' => 'number',
      '#title' => t('Number of points'),
      '#default_value' => $this->configuration['number'],
      '#min' => 0,
      '#max' => 15,
      '#required' => TRUE,
    ];

    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function generateData() {
    $data = [];

    // generate points latitude, longitude and title
    for ($i = 1; $i <= $this->configuration['number']; $i++) {
      $data[] = [
        'title' => $title = t('Point #') . $i,
        'lat' => $this->configuration['center_lat'] + mt_rand() / mt_getrandmax()*0.2 - 0.1,
        'lng' => $this->configuration['center_lng'] + mt_rand() / mt_getrandmax()*0.2 - 0.1
      ];
    }

    return $data;
  }

}

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

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