UNPKG

powerbi-client-angular

Version:
102 lines 13.3 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { Component, Input, ViewChild } from '@angular/core'; import { PowerBIEmbedComponent } from '../powerbi-embed/powerbi-embed.component'; import { isEmbedSetupValid } from '../../utils/utils'; import * as i0 from "@angular/core"; /** * Report component to embed the report, extends the Base Component */ export class PowerBIReportEmbedComponent extends PowerBIEmbedComponent { // Getter for this._embed get embed() { return this._embed; } // Setter for this._embed set embed(newEmbedInstance) { this._embed = newEmbedInstance; } constructor() { super(); // Phased embedding flag (Optional) this.phasedEmbedding = false; } // Returns embed object to calling function getReport() { return this._embed; } ngOnInit() { // Initialize PowerBI service instance variable from parent super.ngOnInit(); } ngOnChanges(changes) { if (changes.embedConfig) { // Check if the function is being called for the first time if (changes.embedConfig.isFirstChange()) { return; } const prevEmbedConfig = changes.embedConfig.previousValue; const currentEmbedConfig = changes.embedConfig.currentValue; if (JSON.stringify(prevEmbedConfig) !== JSON.stringify(currentEmbedConfig)) { // Input from parent get updated, thus call embed function to re-embed the report this.embedReport(); } } // Set event handlers if available if (this.eventHandlers && this.embed) { super.setEventHandlers(this.embed, this.eventHandlers); } } ngAfterViewInit() { // Check if container exists on the UI if (this.containerRef.nativeElement) { // Decide to embed, load or bootstrap if (this.embedConfig.accessToken && this.embedConfig.embedUrl) { this.embedReport(); } else { this.embed = this.powerbi.bootstrap(this.containerRef.nativeElement, this.embedConfig); } } // Set event handlers if available if (this.eventHandlers && this.embed) { super.setEventHandlers(this.embed, this.eventHandlers); } } /** * Embed or load the PowerBI Report based on phasedEmbedding flag * * @returns void */ embedReport() { if (!isEmbedSetupValid(this.containerRef, this.embedConfig)) { return; } // Load when phasedEmbedding flag is true, embed otherwise if (this.phasedEmbedding) { this.embed = this.powerbi.load(this.containerRef.nativeElement, this.embedConfig); } else { this.embed = this.powerbi.embed(this.containerRef.nativeElement, this.embedConfig); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PowerBIReportEmbedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PowerBIReportEmbedComponent, selector: "powerbi-report[embedConfig]", inputs: { embedConfig: "embedConfig", phasedEmbedding: "phasedEmbedding", eventHandlers: "eventHandlers" }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["reportContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '<div class={{cssClassName}} #reportContainer></div>', isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PowerBIReportEmbedComponent, decorators: [{ type: Component, args: [{ selector: 'powerbi-report[embedConfig]', template: '<div class={{cssClassName}} #reportContainer></div>', }] }], ctorParameters: () => [], propDecorators: { embedConfig: [{ type: Input }], phasedEmbedding: [{ type: Input }], eventHandlers: [{ type: Input }], containerRef: [{ type: ViewChild, args: ['reportContainer'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG93ZXJiaS1yZXBvcnQtZW1iZWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcG93ZXJiaS1yZXBvcnQtZW1iZWQvcG93ZXJiaS1yZXBvcnQtZW1iZWQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QztBQUN2QyxrQ0FBa0M7QUFFbEMsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFvQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekgsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUV0RDs7R0FFRztBQUtILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxxQkFBcUI7SUFrQnBFLHlCQUF5QjtJQUN6QixJQUFZLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUFZLEtBQUssQ0FBQyxnQkFBbUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXhCVixtQ0FBbUM7UUFDMUIsb0JBQWUsR0FBYSxLQUFLLENBQUM7SUF3QjNDLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELFFBQVE7UUFDTiwyREFBMkQ7UUFDM0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsMkRBQTJEO1lBQzNELElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO2dCQUN4QyxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sZUFBZSxHQUE4QixPQUFPLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUNyRixNQUFNLGtCQUFrQixHQUE4QixPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUN2RixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7Z0JBQzNFLGlGQUFpRjtnQkFDakYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMscUNBQXFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6RixDQUFDO1FBQ0gsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzVELE9BQU87UUFDVCxDQUFDO1FBRUQsMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckYsQ0FBQztJQUNILENBQUM7K0dBaEdVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDRVQUY1QixxREFBcUQ7OzRGQUVwRCwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsUUFBUSxFQUFFLHFEQUFxRDtpQkFDaEU7d0RBSVUsV0FBVztzQkFBbkIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR2dDLFlBQVk7c0JBQWpELFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcbi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cclxuXHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW1iZWQsIElSZXBvcnRFbWJlZENvbmZpZ3VyYXRpb24sIFJlcG9ydCB9IGZyb20gJ3Bvd2VyYmktY2xpZW50JztcclxuaW1wb3J0IHsgRXZlbnRIYW5kbGVyLCBQb3dlckJJRW1iZWRDb21wb25lbnQgfSBmcm9tICcuLi9wb3dlcmJpLWVtYmVkL3Bvd2VyYmktZW1iZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgaXNFbWJlZFNldHVwVmFsaWQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcblxyXG4vKipcclxuICogUmVwb3J0IGNvbXBvbmVudCB0byBlbWJlZCB0aGUgcmVwb3J0LCBleHRlbmRzIHRoZSBCYXNlIENvbXBvbmVudFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdwb3dlcmJpLXJlcG9ydFtlbWJlZENvbmZpZ10nLFxyXG4gIHRlbXBsYXRlOiAnPGRpdiBjbGFzcz17e2Nzc0NsYXNzTmFtZX19ICNyZXBvcnRDb250YWluZXI+PC9kaXY+JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBvd2VyQklSZXBvcnRFbWJlZENvbXBvbmVudCBleHRlbmRzIFBvd2VyQklFbWJlZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICAvLyBJbnB1dCgpIHNwZWNpZnkgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgcGFzc2VkIGZyb20gcGFyZW50XHJcbiAgLy8gQ29uZmlndXJhdGlvbiBmb3IgZW1iZWRkaW5nIHRoZSBQb3dlckJJIFJlcG9ydCAoUmVxdWlyZWQpXHJcbiAgQElucHV0KCkgZW1iZWRDb25maWchOiBJUmVwb3J0RW1iZWRDb25maWd1cmF0aW9uO1xyXG5cclxuICAvLyBQaGFzZWQgZW1iZWRkaW5nIGZsYWcgKE9wdGlvbmFsKVxyXG4gIEBJbnB1dCgpIHBoYXNlZEVtYmVkZGluZz86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gTWFwIG9mIGV2ZW50IG5hbWUgYW5kIGhhbmRsZXIgbWV0aG9kcyBwYWlycyB0byBiZSB0cmlnZ2VyZWQgb24gdGhlIGV2ZW50IChPcHRpb25hbClcclxuICBASW5wdXQoKSBldmVudEhhbmRsZXJzPzogTWFwPHN0cmluZywgRXZlbnRIYW5kbGVyIHwgbnVsbD47XHJcblxyXG4gIC8vIFJlZiB0byB0aGUgSFRNTCBkaXYgY29udGFpbmVyIGVsZW1lbnRcclxuICBAVmlld0NoaWxkKCdyZXBvcnRDb250YWluZXInKSBwcml2YXRlIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBFbWJlZGRlZCBlbnRpdHlcclxuICAvLyBOb3RlOiBEbyBub3QgcmVhZCBvciBhc3NpZ24gdG8gdGhpcyBtZW1iZXIgdmFyaWFibGUgZGlyZWN0bHksIGluc3RlYWQgdXNlIHRoZSBnZXR0ZXIgYW5kIHNldHRlclxyXG4gIHByaXZhdGUgX2VtYmVkPzogRW1iZWQ7XHJcblxyXG4gIC8vIEdldHRlciBmb3IgdGhpcy5fZW1iZWRcclxuICBwcml2YXRlIGdldCBlbWJlZCgpOiBFbWJlZCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1iZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBTZXR0ZXIgZm9yIHRoaXMuX2VtYmVkXHJcbiAgcHJpdmF0ZSBzZXQgZW1iZWQobmV3RW1iZWRJbnN0YW5jZTogRW1iZWQgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2VtYmVkID0gbmV3RW1iZWRJbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8vIFJldHVybnMgZW1iZWQgb2JqZWN0IHRvIGNhbGxpbmcgZnVuY3Rpb25cclxuICBnZXRSZXBvcnQoKTogUmVwb3J0IHtcclxuICAgIHJldHVybiB0aGlzLl9lbWJlZCBhcyBSZXBvcnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIEluaXRpYWxpemUgUG93ZXJCSSBzZXJ2aWNlIGluc3RhbmNlIHZhcmlhYmxlIGZyb20gcGFyZW50XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuZW1iZWRDb25maWcpIHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgaWYgKGNoYW5nZXMuZW1iZWRDb25maWcuaXNGaXJzdENoYW5nZSgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBwcmV2RW1iZWRDb25maWc6IElSZXBvcnRFbWJlZENvbmZpZ3VyYXRpb24gPSBjaGFuZ2VzLmVtYmVkQ29uZmlnLnByZXZpb3VzVmFsdWU7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRFbWJlZENvbmZpZzogSVJlcG9ydEVtYmVkQ29uZmlndXJhdGlvbiA9IGNoYW5nZXMuZW1iZWRDb25maWcuY3VycmVudFZhbHVlO1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkocHJldkVtYmVkQ29uZmlnKSAhPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudEVtYmVkQ29uZmlnKSkge1xyXG4gICAgICAgIC8vIElucHV0IGZyb20gcGFyZW50IGdldCB1cGRhdGVkLCB0aHVzIGNhbGwgZW1iZWQgZnVuY3Rpb24gdG8gcmUtZW1iZWQgdGhlIHJlcG9ydFxyXG4gICAgICAgIHRoaXMuZW1iZWRSZXBvcnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFNldCBldmVudCBoYW5kbGVycyBpZiBhdmFpbGFibGVcclxuICAgIGlmICh0aGlzLmV2ZW50SGFuZGxlcnMgJiYgdGhpcy5lbWJlZCkge1xyXG4gICAgICBzdXBlci5zZXRFdmVudEhhbmRsZXJzKHRoaXMuZW1iZWQsIHRoaXMuZXZlbnRIYW5kbGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAvLyBDaGVjayBpZiBjb250YWluZXIgZXhpc3RzIG9uIHRoZSBVSVxyXG4gICAgaWYgKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgLy8gRGVjaWRlIHRvIGVtYmVkLCBsb2FkIG9yIGJvb3RzdHJhcFxyXG4gICAgICBpZiAodGhpcy5lbWJlZENvbmZpZy5hY2Nlc3NUb2tlbiAmJiB0aGlzLmVtYmVkQ29uZmlnLmVtYmVkVXJsKSB7XHJcbiAgICAgICAgdGhpcy5lbWJlZFJlcG9ydCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZW1iZWQgPSB0aGlzLnBvd2VyYmkuYm9vdHN0cmFwKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZW1iZWRDb25maWcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2V0IGV2ZW50IGhhbmRsZXJzIGlmIGF2YWlsYWJsZVxyXG4gICAgaWYgKHRoaXMuZXZlbnRIYW5kbGVycyAmJiB0aGlzLmVtYmVkKSB7XHJcbiAgICAgIHN1cGVyLnNldEV2ZW50SGFuZGxlcnModGhpcy5lbWJlZCwgdGhpcy5ldmVudEhhbmRsZXJzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtYmVkIG9yIGxvYWQgdGhlIFBvd2VyQkkgUmVwb3J0IGJhc2VkIG9uIHBoYXNlZEVtYmVkZGluZyBmbGFnXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB2b2lkXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBlbWJlZFJlcG9ydCgpOiB2b2lkIHtcclxuICAgIGlmICghaXNFbWJlZFNldHVwVmFsaWQodGhpcy5jb250YWluZXJSZWYsIHRoaXMuZW1iZWRDb25maWcpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMb2FkIHdoZW4gcGhhc2VkRW1iZWRkaW5nIGZsYWcgaXMgdHJ1ZSwgZW1iZWQgb3RoZXJ3aXNlXHJcbiAgICBpZiAodGhpcy5waGFzZWRFbWJlZGRpbmcpIHtcclxuICAgICAgdGhpcy5lbWJlZCA9IHRoaXMucG93ZXJiaS5sb2FkKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZW1iZWRDb25maWcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbWJlZCA9IHRoaXMucG93ZXJiaS5lbWJlZCh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmVtYmVkQ29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19