You are here

public function TimeFieldDefaultFormatter::viewElements in Timefield 1.0.x

Builds a renderable array for a field value.

Parameters

\Drupal\Core\Field\FieldItemListInterface $items: The field values to be rendered.

string $langcode: The language that should be used to render the field.

Return value

array A renderable array for $items, as an array of child elements keyed by consecutive numeric indexes starting from 0.

Overrides FormatterInterface::viewElements

File

src/Plugin/Field/FieldFormatter/TimeFieldDefaultFormatter.php, line 65

Class

TimeFieldDefaultFormatter
Plugin for the 'timefield_default_formatter' field formatter.

Namespace

Drupal\timefield\Plugin\Field\FieldFormatter

Code

public function viewElements(FieldItemListInterface $items, $langcode) {
  $settings = $this
    ->getSettings();
  $field_settings = $this
    ->getFieldSettings();
  $label_hidden = $this->label == 'hidden';
  foreach ($items as $delta => $item) {
    $item = $items
      ->get($delta);
    if (!empty($item->value)) {
      $value = $item
        ->getValue('value');
      $value['value'] = trim(timefield_integer_to_time($settings['display_format'], $item->value));
      $value['value2'] = trim(timefield_integer_to_time($settings['display_format'], $item->value2));
      $days = isset($items[$delta]->value) ? _timefield_weekly_summary_days_map($items[$delta]) : [];
      $value['days'] = array_intersect_key(_timefield_weekly_summary_days(), array_filter($days));
      $item
        ->setValue($value);
      $items
        ->set($delta, $value);
    }
  }
  $element = [
    '#theme' => 'timefield_formatter',
    '#label' => $this->fieldDefinition
      ->get('label'),
    '#label_display' => $this->label,
    '#label_hidden' => $label_hidden,
    '#items' => $items,
    '#settings' => $field_settings,
    '#format' => 'default',
    '#attributes' => new Attribute([
      'class' => 'timefield',
    ]),
  ];
  return $element;
}