You are here

public function NumericField::buildOptionsForm in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/views/src/Plugin/views/field/NumericField.php \Drupal\views\Plugin\views\field\NumericField::buildOptionsForm()
  2. 10 core/modules/views/src/Plugin/views/field/NumericField.php \Drupal\views\Plugin\views\field\NumericField::buildOptionsForm()

Default options form that provides the label widget that all fields should have.

Overrides FieldPluginBase::buildOptionsForm

1 call to NumericField::buildOptionsForm()
NodeNewComments::buildOptionsForm in core/modules/comment/src/Plugin/views/field/NodeNewComments.php
Default options form that provides the label widget that all fields should have.
1 method overrides NumericField::buildOptionsForm()
NodeNewComments::buildOptionsForm in core/modules/comment/src/Plugin/views/field/NodeNewComments.php
Default options form that provides the label widget that all fields should have.

File

core/modules/views/src/Plugin/views/field/NumericField.php, line 44

Class

NumericField
Render a field as a numeric value.

Namespace

Drupal\views\Plugin\views\field

Code

public function buildOptionsForm(&$form, FormStateInterface $form_state) {
  if (!empty($this->definition['float'])) {
    $form['set_precision'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Round'),
      '#description' => $this
        ->t('If checked, the number will be rounded.'),
      '#default_value' => $this->options['set_precision'],
    ];
    $form['precision'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Precision'),
      '#default_value' => $this->options['precision'],
      '#description' => $this
        ->t('Specify how many digits to print after the decimal point.'),
      '#states' => [
        'visible' => [
          ':input[name="options[set_precision]"]' => [
            'checked' => TRUE,
          ],
        ],
      ],
      '#size' => 2,
    ];
    $form['decimal'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Decimal point'),
      '#default_value' => $this->options['decimal'],
      '#description' => $this
        ->t('What single character to use as a decimal point.'),
      '#size' => 2,
    ];
  }
  $form['separator'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Thousands marker'),
    '#options' => [
      '' => $this
        ->t('- None -'),
      ',' => $this
        ->t('Comma'),
      ' ' => $this
        ->t('Space'),
      '.' => $this
        ->t('Decimal'),
      '\'' => $this
        ->t('Apostrophe'),
    ],
    '#default_value' => $this->options['separator'],
    '#description' => $this
      ->t('What single character to use as the thousands separator.'),
    '#size' => 2,
  ];
  $form['format_plural'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Format plural'),
    '#description' => $this
      ->t('If checked, special handling will be used for plurality.'),
    '#default_value' => $this->options['format_plural'],
  ];
  $form['format_plural_string'] = [
    '#type' => 'value',
    '#default_value' => $this->options['format_plural_string'],
  ];
  $plural_array = explode(PoItem::DELIMITER, $this->options['format_plural_string']);
  $plurals = $this
    ->getNumberOfPlurals($this->view->storage
    ->get('langcode'));
  for ($i = 0; $i < $plurals; $i++) {
    $form['format_plural_values'][$i] = [
      '#type' => 'textfield',
      // @todo Should use better labels https://www.drupal.org/node/2499639
      '#title' => $i == 0 ? $this
        ->t('Singular form') : $this
        ->formatPlural($i, 'First plural form', '@count. plural form'),
      '#default_value' => isset($plural_array[$i]) ? $plural_array[$i] : '',
      '#description' => $this
        ->t('Text to use for this variant, @count will be replaced with the value.'),
      '#states' => [
        'visible' => [
          ':input[name="options[format_plural]"]' => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
  }
  if ($plurals == 2) {

    // Simplify interface text for the most common case.
    $form['format_plural_values'][0]['#description'] = $this
      ->t('Text to use for the singular form, @count will be replaced with the value.');
    $form['format_plural_values'][1]['#title'] = $this
      ->t('Plural form');
    $form['format_plural_values'][1]['#description'] = $this
      ->t('Text to use for the plural form, @count will be replaced with the value.');
  }
  $form['prefix'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('Prefix'),
    '#default_value' => $this->options['prefix'],
    '#description' => $this
      ->t('Text to put before the number, such as currency symbol.'),
  ];
  $form['suffix'] = [
    '#type' => 'textfield',
    '#title' => $this
      ->t('Suffix'),
    '#default_value' => $this->options['suffix'],
    '#description' => $this
      ->t('Text to put after the number, such as currency symbol.'),
  ];
  parent::buildOptionsForm($form, $form_state);
}