找回密码
 立即注册

QQ登录

只需一步,快速开始

Lenka.Guo 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-3-17 14:51  /   查看:3463  /  回复:0
通用:

  1.                     <!DOCTYPE html>
  2. <html lang="en">

  3. <head>

  4.     <title>ActiveReports Web Designer</title>
  5.     <meta charset="utf-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1">
  7.     <meta http-equiv="x-ua-compatible" content="ie=edge">

  8.     <!-- Mandatory -->
  9.     <link rel="stylesheet" href="vendor/css/materialdesignicons.min.css" media="all" type="text/css" />
  10.     <link rel="stylesheet" href="vendor/css/bootstrap.min.css" />
  11.     <link rel="stylesheet" href="vendor/css/font-awesome.min.css">
  12.     <link rel="stylesheet" href="vendor/css/ionicons.min.css">
  13.     <link rel="stylesheet" href="vendor/css/fonts-googleapis.css" type="text/css">
  14.     <!--------------->

  15.     <!-- Optional: Open-Report/Save-Report-As Dialogs -->
  16.     <link rel="stylesheet" href="file-dialog.css" />

  17.     <!-- Optional: Preview Report -->
  18.     <link rel="stylesheet" href="viewer-container.css" type="text/css">

  19.     <!-- Optional: Add Data Sets using Data Set Picker -->
  20.     <link rel="stylesheet" href="data-set-picker.css" />

  21.     <!-- Optional: File View -->
  22.     <link rel="stylesheet" href="file-view.css" />

  23.     <!-- Optional: Add/Edit Data Sources using Data Source Editor -->
  24.     <link rel="stylesheet" href="ar-datasource-editor.css" />

  25.     <!-- Mandatory -->
  26.     <link rel="stylesheet" href="web-designer.css" />

  27. </head>
  28. <body>

  29.     <!-- Mandatory -->
  30.     <script src="vendor/js/jquery.js"></script>
  31.     <script src="vendor/js/bootstrap.min.js"></script>
  32.     <!--------------->

  33.     <!-- Optional: Open-Report/Save-Report-As Dialogs -->
  34.     <script src="file-dialog.js"></script>

  35.     <!-- Optional - Preview Report -->
  36.     <script src="viewer-container.js"></script>

  37.     <!-- Optional: Add Data Sets using Data Set Picker -->
  38.     <script src="data-set-picker.js"></script>

  39.     <!-- Optional: File View -->
  40.     <script src="file-view.js"></script>

  41.     <!-- Optional: Add/Edit Data Sources using Data Source Editor -->
  42.     <script src="ar-datasource-editor.js"></script>

  43.     <!-- Mandatory -->
  44.     <script src="baseServerApi.js"></script>
  45.     <script src="web-designer.js"></script>
  46.     <!--------------->

  47.     <!-- Mandatory -->
  48.     <div id="designer-id" style="width: 100%; height: 100%;"></div>

  49.     <!-- Optional: File View -->
  50.     <div id="file-view-id" style="width: 100%; height: 100%; display: none;"></div>

  51.     <!-- Optional - Preview Report -->
  52.     <div id="viewer-container-id" style="width: 100%; height: 100%; display: none;"></div>

  53.     <!-- Optional: Save-Report-As Dialog -->
  54.     <div id="save-as-dialog-id" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: none;z-index: 9999;"></div>

  55.     <!-- Optional: Open-Report Dialog -->
  56.     <div id="open-dialog-id" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: none;z-index: 9999;"></div>

  57.     <!-- Optional: Add Data Sets using Data Set Picker -->
  58.     <div id="data-set-picker-dialog-id" style="position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: none;z-index: 9999;background-color: #dedede;"></div>

  59.     <!-- Optional: Add/Edit Data Sources using Data Source Editor -->
  60.     <div id="data-source-editor-dialog-id"></div>
  61.     <script>

  62.         var designerId = 'designer-id';
  63.         var viewerContainerId = 'viewer-container-id';
  64.         var fileViewId = 'file-view-id';
  65.         var saveAsDialogId = 'save-as-dialog-id';
  66.         var openDialogId = 'open-dialog-id';
  67.         var dataSetPickerDialogId = 'data-set-picker-dialog-id';
  68.         var dataSourceEditorDialogId = 'data-source-editor-dialog-id';

  69.         /* Implementation Details - See the section below. */

  70.         /* Mandatory: Create Designer Options */
  71.         var designerOptions = GrapeCity.ActiveReports.WebDesigner.createDesignerOptions(baseServerApi);

  72.         /* Optional: Save Report */
  73.         designerOptions.saveButton.visible = true;
  74.         designerOptions.onSave = onSaveImpl;

  75.         /* Optional: Save Report As */
  76.         designerOptions.saveAsButton.visible = true;
  77.         designerOptions.onSaveAs = onSaveAsImpl;

  78.         /* Optional: Open Report */
  79.         designerOptions.openButton.visible = true;
  80.         designerOptions.onOpen = onOpenImpl;

  81.         /* Optional: File View */
  82.         designerOptions.openFileView = openFileViewImpl;

  83.         /* Optional: Preview Report */
  84.         designerOptions.openViewer = openViewerImpl;

  85.         /* Optional: Add/Edit/Remove Data Sets */
  86.         designerOptions.dataTab.dataSets.canModify = true;

  87.         /* Optional: Add Data Sets using Data Set Picker */
  88.         designerOptions.dataSetPicker.open = openDataSetPickerImpl;
  89.         designerOptions.dataSetPicker.close = closeDataSetPickerImpl;

  90.         /* Optional: Add/Edit/Remove Data Sources */
  91.         designerOptions.dataTab.dataSources.canModify = true;

  92.         /* Optional: Add/Edit Data Sources using Data Source Editor */
  93.         ARDataSourceEditor.init(dataSourceEditorDialogId);
  94.         designerOptions.openDataSourceEditor = openDataSourceEditorImpl;

  95.         /* Mandatory: Render Designer Application */
  96.         GrapeCity.ActiveReports.WebDesigner.renderApplication(designerId, designerOptions);

  97.     </script>
  98. </body>

  99. </html>                  

  100.                
