public function viewElements()

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;
  }