bways-report 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +26 -0
- package/README.md +477 -0
- package/esm2022/bways-report.mjs +5 -0
- package/esm2022/lib/core/errors/index.mjs +2 -0
- package/esm2022/lib/core/errors/reporting-errors.mjs +65 -0
- package/esm2022/lib/core/index.mjs +8 -0
- package/esm2022/lib/core/models/component-event.model.mjs +8 -0
- package/esm2022/lib/core/models/index.mjs +5 -0
- package/esm2022/lib/core/models/report-component.model.mjs +10 -0
- package/esm2022/lib/core/models/report-datasource.model.mjs +9 -0
- package/esm2022/lib/core/models/report-definition.model.mjs +13 -0
- package/esm2022/lib/core/models/report-grid.model.mjs +10 -0
- package/esm2022/lib/core/models/report-layout.model.mjs +9 -0
- package/esm2022/lib/core/models/report-parameter.model.mjs +9 -0
- package/esm2022/lib/core/models/validation.model.mjs +8 -0
- package/esm2022/lib/core/registry/component-category.mjs +8 -0
- package/esm2022/lib/core/registry/component-registry.mjs +90 -0
- package/esm2022/lib/core/registry/index.mjs +2 -0
- package/esm2022/lib/core/registry/property-definition.model.mjs +10 -0
- package/esm2022/lib/core/services/dynamic-form-builder.service.mjs +55 -0
- package/esm2022/lib/core/services/index.mjs +3 -0
- package/esm2022/lib/core/services/report-session-context.service.mjs +314 -0
- package/esm2022/lib/core/tokens/index.mjs +3 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +26 -0
- package/esm2022/lib/core/tokens/session-context.token.mjs +18 -0
- package/esm2022/lib/core/utilities/id-generator.mjs +17 -0
- package/esm2022/lib/core/utilities/index.mjs +3 -0
- package/esm2022/lib/core/utilities/schema-migration.mjs +38 -0
- package/esm2022/lib/core/utils/identifier-humanizer.mjs +88 -0
- package/esm2022/lib/core/validation/index.mjs +2 -0
- package/esm2022/lib/core/validation/validation-factory.mjs +70 -0
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +107 -0
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +119 -0
- package/esm2022/lib/data-access/adapters/index.mjs +3 -0
- package/esm2022/lib/data-access/contracts/data-source.contract.mjs +28 -0
- package/esm2022/lib/data-access/contracts/index.mjs +7 -0
- package/esm2022/lib/data-access/contracts/lookup.contract.mjs +6 -0
- package/esm2022/lib/data-access/contracts/master-data.provider.mjs +24 -0
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +25 -0
- package/esm2022/lib/data-access/contracts/schema-discovery.contract.mjs +7 -0
- package/esm2022/lib/data-access/contracts/translation.contract.mjs +9 -0
- package/esm2022/lib/data-access/index.mjs +3 -0
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +542 -0
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +843 -0
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +556 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +845 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +185 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +452 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +350 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +175 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +137 -0
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +608 -0
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +225 -0
- package/esm2022/lib/features/designer/designer.component.mjs +285 -0
- package/esm2022/lib/features/designer/index.mjs +7 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +310 -0
- package/esm2022/lib/features/designer/services/index.mjs +2 -0
- package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +124 -0
- package/esm2022/lib/features/export/index.mjs +2 -0
- package/esm2022/lib/features/export/models/export.models.mjs +2 -0
- package/esm2022/lib/features/export/services/report-export.service.mjs +107 -0
- package/esm2022/lib/features/index.mjs +6 -0
- package/esm2022/lib/features/persistence/index.mjs +2 -0
- package/esm2022/lib/features/persistence/services/index.mjs +4 -0
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +183 -0
- package/esm2022/lib/features/persistence/services/report-versioning.service.mjs +81 -0
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +102 -0
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +156 -0
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +163 -0
- package/esm2022/lib/features/routing/index.mjs +6 -0
- package/esm2022/lib/features/routing/models/report-route.models.mjs +2 -0
- package/esm2022/lib/features/routing/report-routes.mjs +49 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +22 -0
- package/esm2022/lib/features/routing/services/report-menu.service.mjs +77 -0
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +222 -0
- package/esm2022/lib/features/runtime/index.mjs +4 -0
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +409 -0
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +147 -0
- package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +88 -0
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +361 -0
- package/esm2022/lib/primitives/components/checkbox/rpt-checkbox.component.mjs +86 -0
- package/esm2022/lib/primitives/components/date/rpt-date.component.mjs +91 -0
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +204 -0
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +476 -0
- package/esm2022/lib/primitives/components/index.mjs +10 -0
- package/esm2022/lib/primitives/components/input/rpt-input.component.mjs +88 -0
- package/esm2022/lib/primitives/components/kpi-card/rpt-kpi-card.component.mjs +197 -0
- package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +110 -0
- package/esm2022/lib/primitives/index.mjs +3 -0
- package/esm2022/lib/primitives/register-builtins.mjs +328 -0
- package/esm2022/lib/provide-reporting.mjs +92 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/bways-report.mjs +10360 -0
- package/fesm2022/bways-report.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/core/errors/index.d.ts +1 -0
- package/lib/core/errors/reporting-errors.d.ts +42 -0
- package/lib/core/index.d.ts +7 -0
- package/lib/core/models/component-event.model.d.ts +37 -0
- package/lib/core/models/index.d.ts +11 -0
- package/lib/core/models/report-component.model.d.ts +95 -0
- package/lib/core/models/report-datasource.model.d.ts +39 -0
- package/lib/core/models/report-definition.model.d.ts +100 -0
- package/lib/core/models/report-grid.model.d.ts +73 -0
- package/lib/core/models/report-layout.model.d.ts +43 -0
- package/lib/core/models/report-parameter.model.d.ts +22 -0
- package/lib/core/models/validation.model.d.ts +30 -0
- package/lib/core/registry/component-category.d.ts +16 -0
- package/lib/core/registry/component-registry.d.ts +101 -0
- package/lib/core/registry/index.d.ts +4 -0
- package/lib/core/registry/property-definition.model.d.ts +38 -0
- package/lib/core/services/dynamic-form-builder.service.d.ts +30 -0
- package/lib/core/services/index.d.ts +3 -0
- package/lib/core/services/report-session-context.service.d.ts +87 -0
- package/lib/core/tokens/index.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +42 -0
- package/lib/core/tokens/session-context.token.d.ts +36 -0
- package/lib/core/utilities/id-generator.d.ts +9 -0
- package/lib/core/utilities/index.d.ts +3 -0
- package/lib/core/utilities/schema-migration.d.ts +10 -0
- package/lib/core/utils/identifier-humanizer.d.ts +22 -0
- package/lib/core/validation/index.d.ts +1 -0
- package/lib/core/validation/validation-factory.d.ts +31 -0
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +19 -0
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +20 -0
- package/lib/data-access/adapters/index.d.ts +2 -0
- package/lib/data-access/contracts/data-source.contract.d.ts +37 -0
- package/lib/data-access/contracts/index.d.ts +9 -0
- package/lib/data-access/contracts/lookup.contract.d.ts +32 -0
- package/lib/data-access/contracts/master-data.provider.d.ts +54 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +36 -0
- package/lib/data-access/contracts/schema-discovery.contract.d.ts +52 -0
- package/lib/data-access/contracts/translation.contract.d.ts +16 -0
- package/lib/data-access/index.d.ts +2 -0
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +39 -0
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +42 -0
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +36 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +68 -0
- package/lib/features/designer/components/property-editor/property-editor-general.component.d.ts +20 -0
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +20 -0
- package/lib/features/designer/components/property-editor/property-editor-layout.component.d.ts +18 -0
- package/lib/features/designer/components/property-editor/property-editor-report.component.d.ts +15 -0
- package/lib/features/designer/components/property-editor/property-editor-validation.component.d.ts +12 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +44 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +18 -0
- package/lib/features/designer/designer.component.d.ts +36 -0
- package/lib/features/designer/index.d.ts +7 -0
- package/lib/features/designer/services/designer-state.service.d.ts +103 -0
- package/lib/features/designer/services/index.d.ts +2 -0
- package/lib/features/designer/utilities/canvas-layout.util.d.ts +55 -0
- package/lib/features/export/index.d.ts +2 -0
- package/lib/features/export/models/export.models.d.ts +16 -0
- package/lib/features/export/services/report-export.service.d.ts +27 -0
- package/lib/features/index.d.ts +5 -0
- package/lib/features/persistence/index.d.ts +1 -0
- package/lib/features/persistence/services/index.d.ts +5 -0
- package/lib/features/persistence/services/report-store.service.d.ts +53 -0
- package/lib/features/persistence/services/report-versioning.service.d.ts +29 -0
- package/lib/features/persistence/services/schema-validator.service.d.ts +34 -0
- package/lib/features/routing/components/routed-report-designer.component.d.ts +18 -0
- package/lib/features/routing/components/routed-report-runtime.component.d.ts +18 -0
- package/lib/features/routing/index.d.ts +6 -0
- package/lib/features/routing/models/report-route.models.d.ts +41 -0
- package/lib/features/routing/report-routes.d.ts +16 -0
- package/lib/features/routing/resolvers/report.resolver.d.ts +7 -0
- package/lib/features/routing/services/report-menu.service.d.ts +30 -0
- package/lib/features/runtime/dynamic-renderer.component.d.ts +30 -0
- package/lib/features/runtime/index.d.ts +3 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +94 -0
- package/lib/features/runtime/report-runtime.component.d.ts +26 -0
- package/lib/primitives/components/button/rpt-button.component.d.ts +19 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +45 -0
- package/lib/primitives/components/checkbox/rpt-checkbox.component.d.ts +14 -0
- package/lib/primitives/components/date/rpt-date.component.d.ts +17 -0
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +32 -0
- package/lib/primitives/components/icon/rpt-icon.component.d.ts +41 -0
- package/lib/primitives/components/index.d.ts +12 -0
- package/lib/primitives/components/input/rpt-input.component.d.ts +16 -0
- package/lib/primitives/components/kpi-card/rpt-kpi-card.component.d.ts +43 -0
- package/lib/primitives/components/number/rpt-number.component.d.ts +20 -0
- package/lib/primitives/index.d.ts +2 -0
- package/lib/primitives/register-builtins.d.ts +11 -0
- package/lib/provide-reporting.d.ts +75 -0
- package/package.json +55 -0
- package/public-api.d.ts +5 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
BWays-Report Software License Agreement
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CCPL / BWays Team. All rights reserved.
|
|
4
|
+
|
|
5
|
+
1. GRANT OF LICENSE
|
|
6
|
+
Subject to the terms and conditions of this Agreement, CCPL / BWays Team ("Licensor") hereby grants to the individual or entity ("Licensee") a personal, non-exclusive, non-transferable, revocable license to install, import, and execute this library ("Software") solely as an integrated component in Licensee's software applications and projects.
|
|
7
|
+
|
|
8
|
+
2. RESTRICTIONS ON USE
|
|
9
|
+
Except as expressly permitted in Section 1, Licensee shall not, and shall not permit or assist any third party to:
|
|
10
|
+
(a) Modify, adapt, alter, translate, or create derivative works based upon the Software or any part thereof.
|
|
11
|
+
(b) Copy, duplicate, replicate, or extract the source code, stylesheets, templates, assets, or binary files of the Software.
|
|
12
|
+
(c) Decompile, disassemble, reverse engineer, or otherwise attempt to derive or reconstruct the underlying source code, ideas, algorithms, file formats, or programming interfaces of the Software.
|
|
13
|
+
(d) Distribute, sublicense, rent, lease, loan, sell, resell, host, or otherwise make available the Software or any portion thereof as a standalone library, component, framework, or developer tool.
|
|
14
|
+
(e) Remove, obscure, or alter any copyright notices, trademarks, or other proprietary markings contained in or on the Software.
|
|
15
|
+
|
|
16
|
+
3. INTELLECTUAL PROPERTY OWNERSHIP
|
|
17
|
+
The Software, including all copyrights, patents, trade secrets, trademarks, design rights, and other intellectual property rights therein, is and shall remain the sole and exclusive property of CCPL / BWays Team. This Agreement does not convey to Licensee any ownership interest in or to the Software, but only a limited right of use in accordance with the terms of this Agreement.
|
|
18
|
+
|
|
19
|
+
4. TERMINATION
|
|
20
|
+
This license is effective until terminated. Licensee's rights under this Agreement will terminate automatically without notice if Licensee fails to comply with any of its terms. Upon termination, Licensee must cease all use of the Software and remove all copies from Licensee's systems and projects.
|
|
21
|
+
|
|
22
|
+
5. DISCLAIMER OF WARRANTIES
|
|
23
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. LICENSOR DOES NOT WARRANT THAT THE SOFTWARE WILL BE ERROR-FREE, SECURE, OR UNINTERRUPTED.
|
|
24
|
+
|
|
25
|
+
6. LIMITATION OF LIABILITY
|
|
26
|
+
IN NO EVENT SHALL CCPL / BWAYS TEAM BE LIABLE TO LICENSEE OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, BUSINESS, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, PERFORMANCE, OR INABILITY TO USE THE SOFTWARE, REGARDLESS OF THE THEORY OF LIABILITY (WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT, INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
# BWays-Report — Integration & Developer Guide
|
|
2
|
+
|
|
3
|
+
`bways-report` is an enterprise-grade, metadata-driven reporting platform and visual dynamic page builder for Angular 18+ business & ERP applications.
|
|
4
|
+
|
|
5
|
+
It allows non-developers to visually design reporting pages with filters, KPI metric cards, charts, and grids. The report configuration is saved purely as JSON metadata (`ReportDefinition`), and the runtime engine dynamically instantiates the reactive forms, controls, data queries, and results grid on the fly.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
1. [Installation](#1-installation)
|
|
12
|
+
2. [Quick Start (App Configuration)](#2-quick-start-app-configuration)
|
|
13
|
+
3. [Implementing Host Adapters](#3-implementing-host-adapters)
|
|
14
|
+
- [A. Data Source Adapter (Query Execution)](#a-data-source-adapter)
|
|
15
|
+
- [B. Persistence Adapter (Saving & Loading Reports)](#b-persistence-adapter)
|
|
16
|
+
- [C. Master Data Provider (Dropdown Lookups)](#c-master-data-provider)
|
|
17
|
+
4. [Routing & ERP Navigation Integration](#4-routing--erp-navigation-integration)
|
|
18
|
+
- [Dynamic Route Generation](#dynamic-route-generation)
|
|
19
|
+
- [Categorized ERP Sidebar / Header Navigation](#categorized-erp-sidebar--header-navigation)
|
|
20
|
+
5. [Embedding Components Directly](#5-embedding-components-directly)
|
|
21
|
+
- [Report Runtime (Interactive Report Page)](#report-runtime-interactive-report-page)
|
|
22
|
+
- [Visual Drag-and-Drop Designer](#visual-drag-and-drop-designer)
|
|
23
|
+
6. [Grid & Chart Bridge Integration (BWays-Grid)](#6-grid--chart-bridge-integration-bways-grid)
|
|
24
|
+
7. [Theming & CSS Custom Properties](#7-theming--css-custom-properties)
|
|
25
|
+
8. [Registering Custom Host Controls](#8-registering-custom-host-controls)
|
|
26
|
+
9. [Exporting Data (CSV & JSON)](#9-exporting-data-csv--json)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 1. Installation
|
|
31
|
+
|
|
32
|
+
Install `bways-report` and its peer dependency `@angular/cdk` from npm:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install bways-report @angular/cdk
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
> **Requirements:**
|
|
39
|
+
> - Angular 18.0.0 or higher
|
|
40
|
+
> - Modern browser support (Chrome, Edge, Firefox, Safari)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. Quick Start (App Configuration)
|
|
45
|
+
|
|
46
|
+
In your Angular host application's `app.config.ts`, register the library using `provideReporting()`:
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
// src/app/app.config.ts
|
|
50
|
+
import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
|
|
51
|
+
import { provideRouter } from '@angular/router';
|
|
52
|
+
import { provideReporting } from 'bways-report';
|
|
53
|
+
import { routes } from './app.routes';
|
|
54
|
+
import { ErpDataSourceAdapter } from './services/erp-datasource.adapter';
|
|
55
|
+
import { ErpPersistenceAdapter } from './services/erp-persistence.adapter';
|
|
56
|
+
import { ErpMasterDataProvider } from './services/erp-masterdata.provider';
|
|
57
|
+
// Optional: import your grid component (e.g., BWaysGridComponent from 'bways-grid')
|
|
58
|
+
import { BWaysGridComponent } from 'bways-grid';
|
|
59
|
+
|
|
60
|
+
export const appConfig: ApplicationConfig = {
|
|
61
|
+
providers: [
|
|
62
|
+
provideZoneChangeDetection({ eventCoalescing: true }),
|
|
63
|
+
provideRouter(routes),
|
|
64
|
+
provideReporting({
|
|
65
|
+
// Grid component delegation (falls back to built-in table if omitted)
|
|
66
|
+
gridComponent: BWaysGridComponent,
|
|
67
|
+
|
|
68
|
+
// Host ERP backend implementations
|
|
69
|
+
dataSourceAdapter: ErpDataSourceAdapter,
|
|
70
|
+
persistenceAdapter: ErpPersistenceAdapter,
|
|
71
|
+
masterDataProvider: ErpMasterDataProvider,
|
|
72
|
+
|
|
73
|
+
// Global defaults
|
|
74
|
+
defaultPageSize: 25,
|
|
75
|
+
dateFormat: 'dd/MM/yyyy',
|
|
76
|
+
enableDesigner: true,
|
|
77
|
+
}),
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 3. Implementing Host Adapters
|
|
85
|
+
|
|
86
|
+
The library is decoupled from your backend. You provide your business application's API handlers by extending three abstract contracts:
|
|
87
|
+
|
|
88
|
+
### A. Data Source Adapter
|
|
89
|
+
|
|
90
|
+
Responsible for executing report queries and returning tabular result rows:
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
// src/app/services/erp-datasource.adapter.ts
|
|
94
|
+
import { Injectable, inject } from '@angular/core';
|
|
95
|
+
import { HttpClient } from '@angular/common/http';
|
|
96
|
+
import { Observable } from 'rxjs';
|
|
97
|
+
import { ReportDataSourceAdapter, ReportDataSourceDefinition } from 'bways-report';
|
|
98
|
+
|
|
99
|
+
@Injectable({ providedIn: 'root' })
|
|
100
|
+
export class ErpDataSourceAdapter extends ReportDataSourceAdapter {
|
|
101
|
+
private readonly http = inject(HttpClient);
|
|
102
|
+
|
|
103
|
+
execute(
|
|
104
|
+
dataSource: ReportDataSourceDefinition,
|
|
105
|
+
parameters: Record<string, unknown>
|
|
106
|
+
): Observable<unknown[]> {
|
|
107
|
+
// Send report filter parameters to your backend API endpoint
|
|
108
|
+
return this.http.post<unknown[]>(dataSource.endpoint, parameters);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### B. Persistence Adapter
|
|
114
|
+
|
|
115
|
+
Responsible for saving, loading, listing, and publishing report metadata definitions (`ReportDefinition`):
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
// src/app/services/erp-persistence.adapter.ts
|
|
119
|
+
import { Injectable, inject } from '@angular/core';
|
|
120
|
+
import { HttpClient } from '@angular/common/http';
|
|
121
|
+
import { Observable } from 'rxjs';
|
|
122
|
+
import {
|
|
123
|
+
ReportPersistenceAdapter,
|
|
124
|
+
ReportDefinition,
|
|
125
|
+
ReportSummary,
|
|
126
|
+
} from 'bways-report';
|
|
127
|
+
|
|
128
|
+
@Injectable({ providedIn: 'root' })
|
|
129
|
+
export class ErpPersistenceAdapter extends ReportPersistenceAdapter {
|
|
130
|
+
private readonly http = inject(HttpClient);
|
|
131
|
+
private readonly baseUrl = '/api/reports';
|
|
132
|
+
|
|
133
|
+
load(reportId: string): Observable<ReportDefinition> {
|
|
134
|
+
return this.http.get<ReportDefinition>(`${this.baseUrl}/${reportId}`);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
save(report: ReportDefinition): Observable<ReportDefinition> {
|
|
138
|
+
return this.http.post<ReportDefinition>(this.baseUrl, report);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
list(): Observable<ReportSummary[]> {
|
|
142
|
+
return this.http.get<ReportSummary[]>(this.baseUrl);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
delete(reportId: string): Observable<void> {
|
|
146
|
+
return this.http.delete<void>(`${this.baseUrl}/${reportId}`);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
publish(reportId: string, version: number): Observable<void> {
|
|
150
|
+
return this.http.post<void>(`${this.baseUrl}/${reportId}/publish`, { version });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### C. Master Data Provider
|
|
156
|
+
|
|
157
|
+
Supplies option lists for dropdowns and lookups (e.g., Customers, Warehouses, Statuses):
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
// src/app/services/erp-masterdata.provider.ts
|
|
161
|
+
import { Injectable, inject } from '@angular/core';
|
|
162
|
+
import { HttpClient } from '@angular/common/http';
|
|
163
|
+
import { Observable } from 'rxjs';
|
|
164
|
+
import { MasterDataProvider, DropdownOption } from 'bways-report';
|
|
165
|
+
|
|
166
|
+
@Injectable({ providedIn: 'root' })
|
|
167
|
+
export class ErpMasterDataProvider extends MasterDataProvider {
|
|
168
|
+
private readonly http = inject(HttpClient);
|
|
169
|
+
|
|
170
|
+
getOptions(
|
|
171
|
+
masterName: string,
|
|
172
|
+
filter?: Record<string, unknown>
|
|
173
|
+
): Observable<DropdownOption[]> {
|
|
174
|
+
return this.http.get<DropdownOption[]>(`/api/master-data/${masterName}`, {
|
|
175
|
+
params: filter as any,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 4. Routing & ERP Navigation Integration
|
|
184
|
+
|
|
185
|
+
### Dynamic Route Generation
|
|
186
|
+
|
|
187
|
+
Mount all report runtime and designer routes with a single call in your `app.routes.ts`:
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// src/app/app.routes.ts
|
|
191
|
+
import { Routes } from '@angular/router';
|
|
192
|
+
import { createReportRoutes } from 'bways-report';
|
|
193
|
+
|
|
194
|
+
export const routes: Routes = [
|
|
195
|
+
{
|
|
196
|
+
path: 'reports',
|
|
197
|
+
children: createReportRoutes({
|
|
198
|
+
// Optional: enforce auth or role guards
|
|
199
|
+
runtimeGuards: [],
|
|
200
|
+
designerGuards: [], // e.g. [AdminGuard]
|
|
201
|
+
enableDesignerRoutes: true, // creates 'new' and ':reportId/edit' routes
|
|
202
|
+
}),
|
|
203
|
+
},
|
|
204
|
+
];
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
This instantly creates:
|
|
208
|
+
- `/reports/:reportId` — Renders `RoutedReportRuntimeComponent` (resolves report via `reportResolver`, presents interactive filters, KPI metrics, chart, and result grid).
|
|
209
|
+
- `/reports/:reportId/edit` — Renders `RoutedReportDesignerComponent` (visual drag-and-drop builder loaded with current definition).
|
|
210
|
+
- `/reports/new` — Renders `RoutedReportDesignerComponent` initialized with a blank template.
|
|
211
|
+
|
|
212
|
+
### Categorized ERP Sidebar / Header Navigation
|
|
213
|
+
|
|
214
|
+
Use `ReportMenuService` to generate hierarchical sidebar menus grouped by category (e.g. Finance, Sales, Inventory):
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
// src/app/components/sidebar/erp-sidebar.component.ts
|
|
218
|
+
import { Component, inject } from '@angular/core';
|
|
219
|
+
import { CommonModule } from '@angular/common';
|
|
220
|
+
import { RouterModule } from '@angular/router';
|
|
221
|
+
import { ReportMenuService } from 'bways-report';
|
|
222
|
+
|
|
223
|
+
@Component({
|
|
224
|
+
selector: 'erp-sidebar',
|
|
225
|
+
standalone: true,
|
|
226
|
+
imports: [CommonModule, RouterModule],
|
|
227
|
+
template: `
|
|
228
|
+
<aside class="sidebar">
|
|
229
|
+
<input
|
|
230
|
+
type="search"
|
|
231
|
+
placeholder="Search reports..."
|
|
232
|
+
(input)="onSearch($event)"
|
|
233
|
+
/>
|
|
234
|
+
|
|
235
|
+
@for (group of menuService.menuGroups(); track group.category) {
|
|
236
|
+
<div class="menu-group">
|
|
237
|
+
<h4>{{ group.displayName }}</h4>
|
|
238
|
+
<ul>
|
|
239
|
+
@for (item of group.items; track item.id) {
|
|
240
|
+
<li>
|
|
241
|
+
<a [routerLink]="item.route" routerLinkActive="active">
|
|
242
|
+
{{ item.name }}
|
|
243
|
+
@if (item.isDraft) {
|
|
244
|
+
<span class="badge">Draft</span>
|
|
245
|
+
}
|
|
246
|
+
</a>
|
|
247
|
+
</li>
|
|
248
|
+
}
|
|
249
|
+
</ul>
|
|
250
|
+
</div>
|
|
251
|
+
}
|
|
252
|
+
</aside>
|
|
253
|
+
`,
|
|
254
|
+
})
|
|
255
|
+
export class ErpSidebarComponent {
|
|
256
|
+
readonly menuService = inject(ReportMenuService);
|
|
257
|
+
|
|
258
|
+
onSearch(event: Event): void {
|
|
259
|
+
const query = (event.target as HTMLInputElement).value;
|
|
260
|
+
this.menuService.setSearchQuery(query);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 5. Embedding Components Directly
|
|
268
|
+
|
|
269
|
+
If you prefer embedding components inside existing pages instead of routing:
|
|
270
|
+
|
|
271
|
+
### Report Runtime (Interactive Report Page)
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
import { Component } from '@angular/core';
|
|
275
|
+
import { ReportRuntimeComponent, ReportDefinition } from 'bways-report';
|
|
276
|
+
|
|
277
|
+
@Component({
|
|
278
|
+
selector: 'my-report-page',
|
|
279
|
+
standalone: true,
|
|
280
|
+
imports: [ReportRuntimeComponent],
|
|
281
|
+
template: `
|
|
282
|
+
<!-- Option A: Load by ID via persistence adapter -->
|
|
283
|
+
<rpt-runtime [reportId]="'sales-register-2024'" />
|
|
284
|
+
|
|
285
|
+
<!-- Option B: Pass ReportDefinition directly -->
|
|
286
|
+
<!-- <rpt-runtime [report]="customDefinition" /> -->
|
|
287
|
+
`,
|
|
288
|
+
})
|
|
289
|
+
export class MyReportPageComponent {}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Visual Drag-and-Drop Designer
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
import { Component } from '@angular/core';
|
|
296
|
+
import { DesignerComponent, ReportDefinition } from 'bways-report';
|
|
297
|
+
|
|
298
|
+
@Component({
|
|
299
|
+
selector: 'my-designer-page',
|
|
300
|
+
standalone: true,
|
|
301
|
+
imports: [DesignerComponent],
|
|
302
|
+
template: `
|
|
303
|
+
<rpt-designer
|
|
304
|
+
[initialReport]="reportDefinition"
|
|
305
|
+
(save)="onSaveReport($event)"
|
|
306
|
+
/>
|
|
307
|
+
`,
|
|
308
|
+
})
|
|
309
|
+
export class MyDesignerPageComponent {
|
|
310
|
+
reportDefinition: ReportDefinition = /* ... */;
|
|
311
|
+
|
|
312
|
+
onSaveReport(updatedReport: ReportDefinition): void {
|
|
313
|
+
console.log('Saved report schema:', updatedReport);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 6. Grid & Chart Bridge Integration (BWays-Grid)
|
|
321
|
+
|
|
322
|
+
### Using BWays-Grid or Custom Grid
|
|
323
|
+
|
|
324
|
+
Provide your grid component via the `GRID_COMPONENT` token in `provideReporting()`:
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
provideReporting({
|
|
328
|
+
gridComponent: BWaysGridComponent, // or AgGridWrapperComponent
|
|
329
|
+
})
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
`ReportGridBridgeComponent` dynamically passes the data rows, columns configuration, sorting, and aggregate settings directly to your grid component. If no grid is provided, `bways-report` renders its high-performance built-in tabular grid with pagination and column sorting.
|
|
333
|
+
|
|
334
|
+
### Using Chart Components
|
|
335
|
+
|
|
336
|
+
Provide a chart component wrapper (Chart.js, ApexCharts, Highcharts) via `chartComponent`:
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
provideReporting({
|
|
340
|
+
chartComponent: MyHostChartComponent,
|
|
341
|
+
})
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
If not provided, the built-in SVG visual chart renderer outputs crisp, responsive Bar charts, Donut charts, and Line/Area charts with zero external dependencies.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 7. Theming & CSS Custom Properties
|
|
349
|
+
|
|
350
|
+
`bways-report` uses CSS custom properties (`--rpt-*`) throughout all components, ensuring seamless alignment with your ERP application's design system:
|
|
351
|
+
|
|
352
|
+
```css
|
|
353
|
+
/* In your host application's styles.scss or theme file */
|
|
354
|
+
:root {
|
|
355
|
+
/* Brand Colors */
|
|
356
|
+
--rpt-primary: #2563eb;
|
|
357
|
+
--rpt-primary-hover: #1d4ed8;
|
|
358
|
+
--rpt-primary-focus: rgba(37, 99, 235, 0.25);
|
|
359
|
+
|
|
360
|
+
/* Surface & Text */
|
|
361
|
+
--rpt-surface-bg: #ffffff;
|
|
362
|
+
--rpt-bg-subtle: #f8fafc;
|
|
363
|
+
--rpt-text-color: #0f172a;
|
|
364
|
+
--rpt-text-muted: #64748b;
|
|
365
|
+
--rpt-border-color: #e2e8f0;
|
|
366
|
+
|
|
367
|
+
/* Geometry & Typography */
|
|
368
|
+
--rpt-radius-md: 6px;
|
|
369
|
+
--rpt-radius-lg: 12px;
|
|
370
|
+
--rpt-font-family: 'Inter', system-ui, sans-serif;
|
|
371
|
+
--rpt-font-size-base: 0.875rem;
|
|
372
|
+
|
|
373
|
+
/* Status Colors */
|
|
374
|
+
--rpt-success-color: #10b981;
|
|
375
|
+
--rpt-warning-color: #f59e0b;
|
|
376
|
+
--rpt-error-color: #ef4444;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/* Dark Mode Theme */
|
|
380
|
+
[data-theme='dark'] {
|
|
381
|
+
--rpt-surface-bg: #1e293b;
|
|
382
|
+
--rpt-bg-subtle: #0f172a;
|
|
383
|
+
--rpt-text-color: #f8fafc;
|
|
384
|
+
--rpt-text-muted: #94a3b8;
|
|
385
|
+
--rpt-border-color: #334155;
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## 8. Registering Custom Host Controls
|
|
392
|
+
|
|
393
|
+
You can register custom Angular components (e.g., custom slider, multi-select, rich customer picker) into the `ComponentRegistry` so they appear in the Visual Designer palette and render dynamically at runtime:
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
import { ComponentRegistry, ComponentMetadata } from 'bways-report';
|
|
397
|
+
import { MyCustomPickerComponent } from './my-custom-picker.component';
|
|
398
|
+
|
|
399
|
+
export function configureCustomControls(registry: ComponentRegistry): void {
|
|
400
|
+
registry.register({
|
|
401
|
+
type: 'customer-picker',
|
|
402
|
+
displayName: 'Customer Picker',
|
|
403
|
+
category: 'input',
|
|
404
|
+
icon: 'person_search',
|
|
405
|
+
component: MyCustomPickerComponent,
|
|
406
|
+
createDefaultConfig: () => ({
|
|
407
|
+
id: 'cust-picker',
|
|
408
|
+
type: 'customer-picker',
|
|
409
|
+
label: 'Select Customer',
|
|
410
|
+
properties: { placeholder: 'Search customer...' },
|
|
411
|
+
layout: { columnSpan: 4 },
|
|
412
|
+
}),
|
|
413
|
+
propertySchema: [
|
|
414
|
+
{ key: 'label', label: 'Label', type: 'string', required: true, group: 'General' },
|
|
415
|
+
{ key: 'key', label: 'Field Name (Key)', type: 'string', required: true, group: 'General' },
|
|
416
|
+
{ key: 'required', label: 'Required', type: 'boolean', group: 'Validation' },
|
|
417
|
+
],
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 9. Exporting Data (CSV & JSON)
|
|
425
|
+
|
|
426
|
+
Use `ReportExportService` for one-click file generation:
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
import { Component, inject } from '@angular/core';
|
|
430
|
+
import { ReportExportService } from 'bways-report';
|
|
431
|
+
|
|
432
|
+
@Component({
|
|
433
|
+
selector: 'export-actions',
|
|
434
|
+
standalone: true,
|
|
435
|
+
template: `
|
|
436
|
+
<button (click)="downloadCsv()">Download CSV</button>
|
|
437
|
+
<button (click)="downloadJson()">Download Metadata</button>
|
|
438
|
+
`,
|
|
439
|
+
})
|
|
440
|
+
export class ExportActionsComponent {
|
|
441
|
+
private readonly exportService = inject(ReportExportService);
|
|
442
|
+
|
|
443
|
+
downloadCsv(): void {
|
|
444
|
+
const data = [
|
|
445
|
+
{ invoiceNo: 'INV-001', customer: 'Acme Corp', total: 4950 },
|
|
446
|
+
{ invoiceNo: 'INV-002', customer: 'Globex Inc', total: 14080 },
|
|
447
|
+
];
|
|
448
|
+
|
|
449
|
+
this.exportService.exportCsv(data, {
|
|
450
|
+
fileName: 'invoices-export.csv',
|
|
451
|
+
columns: [
|
|
452
|
+
{ field: 'invoiceNo', header: 'Invoice #' },
|
|
453
|
+
{ field: 'customer', header: 'Customer' },
|
|
454
|
+
{
|
|
455
|
+
field: 'total',
|
|
456
|
+
header: 'Total ($)',
|
|
457
|
+
formatter: (val: number) => `$${val.toLocaleString()}`
|
|
458
|
+
},
|
|
459
|
+
],
|
|
460
|
+
addBom: true, // Includes UTF-8 BOM so Microsoft Excel renders international characters properly
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
downloadJson(): void {
|
|
465
|
+
this.exportService.exportJson(myReportDefinition, {
|
|
466
|
+
fileName: 'report-schema.json',
|
|
467
|
+
pretty: true,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## License
|
|
476
|
+
|
|
477
|
+
MIT © BWays Technologies
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYndheXMtcmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9id2F5cy1yZXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { ReportDefinitionError, ComponentNotRegisteredError, DataSourceError, SchemaVersionError, AdapterNotProvidedError, } from './reporting-errors';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVwb3J0RGVmaW5pdGlvbkVycm9yLFxuICBDb21wb25lbnROb3RSZWdpc3RlcmVkRXJyb3IsXG4gIERhdGFTb3VyY2VFcnJvcixcbiAgU2NoZW1hVmVyc2lvbkVycm9yLFxuICBBZGFwdGVyTm90UHJvdmlkZWRFcnJvcixcbn0gZnJvbSAnLi9yZXBvcnRpbmctZXJyb3JzJztcbiJdfQ==
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reporting library error types.
|
|
3
|
+
*
|
|
4
|
+
* Each error type has a distinct class for targeted catching
|
|
5
|
+
* and clear stack traces.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Thrown when a report definition fails validation.
|
|
9
|
+
*/
|
|
10
|
+
export class ReportDefinitionError extends Error {
|
|
11
|
+
reportId;
|
|
12
|
+
constructor(message, reportId) {
|
|
13
|
+
super(`[BWays-Report] Report definition error${reportId ? ` (${reportId})` : ''}: ${message}`);
|
|
14
|
+
this.reportId = reportId;
|
|
15
|
+
this.name = 'ReportDefinitionError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Thrown when a component type is not found in the registry.
|
|
20
|
+
*/
|
|
21
|
+
export class ComponentNotRegisteredError extends Error {
|
|
22
|
+
componentType;
|
|
23
|
+
constructor(componentType) {
|
|
24
|
+
super(`[BWays-Report] Component type "${componentType}" is not registered. Did you forget to register it via ComponentRegistry?`);
|
|
25
|
+
this.componentType = componentType;
|
|
26
|
+
this.name = 'ComponentNotRegisteredError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when a data source execution fails.
|
|
31
|
+
*/
|
|
32
|
+
export class DataSourceError extends Error {
|
|
33
|
+
dataSourceId;
|
|
34
|
+
constructor(message, dataSourceId) {
|
|
35
|
+
super(`[BWays-Report] Data source error${dataSourceId ? ` (${dataSourceId})` : ''}: ${message}`);
|
|
36
|
+
this.dataSourceId = dataSourceId;
|
|
37
|
+
this.name = 'DataSourceError';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Thrown when a report definition's schema version is not supported.
|
|
42
|
+
*/
|
|
43
|
+
export class SchemaVersionError extends Error {
|
|
44
|
+
currentVersion;
|
|
45
|
+
supportedVersion;
|
|
46
|
+
constructor(currentVersion, supportedVersion, customMessage) {
|
|
47
|
+
super(customMessage ??
|
|
48
|
+
`[BWays-Report] Schema version ${currentVersion} is not supported. Current supported version: ${supportedVersion}`);
|
|
49
|
+
this.currentVersion = currentVersion;
|
|
50
|
+
this.supportedVersion = supportedVersion;
|
|
51
|
+
this.name = 'SchemaVersionError';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Thrown when a required adapter/provider is not configured.
|
|
56
|
+
*/
|
|
57
|
+
export class AdapterNotProvidedError extends Error {
|
|
58
|
+
adapterName;
|
|
59
|
+
constructor(adapterName) {
|
|
60
|
+
super(`[BWays-Report] ${adapterName} is not provided. Configure it via provideReporting({ ... }).`);
|
|
61
|
+
this.adapterName = adapterName;
|
|
62
|
+
this.name = 'AdapterNotProvidedError';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLWVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvZXJyb3JzL3JlcG9ydGluZy1lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxLQUFLO0lBQ0Q7SUFBN0MsWUFBWSxPQUFlLEVBQWtCLFFBQWlCO1FBQzVELEtBQUssQ0FBQyx5Q0FBeUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUMsQ0FBQztRQURwRCxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBRTVELElBQUksQ0FBQyxJQUFJLEdBQUcsdUJBQXVCLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsS0FBSztJQUN4QjtJQUE1QixZQUE0QixhQUFxQjtRQUMvQyxLQUFLLENBQUMsa0NBQWtDLGFBQWEsMkVBQTJFLENBQUMsQ0FBQztRQUR4RyxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUUvQyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsS0FBSztJQUNLO0lBQTdDLFlBQVksT0FBZSxFQUFrQixZQUFxQjtRQUNoRSxLQUFLLENBQUMsbUNBQW1DLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFEdEQsaUJBQVksR0FBWixZQUFZLENBQVM7UUFFaEUsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxLQUFLO0lBRXpCO0lBQ0E7SUFGbEIsWUFDa0IsY0FBc0IsRUFDdEIsZ0JBQXdCLEVBQ3hDLGFBQXNCO1FBRXRCLEtBQUssQ0FDSCxhQUFhO1lBQ1gsaUNBQWlDLGNBQWMsaURBQWlELGdCQUFnQixFQUFFLENBQ3JILENBQUM7UUFQYyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQVE7UUFPeEMsSUFBSSxDQUFDLElBQUksR0FBRyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxLQUFLO0lBQ3BCO0lBQTVCLFlBQTRCLFdBQW1CO1FBQzdDLEtBQUssQ0FBQyxrQkFBa0IsV0FBVywrREFBK0QsQ0FBQyxDQUFDO1FBRDFFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBRTdDLElBQUksQ0FBQyxJQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDeEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXBvcnRpbmcgbGlicmFyeSBlcnJvciB0eXBlcy5cbiAqXG4gKiBFYWNoIGVycm9yIHR5cGUgaGFzIGEgZGlzdGluY3QgY2xhc3MgZm9yIHRhcmdldGVkIGNhdGNoaW5nXG4gKiBhbmQgY2xlYXIgc3RhY2sgdHJhY2VzLlxuICovXG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSByZXBvcnQgZGVmaW5pdGlvbiBmYWlscyB2YWxpZGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUmVwb3J0RGVmaW5pdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSByZXBvcnRJZD86IHN0cmluZykge1xuICAgIHN1cGVyKGBbQldheXMtUmVwb3J0XSBSZXBvcnQgZGVmaW5pdGlvbiBlcnJvciR7cmVwb3J0SWQgPyBgICgke3JlcG9ydElkfSlgIDogJyd9OiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gJ1JlcG9ydERlZmluaXRpb25FcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIGNvbXBvbmVudCB0eXBlIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21wb25lbnROb3RSZWdpc3RlcmVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb21wb25lbnRUeXBlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgW0JXYXlzLVJlcG9ydF0gQ29tcG9uZW50IHR5cGUgXCIke2NvbXBvbmVudFR5cGV9XCIgaXMgbm90IHJlZ2lzdGVyZWQuIERpZCB5b3UgZm9yZ2V0IHRvIHJlZ2lzdGVyIGl0IHZpYSBDb21wb25lbnRSZWdpc3RyeT9gKTtcbiAgICB0aGlzLm5hbWUgPSAnQ29tcG9uZW50Tm90UmVnaXN0ZXJlZEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGEgZGF0YSBzb3VyY2UgZXhlY3V0aW9uIGZhaWxzLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlSWQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihgW0JXYXlzLVJlcG9ydF0gRGF0YSBzb3VyY2UgZXJyb3Ike2RhdGFTb3VyY2VJZCA/IGAgKCR7ZGF0YVNvdXJjZUlkfSlgIDogJyd9OiAke21lc3NhZ2V9YCk7XG4gICAgdGhpcy5uYW1lID0gJ0RhdGFTb3VyY2VFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIHJlcG9ydCBkZWZpbml0aW9uJ3Mgc2NoZW1hIHZlcnNpb24gaXMgbm90IHN1cHBvcnRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjaGVtYVZlcnNpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRWZXJzaW9uOiBudW1iZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRlZFZlcnNpb246IG51bWJlcixcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgY3VzdG9tTWVzc2FnZSA/P1xuICAgICAgICBgW0JXYXlzLVJlcG9ydF0gU2NoZW1hIHZlcnNpb24gJHtjdXJyZW50VmVyc2lvbn0gaXMgbm90IHN1cHBvcnRlZC4gQ3VycmVudCBzdXBwb3J0ZWQgdmVyc2lvbjogJHtzdXBwb3J0ZWRWZXJzaW9ufWBcbiAgICApO1xuICAgIHRoaXMubmFtZSA9ICdTY2hlbWFWZXJzaW9uRXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSByZXF1aXJlZCBhZGFwdGVyL3Byb3ZpZGVyIGlzIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgY2xhc3MgQWRhcHRlck5vdFByb3ZpZGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBhZGFwdGVyTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFtCV2F5cy1SZXBvcnRdICR7YWRhcHRlck5hbWV9IGlzIG5vdCBwcm92aWRlZC4gQ29uZmlndXJlIGl0IHZpYSBwcm92aWRlUmVwb3J0aW5nKHsgLi4uIH0pLmApO1xuICAgIHRoaXMubmFtZSA9ICdBZGFwdGVyTm90UHJvdmlkZWRFcnJvcic7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './models';
|
|
2
|
+
export * from './registry';
|
|
3
|
+
export * from './tokens';
|
|
4
|
+
export * from './errors';
|
|
5
|
+
export * from './validation';
|
|
6
|
+
export * from './services';
|
|
7
|
+
export * from './utilities';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3RyeSc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxpdGllcyc7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event and action definitions for report components.
|
|
3
|
+
*
|
|
4
|
+
* Events describe what happened (user interaction).
|
|
5
|
+
* Actions describe what should happen in response (command pattern).
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvY29yZS9tb2RlbHMvY29tcG9uZW50LWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFdmVudCBhbmQgYWN0aW9uIGRlZmluaXRpb25zIGZvciByZXBvcnQgY29tcG9uZW50cy5cbiAqXG4gKiBFdmVudHMgZGVzY3JpYmUgd2hhdCBoYXBwZW5lZCAodXNlciBpbnRlcmFjdGlvbikuXG4gKiBBY3Rpb25zIGRlc2NyaWJlIHdoYXQgc2hvdWxkIGhhcHBlbiBpbiByZXNwb25zZSAoY29tbWFuZCBwYXR0ZXJuKS5cbiAqL1xuXG4vKipcbiAqIEJpbmRzIGEgY29tcG9uZW50IGV2ZW50IHRvIGFuIGFjdGlvbi5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBganNvblxuICoge1xuICogICBcImV2ZW50XCI6IFwiY2hhbmdlXCIsXG4gKiAgIFwiYWN0aW9uXCI6IHsgXCJ0eXBlXCI6IFwicmVsb2FkLWRhdGFcIiwgXCJ0YXJnZXRcIjogXCJjaXR5RHJvcGRvd25cIiB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRFdmVudERlZmluaXRpb24ge1xuICAvKiogVGhlIERPTS9jb21wb25lbnQgZXZlbnQgbmFtZSAoZS5nLiwgJ2NoYW5nZScsICdjbGljaycsICdibHVyJykuICovXG4gIGV2ZW50OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBhY3Rpb24gdG8gZXhlY3V0ZSB3aGVuIHRoZSBldmVudCBmaXJlcy4gKi9cbiAgYWN0aW9uOiBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIGNvbW1hbmQgdG8gZXhlY3V0ZSBpbiByZXNwb25zZSB0byBhIGNvbXBvbmVudCBldmVudC5cbiAqXG4gKiBBY3Rpb25zIGFyZSBkZWNsYXJhdGl2ZSDigJQgdGhlIHJ1bnRpbWUgZW5naW5lIGludGVycHJldHMgdGhlbS5cbiAqIFRoaXMgYXZvaWRzIGFyYml0cmFyeSBmdW5jdGlvbiByZWZlcmVuY2VzIGluIG1ldGFkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24ge1xuICAvKiogQWN0aW9uIHR5cGUgaWRlbnRpZmllciAoZS5nLiwgJ3JlbG9hZC1kYXRhJywgJ3NldC12YWx1ZScsICduYXZpZ2F0ZScsICdleGVjdXRlLXJlcG9ydCcpLiAqL1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqIFRhcmdldCBjb21wb25lbnQgSUQgb3Iga2V5IHRoaXMgYWN0aW9uIGFmZmVjdHMuICovXG4gIHRhcmdldD86IHN0cmluZztcblxuICAvKiogQWRkaXRpb25hbCBhY3Rpb24gcGFyYW1ldGVycy4gKi9cbiAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel export for all core domain models.
|
|
3
|
+
*/
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFycmVsIGV4cG9ydCBmb3IgYWxsIGNvcmUgZG9tYWluIG1vZGVscy5cbiAqL1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydERlZmluaXRpb24sXG4gIFJlcG9ydFN1bW1hcnksXG4gIFJlcG9ydFBlcm1pc3Npb25EZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLm1vZGVsJztcblxuZXhwb3J0IHR5cGUge1xuICBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLFxuICBDb21wb25lbnRCaW5kaW5nRGVmaW5pdGlvbixcbiAgQ29tcG9uZW50RGF0YVNvdXJjZURlZmluaXRpb24sXG4gIFZpc2liaWxpdHlEZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydFBhcmFtZXRlckRlZmluaXRpb24sXG59IGZyb20gJy4vcmVwb3J0LXBhcmFtZXRlci5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIHtcbiAgUmVwb3J0RGF0YVNvdXJjZURlZmluaXRpb24sXG4gIERhdGFTb3VyY2VDYWNoZURlZmluaXRpb24sXG59IGZyb20gJy4vcmVwb3J0LWRhdGFzb3VyY2UubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydEdyaWREZWZpbml0aW9uLFxuICBHcmlkQ29sdW1uRGVmaW5pdGlvbixcbiAgR3JpZE9wdGlvbnNEZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1ncmlkLm1vZGVsJztcblxuZXhwb3J0IHR5cGUge1xuICBSZXBvcnRMYXlvdXREZWZpbml0aW9uLFxuICBDb21wb25lbnRMYXlvdXREZWZpbml0aW9uLFxufSBmcm9tICcuL3JlcG9ydC1sYXlvdXQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIFZhbGlkYXRpb25EZWZpbml0aW9uLFxufSBmcm9tICcuL3ZhbGlkYXRpb24ubW9kZWwnO1xuXG5leHBvcnQgdHlwZSB7XG4gIENvbXBvbmVudEV2ZW50RGVmaW5pdGlvbixcbiAgQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbixcbn0gZnJvbSAnLi9jb21wb25lbnQtZXZlbnQubW9kZWwnO1xuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report component definition — the metadata for a single UI element
|
|
3
|
+
* that appears on a report page.
|
|
4
|
+
*
|
|
5
|
+
* The `type` field is the registry key used to resolve the Angular component
|
|
6
|
+
* at runtime via `ComponentRegistry`. This avoids hard-coding component types
|
|
7
|
+
* in the renderer.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNvbXBvbmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwb3J0IGNvbXBvbmVudCBkZWZpbml0aW9uIOKAlCB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIFVJIGVsZW1lbnRcbiAqIHRoYXQgYXBwZWFycyBvbiBhIHJlcG9ydCBwYWdlLlxuICpcbiAqIFRoZSBgdHlwZWAgZmllbGQgaXMgdGhlIHJlZ2lzdHJ5IGtleSB1c2VkIHRvIHJlc29sdmUgdGhlIEFuZ3VsYXIgY29tcG9uZW50XG4gKiBhdCBydW50aW1lIHZpYSBgQ29tcG9uZW50UmVnaXN0cnlgLiBUaGlzIGF2b2lkcyBoYXJkLWNvZGluZyBjb21wb25lbnQgdHlwZXNcbiAqIGluIHRoZSByZW5kZXJlci5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnRMYXlvdXREZWZpbml0aW9uIH0gZnJvbSAnLi9yZXBvcnQtbGF5b3V0Lm1vZGVsJztcbmltcG9ydCB7IFZhbGlkYXRpb25EZWZpbml0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudEV2ZW50RGVmaW5pdGlvbiB9IGZyb20gJy4vY29tcG9uZW50LWV2ZW50Lm1vZGVsJztcblxuLyoqXG4gKiBCaW5kaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGNvbm5lY3RpbmcgYSBjb21wb25lbnQgdG8gYSBkYXRhIHNvdXJjZSBvciBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50QmluZGluZ0RlZmluaXRpb24ge1xuICAvKiogVGhlIGRhdGEgc291cmNlIElEIHRoaXMgY29tcG9uZW50IHJlYWRzIGZyb20uICovXG4gIGRhdGFTb3VyY2VJZD86IHN0cmluZztcblxuICAvKiogVGhlIGZpZWxkIHdpdGhpbiB0aGUgZGF0YSBzb3VyY2UgdG8gYmluZCB0byAoZm9yIGRpc3BsYXkgY29tcG9uZW50cykuICovXG4gIGZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKiBUaGUgcGFyYW1ldGVyIGtleSB0aGlzIGNvbXBvbmVudCB3cml0ZXMgdG8gKGZvciBpbnB1dCBjb21wb25lbnRzKS4gKi9cbiAgcGFyYW1ldGVyS2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEcm9wZG93blNvdXJjZVR5cGUgPSAnc3RhdGljJyB8ICd0YWJsZScgfCAncHJvY2VkdXJlJyB8ICdtYXN0ZXInO1xuXG4vKipcbiAqIERhdGEgc291cmNlIGNvbmZpZ3VyYXRpb24gZm9yIGNvbXBvbmVudHMgdGhhdCBsb2FkIHRoZWlyIG93biBkYXRhXG4gKiAoZS5nLiwgZHJvcGRvd25zIGxvYWRpbmcgb3B0aW9ucyBmcm9tIGRhdGFiYXNlIHRhYmxlcywgc3RvcmVkIHByb2NlZHVyZXMsIG9yIG1hc3RlciBkYXRhKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhU291cmNlRGVmaW5pdGlvbiB7XG4gIC8qKiBTb3VyY2UgdHlwZTogJ3N0YXRpYycgfCAndGFibGUnIHwgJ3Byb2NlZHVyZScgfCAnbWFzdGVyJyAqL1xuICBzb3VyY2VUeXBlPzogRHJvcGRvd25Tb3VyY2VUeXBlO1xuXG4gIC8qKiBEYXRhYmFzZSBzY2hlbWEsIGUuZy4gJ2RibycgKGRlZmF1bHRzIHRvICdkYm8nKS4gKi9cbiAgc2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKiBEYXRhYmFzZSB0YWJsZSwgdmlldywgb3Igc3RvcmVkIHByb2NlZHVyZSBuYW1lIChlLmcuICdDdXN0b21lcnMnIG9yICd1c3BfR2V0QnJhbmNoZXMnKS4gKi9cbiAgZW50aXR5TmFtZT86IHN0cmluZztcblxuICAvKiogTWFzdGVyIGRhdGEgbmFtZSBmb3IgbGVnYWN5IG1hc3RlciBkYXRhIHByb3ZpZGVyIHJlc29sdXRpb24uICovXG4gIG1hc3Rlck5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIERpc3BsYXkgZmllbGQgbmFtZSBpbiB0aGUgcmV0dXJuZWQgZGF0YSBpdGVtcyAoZS5nLiAnQ3VzdG9tZXJOYW1lJykuICovXG4gIGRpc3BsYXlGaWVsZD86IHN0cmluZztcblxuICAvKiogVmFsdWUgZmllbGQgbmFtZSBpbiB0aGUgcmV0dXJuZWQgZGF0YSBpdGVtcyAoZS5nLiAnQ3VzdG9tZXJJRCcpLiAqL1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKiBPcHRpb25hbCBzdGF0aWMgZmlsdGVyIHBhcmFtZXRlcnMgKGUuZy4geyBpc0FjdGl2ZTogMSB9KS4gKi9cbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqIFN0b3JlZCBwcm9jZWR1cmUgcGFyYW1ldGVyIG1hcHBpbmdzIChlLmcuIHsgJ0BCcmFuY2hJZCc6ICd7e2JyYW5jaFNlbGVjdH19JywgJ0BBY3RpdmVPbmx5JzogdHJ1ZSB9KS4gKi9cbiAgcGFyYW1ldGVyTWFwcGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuICAvKiogS2V5cyBvZiBvdGhlciBmb3JtIGNvbXBvbmVudHMgd2hvc2UgdmFsdWVzIHRoaXMgZGF0YSBzb3VyY2UgZGVwZW5kcyBvbiAoZm9yIENhc2NhZGluZyBEcm9wZG93bnMpLiAqL1xuICBkZXBlbmRzT24/OiBzdHJpbmdbXTtcblxuICAvKiogQ2FjaGUgdGltZS10by1saXZlIGluIHNlY29uZHMgKGRlZmF1bHQgMzAwcykuICovXG4gIGNhY2hlVHRsPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbnRyb2xzIHdoZW4gYSBjb21wb25lbnQgaXMgdmlzaWJsZSBiYXNlZCBvbiBvdGhlciBjb21wb25lbnQgdmFsdWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpc2liaWxpdHlEZWZpbml0aW9uIHtcbiAgLyoqIFRoZSBjb21wb25lbnQga2V5IHdob3NlIHZhbHVlIGRldGVybWluZXMgdmlzaWJpbGl0eS4gKi9cbiAgZGVwZW5kc09uOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBvcGVyYXRvciBmb3IgdGhlIGNvbmRpdGlvbi4gKi9cbiAgb3BlcmF0b3I6ICdlcXVhbHMnIHwgJ25vdEVxdWFscycgfCAnY29udGFpbnMnIHwgJ2dyZWF0ZXJUaGFuJyB8ICdsZXNzVGhhbicgfCAnaXNOb3RFbXB0eScgfCAnaXNFbXB0eSc7XG5cbiAgLyoqIFRoZSB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuICovXG4gIHZhbHVlPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBGdWxsIG1ldGFkYXRhIGRlZmluaXRpb24gZm9yIGEgc2luZ2xlIGNvbXBvbmVudCBvbiBhIHJlcG9ydCBwYWdlLlxuICpcbiAqIFRoaXMgaXMgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2sgb2YgYSBgUmVwb3J0RGVmaW5pdGlvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBjb21wb25lbnQgaW5zdGFuY2UuICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqIFJlZ2lzdHJ5IGtleSDigJQgbWFwcyB0byBhbiBBbmd1bGFyIGNvbXBvbmVudCB2aWEgYENvbXBvbmVudFJlZ2lzdHJ5YC4gKi9cbiAgdHlwZTogc3RyaW5nO1xuXG4gIC8qKiBGb3JtIGNvbnRyb2wga2V5IC8gcGFyYW1ldGVyIGJpbmRpbmcgbmFtZS4gKi9cbiAga2V5Pzogc3RyaW5nO1xuXG4gIC8qKiBEaXNwbGF5IGxhYmVsIChvciB0cmFuc2xhdGlvbiBrZXkpLiAqL1xuICBsYWJlbD86IHN0cmluZztcblxuICAvKiogUmVuZGVyIG9yZGVyIChsb3dlciA9IGZpcnN0KS4gKi9cbiAgb3JkZXI/OiBudW1iZXI7XG5cbiAgLyoqIFBvc2l0aW9uIHdpdGhpbiB0aGUgcmVwb3J0IGxheW91dCBncmlkLiAqL1xuICBsYXlvdXQ/OiBDb21wb25lbnRMYXlvdXREZWZpbml0aW9uO1xuXG4gIC8qKiBDb21wb25lbnQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiAoZS5nLiwgcGxhY2Vob2xkZXIsIGZvcm1hdCwgb3B0aW9ucykuICovXG4gIHByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKiogRGF0YSBiaW5kaW5nIGNvbmZpZ3VyYXRpb24uICovXG4gIGJpbmRpbmc/OiBDb21wb25lbnRCaW5kaW5nRGVmaW5pdGlvbjtcblxuICAvKiogVmFsaWRhdGlvbiBydWxlcy4gKi9cbiAgdmFsaWRhdGlvbj86IFZhbGlkYXRpb25EZWZpbml0aW9uO1xuXG4gIC8qKiBEYXRhIHNvdXJjZSBmb3IgdGhpcyBjb21wb25lbnQncyBvcHRpb25zL2RhdGEuICovXG4gIGRhdGFTb3VyY2U/OiBDb21wb25lbnREYXRhU291cmNlRGVmaW5pdGlvbjtcblxuICAvKiogRXZlbnQg4oaSIGFjdGlvbiBiaW5kaW5ncy4gKi9cbiAgZXZlbnRzPzogQ29tcG9uZW50RXZlbnREZWZpbml0aW9uW107XG5cbiAgLyoqIENvbmRpdGlvbmFsIHZpc2liaWxpdHkgcnVsZXMuICovXG4gIHZpc2liaWxpdHk/OiBWaXNpYmlsaXR5RGVmaW5pdGlvbjtcblxuICAvKiogV2hldGhlciB0aGlzIGNvbXBvbmVudCBpcyBlbmFibGVkLiBEZWZhdWx0cyB0byBgdHJ1ZWAuICovXG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBDU1MgY2xhc3MgbmFtZXMgdG8gYWRkIHRvIHRoZSBjb21wb25lbnQgd3JhcHBlci4gKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report data source definitions.
|
|
3
|
+
*
|
|
4
|
+
* A data source describes how to fetch data for the report's result grid.
|
|
5
|
+
* The actual fetching is done by the host application through the
|
|
6
|
+
* `ReportDataSourceAdapter` contract.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRhdGFzb3VyY2UubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL21vZGVscy9yZXBvcnQtZGF0YXNvdXJjZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcG9ydCBkYXRhIHNvdXJjZSBkZWZpbml0aW9ucy5cbiAqXG4gKiBBIGRhdGEgc291cmNlIGRlc2NyaWJlcyBob3cgdG8gZmV0Y2ggZGF0YSBmb3IgdGhlIHJlcG9ydCdzIHJlc3VsdCBncmlkLlxuICogVGhlIGFjdHVhbCBmZXRjaGluZyBpcyBkb25lIGJ5IHRoZSBob3N0IGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlXG4gKiBgUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXJgIGNvbnRyYWN0LlxuICovXG5cbi8qKlxuICogRGVmaW5lcyBhIHNpbmdsZSBkYXRhIHNvdXJjZSBmb3IgdGhlIHJlcG9ydC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnREYXRhU291cmNlRGVmaW5pdGlvbiB7XG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBkYXRhIHNvdXJjZS4gKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKiogSHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhlIGRhdGEgc291cmNlLiAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIEVuZHBvaW50IGlkZW50aWZpZXIsIHN0b3JlZCBwcm9jZWR1cmUgbmFtZSwgb3IgcXVlcnkgcmVmZXJlbmNlLiAqL1xuICBlbmRwb2ludDogc3RyaW5nO1xuXG4gIC8qKiBIVFRQIG1ldGhvZCBvciBleGVjdXRpb24gbWV0aG9kIGhpbnQuICovXG4gIG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnIHwgJ1NUT1JFRF9QUk9DRURVUkUnIHwgJ0NVU1RPTSc7XG5cbiAgLyoqXG4gICAqIFBhcmFtZXRlciBrZXlzIHRoYXQgdGhpcyBkYXRhIHNvdXJjZSByZXF1aXJlcy5cbiAgICogVGhlc2UgYXJlIHJlc29sdmVkIGZyb20gdGhlIHJlcG9ydCdzIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlc1xuICAgKiBiZWZvcmUgY2FsbGluZyB0aGUgYFJlcG9ydERhdGFTb3VyY2VBZGFwdGVyYC5cbiAgICovXG4gIHBhcmFtZXRlcktleXM/OiBzdHJpbmdbXTtcblxuICAvKiogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGV4ZWN1dGUgdGhpcyBkYXRhIHNvdXJjZSBvbiByZXBvcnQgbG9hZC4gKi9cbiAgYXV0b0V4ZWN1dGU/OiBib29sZWFuO1xuXG4gIC8qKiBDYWNoaW5nIHN0cmF0ZWd5LiAqL1xuICBjYWNoZT86IERhdGFTb3VyY2VDYWNoZURlZmluaXRpb247XG59XG5cbi8qKlxuICogQ2FjaGluZyBjb25maWd1cmF0aW9uIGZvciBhIGRhdGEgc291cmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTb3VyY2VDYWNoZURlZmluaXRpb24ge1xuICAvKiogV2hldGhlciBjYWNoaW5nIGlzIGVuYWJsZWQgZm9yIHRoaXMgZGF0YSBzb3VyY2UuICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqIENhY2hlIGR1cmF0aW9uIGluIHNlY29uZHMuICovXG4gIHR0bFNlY29uZHM/OiBudW1iZXI7XG59XG4iXX0=
|