public function TimeFieldDuration::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/ TimeFieldDuration.php, line 80
Class
- TimeFieldDuration
- Plugin for the 'timefield_duration_formatter' field formatter.
Namespace
Drupal\timefield\Plugin\Field\FieldFormatterCode
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));
if (isset($item->value2)) {
$value['value2'] = $item->value2;
$value['formatted_value2'] = trim(timefield_integer_to_time($settings['display_format'], $item->value2));
$value['duration'] = timefield_time_to_duration($item->value, $item->value2, $settings['duration_format']);
$value['time'] = timefield_time_to_duration($item->value, $item->value2, $settings['duration_format']);
}
else {
$value['time'] = 0;
}
$item
->setValue($value);
$items
->set($delta, $value);
}
}
$element = [
'#theme' => 'timefield_duration',
'#label' => $this->fieldDefinition
->get('label'),
'#label_display' => $this->label,
'#label_hidden' => $label_hidden,
'#items' => $items,
'#settings' => $field_settings,
'#format' => 'duration',
'#attributes' => new Attribute([
'class' => 'timefield',
]),
];
return $element;
}