snap-report-viewer 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/README.md +24 -0
- package/esm2022/lib/components/chart-renderer/chart-renderer.component.mjs +75 -0
- package/esm2022/lib/components/complex-table-renderer/complex-table-renderer.component.mjs +155 -0
- package/esm2022/lib/components/component-renderer/component-renderer.component.mjs +158 -0
- package/esm2022/lib/components/container-renderer/container-renderer.component.mjs +53 -0
- package/esm2022/lib/components/image-renderer/image-renderer.component.mjs +67 -0
- package/esm2022/lib/components/line-renderer/line-renderer.component.mjs +94 -0
- package/esm2022/lib/components/list-renderer/list-renderer.component.mjs +96 -0
- package/esm2022/lib/components/qrcode-renderer/qrcode-renderer.component.mjs +67 -0
- package/esm2022/lib/components/shape-renderer/shape-renderer.component.mjs +133 -0
- package/esm2022/lib/components/table-renderer/table-renderer.component.mjs +148 -0
- package/esm2022/lib/components/text-renderer/text-renderer.component.mjs +33 -0
- package/esm2022/lib/constants/page-sizes.mjs +3 -0
- package/esm2022/lib/constants/report-tokens.mjs +21 -0
- package/esm2022/lib/layout/report-band.component.mjs +33 -0
- package/esm2022/lib/layout/report-page.component.mjs +159 -0
- package/esm2022/lib/models/component.model.mjs +3 -0
- package/esm2022/lib/models/report-template.model.mjs +19 -0
- package/esm2022/lib/page-container/page-container.component.mjs +248 -0
- package/esm2022/lib/report-viewer.component.mjs +393 -0
- package/esm2022/lib/services/chart-options-builder.service.mjs +749 -0
- package/esm2022/lib/services/data-resolver.service.mjs +385 -0
- package/esm2022/lib/services/export.service.mjs +82 -0
- package/esm2022/lib/services/formatting.service.mjs +59 -0
- package/esm2022/lib/services/print.service.mjs +133 -0
- package/esm2022/lib/services/search.service.mjs +117 -0
- package/esm2022/lib/services/style-mapper.service.mjs +247 -0
- package/esm2022/lib/services/template-normalizer.service.mjs +213 -0
- package/esm2022/lib/services/template-validator.service.mjs +293 -0
- package/esm2022/lib/services/token-resolver.service.mjs +14 -0
- package/esm2022/lib/services/viewer-state.service.mjs +155 -0
- package/esm2022/lib/sidebar/sidebar-container.component.mjs +86 -0
- package/esm2022/lib/sidebar/thumbnail-sidebar.component.mjs +110 -0
- package/esm2022/lib/sidebar/toc-sidebar.component.mjs +155 -0
- package/esm2022/lib/toolbar/viewer-toolbar.component.mjs +486 -0
- package/esm2022/public-api.mjs +43 -0
- package/esm2022/snap-report-viewer.mjs +5 -0
- package/fesm2022/snap-report-viewer.mjs +5110 -0
- package/fesm2022/snap-report-viewer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/chart-renderer/chart-renderer.component.d.ts +14 -0
- package/lib/components/complex-table-renderer/complex-table-renderer.component.d.ts +17 -0
- package/lib/components/component-renderer/component-renderer.component.d.ts +14 -0
- package/lib/components/container-renderer/container-renderer.component.d.ts +11 -0
- package/lib/components/image-renderer/image-renderer.component.d.ts +14 -0
- package/lib/components/line-renderer/line-renderer.component.d.ts +10 -0
- package/lib/components/list-renderer/list-renderer.component.d.ts +16 -0
- package/lib/components/qrcode-renderer/qrcode-renderer.component.d.ts +16 -0
- package/lib/components/shape-renderer/shape-renderer.component.d.ts +11 -0
- package/lib/components/table-renderer/table-renderer.component.d.ts +20 -0
- package/lib/components/text-renderer/text-renderer.component.d.ts +13 -0
- package/lib/constants/page-sizes.d.ts +2 -0
- package/lib/constants/report-tokens.d.ts +8 -0
- package/lib/layout/report-band.component.d.ts +10 -0
- package/lib/layout/report-page.component.d.ts +21 -0
- package/lib/models/component.model.d.ts +315 -0
- package/lib/models/report-template.model.d.ts +122 -0
- package/lib/page-container/page-container.component.d.ts +29 -0
- package/lib/report-viewer.component.d.ts +51 -0
- package/lib/services/chart-options-builder.service.d.ts +31 -0
- package/lib/services/data-resolver.service.d.ts +27 -0
- package/lib/services/export.service.d.ts +11 -0
- package/lib/services/formatting.service.d.ts +10 -0
- package/lib/services/print.service.d.ts +12 -0
- package/lib/services/search.service.d.ts +13 -0
- package/lib/services/style-mapper.service.d.ts +14 -0
- package/lib/services/template-normalizer.service.d.ts +24 -0
- package/lib/services/template-validator.service.d.ts +19 -0
- package/lib/services/token-resolver.service.d.ts +6 -0
- package/lib/services/viewer-state.service.d.ts +49 -0
- package/lib/sidebar/sidebar-container.component.d.ts +8 -0
- package/lib/sidebar/thumbnail-sidebar.component.d.ts +15 -0
- package/lib/sidebar/toc-sidebar.component.d.ts +17 -0
- package/lib/toolbar/viewer-toolbar.component.d.ts +17 -0
- package/package.json +43 -0
- package/public-api.d.ts +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# ReportViewer
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project report-viewer` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project report-viewer`.
|
|
8
|
+
> Note: Don't forget to add `--project report-viewer` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build report-viewer` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build report-viewer`, go to the dist folder `cd dist/report-viewer` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test report-viewer` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';
|
|
4
|
+
import * as echarts from 'echarts/core';
|
|
5
|
+
import { BarChart, LineChart, PieChart, ScatterChart, RadarChart, FunnelChart, GaugeChart } from 'echarts/charts';
|
|
6
|
+
import { GridComponent, TooltipComponent, LegendComponent, TitleComponent, DataZoomComponent, MarkLineComponent, ToolboxComponent } from 'echarts/components';
|
|
7
|
+
import { CanvasRenderer } from 'echarts/renderers';
|
|
8
|
+
import { ChartOptionsBuilderService } from '../../services/chart-options-builder.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
echarts.use([
|
|
11
|
+
BarChart, LineChart, PieChart, ScatterChart, RadarChart, FunnelChart, GaugeChart,
|
|
12
|
+
GridComponent, TooltipComponent, LegendComponent, TitleComponent, DataZoomComponent, MarkLineComponent, ToolboxComponent,
|
|
13
|
+
CanvasRenderer
|
|
14
|
+
]);
|
|
15
|
+
export class ChartRendererComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.chartOptions = null;
|
|
18
|
+
this.chartBuilder = inject(ChartOptionsBuilderService);
|
|
19
|
+
}
|
|
20
|
+
ngOnChanges(changes) {
|
|
21
|
+
this.buildChart();
|
|
22
|
+
}
|
|
23
|
+
buildChart() {
|
|
24
|
+
if (!this.component.chartConfig) {
|
|
25
|
+
this.chartOptions = null;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const config = this.component.chartConfig;
|
|
29
|
+
let chartData;
|
|
30
|
+
if (this.data && config.dataSourceField) {
|
|
31
|
+
chartData = this.chartBuilder.resolveChartData(this.data, config);
|
|
32
|
+
}
|
|
33
|
+
this.chartOptions = this.chartBuilder.buildOptions(config, chartData && chartData.length > 0 ? chartData : undefined);
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ChartRendererComponent, isStandalone: true, selector: "rv-chart-renderer", inputs: { component: "component", data: "data" }, providers: [provideEchartsCore({ echarts })], usesOnChanges: true, ngImport: i0, template: `
|
|
37
|
+
@if (chartOptions) {
|
|
38
|
+
<div class="rv-chart-container"
|
|
39
|
+
echarts
|
|
40
|
+
[options]="chartOptions">
|
|
41
|
+
</div>
|
|
42
|
+
} @else {
|
|
43
|
+
<div class="rv-chart-placeholder">
|
|
44
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="#999">
|
|
45
|
+
<path d="M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z"/>
|
|
46
|
+
</svg>
|
|
47
|
+
<span>Chart</span>
|
|
48
|
+
</div>
|
|
49
|
+
}
|
|
50
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%}.rv-chart-container{width:100%;height:100%}.rv-chart-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#f5f5f5;border:1px solid #ddd}.rv-chart-placeholder span{font-size:10px;color:#666;margin-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
51
|
+
}
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChartRendererComponent, decorators: [{
|
|
53
|
+
type: Component,
|
|
54
|
+
args: [{ selector: 'rv-chart-renderer', standalone: true, imports: [CommonModule, NgxEchartsDirective], providers: [provideEchartsCore({ echarts })], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
55
|
+
@if (chartOptions) {
|
|
56
|
+
<div class="rv-chart-container"
|
|
57
|
+
echarts
|
|
58
|
+
[options]="chartOptions">
|
|
59
|
+
</div>
|
|
60
|
+
} @else {
|
|
61
|
+
<div class="rv-chart-placeholder">
|
|
62
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="#999">
|
|
63
|
+
<path d="M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z"/>
|
|
64
|
+
</svg>
|
|
65
|
+
<span>Chart</span>
|
|
66
|
+
</div>
|
|
67
|
+
}
|
|
68
|
+
`, styles: [":host{display:block;width:100%;height:100%}.rv-chart-container{width:100%;height:100%}.rv-chart-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:#f5f5f5;border:1px solid #ddd}.rv-chart-placeholder span{font-size:10px;color:#666;margin-top:4px}\n"] }]
|
|
69
|
+
}], propDecorators: { component: [{
|
|
70
|
+
type: Input,
|
|
71
|
+
args: [{ required: true }]
|
|
72
|
+
}], data: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvY2hhcnQtcmVuZGVyZXIvY2hhcnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBcUYsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOztBQUcxRixPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ1YsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVTtJQUNoRixhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0I7SUFDeEgsY0FBYztDQUNmLENBQUMsQ0FBQztBQXVDSCxNQUFNLE9BQU8sc0JBQXNCO0lBckNuQztRQXlDRSxpQkFBWSxHQUF5QixJQUFJLENBQUM7UUFFbEMsaUJBQVksR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQXdCM0Q7SUF0QkMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzFDLElBQUksU0FBNEIsQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQ2hELE1BQU0sRUFDTixTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUMxRCxDQUFDO0lBQ0osQ0FBQzsrR0E3QlUsc0JBQXNCO21HQUF0QixzQkFBc0Isa0hBakN0QixDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQywrQ0FFbEM7Ozs7Ozs7Ozs7Ozs7O0dBY1Qsd1lBakJTLFlBQVksK0JBQUUsbUJBQW1COzs0RkFrQ2hDLHNCQUFzQjtrQkFyQ2xDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxhQUNqQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxtQkFDM0IsdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7R0FjVDs4QkFrQjBCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5qZWN0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIHNpZ25hbCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3hFY2hhcnRzRGlyZWN0aXZlLCBwcm92aWRlRWNoYXJ0c0NvcmUgfSBmcm9tICduZ3gtZWNoYXJ0cyc7XG5pbXBvcnQgdHlwZSB7IEVDaGFydHNPcHRpb24gfSBmcm9tICdlY2hhcnRzJztcbmltcG9ydCAqIGFzIGVjaGFydHMgZnJvbSAnZWNoYXJ0cy9jb3JlJztcbmltcG9ydCB7IEJhckNoYXJ0LCBMaW5lQ2hhcnQsIFBpZUNoYXJ0LCBTY2F0dGVyQ2hhcnQsIFJhZGFyQ2hhcnQsIEZ1bm5lbENoYXJ0LCBHYXVnZUNoYXJ0IH0gZnJvbSAnZWNoYXJ0cy9jaGFydHMnO1xuaW1wb3J0IHsgR3JpZENvbXBvbmVudCwgVG9vbHRpcENvbXBvbmVudCwgTGVnZW5kQ29tcG9uZW50LCBUaXRsZUNvbXBvbmVudCwgRGF0YVpvb21Db21wb25lbnQsIE1hcmtMaW5lQ29tcG9uZW50LCBUb29sYm94Q29tcG9uZW50IH0gZnJvbSAnZWNoYXJ0cy9jb21wb25lbnRzJztcbmltcG9ydCB7IENhbnZhc1JlbmRlcmVyIH0gZnJvbSAnZWNoYXJ0cy9yZW5kZXJlcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IENoYXJ0T3B0aW9uc0J1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2hhcnQtb3B0aW9ucy1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTU1fVE9fUFggfSBmcm9tICcuLi8uLi9jb25zdGFudHMvcGFnZS1zaXplcyc7XG5cbmVjaGFydHMudXNlKFtcbiAgQmFyQ2hhcnQsIExpbmVDaGFydCwgUGllQ2hhcnQsIFNjYXR0ZXJDaGFydCwgUmFkYXJDaGFydCwgRnVubmVsQ2hhcnQsIEdhdWdlQ2hhcnQsXG4gIEdyaWRDb21wb25lbnQsIFRvb2x0aXBDb21wb25lbnQsIExlZ2VuZENvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIERhdGFab29tQ29tcG9uZW50LCBNYXJrTGluZUNvbXBvbmVudCwgVG9vbGJveENvbXBvbmVudCxcbiAgQ2FudmFzUmVuZGVyZXJcbl0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdydi1jaGFydC1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5neEVjaGFydHNEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtwcm92aWRlRWNoYXJ0c0NvcmUoeyBlY2hhcnRzIH0pXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmIChjaGFydE9wdGlvbnMpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJydi1jaGFydC1jb250YWluZXJcIlxuICAgICAgICAgICBlY2hhcnRzXG4gICAgICAgICAgIFtvcHRpb25zXT1cImNoYXJ0T3B0aW9uc1wiPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicnYtY2hhcnQtcGxhY2Vob2xkZXJcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiM5OTlcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTUgOS4yaDNWMTlINXpNMTAuNiA1aDIuOHYxNGgtMi44em01LjYgOEgxOXY2aC0yLjh6XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHNwYW4+Q2hhcnQ8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9XG4gICAgLnJ2LWNoYXJ0LWNvbnRhaW5lciB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IH1cbiAgICAucnYtY2hhcnQtcGxhY2Vob2xkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIH1cbiAgICAucnYtY2hhcnQtcGxhY2Vob2xkZXIgc3BhbiB7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM2NjY7IG1hcmdpbi10b3A6IDRweDsgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBDaGFydFJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29tcG9uZW50ITogQ29tcG9uZW50TW9kZWw7XG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcblxuICBjaGFydE9wdGlvbnM6IEVDaGFydHNPcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGNoYXJ0QnVpbGRlciA9IGluamVjdChDaGFydE9wdGlvbnNCdWlsZGVyU2VydmljZSk7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMuYnVpbGRDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENoYXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb21wb25lbnQuY2hhcnRDb25maWcpIHtcbiAgICAgIHRoaXMuY2hhcnRPcHRpb25zID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbXBvbmVudC5jaGFydENvbmZpZztcbiAgICBsZXQgY2hhcnREYXRhOiBhbnlbXSB8IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLmRhdGEgJiYgY29uZmlnLmRhdGFTb3VyY2VGaWVsZCkge1xuICAgICAgY2hhcnREYXRhID0gdGhpcy5jaGFydEJ1aWxkZXIucmVzb2x2ZUNoYXJ0RGF0YSh0aGlzLmRhdGEsIGNvbmZpZyk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFydE9wdGlvbnMgPSB0aGlzLmNoYXJ0QnVpbGRlci5idWlsZE9wdGlvbnMoXG4gICAgICBjb25maWcsXG4gICAgICBjaGFydERhdGEgJiYgY2hhcnREYXRhLmxlbmd0aCA+IDAgPyBjaGFydERhdGEgOiB1bmRlZmluZWRcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DataResolverService } from '../../services/data-resolver.service';
|
|
4
|
+
import { StyleMapperService } from '../../services/style-mapper.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
export class ComplexTableRendererComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.dataResolver = inject(DataResolverService);
|
|
10
|
+
this.styleMapper = inject(StyleMapperService);
|
|
11
|
+
}
|
|
12
|
+
get config() {
|
|
13
|
+
return this.component.complexTableConfig;
|
|
14
|
+
}
|
|
15
|
+
get headerRows() {
|
|
16
|
+
if (!this.config)
|
|
17
|
+
return [];
|
|
18
|
+
const rows = [];
|
|
19
|
+
for (let i = 0; i < this.config.headerRowCount; i++)
|
|
20
|
+
rows.push(i);
|
|
21
|
+
return rows;
|
|
22
|
+
}
|
|
23
|
+
get bodyRows() {
|
|
24
|
+
if (!this.config)
|
|
25
|
+
return [];
|
|
26
|
+
const rows = [];
|
|
27
|
+
for (let i = this.config.headerRowCount; i < this.config.rowCount; i++)
|
|
28
|
+
rows.push(i);
|
|
29
|
+
return rows;
|
|
30
|
+
}
|
|
31
|
+
get tableStyle() {
|
|
32
|
+
const styles = {
|
|
33
|
+
'width': '100%',
|
|
34
|
+
'border-collapse': 'collapse',
|
|
35
|
+
};
|
|
36
|
+
if (!this.config)
|
|
37
|
+
return styles;
|
|
38
|
+
if (this.config.tableLayout) {
|
|
39
|
+
styles['table-layout'] = this.config.tableLayout;
|
|
40
|
+
}
|
|
41
|
+
if (this.config.showOuterBorder !== false) {
|
|
42
|
+
const w = this.config.outerBorderWidth || '1px';
|
|
43
|
+
const c = this.config.outerBorderColor || '#cccccc';
|
|
44
|
+
const s = this.config.outerBorderStyle || 'solid';
|
|
45
|
+
styles['border'] = `${w} ${s} ${c}`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
styles['border'] = 'none';
|
|
49
|
+
}
|
|
50
|
+
return styles;
|
|
51
|
+
}
|
|
52
|
+
getVisibleCells(rowIndex) {
|
|
53
|
+
if (!this.config)
|
|
54
|
+
return [];
|
|
55
|
+
return this.config.cells
|
|
56
|
+
.filter(c => c.row === rowIndex && !c.covered)
|
|
57
|
+
.sort((a, b) => a.col - b.col);
|
|
58
|
+
}
|
|
59
|
+
getCellStyle(cell, isHeader) {
|
|
60
|
+
return this.styleMapper.mapComplexCellStyle(cell, this.config, isHeader);
|
|
61
|
+
}
|
|
62
|
+
resolveCellContent(cell) {
|
|
63
|
+
if (cell.dataBinding?.sourceField && this.data) {
|
|
64
|
+
return this.dataResolver.resolvePlaceholders(`{{${cell.dataBinding.sourceField}}}`, this.data);
|
|
65
|
+
}
|
|
66
|
+
if (cell.content) {
|
|
67
|
+
return this.dataResolver.resolvePlaceholders(cell.content, this.data);
|
|
68
|
+
}
|
|
69
|
+
return '';
|
|
70
|
+
}
|
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComplexTableRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
72
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ComplexTableRendererComponent, isStandalone: true, selector: "rv-complex-table-renderer", inputs: { component: "component", data: "data" }, ngImport: i0, template: `
|
|
73
|
+
@if (component.complexTableConfig) {
|
|
74
|
+
<table class="rv-complex-table" [ngStyle]="tableStyle">
|
|
75
|
+
<colgroup>
|
|
76
|
+
@for (width of component.complexTableConfig.columnWidths; track $index) {
|
|
77
|
+
<col [style.width]="width">
|
|
78
|
+
}
|
|
79
|
+
</colgroup>
|
|
80
|
+
<thead>
|
|
81
|
+
@for (rowIndex of headerRows; track rowIndex) {
|
|
82
|
+
<tr>
|
|
83
|
+
@for (cell of getVisibleCells(rowIndex); track cell.id) {
|
|
84
|
+
<th [attr.colspan]="cell.colspan > 1 ? cell.colspan : null"
|
|
85
|
+
[attr.rowspan]="cell.rowspan > 1 ? cell.rowspan : null"
|
|
86
|
+
[ngStyle]="getCellStyle(cell, true)">
|
|
87
|
+
{{ resolveCellContent(cell) }}
|
|
88
|
+
</th>
|
|
89
|
+
}
|
|
90
|
+
</tr>
|
|
91
|
+
}
|
|
92
|
+
</thead>
|
|
93
|
+
<tbody>
|
|
94
|
+
@for (rowIndex of bodyRows; track rowIndex) {
|
|
95
|
+
<tr>
|
|
96
|
+
@for (cell of getVisibleCells(rowIndex); track cell.id) {
|
|
97
|
+
<td [attr.colspan]="cell.colspan > 1 ? cell.colspan : null"
|
|
98
|
+
[attr.rowspan]="cell.rowspan > 1 ? cell.rowspan : null"
|
|
99
|
+
[ngStyle]="getCellStyle(cell, false)">
|
|
100
|
+
{{ resolveCellContent(cell) }}
|
|
101
|
+
</td>
|
|
102
|
+
}
|
|
103
|
+
</tr>
|
|
104
|
+
}
|
|
105
|
+
</tbody>
|
|
106
|
+
</table>
|
|
107
|
+
}
|
|
108
|
+
`, isInline: true, styles: [".rv-complex-table{width:100%;border-collapse:collapse;font-size:inherit}.rv-complex-table th,.rv-complex-table td{border:1px solid #e0e0e0;padding:6px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rv-complex-table th{background:#f5f5f5;font-weight:700;text-align:center}.rv-complex-table td{text-align:left}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComplexTableRendererComponent, decorators: [{
|
|
111
|
+
type: Component,
|
|
112
|
+
args: [{ selector: 'rv-complex-table-renderer', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
113
|
+
@if (component.complexTableConfig) {
|
|
114
|
+
<table class="rv-complex-table" [ngStyle]="tableStyle">
|
|
115
|
+
<colgroup>
|
|
116
|
+
@for (width of component.complexTableConfig.columnWidths; track $index) {
|
|
117
|
+
<col [style.width]="width">
|
|
118
|
+
}
|
|
119
|
+
</colgroup>
|
|
120
|
+
<thead>
|
|
121
|
+
@for (rowIndex of headerRows; track rowIndex) {
|
|
122
|
+
<tr>
|
|
123
|
+
@for (cell of getVisibleCells(rowIndex); track cell.id) {
|
|
124
|
+
<th [attr.colspan]="cell.colspan > 1 ? cell.colspan : null"
|
|
125
|
+
[attr.rowspan]="cell.rowspan > 1 ? cell.rowspan : null"
|
|
126
|
+
[ngStyle]="getCellStyle(cell, true)">
|
|
127
|
+
{{ resolveCellContent(cell) }}
|
|
128
|
+
</th>
|
|
129
|
+
}
|
|
130
|
+
</tr>
|
|
131
|
+
}
|
|
132
|
+
</thead>
|
|
133
|
+
<tbody>
|
|
134
|
+
@for (rowIndex of bodyRows; track rowIndex) {
|
|
135
|
+
<tr>
|
|
136
|
+
@for (cell of getVisibleCells(rowIndex); track cell.id) {
|
|
137
|
+
<td [attr.colspan]="cell.colspan > 1 ? cell.colspan : null"
|
|
138
|
+
[attr.rowspan]="cell.rowspan > 1 ? cell.rowspan : null"
|
|
139
|
+
[ngStyle]="getCellStyle(cell, false)">
|
|
140
|
+
{{ resolveCellContent(cell) }}
|
|
141
|
+
</td>
|
|
142
|
+
}
|
|
143
|
+
</tr>
|
|
144
|
+
}
|
|
145
|
+
</tbody>
|
|
146
|
+
</table>
|
|
147
|
+
}
|
|
148
|
+
`, styles: [".rv-complex-table{width:100%;border-collapse:collapse;font-size:inherit}.rv-complex-table th,.rv-complex-table td{border:1px solid #e0e0e0;padding:6px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rv-complex-table th{background:#f5f5f5;font-weight:700;text-align:center}.rv-complex-table td{text-align:left}\n"] }]
|
|
149
|
+
}], propDecorators: { component: [{
|
|
150
|
+
type: Input,
|
|
151
|
+
args: [{ required: true }]
|
|
152
|
+
}], data: [{
|
|
153
|
+
type: Input
|
|
154
|
+
}] } });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleC10YWJsZS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZXBvcnQtdmlld2VyL3NyYy9saWIvY29tcG9uZW50cy9jb21wbGV4LXRhYmxlLXJlbmRlcmVyL2NvbXBsZXgtdGFibGUtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQW9FekUsTUFBTSxPQUFPLDZCQUE2QjtJQWxFMUM7UUFzRVUsaUJBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzQyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBa0VsRDtJQWhFQyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLE1BQU0sR0FBMkI7WUFDckMsT0FBTyxFQUFFLE1BQU07WUFDZixpQkFBaUIsRUFBRSxVQUFVO1NBQzlCLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ25ELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzVCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWdCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLO2FBQ3JCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUM3QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXNCLEVBQUUsUUFBaUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFzQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQzFDLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLElBQUksRUFDckMsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOytHQXRFVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix1SUE3RDlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ1QsK1lBdENTLFlBQVk7OzRGQStEWCw2QkFBNkI7a0JBbEV6QyxTQUFTOytCQUNFLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBQ04sdUJBQXVCLENBQUMsTUFBTSxZQUNyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NUOzhCQTBCMEIsU0FBUztzQkFBbkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbCwgQ29tcGxleFRhYmxlQ2VsbCwgQ29tcGxleFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhUmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFN0eWxlTWFwcGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0eWxlLW1hcHBlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnYtY29tcGxleC10YWJsZS1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGNvbXBvbmVudC5jb21wbGV4VGFibGVDb25maWcpIHtcbiAgICAgIDx0YWJsZSBjbGFzcz1cInJ2LWNvbXBsZXgtdGFibGVcIiBbbmdTdHlsZV09XCJ0YWJsZVN0eWxlXCI+XG4gICAgICAgIDxjb2xncm91cD5cbiAgICAgICAgICBAZm9yICh3aWR0aCBvZiBjb21wb25lbnQuY29tcGxleFRhYmxlQ29uZmlnLmNvbHVtbldpZHRoczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8Y29sIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9jb2xncm91cD5cbiAgICAgICAgPHRoZWFkPlxuICAgICAgICAgIEBmb3IgKHJvd0luZGV4IG9mIGhlYWRlclJvd3M7IHRyYWNrIHJvd0luZGV4KSB7XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIEBmb3IgKGNlbGwgb2YgZ2V0VmlzaWJsZUNlbGxzKHJvd0luZGV4KTsgdHJhY2sgY2VsbC5pZCkge1xuICAgICAgICAgICAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cImNlbGwuY29sc3BhbiA+IDEgPyBjZWxsLmNvbHNwYW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm93c3Bhbl09XCJjZWxsLnJvd3NwYW4gPiAxID8gY2VsbC5yb3dzcGFuIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldENlbGxTdHlsZShjZWxsLCB0cnVlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVzb2x2ZUNlbGxDb250ZW50KGNlbGwpIH19XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGhlYWQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICBAZm9yIChyb3dJbmRleCBvZiBib2R5Um93czsgdHJhY2sgcm93SW5kZXgpIHtcbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgQGZvciAoY2VsbCBvZiBnZXRWaXNpYmxlQ2VsbHMocm93SW5kZXgpOyB0cmFjayBjZWxsLmlkKSB7XG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY2VsbC5jb2xzcGFuID4gMSA/IGNlbGwuY29sc3BhbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5yb3dzcGFuXT1cImNlbGwucm93c3BhbiA+IDEgPyBjZWxsLnJvd3NwYW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0Q2VsbFN0eWxlKGNlbGwsIGZhbHNlKVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVzb2x2ZUNlbGxDb250ZW50KGNlbGwpIH19XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIC5ydi1jb21wbGV4LXRhYmxlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICB9XG4gICAgLnJ2LWNvbXBsZXgtdGFibGUgdGgsXG4gICAgLnJ2LWNvbXBsZXgtdGFibGUgdGQge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgICAucnYtY29tcGxleC10YWJsZSB0aCB7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICAgIC5ydi1jb21wbGV4LXRhYmxlIHRkIHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuICBgXVxufSlcbmV4cG9ydCBjbGFzcyBDb21wbGV4VGFibGVSZW5kZXJlckNvbXBvbmVudCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbXBvbmVudCE6IENvbXBvbmVudE1vZGVsO1xuICBASW5wdXQoKSBkYXRhOiBhbnk7XG5cbiAgcHJpdmF0ZSBkYXRhUmVzb2x2ZXIgPSBpbmplY3QoRGF0YVJlc29sdmVyU2VydmljZSk7XG4gIHByaXZhdGUgc3R5bGVNYXBwZXIgPSBpbmplY3QoU3R5bGVNYXBwZXJTZXJ2aWNlKTtcblxuICBnZXQgY29uZmlnKCk6IENvbXBsZXhUYWJsZUNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50LmNvbXBsZXhUYWJsZUNvbmZpZztcbiAgfVxuXG4gIGdldCBoZWFkZXJSb3dzKCk6IG51bWJlcltdIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSByZXR1cm4gW107XG4gICAgY29uc3Qgcm93czogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29uZmlnLmhlYWRlclJvd0NvdW50OyBpKyspIHJvd3MucHVzaChpKTtcbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIGdldCBib2R5Um93cygpOiBudW1iZXJbXSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHJvd3M6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IHRoaXMuY29uZmlnLmhlYWRlclJvd0NvdW50OyBpIDwgdGhpcy5jb25maWcucm93Q291bnQ7IGkrKykgcm93cy5wdXNoKGkpO1xuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgZ2V0IHRhYmxlU3R5bGUoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3dpZHRoJzogJzEwMCUnLFxuICAgICAgJ2JvcmRlci1jb2xsYXBzZSc6ICdjb2xsYXBzZScsXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSByZXR1cm4gc3R5bGVzO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnRhYmxlTGF5b3V0KSB7XG4gICAgICBzdHlsZXNbJ3RhYmxlLWxheW91dCddID0gdGhpcy5jb25maWcudGFibGVMYXlvdXQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnNob3dPdXRlckJvcmRlciAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHcgPSB0aGlzLmNvbmZpZy5vdXRlckJvcmRlcldpZHRoIHx8ICcxcHgnO1xuICAgICAgY29uc3QgYyA9IHRoaXMuY29uZmlnLm91dGVyQm9yZGVyQ29sb3IgfHwgJyNjY2NjY2MnO1xuICAgICAgY29uc3QgcyA9IHRoaXMuY29uZmlnLm91dGVyQm9yZGVyU3R5bGUgfHwgJ3NvbGlkJztcbiAgICAgIHN0eWxlc1snYm9yZGVyJ10gPSBgJHt3fSAke3N9ICR7Y31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNbJ2JvcmRlciddID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cblxuICBnZXRWaXNpYmxlQ2VsbHMocm93SW5kZXg6IG51bWJlcik6IENvbXBsZXhUYWJsZUNlbGxbXSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jZWxsc1xuICAgICAgLmZpbHRlcihjID0+IGMucm93ID09PSByb3dJbmRleCAmJiAhYy5jb3ZlcmVkKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEuY29sIC0gYi5jb2wpO1xuICB9XG5cbiAgZ2V0Q2VsbFN0eWxlKGNlbGw6IENvbXBsZXhUYWJsZUNlbGwsIGlzSGVhZGVyOiBib29sZWFuKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGVNYXBwZXIubWFwQ29tcGxleENlbGxTdHlsZShjZWxsLCB0aGlzLmNvbmZpZyEsIGlzSGVhZGVyKTtcbiAgfVxuXG4gIHJlc29sdmVDZWxsQ29udGVudChjZWxsOiBDb21wbGV4VGFibGVDZWxsKTogc3RyaW5nIHtcbiAgICBpZiAoY2VsbC5kYXRhQmluZGluZz8uc291cmNlRmllbGQgJiYgdGhpcy5kYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhUmVzb2x2ZXIucmVzb2x2ZVBsYWNlaG9sZGVycyhcbiAgICAgICAgYHt7JHtjZWxsLmRhdGFCaW5kaW5nLnNvdXJjZUZpZWxkfX19YCxcbiAgICAgICAgdGhpcy5kYXRhXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY2VsbC5jb250ZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhUmVzb2x2ZXIucmVzb2x2ZVBsYWNlaG9sZGVycyhjZWxsLmNvbnRlbnQsIHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { StyleMapperService } from '../../services/style-mapper.service';
|
|
4
|
+
import { TextRendererComponent } from '../text-renderer/text-renderer.component';
|
|
5
|
+
import { TableRendererComponent } from '../table-renderer/table-renderer.component';
|
|
6
|
+
import { ChartRendererComponent } from '../chart-renderer/chart-renderer.component';
|
|
7
|
+
import { ImageRendererComponent } from '../image-renderer/image-renderer.component';
|
|
8
|
+
import { QrcodeRendererComponent } from '../qrcode-renderer/qrcode-renderer.component';
|
|
9
|
+
import { ListRendererComponent } from '../list-renderer/list-renderer.component';
|
|
10
|
+
import { LineRendererComponent } from '../line-renderer/line-renderer.component';
|
|
11
|
+
import { ShapeRendererComponent } from '../shape-renderer/shape-renderer.component';
|
|
12
|
+
import { ContainerRendererComponent } from '../container-renderer/container-renderer.component';
|
|
13
|
+
import { ComplexTableRendererComponent } from '../complex-table-renderer/complex-table-renderer.component';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "@angular/common";
|
|
16
|
+
export class ComponentRendererComponent {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.pageNumber = 1;
|
|
19
|
+
this.totalPages = 1;
|
|
20
|
+
this.reportTitle = '';
|
|
21
|
+
this.styleMapper = inject(StyleMapperService);
|
|
22
|
+
}
|
|
23
|
+
get positionStyles() {
|
|
24
|
+
return {
|
|
25
|
+
'position': 'absolute',
|
|
26
|
+
'left': this.component.position.x + 'mm',
|
|
27
|
+
'top': this.component.position.y + 'mm',
|
|
28
|
+
'width': this.component.size.width + 'mm',
|
|
29
|
+
'height': this.component.size.height + 'mm',
|
|
30
|
+
'z-index': String(this.component.zIndex || 0),
|
|
31
|
+
'box-sizing': 'border-box',
|
|
32
|
+
'overflow': 'hidden',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
get componentStyles() {
|
|
36
|
+
return this.styleMapper.mapComponentStyles(this.component.style);
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ComponentRendererComponent, isStandalone: true, selector: "rv-component-renderer", inputs: { component: "component", data: "data", pageNumber: "pageNumber", totalPages: "totalPages", reportTitle: "reportTitle" }, ngImport: i0, template: `
|
|
40
|
+
<div class="rv-component" [ngStyle]="positionStyles">
|
|
41
|
+
<div class="rv-component-content" [ngStyle]="componentStyles">
|
|
42
|
+
@switch (component.type) {
|
|
43
|
+
@case ('text') {
|
|
44
|
+
<rv-text-renderer [component]="component" [data]="data"
|
|
45
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
46
|
+
}
|
|
47
|
+
@case ('field') {
|
|
48
|
+
<rv-text-renderer [component]="component" [data]="data"
|
|
49
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
50
|
+
}
|
|
51
|
+
@case ('table') {
|
|
52
|
+
<rv-table-renderer [component]="component" [data]="data" />
|
|
53
|
+
}
|
|
54
|
+
@case ('chart') {
|
|
55
|
+
<rv-chart-renderer [component]="component" [data]="data" />
|
|
56
|
+
}
|
|
57
|
+
@case ('image') {
|
|
58
|
+
<rv-image-renderer [component]="component" [data]="data"
|
|
59
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
60
|
+
}
|
|
61
|
+
@case ('qrcode') {
|
|
62
|
+
<rv-qrcode-renderer [component]="component" [data]="data"
|
|
63
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
64
|
+
}
|
|
65
|
+
@case ('list') {
|
|
66
|
+
<rv-list-renderer [component]="component" [data]="data" />
|
|
67
|
+
}
|
|
68
|
+
@case ('line') {
|
|
69
|
+
<rv-line-renderer [component]="component" />
|
|
70
|
+
}
|
|
71
|
+
@case ('shape') {
|
|
72
|
+
<rv-shape-renderer [component]="component" />
|
|
73
|
+
}
|
|
74
|
+
@case ('container') {
|
|
75
|
+
<rv-container-renderer [component]="component" [data]="data"
|
|
76
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
77
|
+
}
|
|
78
|
+
@case ('complex-table') {
|
|
79
|
+
<rv-complex-table-renderer [component]="component" [data]="data" />
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
`, isInline: true, styles: [".rv-component{position:absolute;box-sizing:border-box;overflow:hidden}.rv-component-content{width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: TextRendererComponent, selector: "rv-text-renderer", inputs: ["component", "data", "pageNumber", "totalPages", "reportTitle"] }, { kind: "component", type: TableRendererComponent, selector: "rv-table-renderer", inputs: ["component", "data"] }, { kind: "component", type: ChartRendererComponent, selector: "rv-chart-renderer", inputs: ["component", "data"] }, { kind: "component", type: ImageRendererComponent, selector: "rv-image-renderer", inputs: ["component", "data", "pageNumber", "totalPages", "reportTitle"] }, { kind: "component", type: QrcodeRendererComponent, selector: "rv-qrcode-renderer", inputs: ["component", "data", "pageNumber", "totalPages", "reportTitle"] }, { kind: "component", type: ListRendererComponent, selector: "rv-list-renderer", inputs: ["component", "data"] }, { kind: "component", type: LineRendererComponent, selector: "rv-line-renderer", inputs: ["component"] }, { kind: "component", type: ShapeRendererComponent, selector: "rv-shape-renderer", inputs: ["component"] }, { kind: "component", type: ContainerRendererComponent, selector: "rv-container-renderer", inputs: ["component", "data", "pageNumber", "totalPages", "reportTitle"] }, { kind: "component", type: ComplexTableRendererComponent, selector: "rv-complex-table-renderer", inputs: ["component", "data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
85
|
+
}
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ComponentRendererComponent, decorators: [{
|
|
87
|
+
type: Component,
|
|
88
|
+
args: [{ selector: 'rv-component-renderer', standalone: true, imports: [
|
|
89
|
+
CommonModule,
|
|
90
|
+
TextRendererComponent,
|
|
91
|
+
TableRendererComponent,
|
|
92
|
+
ChartRendererComponent,
|
|
93
|
+
ImageRendererComponent,
|
|
94
|
+
QrcodeRendererComponent,
|
|
95
|
+
ListRendererComponent,
|
|
96
|
+
LineRendererComponent,
|
|
97
|
+
ShapeRendererComponent,
|
|
98
|
+
ContainerRendererComponent,
|
|
99
|
+
ComplexTableRendererComponent,
|
|
100
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
101
|
+
<div class="rv-component" [ngStyle]="positionStyles">
|
|
102
|
+
<div class="rv-component-content" [ngStyle]="componentStyles">
|
|
103
|
+
@switch (component.type) {
|
|
104
|
+
@case ('text') {
|
|
105
|
+
<rv-text-renderer [component]="component" [data]="data"
|
|
106
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
107
|
+
}
|
|
108
|
+
@case ('field') {
|
|
109
|
+
<rv-text-renderer [component]="component" [data]="data"
|
|
110
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
111
|
+
}
|
|
112
|
+
@case ('table') {
|
|
113
|
+
<rv-table-renderer [component]="component" [data]="data" />
|
|
114
|
+
}
|
|
115
|
+
@case ('chart') {
|
|
116
|
+
<rv-chart-renderer [component]="component" [data]="data" />
|
|
117
|
+
}
|
|
118
|
+
@case ('image') {
|
|
119
|
+
<rv-image-renderer [component]="component" [data]="data"
|
|
120
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
121
|
+
}
|
|
122
|
+
@case ('qrcode') {
|
|
123
|
+
<rv-qrcode-renderer [component]="component" [data]="data"
|
|
124
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
125
|
+
}
|
|
126
|
+
@case ('list') {
|
|
127
|
+
<rv-list-renderer [component]="component" [data]="data" />
|
|
128
|
+
}
|
|
129
|
+
@case ('line') {
|
|
130
|
+
<rv-line-renderer [component]="component" />
|
|
131
|
+
}
|
|
132
|
+
@case ('shape') {
|
|
133
|
+
<rv-shape-renderer [component]="component" />
|
|
134
|
+
}
|
|
135
|
+
@case ('container') {
|
|
136
|
+
<rv-container-renderer [component]="component" [data]="data"
|
|
137
|
+
[pageNumber]="pageNumber" [totalPages]="totalPages" [reportTitle]="reportTitle" />
|
|
138
|
+
}
|
|
139
|
+
@case ('complex-table') {
|
|
140
|
+
<rv-complex-table-renderer [component]="component" [data]="data" />
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
145
|
+
`, styles: [".rv-component{position:absolute;box-sizing:border-box;overflow:hidden}.rv-component-content{width:100%;height:100%;box-sizing:border-box}\n"] }]
|
|
146
|
+
}], propDecorators: { component: [{
|
|
147
|
+
type: Input,
|
|
148
|
+
args: [{ required: true }]
|
|
149
|
+
}], data: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], pageNumber: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], totalPages: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], reportTitle: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}] } });
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudC1yZW5kZXJlci9jb21wb25lbnQtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDaEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7OztBQThFM0csTUFBTSxPQUFPLDBCQUEwQjtJQTVFdkM7UUErRVcsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBa0JsRDtJQWhCQyxJQUFJLGNBQWM7UUFDaEIsT0FBTztZQUNMLFVBQVUsRUFBRSxVQUFVO1lBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSTtZQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUk7WUFDdkMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJO1lBQ3pDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSTtZQUMzQyxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUM3QyxZQUFZLEVBQUUsWUFBWTtZQUMxQixVQUFVLEVBQUUsUUFBUTtTQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRSxDQUFDOytHQXhCVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixtTkEzRDNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q1Qsb05BMURDLFlBQVksb0hBQ1oscUJBQXFCLHVJQUNyQixzQkFBc0IsNkZBQ3RCLHNCQUFzQiw2RkFDdEIsc0JBQXNCLHdJQUN0Qix1QkFBdUIseUlBQ3ZCLHFCQUFxQiw0RkFDckIscUJBQXFCLG9GQUNyQixzQkFBc0IscUZBQ3RCLDBCQUEwQiw0SUFDMUIsNkJBQTZCOzs0RkE4RHBCLDBCQUEwQjtrQkE1RXRDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLDZCQUE2QjtxQkFDOUIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDs4QkFlMEIsU0FBUztzQkFBbkMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgU3R5bGVNYXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3R5bGUtbWFwcGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC1yZW5kZXJlci90ZXh0LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZVJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtcmVuZGVyZXIvdGFibGUtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENoYXJ0UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jaGFydC1yZW5kZXJlci9jaGFydC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW1hZ2VSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2ltYWdlLXJlbmRlcmVyL2ltYWdlLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRcmNvZGVSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL3FyY29kZS1yZW5kZXJlci9xcmNvZGUtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL2xpc3QtcmVuZGVyZXIvbGlzdC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGluZVJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbGluZS1yZW5kZXJlci9saW5lLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGFwZVJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcGUtcmVuZGVyZXIvc2hhcGUtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRhaW5lclJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29udGFpbmVyLXJlbmRlcmVyL2NvbnRhaW5lci1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGxleFRhYmxlUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wbGV4LXRhYmxlLXJlbmRlcmVyL2NvbXBsZXgtdGFibGUtcmVuZGVyZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnYtY29tcG9uZW50LXJlbmRlcmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUZXh0UmVuZGVyZXJDb21wb25lbnQsXG4gICAgVGFibGVSZW5kZXJlckNvbXBvbmVudCxcbiAgICBDaGFydFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEltYWdlUmVuZGVyZXJDb21wb25lbnQsXG4gICAgUXJjb2RlUmVuZGVyZXJDb21wb25lbnQsXG4gICAgTGlzdFJlbmRlcmVyQ29tcG9uZW50LFxuICAgIExpbmVSZW5kZXJlckNvbXBvbmVudCxcbiAgICBTaGFwZVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIENvbnRhaW5lclJlbmRlcmVyQ29tcG9uZW50LFxuICAgIENvbXBsZXhUYWJsZVJlbmRlcmVyQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnYtY29tcG9uZW50XCIgW25nU3R5bGVdPVwicG9zaXRpb25TdHlsZXNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJydi1jb21wb25lbnQtY29udGVudFwiIFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlc1wiPlxuICAgICAgICBAc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xuICAgICAgICAgIEBjYXNlICgndGV4dCcpIHtcbiAgICAgICAgICAgIDxydi10ZXh0LXJlbmRlcmVyIFtjb21wb25lbnRdPVwiY29tcG9uZW50XCIgW2RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgICAgIFtwYWdlTnVtYmVyXT1cInBhZ2VOdW1iZXJcIiBbdG90YWxQYWdlc109XCJ0b3RhbFBhZ2VzXCIgW3JlcG9ydFRpdGxlXT1cInJlcG9ydFRpdGxlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKCdmaWVsZCcpIHtcbiAgICAgICAgICAgIDxydi10ZXh0LXJlbmRlcmVyIFtjb21wb25lbnRdPVwiY29tcG9uZW50XCIgW2RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgICAgIFtwYWdlTnVtYmVyXT1cInBhZ2VOdW1iZXJcIiBbdG90YWxQYWdlc109XCJ0b3RhbFBhZ2VzXCIgW3JlcG9ydFRpdGxlXT1cInJlcG9ydFRpdGxlXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKCd0YWJsZScpIHtcbiAgICAgICAgICAgIDxydi10YWJsZS1yZW5kZXJlciBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiIFtkYXRhXT1cImRhdGFcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2NoYXJ0Jykge1xuICAgICAgICAgICAgPHJ2LWNoYXJ0LXJlbmRlcmVyIFtjb21wb25lbnRdPVwiY29tcG9uZW50XCIgW2RhdGFdPVwiZGF0YVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlICgnaW1hZ2UnKSB7XG4gICAgICAgICAgICA8cnYtaW1hZ2UtcmVuZGVyZXIgW2NvbXBvbmVudF09XCJjb21wb25lbnRcIiBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiIFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIiBbcmVwb3J0VGl0bGVdPVwicmVwb3J0VGl0bGVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ3FyY29kZScpIHtcbiAgICAgICAgICAgIDxydi1xcmNvZGUtcmVuZGVyZXIgW2NvbXBvbmVudF09XCJjb21wb25lbnRcIiBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiIFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIiBbcmVwb3J0VGl0bGVdPVwicmVwb3J0VGl0bGVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2xpc3QnKSB7XG4gICAgICAgICAgICA8cnYtbGlzdC1yZW5kZXJlciBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiIFtkYXRhXT1cImRhdGFcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2xpbmUnKSB7XG4gICAgICAgICAgICA8cnYtbGluZS1yZW5kZXJlciBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBjYXNlICgnc2hhcGUnKSB7XG4gICAgICAgICAgICA8cnYtc2hhcGUtcmVuZGVyZXIgW2NvbXBvbmVudF09XCJjb21wb25lbnRcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2NvbnRhaW5lcicpIHtcbiAgICAgICAgICAgIDxydi1jb250YWluZXItcmVuZGVyZXIgW2NvbXBvbmVudF09XCJjb21wb25lbnRcIiBbZGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiIFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIiBbcmVwb3J0VGl0bGVdPVwicmVwb3J0VGl0bGVcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ2NvbXBsZXgtdGFibGUnKSB7XG4gICAgICAgICAgICA8cnYtY29tcGxleC10YWJsZS1yZW5kZXJlciBbY29tcG9uZW50XT1cImNvbXBvbmVudFwiIFtkYXRhXT1cImRhdGFcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAucnYtY29tcG9uZW50IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgICAucnYtY29tcG9uZW50LWNvbnRlbnQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb21wb25lbnQhOiBDb21wb25lbnRNb2RlbDtcbiAgQElucHV0KCkgZGF0YTogYW55O1xuICBASW5wdXQoKSBwYWdlTnVtYmVyID0gMTtcbiAgQElucHV0KCkgdG90YWxQYWdlcyA9IDE7XG4gIEBJbnB1dCgpIHJlcG9ydFRpdGxlID0gJyc7XG5cbiAgcHJpdmF0ZSBzdHlsZU1hcHBlciA9IGluamVjdChTdHlsZU1hcHBlclNlcnZpY2UpO1xuXG4gIGdldCBwb3NpdGlvblN0eWxlcygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3Bvc2l0aW9uJzogJ2Fic29sdXRlJyxcbiAgICAgICdsZWZ0JzogdGhpcy5jb21wb25lbnQucG9zaXRpb24ueCArICdtbScsXG4gICAgICAndG9wJzogdGhpcy5jb21wb25lbnQucG9zaXRpb24ueSArICdtbScsXG4gICAgICAnd2lkdGgnOiB0aGlzLmNvbXBvbmVudC5zaXplLndpZHRoICsgJ21tJyxcbiAgICAgICdoZWlnaHQnOiB0aGlzLmNvbXBvbmVudC5zaXplLmhlaWdodCArICdtbScsXG4gICAgICAnei1pbmRleCc6IFN0cmluZyh0aGlzLmNvbXBvbmVudC56SW5kZXggfHwgMCksXG4gICAgICAnYm94LXNpemluZyc6ICdib3JkZXItYm94JyxcbiAgICAgICdvdmVyZmxvdyc6ICdoaWRkZW4nLFxuICAgIH07XG4gIH1cblxuICBnZXQgY29tcG9uZW50U3R5bGVzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0eWxlTWFwcGVyLm1hcENvbXBvbmVudFN0eWxlcyh0aGlzLmNvbXBvbmVudC5zdHlsZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, forwardRef } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ComponentRendererComponent } from '../component-renderer/component-renderer.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ContainerRendererComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.pageNumber = 1;
|
|
8
|
+
this.totalPages = 1;
|
|
9
|
+
this.reportTitle = '';
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContainerRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ContainerRendererComponent, isStandalone: true, selector: "rv-container-renderer", inputs: { component: "component", data: "data", pageNumber: "pageNumber", totalPages: "totalPages", reportTitle: "reportTitle" }, ngImport: i0, template: `
|
|
13
|
+
<div class="rv-container">
|
|
14
|
+
@for (child of component.children || []; track child.id) {
|
|
15
|
+
<rv-component-renderer
|
|
16
|
+
[component]="child"
|
|
17
|
+
[data]="data"
|
|
18
|
+
[pageNumber]="pageNumber"
|
|
19
|
+
[totalPages]="totalPages"
|
|
20
|
+
[reportTitle]="reportTitle">
|
|
21
|
+
</rv-component-renderer>
|
|
22
|
+
}
|
|
23
|
+
</div>
|
|
24
|
+
`, isInline: true, styles: [".rv-container{position:relative;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => ComponentRendererComponent), selector: "rv-component-renderer", inputs: ["component", "data", "pageNumber", "totalPages", "reportTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContainerRendererComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'rv-container-renderer', standalone: true, imports: [CommonModule, forwardRef(() => ComponentRendererComponent)], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
29
|
+
<div class="rv-container">
|
|
30
|
+
@for (child of component.children || []; track child.id) {
|
|
31
|
+
<rv-component-renderer
|
|
32
|
+
[component]="child"
|
|
33
|
+
[data]="data"
|
|
34
|
+
[pageNumber]="pageNumber"
|
|
35
|
+
[totalPages]="totalPages"
|
|
36
|
+
[reportTitle]="reportTitle">
|
|
37
|
+
</rv-component-renderer>
|
|
38
|
+
}
|
|
39
|
+
</div>
|
|
40
|
+
`, styles: [".rv-container{position:relative;width:100%;height:100%}\n"] }]
|
|
41
|
+
}], propDecorators: { component: [{
|
|
42
|
+
type: Input,
|
|
43
|
+
args: [{ required: true }]
|
|
44
|
+
}], data: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], pageNumber: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], totalPages: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], reportTitle: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}] } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhaW5lci1yZW5kZXJlci9jb250YWluZXItcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBNEJoRyxNQUFNLE9BQU8sMEJBQTBCO0lBMUJ2QztRQTZCVyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0tBQzNCOytHQU5ZLDBCQUEwQjttR0FBMUIsMEJBQTBCLG1OQXJCM0I7Ozs7Ozs7Ozs7OztHQVlULHNKQWRTLFlBQVksb0RBQW1CLDBCQUEwQjs7NEZBdUJ4RCwwQkFBMEI7a0JBMUJ0QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDLENBQUMsbUJBQ3BELHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7OztHQVlUOzhCQVUwQixTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnQtcmVuZGVyZXIvY29tcG9uZW50LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J2LWNvbnRhaW5lci1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50UmVuZGVyZXJDb21wb25lbnQpXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJ2LWNvbnRhaW5lclwiPlxuICAgICAgQGZvciAoY2hpbGQgb2YgY29tcG9uZW50LmNoaWxkcmVuIHx8IFtdOyB0cmFjayBjaGlsZC5pZCkge1xuICAgICAgICA8cnYtY29tcG9uZW50LXJlbmRlcmVyXG4gICAgICAgICAgW2NvbXBvbmVudF09XCJjaGlsZFwiXG4gICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgW3RvdGFsUGFnZXNdPVwidG90YWxQYWdlc1wiXG4gICAgICAgICAgW3JlcG9ydFRpdGxlXT1cInJlcG9ydFRpdGxlXCI+XG4gICAgICAgIDwvcnYtY29tcG9uZW50LXJlbmRlcmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLnJ2LWNvbnRhaW5lciB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhaW5lclJlbmRlcmVyQ29tcG9uZW50IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgY29tcG9uZW50ITogQ29tcG9uZW50TW9kZWw7XG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcbiAgQElucHV0KCkgcGFnZU51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHRvdGFsUGFnZXMgPSAxO1xuICBASW5wdXQoKSByZXBvcnRUaXRsZSA9ICcnO1xufVxuIl19
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, inject, signal } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { DataResolverService } from '../../services/data-resolver.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ImageRendererComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.pageNumber = 1;
|
|
8
|
+
this.totalPages = 1;
|
|
9
|
+
this.reportTitle = '';
|
|
10
|
+
this.imageError = signal(false);
|
|
11
|
+
this.dataResolver = inject(DataResolverService);
|
|
12
|
+
}
|
|
13
|
+
get imageUrl() {
|
|
14
|
+
if (this.component.imageConfig?.imageUrl) {
|
|
15
|
+
return this.component.imageConfig.imageUrl;
|
|
16
|
+
}
|
|
17
|
+
return this.dataResolver.resolveContent(this.component, this.data, this.pageNumber, this.totalPages, this.reportTitle);
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ImageRendererComponent, isStandalone: true, selector: "rv-image-renderer", inputs: { component: "component", data: "data", pageNumber: "pageNumber", totalPages: "totalPages", reportTitle: "reportTitle" }, ngImport: i0, template: `
|
|
21
|
+
<div class="rv-image">
|
|
22
|
+
@if (imageUrl && !imageError()) {
|
|
23
|
+
<img [src]="imageUrl"
|
|
24
|
+
[style.object-fit]="component.imageConfig?.objectFit || 'contain'"
|
|
25
|
+
alt="Image"
|
|
26
|
+
(error)="imageError.set(true)">
|
|
27
|
+
} @else {
|
|
28
|
+
<div class="rv-image-placeholder">
|
|
29
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="#999">
|
|
30
|
+
<path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/>
|
|
31
|
+
</svg>
|
|
32
|
+
</div>
|
|
33
|
+
}
|
|
34
|
+
</div>
|
|
35
|
+
`, isInline: true, styles: [".rv-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.rv-image img{max-width:100%;max-height:100%}.rv-image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:#f0f0f0;border:1px dashed #ccc}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageRendererComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'rv-image-renderer', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
40
|
+
<div class="rv-image">
|
|
41
|
+
@if (imageUrl && !imageError()) {
|
|
42
|
+
<img [src]="imageUrl"
|
|
43
|
+
[style.object-fit]="component.imageConfig?.objectFit || 'contain'"
|
|
44
|
+
alt="Image"
|
|
45
|
+
(error)="imageError.set(true)">
|
|
46
|
+
} @else {
|
|
47
|
+
<div class="rv-image-placeholder">
|
|
48
|
+
<svg width="32" height="32" viewBox="0 0 24 24" fill="#999">
|
|
49
|
+
<path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/>
|
|
50
|
+
</svg>
|
|
51
|
+
</div>
|
|
52
|
+
}
|
|
53
|
+
</div>
|
|
54
|
+
`, styles: [".rv-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.rv-image img{max-width:100%;max-height:100%}.rv-image-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;background:#f0f0f0;border:1px dashed #ccc}\n"] }]
|
|
55
|
+
}], propDecorators: { component: [{
|
|
56
|
+
type: Input,
|
|
57
|
+
args: [{ required: true }]
|
|
58
|
+
}], data: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], pageNumber: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], totalPages: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], reportTitle: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}] } });
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcmVuZGVyZXIvaW1hZ2UtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQThDM0UsTUFBTSxPQUFPLHNCQUFzQjtJQTVDbkM7UUErQ1csZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUUxQixlQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FVcEQ7SUFSQyxJQUFJLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUNyQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQzlFLENBQUM7SUFDSixDQUFDOytHQWxCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwrTUF2Q3ZCOzs7Ozs7Ozs7Ozs7Ozs7R0FlVCw4VkFqQlMsWUFBWTs7NEZBeUNYLHNCQUFzQjtrQkE1Q2xDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7R0FlVDs4QkF5QjBCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQubW9kZWwnO1xuaW1wb3J0IHsgRGF0YVJlc29sdmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2RhdGEtcmVzb2x2ZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J2LWltYWdlLXJlbmRlcmVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJydi1pbWFnZVwiPlxuICAgICAgQGlmIChpbWFnZVVybCAmJiAhaW1hZ2VFcnJvcigpKSB7XG4gICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVVybFwiXG4gICAgICAgICAgICAgW3N0eWxlLm9iamVjdC1maXRdPVwiY29tcG9uZW50LmltYWdlQ29uZmlnPy5vYmplY3RGaXQgfHwgJ2NvbnRhaW4nXCJcbiAgICAgICAgICAgICBhbHQ9XCJJbWFnZVwiXG4gICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3Iuc2V0KHRydWUpXCI+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJ2LWltYWdlLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIiM5OTlcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXpcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLnJ2LWltYWdlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG4gICAgLnJ2LWltYWdlIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAucnYtaW1hZ2UtcGxhY2Vob2xkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZDogI2YwZjBmMDtcbiAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VSZW5kZXJlckNvbXBvbmVudCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbXBvbmVudCE6IENvbXBvbmVudE1vZGVsO1xuICBASW5wdXQoKSBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpIHBhZ2VOdW1iZXIgPSAxO1xuICBASW5wdXQoKSB0b3RhbFBhZ2VzID0gMTtcbiAgQElucHV0KCkgcmVwb3J0VGl0bGUgPSAnJztcblxuICBpbWFnZUVycm9yID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIGRhdGFSZXNvbHZlciA9IGluamVjdChEYXRhUmVzb2x2ZXJTZXJ2aWNlKTtcblxuICBnZXQgaW1hZ2VVcmwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnQuaW1hZ2VDb25maWc/LmltYWdlVXJsKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQuaW1hZ2VDb25maWcuaW1hZ2VVcmw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRhdGFSZXNvbHZlci5yZXNvbHZlQ29udGVudChcbiAgICAgIHRoaXMuY29tcG9uZW50LCB0aGlzLmRhdGEsIHRoaXMucGFnZU51bWJlciwgdGhpcy50b3RhbFBhZ2VzLCB0aGlzLnJlcG9ydFRpdGxlXG4gICAgKTtcbiAgfVxufVxuIl19
|