复制代码


具体函数实现:



辅助功能:

  1.                     var dialogs = [
  2.     saveAsDialogId, openDialogId,
  3.     dataSetPickerDialogId, dataSourceEditorDialogId,
  4. ];

  5. var showElement = function (id) {
  6.     if (!id) return;
  7.     ($('#' + id)).css('display', 'block');
  8. };

  9. var hideElement = function (id) {
  10.     if (!id) return;
  11.     ($('#' + id)).css('display', 'none');
  12. };

  13. var hideDialogs = function () {
  14.     dialogs.forEach(hideElement);
  15. }

  16. var showDesigner = function () {
  17.     var info = GrapeCity.ActiveReports.WebDesigner.api.getReportInfo();
  18.     var isDirty = GrapeCity.ActiveReports.WebDesigner.api.isReportDirty();
  19.     document.title = info.name + (isDirty ? ' *' : '');
  20.     showElement(designerId);
  21.     GrapeCity.ActiveReports.WebDesigner.focus();
  22. };

  23. var makeOptions = function (baseOptions, additionalOptions) {
  24.     return $.extend({}, baseOptions || {}, additionalOptions || {});
  25. }

  26.                
复制代码


报表保存
  1.                     /* Optional: Save Report */
  2. var onSaveImpl = function (options) {
  3.     baseServerApi
  4.         .saveExistingReport({ id: options.reportInfo.id, content: options.reportInfo.content })
  5.         .then(function (saveResult) {
  6.             options.onSuccess({
  7.                 id: saveResult.Id,
  8.                 name: options.reportInfo.name
  9.             });
  10.         });
  11. };

  12.                
复制代码


另存为:

  1.                     /* Optional: Save Report */
  2. var onSaveImpl = function (options) {
  3.     baseServerApi
  4.         .saveExistingReport({ id: options.reportInfo.id, content: options.reportInfo.content })
  5.         .then(function (saveResult) {
  6.             options.onSuccess({
  7.                 id: saveResult.Id,
  8.                 name: options.reportInfo.name
  9.             });
  10.         });
  11. };

  12.                
复制代码


打开文件:

  1.                     /* Optional: Open Report */
  2. var onOpenImpl = function (options) {
  3.     showElement(openDialogId);
  4.     var loadedReportList = null;

  5.     fileDialog.createOpenReportDialog(openDialogId, {
  6.         locale: options.locale,

  7.         api: {
  8.             getReportsList: function () {
  9.                 return baseServerApi.getReportsList().then(function (reportsList) {
  10.                     loadedReportList = reportsList;
  11.                     return reportsList.map(function (reportInfo) {
  12.                         return { path: reportInfo.Name };
  13.                     });
  14.                 });
  15.             },
  16.             openReport: function (openOptions) {
  17.                 return new $.Deferred(function (def) {
  18.                     var reportInfo = (loadedReportList || []).find(function (r) {
  19.                         return r.Name === openOptions.path;
  20.                     });
  21.                     if (!reportInfo) return def.reject();
  22.                     GrapeCity.ActiveReports.WebDesigner.api.openReport({
  23.                         reportInfo: {
  24.                             id: reportInfo._id,
  25.                             name: reportInfo.Name,
  26.                             permissions: ['all'],
  27.                         },
  28.                         onFinish: function () {
  29.                             def.resolve({ id: reportInfo._id });
  30.                         },
  31.                     });
  32.                 });
  33.             },
  34.         },
  35.         onSuccess: function (openResult) {
  36.             hideElement(openDialogId);
  37.         },
  38.         onClose: function () {
  39.             hideElement(openDialogId);
  40.             showDesigner();
  41.         },
  42.     });
  43. };

  44.                
