in modules/quanthub_core/src/Plugin/Field/FieldFormatter/QuantHubPowerBIEmbedFormatter.php [99:157]
public function viewElements(FieldItemListInterface $items, $langcode): array {
$elements = [];
$workspace_id = $this->powerBIEmbedConfigs->getWorkspaceID();
foreach ($items as $delta => $item) {
if (!empty($item->report_id)) {
$embed_config = $this->powerBIEmbedConfigs->getPowerEmbedConfig($item->report_id, $item->report_extra_datasets);
$embed_token = $embed_config['embed_token'];
$embed_url = $embed_config['embed_url'];
if (isset($embed_token)) {
$embed_type = 'report';
$embed_id = $item->report_id;
if (!empty($item->report_page)) {
$embed_id = $embed_id . '_' . preg_replace('/\s+/', '_', $item->report_page);
}
if (!empty($item->report_visual)) {
$embed_id = $embed_id . '_' . preg_replace('/\s+/', '_', $item->report_visual);
$embed_type = 'visual';
}
$language = $this->languageManager->getCurrentLanguage()->getId();
$powerBiLanguage = ($language == 'uk') ? 'uk-UA' : 'en-US';
$elements[$delta] = [
'#embed_id' => $embed_id,
'#embed_type' => $embed_type,
'#field_name' => $item->getParent()->getName(),
'#report_id' => $item->report_id,
'#report_language' => $powerBiLanguage,
'#report_width' => $item->report_width,
'#report_height' => $item->report_height,
'#report_title' => $item->report_title,
'#report_page' => $item->report_page,
'#report_visual' => $item->report_visual,
'#workspace_id' => $workspace_id,
'#token_expiration' => $embed_token['expiration'],
'#extra_datasets' => $item->report_extra_datasets,
'#token' => $embed_token['token'],
'#embed_url' => $embed_url,
'#theme' => 'powerbi_embed_formatter',
'#cache' => [
'tags' => ['powerbi_embed:token'],
],
];
}
else {
$elements[$delta] = [
'#cache' => [
'tags' => ['powerbi_embed:token'],
],
];
}
}
}
return $elements;
}