Skip to content

Commit

Permalink
Merge pull request #381 from microsoft/release-2.19.1
Browse files Browse the repository at this point in the history
Release 2.19.1
  • Loading branch information
submarine-launched authored Feb 21, 2022
2 parents 70119ae + 8b1fe7c commit a05fa2e
Show file tree
Hide file tree
Showing 15 changed files with 329 additions and 181 deletions.
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

0 comments on commit a05fa2e

Please sign in to comment.