Add Power BI Reports to Digital Journeys

You can use the powerbi-client library to embed Power BI reports in your forms. E.g.:

Use the ebs.msal.renderMsalAuthButton and ebs.msal.getPowerBiToken functions to render a Power BI authentication button and retrieve the Power BI authentication token respectively.

Copy
ebs.importClientScript("PowerBiScript");
// This a a client script library that stores the https://github.com/microsoft/PowerBI-JavaScript/tree/master/dist library

/* Render the Power BI authentication button */
const msalEl = document.querySelectorAll('.msal-dialog-btn__app')[0];
console.log(msalEl);
ebs.msal.renderMsalAuthButton(msalEl);

/* Click event for the refresh-msal-token button */
$('#refresh-msal-token').on('click', async function (event) {
    console.log("refresh-msal-token");
    const ttok = await ebs.msal.getPowerBiToken();
    const msalElTok = document.querySelectorAll('.msal-token')[0];
    msalElTok.textContent = ttok;
});

/* Click event for the gen-report button */
$('#gen-report').on('click', function (event) {
    console.log("The button gen-report was clicked");
    embedReport()
});

/***   ***/
async function embedReport() {
  const reportId = "xxxxxxxx-yyyy-zzzz-wwww-xxxxxxxxxxxx";
  const embedUrl = "https://app.powerbi.com/reportEmbed?reportId=" + reportId;
  const accessToken = await ebs.msal.getPowerBiToken();
  const msalElTok = document.querySelectorAll('.msal-token')[0];
  msalElTok.textContent = accessToken;
  embed(reportId, embedUrl, accessToken);
}
function embed(reportId, embedUrl, token) {
  // 1 - Get DOM object for div that is report container
  let reportContainer = document.querySelectorAll('.reportContainer')[0];
  // 3 - Embed report using the Power BI JavaScript API.
  /*    let models = window['powerbi-client '].models;*/
  let config = {
    type: "report",
    id: reportId,
    embedUrl: embedUrl,
    accessToken: token,
    //permissions: models.Permissions.All,
    //tokenType: models.TokenType.Aad,
    /*viewMode: models.ViewMode.View,*/
    settings: {
      panes: {
        filters: { expanded: false, visible: true },
        pageNavigation: { visible: false },
      },
    },
  };
  let report = powerbi.embed(reportContainer, config);
}