farm-2.x-dev/modules/asset/sensor/src/Plugin/Asset/AssetType/Sensor.php
modules/asset/sensor/src/Plugin/Asset/AssetType/Sensor.php
<?php namespace Drupal\farm_sensor\Plugin\Asset\AssetType; use Drupal\data_stream\Entity\DataStream; use Drupal\farm_entity\Plugin\Asset\AssetType\FarmAssetType; /** * Provides the sensor asset type. * * @AssetType( * id = "sensor", * label = @Translation("Sensor"), * ) */ class Sensor extends FarmAssetType { /** * {@inheritdoc} */ public function buildFieldDefinitions() { $fields = parent::buildFieldDefinitions(); // Data stream field. $options = [ 'type' => 'entity_reference', 'label' => $this->t('Data stream'), 'description' => $this->t('Data streams provided by this sensor.'), 'target_type' => 'data_stream', 'multiple' => TRUE, 'weight' => [ 'form' => 4, 'view' => 4, ], ]; $fields['data_stream'] = $this->farmFieldFactory->bundleFieldDefinition($options); // Private key field. $options = [ 'type' => 'string', 'label' => $this->t('Private key'), 'description' => $this->t('Private key for the sensor.'), 'default_value_callback' => DataStream::class . '::createUniqueKey', 'weight' => [ 'form' => 3, ], 'hidden' => 'view', ]; $fields['private_key'] = $this->farmFieldFactory->bundleFieldDefinition($options); // Public field. $options = [ 'type' => 'boolean', 'label' => $this->t('Public'), 'description' => $this->t('Whether or not data from this sensor can be read publicly without the private key.'), 'default' => FALSE, 'weight' => [ 'form' => 2, 'view' => 2, ], ]; $fields['public'] = $this->farmFieldFactory->bundleFieldDefinition($options); return $fields; } }