@deliverysolutions/ngx-powerbi
Version:
TypeScript library for embedding Power BI assets (reports/dashboards/tiles) in your application. This TypeScript library is built on top of the official powerbi-client library provided by Microsoft.
122 lines • 13.8 kB
JavaScript
import { Injectable, Optional } from '@angular/core';
import { factories, service as pbiService } from 'powerbi-client';
import * as i0 from "@angular/core";
import * as i1 from "powerbi-client";
export function powerBiServiceFactory() {
return new pbiService.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory);
}
export class NgxPowerBiService {
constructor(service) {
this.service = service;
if (!service) {
this.powerBiCoreService = new pbiService.Service(factories.hpmFactory, factories.wpmpFactory, factories.routerFactory);
}
else {
this.powerBiCoreService = service;
}
}
/**
* Creates new report
* @param HTMLElement Parent HTML element
* @param IEmbedConfiguration Embed configuration
* @returns Embed Embedded object
*/
createReport(element, config) {
return this.powerBiCoreService.createReport(element, config);
}
/**
* Given a configuration based on an HTML element,
* if the component has already been created and attached to the element, reuses the component instance and existing iframe,
* otherwise creates a new component instance.
*
* @param HTMLElement Parent HTML element
* @param IEmbedConfiguration Embed configuration
* @returns Embed Embedded object
*/
embed(element, config) {
return this.powerBiCoreService.embed(element, config);
}
/**
* Given a configuration based on an HTML element,
* if the component has already been created and attached to the element, reuses the component instance and existing iframe,
* otherwise creates a new component instance.
* This is used for the phased embedding API, once element is loaded successfully, one can call 'render' on it.
*
* @param HTMLElement} Parent HTML element
* @param IEmbedConfiguration Embed configuration
* @returns Embed Embedded object
*/
load(element, config) {
return this.powerBiCoreService.load(element, config);
}
/**
* 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 Power BI component based on information from other powerbi-* attributes.
*
* Note: Only runs if `config.autoEmbedOnContentLoaded` is true when the service is created.
* This handler is typically useful only for applications that are rendered on the server so that all
* required data is available when the handler is called.
*/
enableAutoEmbed() {
return this.powerBiCoreService.enableAutoEmbed();
}
/**
* Returns an instance of the component associated with the element.
*
* @param HTMLElement Parent HTML element
* @returns (Report | Tile) Embedded report/tile object
*/
get(element) {
return this.powerBiCoreService.get(element);
}
/**
* Finds an embed instance by the name or unique ID that is provided.
*
* @param string} uniqueId or name of the report/tile
* @returns (Report | Tile) Embedded report/tile object
*/
findById(uniqueId) {
return this.powerBiCoreService.find(uniqueId);
}
/**
* Given an HTML element that has a component embedded within it,
* removes the component from the list of embedded components,
* removes the association between the element and the component, and removes the iframe.
*
* @param HTMLElement Parent HTML element
* @returns void
*/
reset(element) {
return this.powerBiCoreService.reset(element);
}
/**
* handles tile events
*
* @param IEvent<any> event
*/
handleTileEvents(event) {
return this.powerBiCoreService.handleTileEvents(event);
}
/**
* API for warm starting Power BI embedded endpoints.
* Use this API to preload Power BI Embedded in the background.
*
* @param embed.IEmbedConfiguration Embed configuration
* @param HTMLElement [element=undefined]
*/
preload(config, element) {
return this.powerBiCoreService.preload(config, element);
}
}
/** @nocollapse */ NgxPowerBiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxPowerBiService, deps: [{ token: i1.service.Service, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ NgxPowerBiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxPowerBiService, providedIn: 'root', useFactory: powerBiServiceFactory });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NgxPowerBiService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
useFactory: powerBiServiceFactory
}]
}], ctorParameters: function () { return [{ type: i1.service.Service, decorators: [{
type: Optional
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXBvd2VyYmkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1wb3dlcmJpL3NyYy9saWIvbmd4LXBvd2VyYmkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBRUwsU0FBUyxFQUdULE9BQU8sSUFBSSxVQUFVLEVBRXRCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV4QixNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUMzQixTQUFTLENBQUMsVUFBVSxFQUNwQixTQUFTLENBQUMsV0FBVyxFQUNyQixTQUFTLENBQUMsYUFBYSxDQUN4QixDQUFDO0FBQ0osQ0FBQztBQU1ELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBZ0MsT0FBNEI7UUFBNUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFDMUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQzlDLFNBQVMsQ0FBQyxVQUFVLEVBQ3BCLFNBQVMsQ0FBQyxXQUFXLEVBQ3JCLFNBQVMsQ0FBQyxhQUFhLENBQ3hCLENBQUM7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxPQUFvQixFQUFFLE1BQTJCO1FBQzVELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLE9BQW9CLEVBQUUsTUFBMkI7UUFDckQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsSUFBSSxDQUFDLE9BQW9CLEVBQUUsTUFBMkI7UUFDcEQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsT0FBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxRQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsT0FBb0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBNkI7UUFDNUMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FDTCxNQUEyQixFQUMzQixPQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFELENBQUM7O2lJQXJIVSxpQkFBaUI7cUlBQWpCLGlCQUFpQixjQUhoQixNQUFNLGNBQ04scUJBQXFCOzJGQUV0QixpQkFBaUI7a0JBSjdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLFVBQVUsRUFBRSxxQkFBcUI7aUJBQ2xDOzswQkFJYyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVtYmVkLFxuICBmYWN0b3JpZXMsXG4gIElFbWJlZENvbmZpZ3VyYXRpb24sXG4gIFJlcG9ydCxcbiAgc2VydmljZSBhcyBwYmlTZXJ2aWNlLFxuICBUaWxlXG59IGZyb20gJ3Bvd2VyYmktY2xpZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIHBvd2VyQmlTZXJ2aWNlRmFjdG9yeSgpIHtcbiAgcmV0dXJuIG5ldyBwYmlTZXJ2aWNlLlNlcnZpY2UoXG4gICAgZmFjdG9yaWVzLmhwbUZhY3RvcnksXG4gICAgZmFjdG9yaWVzLndwbXBGYWN0b3J5LFxuICAgIGZhY3Rvcmllcy5yb3V0ZXJGYWN0b3J5XG4gICk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICB1c2VGYWN0b3J5OiBwb3dlckJpU2VydmljZUZhY3Rvcnlcbn0pXG5leHBvcnQgY2xhc3MgTmd4UG93ZXJCaVNlcnZpY2Uge1xuICBwcml2YXRlIHBvd2VyQmlDb3JlU2VydmljZTogcGJpU2VydmljZS5TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgc2VydmljZT86IHBiaVNlcnZpY2UuU2VydmljZSkge1xuICAgIGlmICghc2VydmljZSkge1xuICAgICAgdGhpcy5wb3dlckJpQ29yZVNlcnZpY2UgPSBuZXcgcGJpU2VydmljZS5TZXJ2aWNlKFxuICAgICAgICBmYWN0b3JpZXMuaHBtRmFjdG9yeSxcbiAgICAgICAgZmFjdG9yaWVzLndwbXBGYWN0b3J5LFxuICAgICAgICBmYWN0b3JpZXMucm91dGVyRmFjdG9yeVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3dlckJpQ29yZVNlcnZpY2UgPSBzZXJ2aWNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG5ldyByZXBvcnRcbiAgICogQHBhcmFtIEhUTUxFbGVtZW50IFBhcmVudCBIVE1MIGVsZW1lbnRcbiAgICogQHBhcmFtIElFbWJlZENvbmZpZ3VyYXRpb24gRW1iZWQgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBFbWJlZCBFbWJlZGRlZCBvYmplY3RcbiAgICovXG4gIGNyZWF0ZVJlcG9ydChlbGVtZW50OiBIVE1MRWxlbWVudCwgY29uZmlnOiBJRW1iZWRDb25maWd1cmF0aW9uKTogRW1iZWQge1xuICAgIHJldHVybiB0aGlzLnBvd2VyQmlDb3JlU2VydmljZS5jcmVhdGVSZXBvcnQoZWxlbWVudCwgY29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gYW4gSFRNTCBlbGVtZW50LFxuICAgKiBpZiB0aGUgY29tcG9uZW50IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBhbmQgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQsIHJldXNlcyB0aGUgY29tcG9uZW50IGluc3RhbmNlIGFuZCBleGlzdGluZyBpZnJhbWUsXG4gICAqIG90aGVyd2lzZSBjcmVhdGVzIGEgbmV3IGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIEhUTUxFbGVtZW50IFBhcmVudCBIVE1MIGVsZW1lbnRcbiAgICogQHBhcmFtIElFbWJlZENvbmZpZ3VyYXRpb24gRW1iZWQgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBFbWJlZCBFbWJlZGRlZCBvYmplY3RcbiAgICovXG4gIGVtYmVkKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc6IElFbWJlZENvbmZpZ3VyYXRpb24pOiBFbWJlZCB7XG4gICAgcmV0dXJuIHRoaXMucG93ZXJCaUNvcmVTZXJ2aWNlLmVtYmVkKGVsZW1lbnQsIGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZW4gYSBjb25maWd1cmF0aW9uIGJhc2VkIG9uIGFuIEhUTUwgZWxlbWVudCxcbiAgICogaWYgdGhlIGNvbXBvbmVudCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQgYW5kIGF0dGFjaGVkIHRvIHRoZSBlbGVtZW50LCByZXVzZXMgdGhlIGNvbXBvbmVudCBpbnN0YW5jZSBhbmQgZXhpc3RpbmcgaWZyYW1lLFxuICAgKiBvdGhlcndpc2UgY3JlYXRlcyBhIG5ldyBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAqIFRoaXMgaXMgdXNlZCBmb3IgdGhlIHBoYXNlZCBlbWJlZGRpbmcgQVBJLCBvbmNlIGVsZW1lbnQgaXMgbG9hZGVkIHN1Y2Nlc3NmdWxseSwgb25lIGNhbiBjYWxsICdyZW5kZXInIG9uIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gSFRNTEVsZW1lbnR9IFBhcmVudCBIVE1MIGVsZW1lbnRcbiAgICogQHBhcmFtIElFbWJlZENvbmZpZ3VyYXRpb24gRW1iZWQgY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBFbWJlZCBFbWJlZGRlZCBvYmplY3RcbiAgICovXG4gIGxvYWQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbmZpZzogSUVtYmVkQ29uZmlndXJhdGlvbik6IEVtYmVkIHtcbiAgICByZXR1cm4gdGhpcy5wb3dlckJpQ29yZVNlcnZpY2UubG9hZChlbGVtZW50LCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgaGFuZGxlciBmb3IgRE9NQ29udGVudExvYWRlZCwgd2hpY2ggc2VhcmNoZXMgdGhlIERPTSBmb3IgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSAncG93ZXJiaS1lbWJlZC11cmwnIGF0dHJpYnV0ZSxcbiAgICogYW5kIGF1dG9tYXRpY2FsbHkgYXR0ZW1wdHMgdG8gZW1iZWQgYSBQb3dlciBCSSBjb21wb25lbnQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBvdGhlciBwb3dlcmJpLSogYXR0cmlidXRlcy5cbiAgICpcbiAgICogTm90ZTogT25seSBydW5zIGlmIGBjb25maWcuYXV0b0VtYmVkT25Db250ZW50TG9hZGVkYCBpcyB0cnVlIHdoZW4gdGhlIHNlcnZpY2UgaXMgY3JlYXRlZC5cbiAgICogVGhpcyBoYW5kbGVyIGlzIHR5cGljYWxseSB1c2VmdWwgb25seSBmb3IgYXBwbGljYXRpb25zIHRoYXQgYXJlIHJlbmRlcmVkIG9uIHRoZSBzZXJ2ZXIgc28gdGhhdCBhbGxcbiAgICogcmVxdWlyZWQgZGF0YSBpcyBhdmFpbGFibGUgd2hlbiB0aGUgaGFuZGxlciBpcyBjYWxsZWQuXG4gICAqL1xuICBlbmFibGVBdXRvRW1iZWQoKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMucG93ZXJCaUNvcmVTZXJ2aWNlLmVuYWJsZUF1dG9FbWJlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBIVE1MRWxlbWVudCBQYXJlbnQgSFRNTCBlbGVtZW50XG4gICAqIEByZXR1cm5zIChSZXBvcnQgfCBUaWxlKSBFbWJlZGRlZCByZXBvcnQvdGlsZSBvYmplY3RcbiAgICovXG4gIGdldChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVtYmVkIHtcbiAgICByZXR1cm4gdGhpcy5wb3dlckJpQ29yZVNlcnZpY2UuZ2V0KGVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIGFuIGVtYmVkIGluc3RhbmNlIGJ5IHRoZSBuYW1lIG9yIHVuaXF1ZSBJRCB0aGF0IGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nfSB1bmlxdWVJZCBvciBuYW1lIG9mIHRoZSByZXBvcnQvdGlsZVxuICAgKiBAcmV0dXJucyAoUmVwb3J0IHwgVGlsZSkgRW1iZWRkZWQgcmVwb3J0L3RpbGUgb2JqZWN0XG4gICAqL1xuICBmaW5kQnlJZCh1bmlxdWVJZDogc3RyaW5nKTogUmVwb3J0IHwgVGlsZSB7XG4gICAgcmV0dXJuIHRoaXMucG93ZXJCaUNvcmVTZXJ2aWNlLmZpbmQodW5pcXVlSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIEhUTUwgZWxlbWVudCB0aGF0IGhhcyBhIGNvbXBvbmVudCBlbWJlZGRlZCB3aXRoaW4gaXQsXG4gICAqIHJlbW92ZXMgdGhlIGNvbXBvbmVudCBmcm9tIHRoZSBsaXN0IG9mIGVtYmVkZGVkIGNvbXBvbmVudHMsXG4gICAqIHJlbW92ZXMgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIGVsZW1lbnQgYW5kIHRoZSBjb21wb25lbnQsIGFuZCByZW1vdmVzIHRoZSBpZnJhbWUuXG4gICAqXG4gICAqIEBwYXJhbSBIVE1MRWxlbWVudCBQYXJlbnQgSFRNTCBlbGVtZW50XG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIHJlc2V0KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMucG93ZXJCaUNvcmVTZXJ2aWNlLnJlc2V0KGVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGhhbmRsZXMgdGlsZSBldmVudHNcbiAgICpcbiAgICogQHBhcmFtIElFdmVudDxhbnk+IGV2ZW50XG4gICAqL1xuICBoYW5kbGVUaWxlRXZlbnRzKGV2ZW50OiBwYmlTZXJ2aWNlLklFdmVudDxhbnk+KTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMucG93ZXJCaUNvcmVTZXJ2aWNlLmhhbmRsZVRpbGVFdmVudHMoZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFQSSBmb3Igd2FybSBzdGFydGluZyBQb3dlciBCSSBlbWJlZGRlZCBlbmRwb2ludHMuXG4gICAqIFVzZSB0aGlzIEFQSSB0byBwcmVsb2FkIFBvd2VyIEJJIEVtYmVkZGVkIGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0gZW1iZWQuSUVtYmVkQ29uZmlndXJhdGlvbiBFbWJlZCBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBIVE1MRWxlbWVudCBbZWxlbWVudD11bmRlZmluZWRdXG4gICAqL1xuICBwcmVsb2FkKFxuICAgIGNvbmZpZzogSUVtYmVkQ29uZmlndXJhdGlvbixcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudFxuICApOiBIVE1MSUZyYW1lRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMucG93ZXJCaUNvcmVTZXJ2aWNlLnByZWxvYWQoY29uZmlnLCBlbGVtZW50KTtcbiAgfVxufVxuIl19