bways-report 0.1.8 → 0.2.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 +463 -316
- package/esm2022/lib/core/config/bways-report-config.mjs +31 -32
- package/esm2022/lib/core/models/index.mjs +1 -1
- package/esm2022/lib/core/models/report-api-endpoint.model.mjs +8 -0
- package/esm2022/lib/core/models/report-component.model.mjs +1 -1
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/services/index.mjs +2 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +210 -0
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +76 -4
- package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
- package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
- package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +31 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +27 -2
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +4 -37
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +28 -51
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
- package/esm2022/lib/data-access/adapters/index.mjs +1 -1
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
- package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
- package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
- package/esm2022/lib/data-access/contracts/index.mjs +1 -1
- package/esm2022/lib/data-access/contracts/lookup.contract.mjs +1 -1
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +536 -6
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +55 -17
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +546 -119
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +142 -8
- package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +129 -28
- package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +27 -13
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
- package/esm2022/lib/features/designer/designer.component.mjs +109 -75
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
- package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
- package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
- package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +2 -1
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
- package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +6 -4
- package/esm2022/lib/features/routing/report-routes.mjs +6 -6
- package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +23 -4
- package/esm2022/lib/features/runtime/report-execution.service.mjs +36 -6
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +54 -11
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +105 -68
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +50 -42
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +16 -7
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +53 -1
- package/esm2022/lib/primitives/components/index.mjs +2 -1
- package/esm2022/lib/primitives/components/radio/rpt-radio.component.mjs +428 -0
- package/esm2022/lib/primitives/register-builtins.mjs +51 -2
- package/esm2022/lib/provide-reporting.mjs +11 -29
- package/fesm2022/bways-report.mjs +3745 -1281
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +27 -5
- package/lib/core/models/index.d.ts +2 -1
- package/lib/core/models/report-api-endpoint.model.d.ts +30 -0
- package/lib/core/models/report-component.model.d.ts +16 -4
- package/lib/core/models/report-datasource.model.d.ts +21 -2
- package/lib/core/services/index.d.ts +1 -0
- package/lib/core/services/report-api-execution.service.d.ts +41 -0
- package/lib/core/services/report-data-discovery.service.d.ts +23 -1
- package/lib/core/services/report-session-context.service.d.ts +9 -0
- package/lib/core/tokens/designer-config.token.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +4 -0
- package/lib/core/utils/report-endpoint.util.d.ts +12 -0
- package/lib/core/utils/report-request-scope.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-datasource.adapter.d.ts +2 -0
- package/lib/data-access/adapters/endpoint-lookup.adapter.d.ts +1 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
- package/lib/data-access/adapters/endpoint-tokens.d.ts +7 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +3 -4
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
- package/lib/data-access/adapters/index.d.ts +1 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
- package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
- package/lib/data-access/adapters/session-headers.d.ts +3 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/data-access/contracts/lookup.contract.d.ts +3 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +16 -0
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +21 -3
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +20 -7
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +2 -1
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
- package/lib/features/designer/designer.component.d.ts +16 -2
- package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
- package/lib/features/designer/services/designer-config.service.d.ts +13 -0
- package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
- package/lib/features/persistence/services/report-store.service.d.ts +15 -1
- package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
- package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +4 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +4 -1
- package/lib/features/runtime/report-runtime.component.d.ts +14 -1
- package/lib/features/runtime/rpt-report.component.d.ts +5 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
- package/lib/primitives/components/index.d.ts +2 -0
- package/lib/primitives/components/radio/rpt-radio.component.d.ts +77 -0
- package/package.json +2 -1
|
@@ -6,6 +6,17 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
8
8
|
import { ReportDefinition, ReportSummary } from '../../core/models/report-definition.model';
|
|
9
|
+
export interface ReportSaveOptions {
|
|
10
|
+
/** Reject an existing ID instead of updating it. Hosts should enforce this atomically. */
|
|
11
|
+
createOnly?: boolean;
|
|
12
|
+
/** Update only an existing report at this version; reject missing or changed records. */
|
|
13
|
+
expectedVersion?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ReportIdStatus {
|
|
16
|
+
exists: boolean;
|
|
17
|
+
name?: string;
|
|
18
|
+
version?: number;
|
|
19
|
+
}
|
|
9
20
|
/**
|
|
10
21
|
* Contract for persisting report definitions.
|
|
11
22
|
*
|
|
@@ -23,10 +34,14 @@ import { ReportDefinition, ReportSummary } from '../../core/models/report-defini
|
|
|
23
34
|
* ```
|
|
24
35
|
*/
|
|
25
36
|
export declare abstract class ReportPersistenceAdapter {
|
|
37
|
+
/** Returns true when this ID exists. Legacy host adapters may use the catalog fallback. */
|
|
38
|
+
checkId(reportId: string): Observable<boolean>;
|
|
39
|
+
/** Compact identity metadata used to confirm an overwrite. Legacy hosts use summaries. */
|
|
40
|
+
inspectId(reportId: string): Observable<ReportIdStatus>;
|
|
26
41
|
/** Load a full report definition by ID. */
|
|
27
42
|
abstract load(reportId: string): Observable<ReportDefinition>;
|
|
28
43
|
/** Save (create or update) a report definition. */
|
|
29
|
-
abstract save(report: ReportDefinition): Observable<ReportDefinition>;
|
|
44
|
+
abstract save(report: ReportDefinition, options?: ReportSaveOptions): Observable<ReportDefinition>;
|
|
30
45
|
/** List available reports (summaries only). */
|
|
31
46
|
abstract list(): Observable<ReportSummary[]>;
|
|
32
47
|
/** Delete a report by ID. */
|
|
@@ -6,6 +6,8 @@ export declare class ComponentPaletteComponent {
|
|
|
6
6
|
private readonly reportingConfig;
|
|
7
7
|
readonly collapseRequested: import("@angular/core").OutputEmitterRef<void>;
|
|
8
8
|
readonly searchQuery: import("@angular/core").WritableSignal<string>;
|
|
9
|
+
/** Selected category filter tab: 'all' or specific category name */
|
|
10
|
+
readonly selectedCategory: import("@angular/core").WritableSignal<string>;
|
|
9
11
|
/** Layout view mode: 'grid' (2-column side-by-side grid) or 'list' (compact row list). Defaults to 'grid'. */
|
|
10
12
|
readonly layoutMode: import("@angular/core").WritableSignal<"grid" | "list">;
|
|
11
13
|
/** Set of expanded category IDs */
|
|
@@ -15,6 +17,12 @@ export declare class ComponentPaletteComponent {
|
|
|
15
17
|
label: string;
|
|
16
18
|
icon: string;
|
|
17
19
|
}>;
|
|
20
|
+
/** Computed list of category tabs for quick one-click filtering */
|
|
21
|
+
readonly availableCategories: import("@angular/core").Signal<{
|
|
22
|
+
id: string;
|
|
23
|
+
label: string;
|
|
24
|
+
count: number;
|
|
25
|
+
}[]>;
|
|
18
26
|
readonly filteredCategories: import("@angular/core").Signal<{
|
|
19
27
|
name: string;
|
|
20
28
|
label: string;
|
|
@@ -22,15 +30,23 @@ export declare class ComponentPaletteComponent {
|
|
|
22
30
|
items: ReportingComponentMeta[];
|
|
23
31
|
}[]>;
|
|
24
32
|
readonly allExpanded: import("@angular/core").Signal<boolean>;
|
|
33
|
+
selectCategory(category: string): void;
|
|
25
34
|
isCategoryExpanded(categoryName: string): boolean;
|
|
26
35
|
toggleCategory(categoryName: string): void;
|
|
27
36
|
toggleAllCategories(): void;
|
|
28
37
|
getIconName(item: ReportingComponentMeta): string;
|
|
38
|
+
getComponentDescription(item: ReportingComponentMeta): string;
|
|
39
|
+
getGridLabel(item: ReportingComponentMeta): string;
|
|
40
|
+
getCategoryTheme(item: ReportingComponentMeta): string;
|
|
29
41
|
onItemDoubleClick(type: string): void;
|
|
30
42
|
onAddClick(event: MouseEvent, type: string): void;
|
|
31
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentPaletteComponent, never>;
|
|
32
44
|
static ɵcmp: i0.ɵɵComponentDeclaration<ComponentPaletteComponent, "rpt-component-palette", never, {}, { "collapseRequested": "collapseRequested"; }, never, never, true, never>;
|
|
33
45
|
}
|
|
46
|
+
/** Concise labels optimized for 2-column compact grid tiles (zero truncation) */
|
|
47
|
+
export declare const COMPONENT_SHORT_LABELS: Record<string, string>;
|
|
48
|
+
/** Dictionary of user-friendly micro-copy descriptions explaining each component's purpose */
|
|
49
|
+
export declare const COMPONENT_DESCRIPTIONS: Record<string, string>;
|
|
34
50
|
/** Dictionary of synonyms for component types and UI concepts */
|
|
35
51
|
export declare const COMPONENT_SYNONYMS: Record<string, string[]>;
|
|
36
52
|
/** Compute Levenshtein distance between two strings for typo tolerance */
|
|
@@ -5,6 +5,8 @@ import { ReportComponentDefinition } from '../../../../core/models/report-compon
|
|
|
5
5
|
import { getComponentIconName } from '../../utilities/canvas-layout.util';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class DesignCanvasComponent implements OnDestroy {
|
|
8
|
+
private readonly requests;
|
|
9
|
+
constructor();
|
|
8
10
|
private readonly designerState;
|
|
9
11
|
private gridFilterDebounceTimer;
|
|
10
12
|
private pendingGridState;
|
|
@@ -8,27 +8,59 @@ export interface ReportSavedDialogResult {
|
|
|
8
8
|
action: 'back_to_designer' | 'open_live_page';
|
|
9
9
|
report: ReportDefinition;
|
|
10
10
|
}
|
|
11
|
+
interface UpdateConfirmation {
|
|
12
|
+
report: ReportDefinition;
|
|
13
|
+
action: ReportSavedDialogResult['action'];
|
|
14
|
+
expectedVersion: number;
|
|
15
|
+
existingName: string;
|
|
16
|
+
contextKey: string;
|
|
17
|
+
}
|
|
11
18
|
export declare class ReportSavedDialogComponent {
|
|
12
19
|
private readonly dialogRef;
|
|
13
20
|
private readonly data;
|
|
14
21
|
private readonly store;
|
|
22
|
+
private readonly destroyRef;
|
|
15
23
|
private readonly reportingConfig;
|
|
16
|
-
private
|
|
24
|
+
private idCheck?;
|
|
25
|
+
private customSlug;
|
|
17
26
|
readonly report: ReportDefinition;
|
|
18
27
|
readonly baseRoute: import("@angular/core").WritableSignal<string>;
|
|
28
|
+
readonly reportId: import("@angular/core").WritableSignal<string>;
|
|
29
|
+
readonly isCheckingId: import("@angular/core").WritableSignal<boolean>;
|
|
30
|
+
readonly isPreparingSave: import("@angular/core").WritableSignal<boolean>;
|
|
31
|
+
readonly updateConfirmation: import("@angular/core").WritableSignal<UpdateConfirmation | null>;
|
|
32
|
+
readonly idAttempted: import("@angular/core").WritableSignal<boolean>;
|
|
33
|
+
readonly idStatus: import("@angular/core").WritableSignal<"error" | "duplicate" | "unchecked" | "checking" | "available" | "current">;
|
|
34
|
+
readonly idMessage: import("@angular/core").WritableSignal<string>;
|
|
35
|
+
readonly idChanged: import("@angular/core").Signal<boolean>;
|
|
36
|
+
readonly idError: import("@angular/core").Signal<"Enter a report ID." | "Use a report ID of at most 100 characters." | "Use letters, numbers, underscores or hyphens, starting with a letter or number." | "Choose another ID; \"new\" is reserved for the report builder." | null>;
|
|
19
37
|
readonly name: import("@angular/core").WritableSignal<string>;
|
|
38
|
+
readonly description: import("@angular/core").WritableSignal<string>;
|
|
39
|
+
readonly category: import("@angular/core").WritableSignal<string>;
|
|
20
40
|
readonly slug: import("@angular/core").WritableSignal<string>;
|
|
21
41
|
readonly menuGroup: import("@angular/core").WritableSignal<string>;
|
|
22
42
|
readonly isPublished: import("@angular/core").WritableSignal<boolean>;
|
|
23
43
|
readonly copied: import("@angular/core").WritableSignal<boolean>;
|
|
24
|
-
readonly
|
|
44
|
+
readonly isSaving: import("@angular/core").WritableSignal<boolean>;
|
|
45
|
+
readonly attempted: import("@angular/core").WritableSignal<boolean>;
|
|
46
|
+
readonly saveError: import("@angular/core").WritableSignal<string | null>;
|
|
47
|
+
readonly nameError: import("@angular/core").Signal<"Enter a report name." | null>;
|
|
48
|
+
readonly slugError: import("@angular/core").Signal<"Enter a URL slug." | "Use lowercase letters, numbers, and single hyphens." | "Choose a different slug; \"new\" is reserved for the report builder." | null>;
|
|
25
49
|
readonly fullRoute: import("@angular/core").Signal<string>;
|
|
26
50
|
readonly currentPreviewDef: import("@angular/core").Signal<ReportDefinition>;
|
|
27
|
-
|
|
51
|
+
onIdChange(value: string): void;
|
|
52
|
+
randomizeId(): void;
|
|
53
|
+
verifyId(): void;
|
|
54
|
+
onNameChange(value: string): void;
|
|
55
|
+
onSlugChange(value: string): void;
|
|
28
56
|
copyRoute(): void;
|
|
29
|
-
|
|
30
|
-
|
|
57
|
+
save(action?: ReportSavedDialogResult['action']): void;
|
|
58
|
+
cancelUpdate(): void;
|
|
59
|
+
confirmUpdate(): void;
|
|
60
|
+
private persist;
|
|
61
|
+
close(): void;
|
|
31
62
|
openLivePage(): void;
|
|
32
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportSavedDialogComponent, never>;
|
|
33
64
|
static ɵcmp: i0.ɵɵComponentDeclaration<ReportSavedDialogComponent, "rpt-report-saved-dialog", never, {}, {}, never, never, true, never>;
|
|
34
65
|
}
|
|
66
|
+
export {};
|
package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnDestroy
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
2
|
import { ComponentDataSourceDefinition, DropdownSourceType, ReportComponentDefinition } from '../../../../core/models/report-component.model';
|
|
3
3
|
import { DatabaseEntityMetadata, EntityColumnMetadata, ProcedureParameterMetadata } from '../../../../data-access/contracts/schema-discovery.contract';
|
|
4
4
|
import { SearchableSelectOption } from '../../../../primitives/components';
|
|
@@ -7,10 +7,14 @@ export interface StaticOptionItem {
|
|
|
7
7
|
key: string;
|
|
8
8
|
label: string;
|
|
9
9
|
}
|
|
10
|
-
export declare class PropertyEditorDatasourceComponent implements
|
|
10
|
+
export declare class PropertyEditorDatasourceComponent implements OnDestroy {
|
|
11
|
+
private readonly endpointScope;
|
|
12
|
+
private entitiesSub?;
|
|
11
13
|
private readonly discoveryAdapter;
|
|
12
14
|
private readonly sessionService;
|
|
13
15
|
private readonly designerState;
|
|
16
|
+
private readonly dataDiscovery;
|
|
17
|
+
private readonly endpoints;
|
|
14
18
|
private lastLoadedKey;
|
|
15
19
|
private columnsSub?;
|
|
16
20
|
private paramsSub?;
|
|
@@ -23,11 +27,21 @@ export declare class PropertyEditorDatasourceComponent implements OnInit, OnDest
|
|
|
23
27
|
}>;
|
|
24
28
|
readonly isAdvancedMode: import("@angular/core").WritableSignal<boolean>;
|
|
25
29
|
readonly isLoadingEntities: import("@angular/core").WritableSignal<boolean>;
|
|
30
|
+
readonly isTestingApi: import("@angular/core").WritableSignal<boolean>;
|
|
31
|
+
readonly apiTestStatus: import("@angular/core").WritableSignal<{
|
|
32
|
+
message: string;
|
|
33
|
+
kind: "success" | "error";
|
|
34
|
+
} | null>;
|
|
26
35
|
readonly allEntities: import("@angular/core").WritableSignal<DatabaseEntityMetadata[]>;
|
|
27
36
|
readonly entityColumns: import("@angular/core").WritableSignal<EntityColumnMetadata[]>;
|
|
28
37
|
readonly procedureParameters: import("@angular/core").WritableSignal<ProcedureParameterMetadata[]>;
|
|
29
38
|
readonly currentSourceType: import("@angular/core").Signal<DropdownSourceType>;
|
|
30
39
|
readonly selectedEntity: import("@angular/core").Signal<string>;
|
|
40
|
+
readonly selectedApiEndpoint: import("@angular/core").Signal<string>;
|
|
41
|
+
readonly selectedApiMethod: import("@angular/core").Signal<"GET" | "POST">;
|
|
42
|
+
readonly selectedDataPath: import("@angular/core").Signal<string>;
|
|
43
|
+
readonly selectedUseProxy: import("@angular/core").Signal<boolean>;
|
|
44
|
+
readonly registeredApis: import("@angular/core").Signal<SearchableSelectOption<any>[]>;
|
|
31
45
|
readonly selectedValueField: import("@angular/core").Signal<string>;
|
|
32
46
|
readonly selectedDisplayField: import("@angular/core").Signal<string>;
|
|
33
47
|
readonly selectedDependsOn: import("@angular/core").Signal<string>;
|
|
@@ -57,7 +71,6 @@ export declare class PropertyEditorDatasourceComponent implements OnInit, OnDest
|
|
|
57
71
|
readonly valueFieldSelectOptions: import("@angular/core").Signal<SearchableSelectOption<any>[]>;
|
|
58
72
|
readonly parentFieldSelectOptions: import("@angular/core").Signal<SearchableSelectOption<any>[]>;
|
|
59
73
|
constructor();
|
|
60
|
-
ngOnInit(): void;
|
|
61
74
|
ngOnDestroy(): void;
|
|
62
75
|
loadEntities(): void;
|
|
63
76
|
loadEntityDetails(entityName: string, type: DropdownSourceType): void;
|
|
@@ -72,6 +85,11 @@ export declare class PropertyEditorDatasourceComponent implements OnInit, OnDest
|
|
|
72
85
|
*/
|
|
73
86
|
autoWireAllParameters(paramsList?: ProcedureParameterMetadata[]): void;
|
|
74
87
|
setSourceType(type: DropdownSourceType): void;
|
|
88
|
+
onApiEndpointSelected(endpoint: string): void;
|
|
89
|
+
onApiMethodChanged(method: 'GET' | 'POST'): void;
|
|
90
|
+
onDataPathChanged(dataPath: string): void;
|
|
91
|
+
onUseProxyChanged(useProxy: boolean): void;
|
|
92
|
+
testAndDetectApiColumns(): void;
|
|
75
93
|
onEntitySelected(entityName: string): void;
|
|
76
94
|
onValueFieldChanged(valueField: string): void;
|
|
77
95
|
onDisplayFieldChanged(displayField: string): void;
|
package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ import { DatabaseEntityMetadata, ProcedureParameterMetadata } from '../../../../
|
|
|
5
5
|
import { SearchableSelectOption } from '../../../../primitives/components';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class PropertyEditorGridComponent {
|
|
8
|
+
private readonly endpointScope;
|
|
8
9
|
private readonly dataDiscovery;
|
|
10
|
+
private readonly endpoints;
|
|
9
11
|
readonly grid: import("@angular/core").InputSignal<ReportGridDefinition | undefined>;
|
|
10
12
|
readonly dataSource: import("@angular/core").InputSignal<ReportDataSourceDefinition | undefined>;
|
|
11
13
|
readonly availableEntities: import("@angular/core").InputSignal<DatabaseEntityMetadata[]>;
|
|
@@ -33,11 +35,22 @@ export declare class PropertyEditorGridComponent {
|
|
|
33
35
|
readonly updateDataSourceParameters: import("@angular/core").OutputEmitterRef<Record<string, unknown>>;
|
|
34
36
|
readonly entityChanged: import("@angular/core").OutputEmitterRef<{
|
|
35
37
|
name: string;
|
|
36
|
-
type: "stored_procedure" | "table";
|
|
38
|
+
type: "stored_procedure" | "table" | "api";
|
|
37
39
|
}>;
|
|
38
40
|
readonly internalParameters: import("@angular/core").WritableSignal<ProcedureParameterMetadata[]>;
|
|
39
41
|
readonly effectiveParameters: import("@angular/core").Signal<ProcedureParameterMetadata[]>;
|
|
40
|
-
readonly
|
|
42
|
+
readonly internalEntities: import("@angular/core").WritableSignal<DatabaseEntityMetadata[]>;
|
|
43
|
+
readonly allEntities: import("@angular/core").Signal<DatabaseEntityMetadata[]>;
|
|
44
|
+
readonly activeSourceType: import("@angular/core").WritableSignal<"table" | "api" | "stored_procedure">;
|
|
45
|
+
readonly currentSourceType: import("@angular/core").Signal<"table" | "api" | "stored_procedure">;
|
|
46
|
+
readonly activeEntityName: import("@angular/core").Signal<string>;
|
|
47
|
+
readonly apiEndpoint: import("@angular/core").Signal<string>;
|
|
48
|
+
readonly apiMethod: import("@angular/core").Signal<"GET" | "POST">;
|
|
49
|
+
readonly apiDataPath: import("@angular/core").Signal<string>;
|
|
50
|
+
readonly apiUseProxy: import("@angular/core").Signal<boolean>;
|
|
51
|
+
readonly registeredApis: import("@angular/core").Signal<SearchableSelectOption<any>[]>;
|
|
52
|
+
readonly availableTables: import("@angular/core").Signal<DatabaseEntityMetadata[]>;
|
|
53
|
+
readonly availableProcedures: import("@angular/core").Signal<DatabaseEntityMetadata[]>;
|
|
41
54
|
readonly isExecSnippetOpen: import("@angular/core").WritableSignal<boolean>;
|
|
42
55
|
readonly execSnippetText: import("@angular/core").WritableSignal<string>;
|
|
43
56
|
readonly execParseStatus: import("@angular/core").WritableSignal<{
|
|
@@ -47,10 +60,6 @@ export declare class PropertyEditorGridComponent {
|
|
|
47
60
|
toggleExecSnippet(): void;
|
|
48
61
|
applyExecSnippet(): void;
|
|
49
62
|
constructor();
|
|
50
|
-
readonly currentSourceType: import("@angular/core").Signal<"table" | "stored_procedure">;
|
|
51
|
-
readonly activeEntityName: import("@angular/core").Signal<string>;
|
|
52
|
-
readonly availableTables: import("@angular/core").Signal<DatabaseEntityMetadata[]>;
|
|
53
|
-
readonly availableProcedures: import("@angular/core").Signal<DatabaseEntityMetadata[]>;
|
|
54
63
|
readonly activeEntityList: import("@angular/core").Signal<DatabaseEntityMetadata[]>;
|
|
55
64
|
readonly gridEntitySelectOptions: import("@angular/core").Signal<SearchableSelectOption<any>[]>;
|
|
56
65
|
readonly columns: import("@angular/core").Signal<GridColumnDefinition[]>;
|
|
@@ -60,7 +69,11 @@ export declare class PropertyEditorGridComponent {
|
|
|
60
69
|
key: string;
|
|
61
70
|
value: string;
|
|
62
71
|
}[]>;
|
|
63
|
-
onSourceTypeChange(type: 'stored_procedure' | 'table'): void;
|
|
72
|
+
onSourceTypeChange(type: 'stored_procedure' | 'table' | 'api'): void;
|
|
73
|
+
onApiEndpointChange(endpoint: string): void;
|
|
74
|
+
onApiMethodChange(method: 'GET' | 'POST'): void;
|
|
75
|
+
onApiDataPathChange(dataPath: string): void;
|
|
76
|
+
onApiUseProxyChange(useProxy: boolean): void;
|
|
64
77
|
onSelectEntity(entityName: string): void;
|
|
65
78
|
getParameterValue(paramName: string): string | number | boolean;
|
|
66
79
|
onParameterChange(paramName: string, value: string | number | boolean): void;
|
|
@@ -18,6 +18,7 @@ export declare class PropertyEditorComponent {
|
|
|
18
18
|
private readonly discoveryAdapter;
|
|
19
19
|
private readonly lookupAdapter;
|
|
20
20
|
private readonly sessionService;
|
|
21
|
+
private readonly endpointScope;
|
|
21
22
|
private readonly dataDiscovery;
|
|
22
23
|
readonly isDetectingColumns: import("@angular/core").WritableSignal<boolean>;
|
|
23
24
|
readonly gridDetectionStatus: import("@angular/core").WritableSignal<{
|
|
@@ -57,7 +58,7 @@ export declare class PropertyEditorComponent {
|
|
|
57
58
|
updateGridRowClickAction(action: GridRowClickAction | undefined): void;
|
|
58
59
|
onGridEntityChanged(event: {
|
|
59
60
|
name: string;
|
|
60
|
-
type: 'stored_procedure' | 'table';
|
|
61
|
+
type: 'stored_procedure' | 'table' | 'api';
|
|
61
62
|
}): void;
|
|
62
63
|
onGridDataSourceParametersChanged(mappings: Record<string, unknown>): void;
|
|
63
64
|
autoDetectGridColumns(): void;
|
|
@@ -3,8 +3,13 @@ import { ReportBlueprint } from '../../services/report-template.service';
|
|
|
3
3
|
import { ReportDefinition } from '../../../../core/models/report-definition.model';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class DesignerToolbarComponent {
|
|
6
|
+
private readonly requests;
|
|
7
|
+
readonly catalogLoading: import("@angular/core").WritableSignal<boolean>;
|
|
8
|
+
readonly catalogError: import("@angular/core").WritableSignal<string | null>;
|
|
9
|
+
readonly isSwitchingReport: import("@angular/core").WritableSignal<boolean>;
|
|
6
10
|
private readonly designerState;
|
|
7
11
|
private readonly templateService;
|
|
12
|
+
private readonly endpointScope;
|
|
8
13
|
private readonly reportStore;
|
|
9
14
|
readonly definition: import("@angular/core").WritableSignal<ReportDefinition>;
|
|
10
15
|
readonly viewMode: import("@angular/core").WritableSignal<DesignerViewMode>;
|
|
@@ -26,7 +31,8 @@ export declare class DesignerToolbarComponent {
|
|
|
26
31
|
saveRename(): void;
|
|
27
32
|
cancelRename(): void;
|
|
28
33
|
createNewReport(): void;
|
|
29
|
-
|
|
34
|
+
refreshReports(): void;
|
|
35
|
+
onSwitchReport(reportId: string, select?: HTMLSelectElement): void;
|
|
30
36
|
private toSlug;
|
|
31
37
|
setMode(mode: DesignerViewMode): void;
|
|
32
38
|
undo(): void;
|
|
@@ -1,12 +1,26 @@
|
|
|
1
|
+
import { BwaysReportConfig } from '../../core/config/bways-report-config';
|
|
1
2
|
import { OnInit } from '@angular/core';
|
|
2
3
|
import { ReportDefinition } from '../../core/models/report-definition.model';
|
|
3
4
|
import { DesignerStateService } from './services/designer-state.service';
|
|
5
|
+
import { BwaysReportApiUrls } from '../../data-access/adapters/endpoint-tokens';
|
|
4
6
|
import * as i0 from "@angular/core";
|
|
5
7
|
export declare class DesignerComponent implements OnInit {
|
|
8
|
+
private readonly requests;
|
|
9
|
+
readonly loadError: import("@angular/core").WritableSignal<string | null>;
|
|
10
|
+
private readonly injector;
|
|
11
|
+
private readonly destroyRef;
|
|
12
|
+
private saveDialogOpen;
|
|
13
|
+
private readonly endpointScope;
|
|
14
|
+
private readonly configuration;
|
|
15
|
+
/** Page-local settings; omitted values inherit optional application defaults. */
|
|
16
|
+
set config(value: BwaysReportConfig | null | undefined);
|
|
17
|
+
/** Override any subset of configured URLs for this designer and its preview. */
|
|
18
|
+
set apiUrl(value: BwaysReportApiUrls | null | undefined);
|
|
6
19
|
readonly designerState: DesignerStateService;
|
|
7
20
|
private readonly persistenceAdapter;
|
|
8
21
|
private readonly dataSourceAdapter;
|
|
9
22
|
private readonly sessionService;
|
|
23
|
+
private readonly executionService;
|
|
10
24
|
private readonly dialog;
|
|
11
25
|
private readonly router;
|
|
12
26
|
private readonly reportingConfig;
|
|
@@ -45,8 +59,8 @@ export declare class DesignerComponent implements OnInit {
|
|
|
45
59
|
private lastEmittedDef;
|
|
46
60
|
constructor();
|
|
47
61
|
ngOnInit(): void;
|
|
62
|
+
retryLoad(): void;
|
|
48
63
|
onSave(): void;
|
|
49
|
-
private openSavedDialog;
|
|
50
64
|
onPreviewExecute(event: {
|
|
51
65
|
definition: ReportDefinition;
|
|
52
66
|
parameters: Record<string, unknown>;
|
|
@@ -58,5 +72,5 @@ export declare class DesignerComponent implements OnInit {
|
|
|
58
72
|
private syntaxHighlightJson;
|
|
59
73
|
private showToast;
|
|
60
74
|
static ɵfac: i0.ɵɵFactoryDeclaration<DesignerComponent, never>;
|
|
61
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DesignerComponent, "rpt-designer", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "definition": { "alias": "initialReport"; "required": false; "isSignal": true; }; }, { "reportSaved": "save"; "definitionChanged": "definitionChange"; }, never, never, true, never>;
|
|
75
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DesignerComponent, "rpt-designer", never, { "config": { "alias": "config"; "required": false; }; "apiUrl": { "alias": "apiUrl"; "required": false; }; "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "definition": { "alias": "initialReport"; "required": false; "isSignal": true; }; }, { "reportSaved": "save"; "definitionChanged": "definitionChange"; }, never, never, true, never>;
|
|
62
76
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { BwaysReportConfig } from '../../core/config/bways-report-config';
|
|
2
|
+
import { BwaysReportApiUrls } from '../../data-access/adapters/endpoint-tokens';
|
|
1
3
|
import { ReportDefinition } from '../../core/models/report-definition.model';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
/**
|
|
@@ -16,6 +18,8 @@ import * as i0 from "@angular/core";
|
|
|
16
18
|
* ```
|
|
17
19
|
*/
|
|
18
20
|
export declare class RptReportDesignerComponent {
|
|
21
|
+
readonly config: import("@angular/core").InputSignal<BwaysReportConfig | null>;
|
|
22
|
+
readonly apiUrl: import("@angular/core").InputSignal<BwaysReportApiUrls | null>;
|
|
19
23
|
/** Report ID to automatically load via configured ReportPersistenceAdapter */
|
|
20
24
|
readonly id: import("@angular/core").InputSignal<string | undefined>;
|
|
21
25
|
/** Report definition to load directly in memory */
|
|
@@ -34,5 +38,5 @@ export declare class RptReportDesignerComponent {
|
|
|
34
38
|
onDefinitionChange(definition: ReportDefinition): void;
|
|
35
39
|
onClose(): void;
|
|
36
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<RptReportDesignerComponent, never>;
|
|
37
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RptReportDesignerComponent, "rpt-report-designer, rpt-designer-view", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "report": { "alias": "report"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "closed": "closed"; "definitionChange": "definitionChange"; }, never, never, true, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RptReportDesignerComponent, "rpt-report-designer, rpt-designer-view", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "apiUrl": { "alias": "apiUrl"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "report": { "alias": "report"; "required": false; "isSignal": true; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "closed": "closed"; "definitionChange": "definitionChange"; }, never, never, true, never>;
|
|
38
42
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BwaysReportConfig } from '../../../core/config/bways-report-config';
|
|
2
|
+
import { ReportingConfig } from '../../../core/tokens/reporting-config.token';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DesignerConfigService {
|
|
5
|
+
private readonly inherited;
|
|
6
|
+
readonly local: import("@angular/core").WritableSignal<BwaysReportConfig | null>;
|
|
7
|
+
private readonly effective;
|
|
8
|
+
readonly reporting: ReportingConfig;
|
|
9
|
+
constructor();
|
|
10
|
+
set(value: BwaysReportConfig | null | undefined): void;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DesignerConfigService, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DesignerConfigService>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Provider, Type } from '@angular/core';
|
|
2
|
+
import { BwaysReportApiUrls, BwaysReportEndpoints } from '../../../data-access/adapters/endpoint-tokens';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** Private state owned by one designer; never mutates application providers. */
|
|
5
|
+
export declare class DesignerEndpointsService {
|
|
6
|
+
private readonly defaults;
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly injector;
|
|
9
|
+
private readonly pageConfig;
|
|
10
|
+
private readonly adapters;
|
|
11
|
+
private overrides;
|
|
12
|
+
readonly revision: import("@angular/core").WritableSignal<number>;
|
|
13
|
+
private readonly resolved;
|
|
14
|
+
readonly endpoints: BwaysReportEndpoints;
|
|
15
|
+
setOverrides(value: BwaysReportApiUrls | null | undefined): void;
|
|
16
|
+
hasOverride(keys: (keyof BwaysReportApiUrls)[]): boolean;
|
|
17
|
+
adapter<T>(type: Type<T>): T;
|
|
18
|
+
isConfigured(): boolean;
|
|
19
|
+
refresh(): void;
|
|
20
|
+
usesDefaultStorageBase(): boolean;
|
|
21
|
+
private merged;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DesignerEndpointsService, never>;
|
|
23
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DesignerEndpointsService>;
|
|
24
|
+
}
|
|
25
|
+
export declare const DESIGNER_ENDPOINT_PROVIDERS: Provider[];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { ReportDefinition, ReportSummary } from '../../../core/models/report-definition.model';
|
|
3
|
+
import { ReportSaveOptions, ReportIdStatus } from '../../../data-access/contracts/report-persistence.contract';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
/**
|
|
5
6
|
* ReportStoreService manages application-wide cached report states,
|
|
@@ -8,6 +9,12 @@ import * as i0 from "@angular/core";
|
|
|
8
9
|
export declare class ReportStoreService {
|
|
9
10
|
private readonly adapter;
|
|
10
11
|
private readonly validator;
|
|
12
|
+
private readonly session;
|
|
13
|
+
private readonly endpoints;
|
|
14
|
+
private cacheContext;
|
|
15
|
+
private currentCacheContext;
|
|
16
|
+
private guardCacheContext;
|
|
17
|
+
private ensureCacheContext;
|
|
11
18
|
/** List of all known report summaries */
|
|
12
19
|
readonly summaries: import("@angular/core").WritableSignal<ReportSummary[]>;
|
|
13
20
|
/** In-memory cache of loaded full report definitions by ID */
|
|
@@ -39,7 +46,14 @@ export declare class ReportStoreService {
|
|
|
39
46
|
/**
|
|
40
47
|
* Saves a report definition, validates it, and updates local cache.
|
|
41
48
|
*/
|
|
42
|
-
|
|
49
|
+
/** Opaque endpoint/session identity for pending user confirmations. */
|
|
50
|
+
getStorageContextKey(): string;
|
|
51
|
+
inspectReportId(id: string): Observable<ReportIdStatus>;
|
|
52
|
+
checkReportId(id: string): Observable<boolean>;
|
|
53
|
+
/** Saves a validated report definition and updates the local cache. */
|
|
54
|
+
saveReport(report: ReportDefinition, options?: ReportSaveOptions): Observable<ReportDefinition>;
|
|
55
|
+
/** Accepts an already persisted report without issuing another database write. */
|
|
56
|
+
cacheSavedReport(report: ReportDefinition): void;
|
|
43
57
|
/**
|
|
44
58
|
* Deletes a report definition by ID.
|
|
45
59
|
*/
|
|
@@ -16,6 +16,8 @@ export interface SchemaValidationResult {
|
|
|
16
16
|
* - Column span boundary violations
|
|
17
17
|
*/
|
|
18
18
|
export declare function validateReportSchema(definition: ReportDefinition): SchemaValidationResult;
|
|
19
|
+
/** Normalize legacy optional collections only after verifying unknown input is safe. */
|
|
20
|
+
export declare function normalizeReportDefinition(value: unknown): ReportDefinition;
|
|
19
21
|
/**
|
|
20
22
|
* SchemaValidatorService provides schema verification methods.
|
|
21
23
|
*/
|
|
@@ -6,8 +6,12 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
* Live Preview and the designer canvas so all three behave identically.
|
|
7
7
|
*/
|
|
8
8
|
export declare class ReportExecutionService {
|
|
9
|
+
private readonly config;
|
|
10
|
+
private readonly endpoints;
|
|
11
|
+
private guard;
|
|
9
12
|
private readonly adapter;
|
|
10
13
|
private readonly session;
|
|
14
|
+
private readonly apiExecutionService;
|
|
11
15
|
/** Canvas field keys the user still has to fill before the report can run. */
|
|
12
16
|
getMissingFields(def: ReportDefinition, formValues: Record<string, unknown>): string[];
|
|
13
17
|
execute(def: ReportDefinition, formValues: Record<string, unknown>): Observable<unknown[]>;
|
|
@@ -9,6 +9,7 @@ export declare class RptGridOutletDirective implements OnDestroy {
|
|
|
9
9
|
private lastEmittedColumnDefs;
|
|
10
10
|
private readonly appliedInputs;
|
|
11
11
|
readonly componentType: import("@angular/core").InputSignal<Type<any> | null>;
|
|
12
|
+
readonly instanceKey: import("@angular/core").InputSignal<string | null>;
|
|
12
13
|
readonly inputs: import("@angular/core").InputSignal<Record<string, unknown>>;
|
|
13
14
|
readonly gridStateChange: import("@angular/core").OutputEmitterRef<any>;
|
|
14
15
|
readonly columnDefsChange: import("@angular/core").OutputEmitterRef<any>;
|
|
@@ -26,9 +27,10 @@ export declare class RptGridOutletDirective implements OnDestroy {
|
|
|
26
27
|
private clear;
|
|
27
28
|
ngOnDestroy(): void;
|
|
28
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<RptGridOutletDirective, never>;
|
|
29
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<RptGridOutletDirective, "[rptGridOutlet]", never, { "componentType": { "alias": "rptGridOutlet"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; }, { "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowClick": "rowClick"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
30
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RptGridOutletDirective, "[rptGridOutlet]", never, { "componentType": { "alias": "rptGridOutlet"; "required": false; "isSignal": true; }; "instanceKey": { "alias": "instanceKey"; "required": false; "isSignal": true; }; "inputs": { "alias": "inputs"; "required": false; "isSignal": true; }; }, { "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "rowClick": "rowClick"; "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
30
31
|
}
|
|
31
32
|
export declare class ReportGridBridgeComponent {
|
|
33
|
+
private readonly designerConfig;
|
|
32
34
|
private readonly injectedGrid;
|
|
33
35
|
private readonly storage;
|
|
34
36
|
constructor();
|
|
@@ -104,6 +106,7 @@ export declare class ReportGridBridgeComponent {
|
|
|
104
106
|
statusBar: boolean;
|
|
105
107
|
rowClickAction?: import("../../core/models/report-grid.model").GridRowClickAction;
|
|
106
108
|
}>;
|
|
109
|
+
private reconcileColumnGroupDefs;
|
|
107
110
|
readonly gridReportState: import("@angular/core").Signal<any>;
|
|
108
111
|
readonly gridInputs: import("@angular/core").Signal<{
|
|
109
112
|
columns: {
|
|
@@ -4,6 +4,7 @@ import { ComponentActionDefinition } from '../../core/models/component-event.mod
|
|
|
4
4
|
import { GridRowClickAction } from '../../core/models/report-grid.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export declare class ReportRuntimeComponent {
|
|
7
|
+
private readonly requests;
|
|
7
8
|
private readonly persistenceAdapter;
|
|
8
9
|
private readonly dataSourceAdapter;
|
|
9
10
|
private readonly sessionService;
|
|
@@ -12,9 +13,21 @@ export declare class ReportRuntimeComponent {
|
|
|
12
13
|
readonly reportId: import("@angular/core").InputSignal<string | undefined>;
|
|
13
14
|
/** Directly passed report definition (skips persistence adapter) */
|
|
14
15
|
readonly definition: import("@angular/core").InputSignal<ReportDefinition | null>;
|
|
16
|
+
/** Optional pre-loaded or canvas-shared result data */
|
|
17
|
+
readonly initialData: import("@angular/core").InputSignal<unknown[] | null>;
|
|
15
18
|
readonly resetRequested: import("@angular/core").OutputEmitterRef<{
|
|
16
19
|
definition: ReportDefinition;
|
|
17
20
|
}>;
|
|
21
|
+
readonly execute: import("@angular/core").OutputEmitterRef<{
|
|
22
|
+
definition: ReportDefinition;
|
|
23
|
+
parameters: Record<string, unknown>;
|
|
24
|
+
data: unknown[] | null;
|
|
25
|
+
}>;
|
|
26
|
+
readonly executed: import("@angular/core").OutputEmitterRef<{
|
|
27
|
+
definition: ReportDefinition;
|
|
28
|
+
parameters: Record<string, unknown>;
|
|
29
|
+
data: unknown[] | null;
|
|
30
|
+
}>;
|
|
18
31
|
readonly exportRequested: import("@angular/core").OutputEmitterRef<{
|
|
19
32
|
format: string;
|
|
20
33
|
fileName?: string;
|
|
@@ -107,5 +120,5 @@ export declare class ReportRuntimeComponent {
|
|
|
107
120
|
retryDrawer(): void;
|
|
108
121
|
retry(): void;
|
|
109
122
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportRuntimeComponent, never>;
|
|
110
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ReportRuntimeComponent, "rpt-report-runtime, rpt-runtime", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "definition": { "alias": "report"; "required": false; "isSignal": true; }; }, { "resetRequested": "resetRequested"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; "customActionTriggered": "customActionTriggered"; "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "selectionChange": "selectionChange"; "selectionChanged": "selectionChanged"; "rowActionTriggered": "rowActionTriggered"; "drilldownRequested": "drilldownRequested"; }, never, never, true, never>;
|
|
123
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ReportRuntimeComponent, "rpt-report-runtime, rpt-runtime", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "definition": { "alias": "report"; "required": false; "isSignal": true; }; "initialData": { "alias": "resultData"; "required": false; "isSignal": true; }; }, { "resetRequested": "resetRequested"; "execute": "execute"; "executed": "executed"; "exportRequested": "exportRequested"; "printRequested": "printRequested"; "customActionTriggered": "customActionTriggered"; "gridStateChange": "gridStateChange"; "columnDefsChange": "columnDefsChange"; "selectionChange": "selectionChange"; "selectionChanged": "selectionChanged"; "rowActionTriggered": "rowActionTriggered"; "drilldownRequested": "drilldownRequested"; }, never, never, true, never>;
|
|
111
124
|
}
|
|
@@ -10,6 +10,10 @@ export interface ReportViewPreset {
|
|
|
10
10
|
createdAt?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare class RptReportComponent {
|
|
13
|
+
private readonly requests;
|
|
14
|
+
readonly presetError: import("@angular/core").WritableSignal<string | null>;
|
|
15
|
+
readonly isSavingPreset: import("@angular/core").WritableSignal<boolean>;
|
|
16
|
+
private readonly persistedDefinition;
|
|
13
17
|
private readonly exportService;
|
|
14
18
|
private readonly persistence;
|
|
15
19
|
readonly id: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -61,6 +65,7 @@ export declare class RptReportComponent {
|
|
|
61
65
|
closeSavePresetModal(): void;
|
|
62
66
|
saveCurrentPreset(): void;
|
|
63
67
|
deletePreset(presetId: string): void;
|
|
68
|
+
private persistPresets;
|
|
64
69
|
onExportExcel(): void;
|
|
65
70
|
onExportCsv(): void;
|
|
66
71
|
onPrintReport(): void;
|
|
@@ -8,7 +8,9 @@ export interface ChartDataItem {
|
|
|
8
8
|
}
|
|
9
9
|
export type ChartType = 'bar' | 'line' | 'donut';
|
|
10
10
|
export declare class ReportChartBridgeComponent {
|
|
11
|
-
readonly
|
|
11
|
+
private readonly injectedChart;
|
|
12
|
+
private readonly designerConfig;
|
|
13
|
+
get hostChartComponent(): Type<unknown> | null;
|
|
12
14
|
readonly definition: import("@angular/core").InputSignal<ReportComponentDefinition | undefined>;
|
|
13
15
|
readonly customData: import("@angular/core").InputSignal<ChartDataItem[] | undefined>;
|
|
14
16
|
readonly customChartType: import("@angular/core").InputSignal<ChartType | undefined>;
|
|
@@ -14,3 +14,5 @@ export type { ChartDataItem, ChartType } from './chart-bridge/report-chart-bridg
|
|
|
14
14
|
export { RptIconComponent } from './icon/rpt-icon.component';
|
|
15
15
|
export { RptSearchableSelectComponent } from './searchable-select/rpt-searchable-select.component';
|
|
16
16
|
export type { SearchableSelectOption } from './searchable-select/rpt-searchable-select.component';
|
|
17
|
+
export { RptRadioComponent } from './radio/rpt-radio.component';
|
|
18
|
+
export type { RadioOption } from './radio/rpt-radio.component';
|