abstract class Dimension in Dimension 8
Same name in this branch
- 8 src/Plugin/Field/FieldFormatter/Dimension.php \Drupal\dimension\Plugin\Field\FieldFormatter\Dimension
 - 8 src/Plugin/Field/FieldWidget/Dimension.php \Drupal\dimension\Plugin\Field\FieldWidget\Dimension
 - 8 src/Plugin/Field/FieldType/Dimension.php \Drupal\dimension\Plugin\Field\FieldType\Dimension
 
Same name and namespace in other branches
- 2.1.x src/Plugin/Field/FieldType/Dimension.php \Drupal\dimension\Plugin\Field\FieldType\Dimension
 - 2.0.x src/Plugin/Field/FieldType/Dimension.php \Drupal\dimension\Plugin\Field\FieldType\Dimension
 
Hierarchy
- class \Drupal\Core\TypedData\TypedData implements PluginInspectionInterface, TypedDataInterface uses DependencySerializationTrait, StringTranslationTrait, TypedDataTrait
- class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, ComplexDataInterface
- class \Drupal\Core\Field\FieldItemBase implements FieldItemInterface
- class \Drupal\Core\Field\Plugin\Field\FieldType\NumericItemBase
- class \Drupal\Core\Field\Plugin\Field\FieldType\DecimalItem
 
 
 - class \Drupal\Core\Field\Plugin\Field\FieldType\NumericItemBase
 
 - class \Drupal\Core\Field\FieldItemBase implements FieldItemInterface
 
 - class \Drupal\Core\TypedData\Plugin\DataType\Map implements \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, ComplexDataInterface
 
Expanded class hierarchy of Dimension
2 string references to 'Dimension'
- dimension.info.yml in ./
dimension.info.yml  - dimension.info.yml
 - Dimension::formElement in src/
Plugin/ Field/ FieldWidget/ Dimension.php  - Returns the form for a single field widget.
 
