Skip to content

Release 2.19.1 #381

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
9 commits merged into from
Feb 21, 2022
23 changes: 18 additions & 5 deletions dist/powerbi-client.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// powerbi-client v2.18.7
// powerbi-client v2.19.1
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
declare module "config" {
Expand Down Expand Up @@ -190,6 +190,13 @@ declare module "embed" {
* @hidden
*/
eventHandlers: IInternalEventHandler<any>[];
/**
* Gets or sets the eventHooks.
*
* @type {models.EventHooks}
* @hidden
*/
eventHooks: models.EventHooks;
/**
* Gets or sets the Power BI embed service.
*
Expand Down Expand Up @@ -418,6 +425,14 @@ declare module "embed" {
* @returns {void}
*/
populateConfig(config: IBootstrapEmbedConfiguration, isBootstrap: boolean): void;
/**
* Validate EventHooks
*
* @private
* @param {models.EventHooks} eventHooks
* @hidden
*/
private validateEventHooks;
/**
* Adds locale parameters to embedUrl
*
Expand Down Expand Up @@ -2159,10 +2174,6 @@ declare module "service" {
* @hidden
*/
private embedExisting;
/**
* @hidden
*/
private registerApplicationContextHook;
/**
* Adds an event handler for DOMContentLoaded, which searches the DOM for elements that have the 'powerbi-embed-url' attribute,
* and automatically attempts to embed a powerbi component based on information from other powerbi-* attributes.
Expand Down Expand Up @@ -2211,6 +2222,7 @@ declare module "service" {
* @hidden
*/
handleTileEvents(event: IEvent<any>): void;
private invokeSDKHook;
/**
* Given an event object, finds the embed component with the matching type and ID, and invokes its handleEvent method with the event object.
*
Expand Down Expand Up @@ -2771,6 +2783,7 @@ declare module "powerbi-client" {
global {
interface Window {
powerbi: service.Service;
powerBISDKGlobalServiceInstanceName?: string;
}
}
}
285 changes: 182 additions & 103 deletions dist/powerbi.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/powerbi.min.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -220,8 +220,9 @@ gulp.task('test:js', 'Run js tests', function (done) {
configFile: __dirname + '/karma.conf.js',
singleRun: argv.watch ? false : true,
captureTimeout: argv.timeout || 60000
}, function () {
}, function (exitStatus) {
done();
process.exit(exitStatus);
})
.on('browser_register', (browser) => {
if (argv.chrome) {
Expand Down
19 changes: 8 additions & 11 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ module.exports = function (config) {
{ pattern: './test/**/*.html', served: true, included: false }
],
exclude: [],
reporters: argv.debug ? ['spec', 'kjhtml'] : ['spec', 'coverage', 'kjhtml'],
reporters: argv.chrome ? ['kjhtml'] : ['spec', 'junit'],
autoWatch: true,
browsers: [browserName],
browserNoActivityTimeout: 300000,
Expand All @@ -33,27 +33,24 @@ module.exports = function (config) {
'karma-jasmine',
'karma-spec-reporter',
'karma-phantomjs-launcher',
'karma-coverage',
'karma-jasmine-html-reporter'
'karma-jasmine-html-reporter',
'karma-junit-reporter'
],
customLaunchers: {
'Chrome_headless': {
base: argv.debug ? 'Chrome' : 'ChromeHeadless',
base: 'Chrome',
flags: flags.concat("--no-sandbox", "--window-size=800,800"),
},
},
preprocessors: { './tmp/**/*.js': ['coverage'] },
coverageReporter: {
reporters: [
{ type: 'html' },
{ type: 'text-summary' }
]
junitReporter: {
outputDir: 'tmp',
outputFile: 'testresults.xml',
useBrowserName: false
},
retryLimit: 0,
logLevel: argv.debug ? config.LOG_DEBUG : config.LOG_INFO,
client: {
clearContext: false, // leave Jasmine Spec Runner output visible in browser
args: argv.logMessages ? ['logMessages'] : []
}
});
};
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "powerbi-client",
"version": "2.18.7",
"version": "2.19.1",
"description": "JavaScript library for embedding Power BI into your apps. Provides service which makes it easy to embed different types of components and an object model which allows easy interaction with these components such as changing pages, applying filters, and responding to data selection.",
"main": "dist/powerbi.js",
"types": "dist/powerbi-client.d.ts",
Expand All @@ -16,7 +16,7 @@
"prestart": "cd demo && npm install",
"test": "gulp test",
"gulp": "gulp",
"tests": "npm test -- --chrome --watch --debug"
"tests": "npm test -- --chrome --watch"
},
"keywords": [
"microsoft",
Expand Down Expand Up @@ -64,10 +64,10 @@
"json-loader": "^0.5.4",
"karma": "6.3.5",
"karma-chrome-launcher": "^3.1.0",
"karma-coverage": "^2.0.3",
"karma-firefox-launcher": "^1.2.0",
"karma-jasmine": "4.0.1",
"karma-jasmine-html-reporter": "1.7.0",
"karma-junit-reporter": "^2.0.1",
"karma-phantomjs-launcher": "^1.0.4",
"karma-spec-reporter": "0.0.32",
"moment": "^2.14.1",
Expand All @@ -81,7 +81,7 @@
},
"dependencies": {
"http-post-message": "^0.2",
"powerbi-models": "^1.9.7",
"powerbi-models": "^1.9.8",
"powerbi-router": "^0.1",
"window-post-message-proxy": "^0.2"
},
Expand Down
2 changes: 1 addition & 1 deletion src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

