디자이너 컴포넌트 - 사전 정의된 리소스

이 샘플은 Angular, React, Vue 및 순수 JavaScript 응용 프로그램 내에서 ActiveReportsJS Designer 컴포넌트와 함께 사전 정의된 리소스를 사용하는 방법을 보여 줍니다.

자세한 내용은 사전 정의된 데이터 소스 사용Use-Shared-Resources를 방문하십시오. 코드를 보려면 아래로 스크롤하십시오.

import React, { Fragment } from "react"; import ReactDOM from "react-dom"; import { Designer, Viewer } from "@mescius/activereportsjs-react"; import { dataSources, images, } from "./resources"; import { FontStore } from "@mescius/activereportsjs/core"; import "@mescius/activereportsjs/pdfexport"; import "@mescius/activereportsjs/htmlexport"; import "@mescius/activereportsjs/tabulardataexport"; function App() { const [designerVisible, setDesignerVisible] = React.useState(true); const viewerRef = React.useRef(); function updateToolbar(){ var designButton = { key: "$openDesigner", text: "Edit in Designer", iconCssClass: "mdi mdi-pencil", enabled: true, action: () => { setDesignerVisible(true); }, }; viewerRef.current.toolbar.addItem(designButton); viewerRef.current.toolbar.updateLayout({ default: [ "$openDesigner", "$split", "$navigation", "$split", "$refresh", "$split", "$history", "$split", "$zoom", "$fullscreen", "$split", "$print", "$split", "$singlepagemode", "$continuousmode", "$galleymode", ], }); } function onReportPreview(report){ updateToolbar(); setDesignerVisible(false); viewerRef.current.open(report.definition); return Promise.resolve(); } return ( <Fragment> <div id="viewer-host" style={{ display: designerVisible ? "none" : "block" }}> <Viewer ref={viewerRef} /> </div> <div id="designer-host" style={{ display: designerVisible ? "block" : "none" }}> <Designer report={{id: "reports/initial.rdlx-json"}} dataSources={dataSources} imageList={images} onRender={onReportPreview}/> </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 Predefined Resources Sample</title> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" href="index.css" /> <!-- SystemJS --> <script src="./vendor/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import("./src/app"); </script> </head> <body> <div id="root"></div> </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"); @import url("https://cdn.materialdesignicons.com/2.8.94/css/materialdesignicons.min.css"); #designer-host, #viewer-host { width: 100%; height: 550px; }
export const dataSource = { Name: "Northwind", ConnectionProperties: { DataProvider: "JSON", ConnectString: "endpoint=https://demodata.mescius.io/northwind/api/v1", }, }; export const categoriesDataSet = { Name: "Categories", Query: { DataSourceName: "Northwind", CommandText: "uri=/Categories;jpath=$.[*]", }, Fields: [ { Name: "categoryId", DataField: "categoryId" }, { Name: "categoryName", DataField: "categoryName" }, { Name: "description", DataField: "description" }, ], }; export const productsDataSet = { Name: "Products", Query: { DataSourceName: "Northwind", CommandText: "uri=/Products;jpath=$.[*]", }, Fields: [ { Name: "productId", DataField: "productId" }, { Name: "productName", DataField: "productName" }, { Name: "supplierId", DataField: "supplierId" }, { Name: "categoryId", DataField: "categoryId" }, { Name: "quantityPerUnit", DataField: "quantityPerUnit" }, { Name: "unitPrice", DataField: "unitPrice" }, { Name: "unitsInStock", DataField: "unitsInStock" }, { Name: "unitsOnOrder", DataField: "unitsOnOrder" }, { Name: "reorderLevel", DataField: "reorderLevel" }, { Name: "discontinued", DataField: "discontinued" }, ], }; export const dataSources = [ { id: "Northwind", title: "Northwind", template: dataSource, canEdit: false, datasets: [ { id: "Categories", title: "Categories", template: categoriesDataSet, canEdit: false, }, { id: "Products", title: "Products", template: productsDataSet, canEdit: false, } ] } ] export const images = [ { id: "images/ambulance.svg", displayName: "Ambulance", mimeType: "image/svg", }, { id: "images/bed.svg", displayName: "Bed", mimeType: "image/svg", }, { id: "images/blooddonation.svg", displayName: "Blood Donation", mimeType: "image/svg", }, { id: "images/siren.svg", displayName: "Siren", mimeType: "image/svg", }, ]; export const reports = [ { id: "reports/CustomersTable.rdlx-json", displayName: "Customers Table", }, { id: "reports/TaxiDrives.rdlx-json", displayName: "Taxi Drive Report", }, ];
(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-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/core": "npm:@mescius/activereportsjs/dist/ar-js-core.js", "@mescius/activereportsjs/styles": "npm:@mescius/activereportsjs/styles", "@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);