Designer Component - Preview Reports Output

These samples show how to preview reports output in the ActiveReportsJS Designer component within Angular, React, Vue, and pure JavaScript applications. Click the "Preview" button on the designer toolbar opens the viewer that displays the current report. Click on the "PDF Preview" button exports a report to PDF and automatically opens or downloads it, depending on the browser settings. Click on the "Open Designer" button displays the designer component. For more details, please visit the Preview Reports page for more information. To view the code, scroll down the page.

import { ChangeDetectorRef, Component, ViewChild } from "@angular/core"; import { ViewerComponent, DesignerComponent, AR_EXPORTS, PdfExportService, HtmlExportService, TabularDataExportService, XlsxExportService, XlsxAdvExportService, } from "@mescius/activereportsjs-angular"; import { PageReport } from "@mescius/activereportsjs/core"; import { PdfExport } from "@mescius/activereportsjs"; import { switchToDesigner, switchToViewer } from "./utils"; @Component({ selector: "app-root", templateUrl: "src/app.component.html", styleUrls: ["src/app.component.css"], providers: [ { provide: AR_EXPORTS, useClass: PdfExportService, multi: true, }, { provide: AR_EXPORTS, useClass: HtmlExportService, multi: true, }, { provide: AR_EXPORTS, useClass: TabularDataExportService, multi: true, }, { provide: AR_EXPORTS, useClass: XlsxExportService, multi: true, }, { provide: AR_EXPORTS, useClass: XlsxAdvExportService, multi: true, }, ], }) export class AppComponent { designerHidden = false; initialReport = { id: "reports/company-template.rdlx-json" }; // constructor(private changeDetectorRef: ChangeDetectorRef) {} @ViewChild(ViewerComponent, { static: false }) reportViewer: ViewerComponent; @ViewChild(DesignerComponent, { static: false }) reportDesigner: DesignerComponent; async onPdfPreview() { const reportInfo = await this.reportDesigner.getReport(); const report = new PageReport(); await report.load(reportInfo?.definition); const doc = await report.run(); const result = await PdfExport.exportDocument(doc as any); result.download("exportedreport"); } onDesignerOpen() { switchToDesigner(); this.designerHidden = false; } onReportPreview = (report: any) => { switchToViewer(); this.designerHidden = true; this.reportViewer.open(report.definition); // this.changeDetectorRef.detectChanges(); return Promise.resolve(); }; }
@import url("/activereportsjs/demos/arjs/styles/ar-js-ui.css"); @import url("/activereportsjs/demos/arjs/styles/ar-js-designer.css"); @import url("/activereportsjs/demos/arjs/styles/ar-js-viewer.css"); #designer-host, #viewer-host { width: 100%; height: 500px; }
import { BrowserModule } from "@angular/platform-browser"; import { NgModule } from "@angular/core"; import { AppComponent } from "./app.component"; import { ActiveReportsModule } from "@mescius/activereportsjs-angular"; import { ReactiveFormsModule } from "@angular/forms"; @NgModule({ declarations: [AppComponent], imports: [ActiveReportsModule, BrowserModule, ReactiveFormsModule], providers: [], bootstrap: [AppComponent], }) export class AppModule {}
<div id="designer-toolbar" class="container-fluid"> <div class="row mt-3 mb-3"> <button type="button" class="btn btn-outline-primary btn-sm col-sm-2 ml-1" (click)="onPdfPreview()" [hidden]="designerHidden" > PDF Preview </button> <button type="button" class="btn btn-outline-primary btn-sm col-sm-2 ml-1" (click)="onDesignerOpen()" [hidden]="!designerHidden" > Open Designer </button> </div> </div> <div id="designer-host" [hidden]="designerHidden"> <gc-activereports-designer [report]="initialReport" [onRender]="onReportPreview" ></gc-activereports-designer> </div> <div id="viewer-host" [hidden]="!designerHidden"> <gc-activereports-viewer></gc-activereports-viewer> </div>
(function (global) { System.config({ transpiler: "./plugin-typescript.js", typescriptOptions: { "target": "ES2022", "module": "system", "emitDecoratorMetadata": true, "experimentalDecorators": true, }, baseURL: "./node_modules/", meta: { typescript: { exports: "ts", }, "*.css": { loader: "systemjs-plugin-css" }, }, packageConfigPaths: [ "./node_modules/*/package.json", "./node_modules/@angular/*/package.json", "./node_modules/@mescius/*/package.json", ], map: { 'typescript': "typescript/lib/typescript.js", 'rxjs': "rxjs/dist/bundles/rxjs.umd.js", "rxjs/operators": "rxjs/dist/bundles/rxjs.umd.js", "@angular/core/primitives/signals": "@angular/core/fesm2022/primitives/signals.mjs", "@angular/common/http": "@angular/common/fesm2022/http.mjs", "@mescius/activereportsjs/core": "./core.js", "@mescius/activereportsjs": "./activereports.js", "@mescius/activereportsjs/reportdesigner":"./activereports.js", "@mescius/ar-js-pagereport": "@mescius/activereportsjs/dist/ar-js-core.js", "@mescius/activereportsjs-i18n-ja": "@mescius/activereportsjs-i18n/dist/designer/ja-locale.js", "@mescius/activereportsjs-i18n-zh": "@mescius/activereportsjs-i18n/dist/designer/zh-locale.js", }, // packages tells the System loader how to load when no filename and/or no extension packages: { "./src": { defaultExtension: "ts", }, rxjs: { defaultExtension: "js", // "main": "bundles/rxjs.umd.min.js" }, node_modules: { defaultExtension: "js", }, "@angular/core": { defaultExtension: "mjs", main: "fesm2022/core.mjs", }, "@angular/platform-browser": { defaultExtension: "mjs", main: "fesm2022/platform-browser.mjs", }, "@angular/common": { defaultExtension: "mjs", main: "fesm2022/common.mjs", }, "@angular/compiler": { defaultExtension: "mjs", main: "fesm2022/compiler.mjs", }, "@angular/forms": { defaultExtension: "mjs", main: "fesm2022/forms.mjs", }, "@angular/localize": { defaultExtension: "mjs", main: "fesm2022/localize.mjs", }, "@angular/platform-browser-dynamic": { defaultExtension: "mjs", main: "fesm2022/platform-browser-dynamic.mjs", }, "@mescius/activereportsjs-angular": { defaultExtension: "mjs", main: "fesm2022/grapecity-activereports-angular.mjs", }, }, }); })(this);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>ActiveReportsJS Report Designer Report Preview Sample</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!-- Polyfills --> <script src="node_modules/zone.js/fesm2015/zone.min.js"></script> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous" /> <script> System.import("./src/app.main"); </script> </head> <body style="margin: 0"> <app-root></app-root> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous" ></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous" ></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous" ></script> </body> </html>