/** @ignore *//** */
const config = {
version: '2.18.7',
version: '2.19.1',
type: 'js'
};

Expand Down
50 changes: 46 additions & 4 deletions src/embed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export interface IInternalEventHandler<T> {
*/
export abstract class Embed {
/** @hidden */
static allowedEvents = ["loaded", "saved", "rendered", "saveAsTriggered", "error", "dataSelected", "buttonClicked"];
static allowedEvents = ["loaded", "saved", "rendered", "saveAsTriggered", "error", "dataSelected", "buttonClicked", "info"];
/** @hidden */
static accessTokenAttribute = 'powerbi-access-token';
/** @hidden */
Expand Down Expand Up @@ -108,6 +108,14 @@ export abstract class Embed {
*/
eventHandlers: IInternalEventHandler<any>[];

/**
* Gets or sets the eventHooks.
*
* @type {models.EventHooks}
* @hidden
*/
eventHooks: models.EventHooks;

/**
* Gets or sets the Power BI embed service.
*
Expand Down Expand Up @@ -537,14 +545,48 @@ export abstract class Embed {
this.config.accessToken = this.getAccessToken(this.service.accessToken);
}

const registerQueryCallback = !!(<IEmbedConfiguration>this.config).eventHooks?.applicationContextProvider;
this.eventHooks = (<IEmbedConfiguration>this.config).eventHooks;
this.validateEventHooks(this.eventHooks);
delete (<IEmbedConfiguration>this.config).eventHooks;
if (registerQueryCallback && this.embedtype === "report")
this.config.embedUrl = addParamToUrl(this.config.embedUrl, "registerQueryCallback", "true");

this.configChanged(isBootstrap);
}

/**
* Validate EventHooks
*
* @private
* @param {models.EventHooks} eventHooks
* @hidden
*/
private validateEventHooks(eventHooks: models.EventHooks): void {
if (!eventHooks) {
return;
}

for (let key in eventHooks) {
if (eventHooks.hasOwnProperty(key) && typeof eventHooks[key] !== 'function') {
throw new Error(key + " must be a function");
}
}

const applicationContextProvider = eventHooks.applicationContextProvider;
if (!!applicationContextProvider) {
if (this.embedtype.toLowerCase() !== "report") {
throw new Error("applicationContextProvider is only supported in report embed");
}

this.config.embedUrl = addParamToUrl(this.config.embedUrl, "registerQueryCallback", "true");
}

const accessTokenProvider = eventHooks.accessTokenProvider;
if (!!accessTokenProvider) {
if (this.embedtype.toLowerCase() !== "report" || this.config.tokenType !== models.TokenType.Aad) {
throw new Error("accessTokenProvider is only supported in report SaaS embed");
}
}
}

/**
* Adds locale parameters to embedUrl
*
Expand Down
9 changes: 8 additions & 1 deletion src/powerbi-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ declare var powerbi: service.Service;
declare global {
interface Window {
powerbi: service.Service;
powerBISDKGlobalServiceInstanceName?: string;
}
}

Expand All @@ -69,4 +70,10 @@ declare global {
* Note: create an instance of the class with the default configuration for normal usage, or save the class so that you can create an instance of the service.
*/
var powerbi = new service.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory);
window.powerbi = powerbi;
// powerBI SDK may use Power BI object under different key, in order to avoid name collisions
if (window.powerbi && window.powerBISDKGlobalServiceInstanceName) {
window[window.powerBISDKGlobalServiceInstanceName] = powerbi;
} else {
// Default to Power BI.
window.powerbi = powerbi;
}
Loading