File
- src/
Plugin/ Field/ FieldType/ Dimension.php, line 15  
Namespace
Drupal\dimension\Plugin\Field\FieldTypeView source
abstract class Dimension extends DecimalItem implements Basic {
  /**
   * The calculated length, area or volume.
   *
   * @var float
   */
  protected $value;
  /**
   * {@inheritdoc}
   */
  protected static function _defaultStorageSettings($fields) {
    $settings = array(
      'storage_value' => array(
        'precision' => 10,
        'scale' => 2,
      ),
    );
    foreach ($fields as $key => $label) {
      $settings['storage_' . $key] = array(
        'precision' => 10,
        'scale' => 2,
      );
    }
    return $settings;
  }
  /**
   * {@inheritdoc}
   */
  protected static function _defaultFieldSettings($fields) {
    $settings = array(
      'value' => array(
        'factor' => 1,
        'min' => '',
        'max' => '',
        'prefix' => '',
        'suffix' => '',
      ),
    );
    foreach ($fields as $key => $label) {
      $settings[$key] = array(
        'factor' => 1,
        'min' => '',
        'max' => '',
        'prefix' => '',
        'suffix' => '',
      );
    }
    return $settings;
  }
  /**
   * {@inheritdoc}
   */
  protected static function _propertyDefinitions(FieldStorageDefinitionInterface $field_definition, $fields) {
    $properties = array();
    $properties['value'] = DataDefinition::create('string')
      ->setLabel(t('Value'))
      ->setRequired(TRUE);
    foreach ($fields as $key => $label) {
      $properties[$key] = DataDefinition::create('string')
        ->setLabel($label)
        ->setRequired(TRUE);
    }
    return $properties;
  }
  /**
   * {@inheritdoc}
   */
  protected static function _schema(FieldStorageDefinitionInterface $field_definition, $fields) {
    $settings = $field_definition
      ->getSetting('storage_value');
    $schema = array(
      'columns' => array(
        'value' => array(
          'type' => 'numeric',
          'precision' => $settings['precision'],
          'scale' => $settings['scale'],
        ),
      ),
    );
    foreach ($fields as $key => $label) {
      $settings = $field_definition
        ->getSetting('storage_' . $key);
      $schema['columns'][$key] = array(
        'type' => 'numeric',
        'precision' => $settings['precision'],
        'scale' => $settings['scale'],
      );
    }
    return $schema;
  }
  private function _storageSettings(&$element, $key, $label, $has_data, $settings) {
    $element[$key] = array(
      '#type' => 'fieldset',
      '#title' => $label,
    );
    $range = range(10, 32);
    $element[$key]['precision'] = array(
      '#type' => 'select',
      '#title' => $this
        ->t('Precision'),
      '#options' => array_combine($range, $range),
      '#default_value' => $settings['precision'],
      '#description' => $this
        ->t('The total number of digits to store in the database, including those to the right of the decimal.'),
      '#disabled' => $has_data,
    );
    $range = range(0, 10);
    $element[$key]['scale'] = array(
      '#type' => 'select',
      '#title' => $this
        ->t('Scale', array(), array(
        'decimal places',
      )),
      '#options' => array_combine($range, $range),
      '#default_value' => $settings['scale'],
      '#description' => $this
        ->t('The number of digits to the right of the decimal.'),
      '#disabled' => $has_data,
    );
  }
  /**
   * {@inheritdoc}
   */
  public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
    $element = array();
    /** @noinspection StaticInvocationViaThisInspection */
    foreach ($this
      ->fields() as $key => $label) {
      $this
        ->_storageSettings($element, $key, $label, $has_data, $this
        ->getSetting('storage_' . $key));
    }
    $this
      ->_storageSettings($element, 'value', $this
      ->t('Full dimension'), $has_data, $this
      ->getSetting('storage_value'));
    return $element;
  }
  private function _fieldSettings(&$element, $key, $label, $hide_constraints = FALSE) {
    $settings = $this
      ->getSetting($key);
    $storage_settings = $this
      ->getSetting('storage_' . $key);
    $element[$key] = array(
      '#type' => 'fieldset',
      '#title' => $label,
    );
    $element[$key]['factor'] = array(
      '#type' => 'number',
      '#title' => $this
        ->t('Factor'),
      '#default_value' => $settings['factor'],
      '#step' => 0.1 ** 2,
      '#required' => TRUE,
      '#description' => $this
        ->t('A factor to multiply the @label with when calculating the @field', array(
        '@label' => $label,
        '@field' => $this
          ->getFieldDefinition()
          ->getLabel(),
      )),
      '#access' => !$hide_constraints,
    );
    $element[$key]['min'] = array(
      '#type' => 'number',
      '#title' => $this
        ->t('Minimum'),
      '#default_value' => $settings['min'],
      '#step' => 0.1 ** $storage_settings['scale'],
      '#description' => $this
        ->t('The minimum value that should be allowed in this field. Leave blank for no minimum.'),
      '#access' => !$hide_constraints,
    );
    $element[$key]['max'] = array(
      '#type' => 'number',
      '#title' => $this
        ->t('Maximum'),
      '#default_value' => $settings['max'],
      '#step' => 0.1 ** $storage_settings['scale'],
      '#description' => $this
        ->t('The maximum value that should be allowed in this field. Leave blank for no maximum.'),
      '#access' => !$hide_constraints,
    );
    $element[$key]['prefix'] = array(
      '#type' => 'textfield',
      '#title' => $this
        ->t('Prefix'),
      '#default_value' => $settings['prefix'],
      '#size' => 60,
      '#description' => $this
        ->t("Define a string that should be prefixed to the value, like 'cm ' or 'inch '. Leave blank for none. Separate singular and plural values with a pipe ('inch|inches')."),
    );
    $element[$key]['suffix'] = array(
      '#type' => 'textfield',
      '#title' => $this
        ->t('Suffix'),
      '#default_value' => $settings['suffix'],
      '#size' => 60,
      '#description' => $this
        ->t("Define a string that should be suffixed to the value, like ' mm', ' inch'. Leave blank for none. Separate singular and plural values with a pipe ('inch|inches')."),
    );
  }
  /**
   * {@inheritdoc}
   */
  public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
    $element = array();
    /** @noinspection StaticInvocationViaThisInspection */
    foreach ($this
      ->fields() as $key => $label) {
      $this
        ->_fieldSettings($element, $key, $label);
    }
    $this
      ->_fieldSettings($element, 'value', $this
      ->t('Full dimension'), TRUE);
    return $element;
  }
  /**
   * {@inheritdoc}
   */
  public function getConstraints() {
    $constraint_manager = Drupal::typedDataManager()
      ->getValidationConstraintManager();
    $constraints = array();
    foreach ($this->definition
      ->getConstraints() as $name => $options) {
      $constraints[] = $constraint_manager
        ->create($name, $options);
    }
    /** @noinspection StaticInvocationViaThisInspection */
    foreach ($this
      ->fields() as $key => $label) {
      $settings = $this
        ->getSetting($key);
      $constraints[] = $constraint_manager
        ->create('ComplexData', array(
        $key => array(
          'Regex' => array(
            'pattern' => '/^[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))$/i',
          ),
        ),
      ));
      if (!empty($settings['min'])) {
        $min = $settings['min'];
        $constraints[] = $constraint_manager
          ->create('ComplexData', array(
          $key => array(
            'Range' => array(
              'min' => $min,
              'minMessage' => $this
                ->t('%name: the value may be no less than %min.', array(
                '%name' => $label,
                '%min' => $min,
              )),
            ),
          ),
        ));
      }
      if (!empty($settings['max'])) {
        $max = $settings['max'];
        $constraints[] = $constraint_manager
          ->create('ComplexData', array(
          $key => array(
            'Range' => array(
              'max' => $max,
              'maxMessage' => $this
                ->t('%name: the value may be no greater than %max.', array(
                '%name' => $label,
                '%max' => $max,
              )),
            ),
          ),
        ));
      }
    }
    return $constraints;
  }
  /**
   * {@inheritdoc}
   */
  public function preSave() {
    $values = array();
    /** @noinspection StaticInvocationViaThisInspection */
    foreach ($this
      ->fields() as $key => $label) {
      $values[$key] = $this->{$key};
      $storage_settings = $this
        ->getSetting('storage_' . $key);
      $this->{$key} = round($this->{$key}, $storage_settings['scale']);
    }
    $this->value = $this
      ->calculate($values);
  }
  /**
   * {@inheritdoc}
   */
  public function isEmpty() {
    /** @noinspection StaticInvocationViaThisInspection */
    foreach ($this
      ->fields() as $key => $label) {
      if (empty($this->{$key}) && (string) $this->{$key} !== '0') {
        return TRUE;
      }
    }
    return FALSE;
  }
  public function calculate($values) {
    $value = 1;
    /** @noinspection StaticInvocationViaThisInspection */
    foreach ($this
      ->fields() as $key => $label) {
      $settings = $this
        ->getSetting($key);
      $storage_settings = $this
        ->getSetting('storage_' . $key);
      $values[$key] = round($values[$key], $storage_settings['scale']);
      $value *= $values[$key] * $settings['factor'];
    }
    $storage_settings = $this
      ->getSetting('storage_value');
    return round($value, $storage_settings['scale']);
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            Basic:: | 
                  public static | function | ||
| 
            DecimalItem:: | 
                  public static | function | 
            Defines the storage-level settings for this plugin. Overrides FieldItemBase:: | 
                  |
| 
            DecimalItem:: | 
                  public static | function | 
            Generates placeholder field values. Overrides FieldItemBase:: | 
                  |
| 
            DecimalItem:: | 
                  protected static | function | Helper method to get the number of decimal digits out of a decimal number. | |
| 
            DecimalItem:: | 
                  public static | function | 
            Defines field item properties. Overrides FieldItemInterface:: | 
                  |
| 
            DecimalItem:: | 
                  public static | function | 
            Returns the schema for the field. Overrides FieldItemInterface:: | 
                  |
| 
            DependencySerializationTrait:: | 
                  protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| 
            DependencySerializationTrait:: | 
                  protected | property | An array of service IDs keyed by property name used for serialization. | |
| 
            DependencySerializationTrait:: | 
                  public | function | 1 | |
| 
            DependencySerializationTrait:: | 
                  public | function | 2 | |
| 
            Dimension:: | 
                  protected | property | The calculated length, area or volume. | |
| 
            Dimension:: | 
                  public | function | ||
| 
            Dimension:: | 
                  public | function | 
            Returns a form for the field-level settings. Overrides DecimalItem:: | 
                  |
| 
            Dimension:: | 
                  public | function | 
            Gets a list of validation constraints. Overrides DecimalItem:: | 
                  |
| 
            Dimension:: | 
                  public | function | 
            Determines whether the data structure is empty. Overrides NumericItemBase:: | 
                  |
| 
            Dimension:: | 
                  public | function | 
            Defines custom presave behavior for field values. Overrides DecimalItem:: | 
                  |
| 
            Dimension:: | 
                  public | function | 
            Returns a form for the storage-level settings. Overrides DecimalItem:: | 
                  |
| 
            Dimension:: | 
                  protected static | function | ||
| 
            Dimension:: | 
                  protected static | function | ||
| 
            Dimension:: | 
                  private | function | ||
| 
            Dimension:: | 
                  protected static | function | ||
| 
            Dimension:: | 
                  protected static | function | ||
| 
            Dimension:: | 
                  private | function | ||
| 
            FieldItemBase:: | 
                  public static | function | 
            Calculates dependencies for field items. Overrides FieldItemInterface:: | 
                  2 | 
| 
            FieldItemBase:: | 
                  public static | function | 
            Calculates dependencies for field items on the storage level. Overrides FieldItemInterface:: | 
                  1 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Defines custom delete behavior for field values. Overrides FieldItemInterface:: | 
                  2 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Defines custom revision delete behavior for field values. Overrides FieldItemInterface:: | 
                  |
| 
            FieldItemBase:: | 
                  public static | function | 
            Returns a settings array in the field type's canonical representation. Overrides FieldItemInterface:: | 
                  1 | 
| 
            FieldItemBase:: | 
                  public static | function | 
            Returns a settings array that can be stored as a configuration value. Overrides FieldItemInterface:: | 
                  1 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Gets the entity that field belongs to. Overrides FieldItemInterface:: | 
                  |
| 
            FieldItemBase:: | 
                  public | function | 
            Gets the field definition. Overrides FieldItemInterface:: | 
                  |
| 
            FieldItemBase:: | 
                  public | function | 
            Gets the langcode of the field values held in the object. Overrides FieldItemInterface:: | 
                  |
| 
            FieldItemBase:: | 
                  protected | function | Returns the value of a field setting. | |
| 
            FieldItemBase:: | 
                  protected | function | Returns the array of field settings. | |
| 
            FieldItemBase:: | 
                  public static | function | 
            Returns the name of the main property, if any. Overrides FieldItemInterface:: | 
                  8 | 
| 
            FieldItemBase:: | 
                  public static | function | 
            Informs the plugin that a dependency of the field will be deleted. Overrides FieldItemInterface:: | 
                  1 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Defines custom post-save behavior for field values. Overrides FieldItemInterface:: | 
                  2 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Sets the data value. Overrides Map:: | 
                  4 | 
| 
            FieldItemBase:: | 
                  public static | function | 
            Returns a settings array in the field type's canonical representation. Overrides FieldItemInterface:: | 
                  2 | 
| 
            FieldItemBase:: | 
                  public static | function | 
            Returns a settings array that can be stored as a configuration value. Overrides FieldItemInterface:: | 
                  2 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Returns a renderable array for a single field item. Overrides FieldItemInterface:: | 
                  |
| 
            FieldItemBase:: | 
                  protected | function | 
            Different to the parent Map class, we avoid creating property objects as
far as possible in order to optimize performance. Thus we just update
$this->values if no property object has been created yet. Overrides Map:: | 
                  |
| 
            FieldItemBase:: | 
                  public | function | 
            Constructs a TypedData object given its definition and context. Overrides TypedData:: | 
                  1 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Magic method: Gets a property value. Overrides FieldItemInterface:: | 
                  2 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Magic method: Determines whether a property is set. Overrides FieldItemInterface:: | 
                  |
| 
            FieldItemBase:: | 
                  public | function | 
            Magic method: Sets a property value. Overrides FieldItemInterface:: | 
                  1 | 
| 
            FieldItemBase:: | 
                  public | function | 
            Magic method: Unsets a property. Overrides FieldItemInterface:: | 
                  |
| 
            Map:: | 
                  protected | property | 
            The data definition. Overrides TypedData:: | 
                  |
| 
            Map:: | 
                  protected | property | The array of properties. | |
| 
            Map:: | 
                  protected | property | An array of values for the contained properties. | |
| 
            Map:: | 
                  public | function | 
            Applies the default value. Overrides TypedData:: | 
                  4 | 
| 
            Map:: | 
                  public | function | 
            Gets a property object. Overrides ComplexDataInterface:: | 
                  |
| 
            Map:: | 
                  public | function | ||
| 
            Map:: | 
                  public | function | 
            Gets an array of property objects. Overrides ComplexDataInterface:: | 
                  |
| 
            Map:: | 
                  public | function | 
            Returns a string representation of the data. Overrides TypedData:: | 
                  |
| 
            Map:: | 
                  public | function | 
            Gets the data value. Overrides TypedData:: | 
                  1 | 
| 
            Map:: | 
                  public | function | 
            Overrides TraversableTypedDataInterface:: | 
                  4 | 
| 
            Map:: | 
                  public | function | 
            Sets a property value. Overrides ComplexDataInterface:: | 
                  |
| 
            Map:: | 
                  public | function | 
            Returns an array of all property values. Overrides ComplexDataInterface:: | 
                  1 | 
| 
            Map:: | 
                  public | function | Magic method: Implements a deep clone. | |
| 
            NumericItemBase:: | 
                  public static | function | 
            Defines the field-level settings for this plugin. Overrides FieldItemBase:: | 
                  1 | 
| 
            NumericItemBase:: | 
                  protected static | function | Helper method to truncate a decimal number to a given number of decimals. | |
| 
            StringTranslationTrait:: | 
                  protected | property | The string translation service. | 1 | 
| 
            StringTranslationTrait:: | 
                  protected | function | Formats a string containing a count of items. | |
| 
            StringTranslationTrait:: | 
                  protected | function | Returns the number of plurals supported by a given language. | |
| 
            StringTranslationTrait:: | 
                  protected | function | Gets the string translation service. | |
| 
            StringTranslationTrait:: | 
                  public | function | Sets the string translation service to use. | 2 | 
| 
            StringTranslationTrait:: | 
                  protected | function | Translates a string to the current language or to a given language. | |
| 
            TypedData:: | 
                  protected | property | The property name. | |
| 
            TypedData:: | 
                  protected | property | The parent typed data object. | |
| 
            TypedData:: | 
                  public static | function | 
            Constructs a TypedData object given its definition and context. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Gets the data definition. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Returns the name of a property or item. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Returns the parent data structure; i.e. either complex data or a list. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Returns the property path of the data. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Returns the root of the typed data tree. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Sets the context of a property or item via a context aware parent. Overrides TypedDataInterface:: | 
                  |
| 
            TypedData:: | 
                  public | function | 
            Validates the currently set data value. Overrides TypedDataInterface:: | 
                  |
| 
            TypedDataTrait:: | 
                  protected | property | The typed data manager used for creating the data types. | |
| 
            TypedDataTrait:: | 
                  public | function | Gets the typed data manager. | 2 | 
| 
            TypedDataTrait:: | 
                  public | function | Sets the typed data manager. | 2 |