ngx-custom-ssrs-reportviewer
Version:
Angular component for rendering SSRS reports
114 lines (112 loc) • 11.6 kB
JavaScript
import { Component, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
export class ReportViewerComponent {
constructor(sanitizer) {
this.sanitizer = sanitizer;
this.showparameters = "false";
this.language = "en-us";
this.width = 100;
this.height = 100;
this.toolbar = "true";
this.onError = new EventEmitter();
}
ngOnChanges(changes) {
if (!this.reporturl) {
this.onError.emit("Src cannot be null");
}
if ('reporturl' in changes) {
this.source = this.sanitizer
.bypassSecurityTrustResourceUrl(this.buildReportUrl());
}
}
buildParameterString() {
var parameterString = "";
for (var param in this.parameters) {
if (param) {
if (this.parameters[param] instanceof Array === true) {
for (var arrayParam in this.parameters[param]) {
if (arrayParam) {
parameterString += "&" + param + "=" + this.parameters[param][arrayParam];
}
}
}
if (this.parameters[param] != null && this.parameters[param] instanceof Array === false) {
parameterString += "&" + param + "=" + this.parameters[param];
}
if (this.parameters[param] == null) {
parameterString += "&" + param + ":isnull=true";
}
}
}
return parameterString;
}
buildReportUrl() {
if (!this.reporturl) {
return;
}
var parameters = this.buildParameterString();
return this.reportserver + '?/'
+ this.reporturl + '&rs:Embed=true'
+ '&rc:Parameters=' + this.showparameters
+ parameters
+ '&rs:ParameterLanguage=' + this.language + "&rc:Toolbar=" + this.toolbar;
}
}
ReportViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: ReportViewerComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
ReportViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: ReportViewerComponent, selector: "ssrs-reportviewer", inputs: { reporturl: "reporturl", reportserver: "reportserver", showparameters: "showparameters", parameters: "parameters", language: "language", width: "width", height: "height", toolbar: "toolbar" }, outputs: { onError: "error" }, usesOnChanges: true, ngImport: i0, template: `
<div class="iframe-container">
<iframe [src]="source" scrolling="no"></iframe>
</div>
`, isInline: true, styles: [".iframe-container{overflow:hidden;padding-top:56.25%;position:relative}.iframe-container iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.iframe-container-4x3{padding-top:75%}\n"], encapsulation: i0.ViewEncapsulation.ShadowDom });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: ReportViewerComponent, decorators: [{
type: Component,
args: [{
selector: 'ssrs-reportviewer',
template: `
<div class="iframe-container">
<iframe [src]="source" scrolling="no"></iframe>
</div>
`,
styles: [`
.iframe-container {
overflow: hidden;
padding-top: 56.25%;
position: relative;
}
.iframe-container iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
/* 4x3 Aspect Ratio */
.iframe-container-4x3 {
padding-top: 75%;
}
`],
encapsulation: ViewEncapsulation.ShadowDom
}]
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { reporturl: [{
type: Input
}], reportserver: [{
type: Input
}], showparameters: [{
type: Input
}], parameters: [{
type: Input
}], language: [{
type: Input
}], width: [{
type: Input
}], height: [{
type: Input
}], toolbar: [{
type: Input
}], onError: [{
type: Output,
args: ['error']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0dmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHZpZXdlci9zcmMvbGliL3JlcG9ydHZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBaUIsaUJBQWlCLEVBQUcsTUFBTSxlQUFlLENBQUM7OztBQWlDckgsTUFBTSxPQUFPLHFCQUFxQjtJQW9CaEMsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWIzQyxtQkFBYyxHQUFZLE9BQU8sQ0FBQztRQUlsQyxhQUFRLEdBQVksT0FBTyxDQUFDO1FBRTVCLFVBQUssR0FBWSxHQUFHLENBQUM7UUFFckIsV0FBTSxHQUFZLEdBQUcsQ0FBQztRQUV0QixZQUFPLEdBQVksTUFBTSxDQUFDO1FBRVQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDSixDQUFDO0lBS2hELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVM7aUJBQzNCLDhCQUE4QixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVNLG9CQUFvQjtRQUV6QixJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pDLElBQUksS0FBSyxFQUFFO2dCQUNULElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUNwRCxLQUFLLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQzdDLElBQUksVUFBVSxFQUFFOzRCQUNkLGVBQWUsSUFBSSxHQUFHLEdBQUcsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3lCQUMzRTtxQkFDRjtpQkFDRjtnQkFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxLQUFLLEtBQUssRUFBRTtvQkFDdkYsZUFBZSxJQUFJLEdBQUcsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9EO2dCQUNELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7b0JBQ2xDLGVBQWUsSUFBSSxHQUFHLEdBQUcsS0FBSyxHQUFHLGNBQWMsQ0FBQztpQkFDakQ7YUFDRjtTQUNGO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUk7Y0FDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0I7Y0FDakMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWM7Y0FDdkMsVUFBVTtjQUNWLHdCQUF3QixHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDL0UsQ0FBQzs7a0hBdEVVLHFCQUFxQjtzR0FBckIscUJBQXFCLHVUQTVCdEI7Ozs7R0FJVDsyRkF3QlUscUJBQXFCO2tCQTlCakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxNQUFNLEVBQUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlIsQ0FBQztvQkFDRixhQUFhLEVBQUUsaUJBQWlCLENBQUMsU0FBUztpQkFDM0M7bUdBSUMsU0FBUztzQkFEUixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixjQUFjO3NCQURiLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHTixLQUFLO3NCQURKLEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLE9BQU87c0JBRE4sS0FBSztnQkFHVyxPQUFPO3NCQUF2QixNQUFNO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uQ2hhbmdlcywgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc3Nycy1yZXBvcnR2aWV3ZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgPGRpdiBjbGFzcz1cImlmcmFtZS1jb250YWluZXJcIj5cclxuICAgIDxpZnJhbWUgW3NyY109XCJzb3VyY2VcIiBzY3JvbGxpbmc9XCJub1wiPjwvaWZyYW1lPlxyXG4gIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gIC5pZnJhbWUtY29udGFpbmVyIHtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBwYWRkaW5nLXRvcDogNTYuMjUlO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIH1cclxuICBcclxuICAuaWZyYW1lLWNvbnRhaW5lciBpZnJhbWUge1xyXG4gICAgIGJvcmRlcjogMDtcclxuICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgbGVmdDogMDtcclxuICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgdG9wOiAwO1xyXG4gICAgIHdpZHRoOiAxMDAlO1xyXG4gIH1cclxuICBcclxuICAvKiA0eDMgQXNwZWN0IFJhdGlvICovXHJcbiAgLmlmcmFtZS1jb250YWluZXItNHgzIHtcclxuICAgIHBhZGRpbmctdG9wOiA3NSU7XHJcbiAgfVxyXG4gIGBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwb3J0Vmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KClcclxuICByZXBvcnR1cmw6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHJlcG9ydHNlcnZlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd3BhcmFtZXRlcnM/OiBzdHJpbmcgPSBcImZhbHNlXCI7XHJcbiAgQElucHV0KClcclxuICBwYXJhbWV0ZXJzPzogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgbGFuZ3VhZ2U/OiBzdHJpbmcgPSBcImVuLXVzXCI7XHJcbiAgQElucHV0KClcclxuICB3aWR0aD86IG51bWJlciA9IDEwMDtcclxuICBASW5wdXQoKVxyXG4gIGhlaWdodD86IG51bWJlciA9IDEwMDtcclxuICBASW5wdXQoKVxyXG4gIHRvb2xiYXI/OiBzdHJpbmcgPSBcInRydWVcIjtcclxuXHJcbiAgQE91dHB1dCgnZXJyb3InKSBvbkVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XHJcblxyXG5cclxuICBzb3VyY2U6IFNhZmVSZXNvdXJjZVVybDtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgaWYoIXRoaXMucmVwb3J0dXJsKXtcclxuICAgICAgdGhpcy5vbkVycm9yLmVtaXQoXCJTcmMgY2Fubm90IGJlIG51bGxcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCdyZXBvcnR1cmwnIGluIGNoYW5nZXMpIHtcclxuICAgICAgdGhpcy5zb3VyY2UgPSB0aGlzLnNhbml0aXplclxyXG4gICAgICAuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYnVpbGRSZXBvcnRVcmwoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYnVpbGRQYXJhbWV0ZXJTdHJpbmcoKTogc3RyaW5nIHtcclxuXHJcbiAgICB2YXIgcGFyYW1ldGVyU3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICBmb3IgKHZhciBwYXJhbSBpbiB0aGlzLnBhcmFtZXRlcnMpIHtcclxuICAgICAgaWYgKHBhcmFtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc1twYXJhbV0gaW5zdGFuY2VvZiBBcnJheSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgZm9yICh2YXIgYXJyYXlQYXJhbSBpbiB0aGlzLnBhcmFtZXRlcnNbcGFyYW1dKSB7XHJcbiAgICAgICAgICAgIGlmIChhcnJheVBhcmFtKSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1ldGVyU3RyaW5nICs9IFwiJlwiICsgcGFyYW0gKyBcIj1cIiArIHRoaXMucGFyYW1ldGVyc1twYXJhbV1bYXJyYXlQYXJhbV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc1twYXJhbV0gIT0gbnVsbCAmJiB0aGlzLnBhcmFtZXRlcnNbcGFyYW1dIGluc3RhbmNlb2YgQXJyYXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgKz0gXCImXCIgKyBwYXJhbSArIFwiPVwiICsgdGhpcy5wYXJhbWV0ZXJzW3BhcmFtXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVyc1twYXJhbV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgcGFyYW1ldGVyU3RyaW5nICs9IFwiJlwiICsgcGFyYW0gKyBcIjppc251bGw9dHJ1ZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBhcmFtZXRlclN0cmluZztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBidWlsZFJlcG9ydFVybCgpIDogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5yZXBvcnR1cmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIHBhcmFtZXRlcnMgPSB0aGlzLmJ1aWxkUGFyYW1ldGVyU3RyaW5nKCk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRzZXJ2ZXIgKyAnPy8nXHJcbiAgICAgICsgdGhpcy5yZXBvcnR1cmwgKyAnJnJzOkVtYmVkPXRydWUnXHJcbiAgICAgICsgJyZyYzpQYXJhbWV0ZXJzPScgKyB0aGlzLnNob3dwYXJhbWV0ZXJzXHJcbiAgICAgICsgcGFyYW1ldGVyc1xyXG4gICAgICArICcmcnM6UGFyYW1ldGVyTGFuZ3VhZ2U9JyArIHRoaXMubGFuZ3VhZ2UgKyBcIiZyYzpUb29sYmFyPVwiICsgdGhpcy50b29sYmFyOyBcclxuICB9XHJcbn1cclxuIl19