skillset_inview-8.x-1.x-dev/src/Plugin/Field/FieldFormatter/SkillsetItemMeterFormatter.php
src/Plugin/Field/FieldFormatter/SkillsetItemMeterFormatter.php
<?php
namespace Drupal\skillset_inview\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
/**
* Plugin implementation of the 'skillset_item_formatter' formatter.
*
* @FieldFormatter(
* id = "skillset_item_meter_formatter",
* label = @Translation("Skillset Item Formatter | Label & Meter"),
* field_types = {
* "skillset_item"
* }
* )
*/
class SkillsetItemMeterFormatter extends FormatterBase {
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
// Prepare the items array to match the structure expected by the template.
$skills = [];
foreach ($items as $delta => $item) {
$skills[] = [
'id' => $delta + 1,
'name' => $item->title,
'percent' => $item->percentage,
'weight' => $delta, // This could be used for sorting if needed.
];
}
// Add the rendered array with the necessary theme and variables.
$elements[] = [
'#theme' => 'skillset_inview_meter',
'#header' => '', // Optionally set a header if needed.
'#items' => $skills,
'#color_active' => 0, // Assuming no custom colors by default.
'#color' => [], // Assuming default color settings.
'#attached' => [
'library' => [
'skillset_inview/block',
],
]
];
return $elements;
}
}
