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