You are here

class MapRenderEventSubscriber in farmOS 2.x

Same name in this branch
  1. 2.x modules/asset/land/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_land\EventSubscriber\MapRenderEventSubscriber
  2. 2.x modules/asset/structure/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_structure\EventSubscriber\MapRenderEventSubscriber
  3. 2.x modules/core/map/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_map\EventSubscriber\MapRenderEventSubscriber
  4. 2.x modules/core/quantity/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\quantity\EventSubscriber\MapRenderEventSubscriber
  5. 2.x modules/core/ui/map/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_ui_map\EventSubscriber\MapRenderEventSubscriber
  6. 2.x modules/core/map/modules/mapbox/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_map_mapbox\EventSubscriber\MapRenderEventSubscriber

An event subscriber for the MapRenderEvent.

Hierarchy

Expanded class hierarchy of MapRenderEventSubscriber

1 string reference to 'MapRenderEventSubscriber'
farm_structure.services.yml in modules/asset/structure/farm_structure.services.yml
modules/asset/structure/farm_structure.services.yml
1 service uses MapRenderEventSubscriber
farm_structure.map_render_event_subscriber in modules/asset/structure/farm_structure.services.yml
Drupal\farm_structure\EventSubscriber\MapRenderEventSubscriber

File

modules/asset/structure/src/EventSubscriber/MapRenderEventSubscriber.php, line 15

Namespace

Drupal\farm_structure\EventSubscriber
View source
class MapRenderEventSubscriber implements EventSubscriberInterface {
  use StringTranslationTrait;

  /**
   * Structure asset type.
   *
   * @var \Drupal\asset\Entity\AssetTypeInterface
   */
  protected $structureAssetType;

  /**
   * The layer style loader service.
   *
   * @var \Drupal\farm_map\layerStyleLoader
   */
  protected $layerStyleLoader;

  /**
   * MapRenderEventSubscriber Constructor.
   *
   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
   *   The entity type manager service.
   * @param \Drupal\farm_map\layerStyleLoaderInterface $layer_style_loader
   *   The layer style loader service.
   */
  public function __construct(EntityTypeManagerInterface $entity_type_manager, layerStyleLoaderInterface $layer_style_loader) {
    $this->structureAssetType = $entity_type_manager
      ->getStorage('asset_type')
      ->load('structure');
    $this->layerStyleLoader = $layer_style_loader;
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    return [
      MapRenderEvent::EVENT_NAME => [
        'onMapRender',
        -100,
      ],
    ];
  }

  /**
   * React to the MapRenderEvent.
   *
   * @param \Drupal\farm_map\Event\MapRenderEvent $event
   *   The MapRenderEvent.
   */
  public function onMapRender(MapRenderEvent $event) {

    // Get the map ID.
    $map_id = $event
      ->getmapType()
      ->id();

    // Add structure type layers to dashboard map.
    if ($map_id == 'dashboard') {
      $layers = [];

      // Define the parent group.
      $group = $this
        ->t('Locations');

      // Create a layer group for the asset type.
      $layers['structure'] = [
        'group' => $group,
        'label' => $this->structureAssetType
          ->label(),
        'is_group' => TRUE,
      ];

      // Load structure types.
      $structure_types = FarmStructureType::loadMultiple();

      // Create a layer for each sub-type.
      foreach ($structure_types as $structure_type) {

        /** @var \Drupal\farm_map\Entity\LayerStyleInterface $layer_style */
        $conditions = [
          'asset_type' => 'structure',
          'structure_type' => $structure_type
            ->id(),
        ];
        $layer_style = $this->layerStyleLoader
          ->load($conditions);
        if (!empty($layer_style)) {
          $color = $layer_style
            ->get('color');
        }
        $layers['structure_' . $structure_type
          ->id()] = [
          'group' => $this->structureAssetType
            ->label(),
          'label' => $structure_type
            ->label(),
          'asset_type' => 'structure',
          'filters' => [
            'structure_type_value[]' => $structure_type
              ->id(),
          ],
          'color' => $color ?? 'orange',
          'zoom' => TRUE,
        ];
      }

      // Add layers to the map settings.
      $settings[$event
        ->getMapTargetId()]['asset_type_layers'] = $layers;
      $event
        ->addSettings($settings);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
MapRenderEventSubscriber::$layerStyleLoader protected property The layer style loader service.
MapRenderEventSubscriber::$structureAssetType protected property Structure asset type.
MapRenderEventSubscriber::getSubscribedEvents public static function
MapRenderEventSubscriber::onMapRender public function React to the MapRenderEvent.
MapRenderEventSubscriber::__construct public function MapRenderEventSubscriber Constructor.
StringTranslationTrait::$stringTranslation protected property The string translation service. 4
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.