Designer Component - Loading Reports

These samples show how to load reports in the ActiveReportsJS Designer component within Angular, React, Vue, and pure JavaScript applications. When the application loads, the designer shows the template report. The "New" button loads the same template report. The "Open" button displays the dialog where a user selects the report to open. Finally, the "Load Blank Report" button loads the empty report into the designer. For more details, please visit the Loading Reports page. To view the code, scroll down the page.

<template> <div> <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="onLoadBlank(false)" > Load Blank Report </button> </div> </div> <div id="designer-host"> <arjs-designer ref="designer" :report="{ id: 'reports/company-template.rdlx-json' }" :onCreate="onCreateReport" :onOpen="onOpenReport" > </arjs-designer> </div> </div> <div v-if="showModal" class="modal" id="dlgOpen" tabindex="-1" aria-hidden="true" > <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Open Report</h5> <button type="button" class="close" aria-label="Close" @click="hideModal" > <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <strong>Select Report:</strong> <div class="list-group"> <button type="button" class="list-group-item list-group-item-action" @click="onSelectReport('reports/CustomersTable.rdlx-json')" > Customers Report </button> <button type="button" class="list-group-item list-group-item-action" @click="onSelectReport('reports/TaxiDrives.rdlx-json')" > Taxi Drives Report </button> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-outline-secondary" @click="hideModal" > Close </button> </div> </div> </div> </template> <script> import { CPLReport, FPLReport } from "./reportTemplates.js"; import { Designer } from "@grapecity/activereports-vue"; import { FontStore } from "@grapecity/activereports/core"; let resolveFunc = null; export default { components: { "arjs-designer": Designer, }, data: function () { return { showModal: false, }; }, methods: { onSelectReport(report) { if (resolveFunc) { resolveFunc({ id: report }); this.showModal = false; } }, onLoadBlank(fpl) { this.$refs.designer.setReport({ definition: fpl ? FPLReport : CPLReport, }); }, onCreateReport() { return Promise.resolve({ id: "reports/company-template.rdlx-json" }); }, onOpenReport() { return new Promise((resolve) => { resolveFunc = resolve; this.showModal = true; }); }, hideModal() { this.showModal = false; if (resolveFunc) { resolveFunc(null); resolveFunc = null; } }, }, }; FontStore.registerFonts("/activereportsjs/demos/resource/fontsConfig.json"); </script> <style> @import url("/activereportsjs/demos/resource/themes/orange-ui.css"); @import url("/activereportsjs/demos/resource/themes/orange-designer.css"); #designer-host { width: 100%; height: 500px; } .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; } .modal-content { background: white; padding: 20px; border-radius: 4px; width: 50%; max-width: 500px; max-height: 80%; overflow-y: auto; } </style>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>ActiveReportsJS sample</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script src="./compiler.js" type="module"></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('$DEMOROOT$/en/lib/vue/license.ts'); System.import("./app.js"); </script> </head> <body style="margin: 0"> <div id="app"></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>
export var CPLReport = { Name: "Report", Body: { Width: "8.5in", Height: "11in", }, }; export var FPLReport = { Name: "Report", Page: { PageWidth: "8.5in", PageHeight: "11in", }, FixedPage: { Pages: [{}] }, };
(function (global) { SystemJS.config({ transpiler: 'systemjs-plugin-babel', typescriptOptions: { "target": "es2022", "module": "system", }, baseURL: './node_modules/', packageConfigPaths: [ './node_modules/*/package.json', "./node_modules/@grapecity/*/package.json", "./node_modules/@babel/*/package.json", "./node_modules/@vue/*/package.json" ], map: { 'vue': "./node_modules/vue/dist/vue.esm-browser.js", "systemjs-babel-build": "systemjs-plugin-babel/systemjs-babel-browser.js", "@grapecity/activereports/pdfexport": "@grapecity/activereports/dist/ar-js-pdf.js", "@grapecity/activereports/tabulardataexport": "@grapecity/activereports/dist/ar-js-tabular-data.js", "@grapecity/activereports/htmlexport": "@grapecity/activereports/dist/ar-js-html.js", "@grapecity/activereports/xlsxexport": "@grapecity/activereports/dist/ar-js-xlsx.js", "@grapecity/activereports-vue": "@grapecity/activereports-vue/lib/index.js", "@grapecity/activereports/reportviewer": "@grapecity/activereports/dist/ar-js-viewer.js", "@grapecity/activereports/viewer": "@grapecity/activereports/dist/ar-js-viewer.js", "@grapecity/activereports/reportdesigner": "@grapecity/activereports/dist/ar-js-designer.js", "@grapecity/activereports/core": "@grapecity/activereports/dist/ar-js-core.js", "@grapecity/activereports/styles": "@grapecity/activereports/styles", "@grapecity/activereports-localization": "@grapecity/activereports-localization/dist/ar-js-locales.js", "@grapecity/ar-js-pagereport": "@grapecity/activereports/dist/ar-js-core.js", "@grapecity/activereports-localization-ja": "@grapecity/activereports-localization/dist/designer/ja-locale.js", "@grapecity/activereports-localization-zh": "@grapecity/activereports-localization/dist/designer/zh-locale.js", }, meta: { '*.css': { loader: 'systemjs-plugin-css' }, './src/*.vue': { loader: "../plugin-vue/index.js" }, '*.vue': { loader: "./plugin-vue/index.js" }, }, packages: { "vue-demi": { defaultExtension: "mjs", main: "lib/index.mjs" } } }); })(this);