复制代码


打开文件对话框:

  1.                     /* Optional: Open Report */
  2. var onOpenImpl = function (options) {
  3.     showElement(openDialogId);
  4.     var loadedReportList = null;

  5.     fileDialog.createOpenReportDialog(openDialogId, {
  6.         locale: options.locale,

  7.         api: {
  8.             getReportsList: function () {
  9.                 return baseServerApi.getReportsList().then(function (reportsList) {
  10.                     loadedReportList = reportsList;
  11.                     return reportsList.map(function (reportInfo) {
  12.                         return { path: reportInfo.Name };
  13.                     });
  14.                 });
  15.             },
  16.             openReport: function (openOptions) {
  17.                 return new $.Deferred(function (def) {
  18.                     var reportInfo = (loadedReportList || []).find(function (r) {
  19.                         return r.Name === openOptions.path;
  20.                     });
  21.                     if (!reportInfo) return def.reject();
  22.                     GrapeCity.ActiveReports.WebDesigner.api.openReport({
  23.                         reportInfo: {
  24.                             id: reportInfo._id,
  25.                             name: reportInfo.Name,
  26.                             permissions: ['all'],
  27.                         },
  28.                         onFinish: function () {
  29.                             def.resolve({ id: reportInfo._id });
  30.                         },
  31.                     });
  32.                 });
  33.             },
  34.         },
  35.         onSuccess: function (openResult) {
  36.             hideElement(openDialogId);
  37.         },
  38.         onClose: function () {
  39.             hideElement(openDialogId);
  40.             showDesigner();
  41.         },
  42.     });
  43. };

  44.                
复制代码
报表预览界面

  1.                     /* Optional: Preview Report */
  2. var openViewerImpl = function (options) {
  3.     hideElement(designerId);
  4.     showElement(viewerContainerId);

  5.     var viewerContainerOptions = makeOptions(options, {
  6.         makeViewerUrl: function () {
  7.             var baseUrl = 'http://localhost:58723/preview/';
  8.             var reportId = encodeURIComponent(options.reportInfo.id);
  9.             var language = options.locale;
  10.             return baseUrl + reportId + '?lng=' + language;
  11.         },
  12.     });
  13.     viewerContainer.renderViewerContainer(viewerContainerId, viewerContainerOptions, function () {
  14.         var isTemporaryReport = options.reportInfo.isTemporary;
  15.         if (isTemporaryReport) {
  16.             var reportId = options.reportInfo.id;
  17.             baseServerApi.deleteTemporaryReport({ id: reportId });
  18.         }
  19.         hideElement(viewerContainerId);
  20.         showDesigner();
  21.     });
  22. };

  23.                
复制代码


设置数据集节点是否可见:

  1.                     /* Optional: Add Data Sets using Data Set Picker */
  2. var openDataSetPickerImpl = function (options) {
  3.     var openInPanel = options.mode === 'Panel';
  4.     if (!openInPanel) {
  5.         hideDialogs();
  6.         showElement(dataSetPickerDialogId);
  7.     }
  8.     dataSetPicker.renderDataSetPicker(openInPanel ? options.elementId : dataSetPickerDialogId, makeOptions(options, {
  9.         serverApi: {
  10.             getDataSetsList: baseServerApi.getDataSetsList,
  11.             getDataSourcesAndDataSets: baseServerApi.getDataSourcesAndDataSets,
  12.         },
  13.         onClose: function () {
  14.             options.onClose();
  15.             if (!openInPanel) hideElement(dataSetPickerDialogId);
  16.             dataSetPicker.dispose();
  17.         }
  18.     }));
  19. };
  20. var closeDataSetPickerImpl = function () {
  21.     dataSetPicker.dispose();
  22. };

  23.                
复制代码


设置数据源编辑器隐藏或可见:

  1.                     /* Optional: Add Data Sets using Data Set Picker */
  2. var openDataSetPickerImpl = function (options) {
  3.     var openInPanel = options.mode === 'Panel';
  4.     if (!openInPanel) {
  5.         hideDialogs();
  6.         showElement(dataSetPickerDialogId);
  7.     }
  8.     dataSetPicker.renderDataSetPicker(openInPanel ? options.elementId : dataSetPickerDialogId, makeOptions(options, {
  9.         serverApi: {
  10.             getDataSetsList: baseServerApi.getDataSetsList,
  11.             getDataSourcesAndDataSets: baseServerApi.getDataSourcesAndDataSets,
  12.         },
  13.         onClose: function () {
  14.             options.onClose();
  15.             if (!openInPanel) hideElement(dataSetPickerDialogId);
  16.             dataSetPicker.dispose();
  17.         }
  18.     }));
  19. };
  20. var closeDataSetPickerImpl = function () {
  21.     dataSetPicker.dispose();
  22. };

  23.                
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部