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 React, { Fragment } from "react"; import ReactDOM from "react-dom"; import { Viewer as ReportViewer, Designer } from "@mescius/activereportsjs-react"; import { PageReport } from "@mescius/activereportsjs/core"; import {exportDocument as pdfExport } from "@mescius/activereportsjs/pdfexport"; import { FontStore } from "@mescius/activereportsjs/core"; function App() { const designer = React.useRef(); const viewer = React.useRef(); const [designerVisible, setDesignerVisible] = React.useState(true); function onDesignerOpen() { setDesignerVisible(true); } async function onPdfPreview() { const reportInfo = await designer.current.getReport(); const report = new PageReport(); await report.load(reportInfo.definition); const doc = await report.run(); const result = await pdfExport(doc); result.download("exportedreport"); } function onReportPreview(report){ setDesignerVisible(false); viewer.current.open(report.definition); return Promise.resolve(); } return ( <Fragment> <div id="designer-toolbar" class="container-fluid"> <div class="row mt-3 mb-3"> {designerVisible && ( <button type="button" class="btn btn-outline-primary btn-sm col-sm-2 ml-1" onClick={() => onPdfPreview()} > PDF Preview </button> )} {!designerVisible && ( <button type="button" class="btn btn-outline-primary btn-sm col-sm-2 ml-1" onClick={() => onDesignerOpen()} > Open Designer </button> )} </div> </div> <div id="designer-host" style={{ display: designerVisible ? "block" : "none" }} > <Designer report={{ id: "reports/company-template.rdlx-json" }} ref={designer} onRender={onReportPreview} /> </div> {!designerVisible && ( <div id="viewer-host"> <ReportViewer ref={viewer} /> </div> )} </Fragment> ); } FontStore.registerFonts("/activereportsjs/demos/resource/fontsConfig.json"); ReactDOM.render(<App />, document.getElementById("root"));
<!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" /> <link rel="stylesheet" href="index.css" /> <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" /> <!-- SystemJS --> <script src="./vendor/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import("./src/app"); </script> </head> <body style="margin: 0"> <div id="root"></div> <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>
@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; }
(function (global) { System.config({ transpiler: "plugin-babel", babelOptions: { es2015: true, react: true, }, meta: { "*.css": { loader: "css" }, }, paths: { // paths serve as alias "npm:": "node_modules/", }, // map tells the System loader where to look for things map: { css: "npm:systemjs-plugin-css/css.js", react: "npm:react/umd/react.production.min.js", "react-dom": "npm:react-dom/umd/react-dom.production.min.js", "@mescius/activereportsjs/pdfexport": "npm:@mescius/activereportsjs/dist/ar-js-pdf.js", "@mescius/activereportsjs/tabulardataexport": "npm:@mescius/activereportsjs/dist/ar-js-tabular-data.js", "@mescius/activereportsjs/htmlexport": "npm:@mescius/activereportsjs/dist/ar-js-html.js", "@mescius/activereportsjs/xlsxexport": "npm:@mescius/activereportsjs/dist/ar-js-xlsx.js", "@mescius/activereportsjs/xlsxadvexport": "npm:@mescius/activereportsjs/dist/ar-js-xlsxAdv.js", "@mescius/activereportsjs-react": "npm:@mescius/activereportsjs-react/lib/index.js", "@mescius/activereportsjs/reportviewer": "npm:@mescius/activereportsjs/dist/ar-js-viewer.js", "@mescius/activereportsjs/viewer": "npm:@mescius/activereportsjs/dist/ar-js-viewer.js", "@mescius/activereportsjs/reportdesigner": "npm:@mescius/activereportsjs/dist/ar-js-designer.js", "@mescius/activereportsjs": "npm:@mescius/activereportsjs/dist/ar-js-core.js", "@mescius/activereportsjs/core": "npm:@mescius/activereportsjs/dist/ar-js-core.js", "@mescius/activereportsjs/styles": "npm:@mescius/activereportsjs/styles", "@mescius/activereportsjs-i18n": "npm:@mescius/activereportsjs-i18n/dist/ar-js-locales.js", "@mescius/activereportsjs-i18n-ja": "npm:@mescius/activereportsjs-i18n/dist/designer/ja-locale.js", "@mescius/activereportsjs-i18n-zh": "npm:@mescius/activereportsjs-i18n/dist/designer/zh-locale.js", "@mescius/ar-js-pagereport": "npm:@mescius/activereportsjs/dist/ar-js-core.js", "plugin-babel": "npm:systemjs-plugin-babel/plugin-babel.js", "systemjs-babel-build": "npm:systemjs-plugin-babel/systemjs-babel-browser.js", }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: "jsx", }, node_modules: { defaultExtension: "js", }, }, }); })(this);