@acorex-platform/module-report-management-client 0.0.33 → 0.0.38
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/fesm2022/{acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DENcGULA.mjs → acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DUdUNlnp.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DENcGULA.mjs.map → acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DUdUNlnp.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entities-query-snapshot-policy.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entities-query-snapshot.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entities-report-category.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entities-report-generation-request.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entities-report.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entity-catalog-acorex-platform-module-report-management-client-contracts-entity-catalog-CgrfJQLl.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entity-catalog-query-snapshot-policy.entity-D50GUBH6.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entity-catalog-query-snapshot.entity-DuR9ZuN2.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entity-catalog-report-category.entity-Dc4uvjsG.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entity-catalog-report-generation-request.entity-mJUQuk89.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts-entity-catalog-report.entity-CMDFRHeK.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page-component.provider-B_i4p7tQ.mjs → acorex-platform-module-report-management-client-entity-reports-page-component.provider-B0dU2K_E.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page-component.provider-B_i4p7tQ.mjs.map → acorex-platform-module-report-management-client-entity-reports-page-component.provider-B0dU2K_E.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page.component-D27Gtma6.mjs → acorex-platform-module-report-management-client-entity-reports-page.component-D4SAGGn-.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page.component-D27Gtma6.mjs.map → acorex-platform-module-report-management-client-entity-reports-page.component-D4SAGGn-.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-report-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-report-management-client-report-popup-viewer.component-B6aTfRp0.mjs → acorex-platform-module-report-management-client-report-popup-viewer.component-Dg3IxjGy.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-report-management-client-report-popup-viewer.component-B6aTfRp0.mjs.map → acorex-platform-module-report-management-client-report-popup-viewer.component-Dg3IxjGy.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-report-management-client.mjs +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-report-management-client-contracts-entity-catalog-report.entity-CMDFRHeK.mjs","sources":["../../../../libs/modules/report-management/contracts/src/entities/report/report.entity.ts"],"sourcesContent":["import {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- Report definition entity factory ----\n\nexport async function reportEntityFactory(): Promise<AXPEntity | null> {\n return {\n module: RootConfig.module.name,\n name: RootConfig.entities.report.name,\n title: RootConfig.entities.report.title,\n icon: RootConfig.entities.report.icon,\n plugins: [{ name: 'category', options: { readonly: true } }],\n formats: {\n individual: RootConfig.entities.report.title,\n plural: RootConfig.entities.report.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: '{{ description }}',\n },\n },\n groups: [{ id: 'basic-info', title: '@general:terms.interface.basic-info' }],\n properties: [\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.largeText } },\n },\n {\n name: 'parameterGroups',\n title: '@report-management:reports.entities.report.fields.parameter-groups',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'layouts',\n title: '@report-management:reports.entities.report.fields.layouts',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'defaultLayoutId',\n title: '@report-management:reports.entities.report.fields.default-layout-id',\n groupId: 'basic-info',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'permissions',\n title: '@general:terms.security.permissions',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'entities',\n title: '@report-management:reports.entities.report.fields.entities',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'generation',\n title: '@report-management:reports.entities.report.fields.generation',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n ],\n columns: [{ name: 'title' }, { name: 'description' }],\n interfaces: {\n master: {\n list: {\n actions: [\n {\n title: '@general:actions.open.title',\n icon: 'fa-light fa-play',\n command: {\n name: 'ReportManagement.Report:OpenViewer',\n options: {\n reportId: '{{ context.eval(\"id\") }}',\n },\n },\n priority: 'primary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n default: true,\n },\n ],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-report-management-client-contracts-entity-catalog-report.entity-CMDFRHeK.mjs","sources":["../../../../libs/modules/report-management/contracts/src/entities/report/report.entity.ts"],"sourcesContent":["import {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- Report definition entity factory ----\n\nexport async function reportEntityFactory(): Promise<AXPEntity | null> {\n return {\n module: RootConfig.module.name,\n name: RootConfig.entities.report.name,\n title: RootConfig.entities.report.title,\n icon: RootConfig.entities.report.icon,\n plugins: [{ name: 'category', options: { readonly: true } }],\n formats: {\n individual: RootConfig.entities.report.title,\n plural: RootConfig.entities.report.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: '{{ description }}',\n },\n },\n groups: [{ id: 'basic-info', title: '@general:terms.interface.basic-info' }],\n properties: [\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.largeText } },\n },\n {\n name: 'parameterGroups',\n title: '@report-management:reports.entities.report.fields.parameter-groups',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'layouts',\n title: '@report-management:reports.entities.report.fields.layouts',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'defaultLayoutId',\n title: '@report-management:reports.entities.report.fields.default-layout-id',\n groupId: 'basic-info',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'permissions',\n title: '@general:terms.security.permissions',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'entities',\n title: '@report-management:reports.entities.report.fields.entities',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n {\n name: 'generation',\n title: '@report-management:reports.entities.report.fields.generation',\n groupId: 'basic-info',\n schema: { dataType: 'object', interface: { type: AXPWidgetsCatalog.text } },\n },\n ],\n columns: [{ name: 'title' }, { name: 'description' }],\n interfaces: {\n master: {\n list: {\n actions: [\n {\n title: '@general:actions.open.title',\n icon: 'fa-light fa-play',\n command: {\n name: 'ReportManagement.Report:OpenViewer',\n options: {\n reportId: '{{ context.eval(\"id\") }}',\n },\n },\n priority: 'primary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n default: true,\n },\n ],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-report-management-client-contracts.mjs","sources":["../../../../libs/modules/report-management/contracts/src/commands.keys.ts","../../../../libs/modules/report-management/contracts/src/features.keys.ts","../../../../libs/modules/report-management/contracts/src/menu.keys.ts","../../../../libs/modules/report-management/contracts/src/permission.keys.ts","../../../../libs/modules/report-management/contracts/src/settings.keys.ts","../../../../libs/modules/report-management/contracts/src/root-config.ts","../../../../libs/modules/report-management/contracts/src/report.types.ts","../../../../libs/modules/report-management/contracts/src/report-generation.types.ts","../../../../libs/modules/report-management/contracts/src/runtime.keys.ts","../../../../libs/modules/report-management/contracts/src/entities/query-snapshot-policy/query-snapshot-policy.types.ts","../../../../libs/modules/report-management/contracts/src/entities/query-snapshot/query-snapshot.types.ts","../../../../libs/modules/report-management/contracts/src/index.ts","../../../../libs/modules/report-management/contracts/src/acorex-platform-module-report-management-client-contracts.ts"],"sourcesContent":["//#region ---- Report management command keys ----\n\nexport const AXMReportManagementCommandKeys = {\n RecalculateQuerySnapshots: 'ReportManagement:RecalculateQuerySnapshots',\n RefreshQuerySnapshots: 'ReportManagement:RefreshQuerySnapshots',\n ReportGeneration: {\n Create: 'ReportManagement:ReportGeneration:Create',\n Execute: 'ReportManagement:ReportGeneration:Execute',\n ReleaseInlineWatch: 'ReportManagement:ReportGeneration:ReleaseInlineWatch',\n },\n} as const;\n\nexport const AXM_RECALCULATE_QUERY_SNAPSHOTS_COMMAND_KEY =\n AXMReportManagementCommandKeys.RecalculateQuerySnapshots;\n\nexport const AXM_REFRESH_QUERY_SNAPSHOTS_COMMAND_KEY =\n AXMReportManagementCommandKeys.RefreshQuerySnapshots;\n\n//#endregion\n","export const AXPReportManagementFeatureKeys = {\n ReportBuilder: 'ReportManagement:Feature:ReportBuilder',\n SavedReports: 'ReportManagement:Feature:SavedReports',\n ScheduledReports: 'ReportManagement:Feature:ScheduledReports',\n BackgroundReports: 'ReportManagement:Feature:BackgroundReports',\n} as const;\n\n","export const AXPReportManagementMenuKeys = {\n Root: 'report-management:menu',\n Reports: 'report-management:menu:reports',\n Categories: 'report-management:menu:categories',\n DataSets: 'report-management:menu:data-sets',\n} as const;\n\n","/**\n * Insights & Reporting capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPInsightsReportingPermissionKeys = {\n Access: 'InsightsReporting:Permission:Access',\n MaintainReports: 'InsightsReporting:Permission:MaintainReports',\n MaintainData: 'InsightsReporting:Permission:MaintainData',\n ViewActivityInsight: 'InsightsReporting:Permission:ViewActivityInsight',\n ManageActivityInsight: 'InsightsReporting:Permission:ManageActivityInsight',\n Setup: 'InsightsReporting:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPInsightsReportingPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n ReportManagement: {\n Management: AXPInsightsReportingPermissionKeys.MaintainReports,\n Report: {\n Management: AXPInsightsReportingPermissionKeys.MaintainReports,\n View: AXPInsightsReportingPermissionKeys.MaintainReports,\n Create: AXPInsightsReportingPermissionKeys.MaintainReports,\n Update: AXPInsightsReportingPermissionKeys.MaintainReports,\n Delete: AXPInsightsReportingPermissionKeys.MaintainReports,\n },\n Category: {\n Management: AXPInsightsReportingPermissionKeys.Setup,\n View: AXPInsightsReportingPermissionKeys.Setup,\n Create: AXPInsightsReportingPermissionKeys.Setup,\n Update: AXPInsightsReportingPermissionKeys.Setup,\n Delete: AXPInsightsReportingPermissionKeys.Setup,\n },\n },\n} as const;\n","//#region ----- Report management settings -----\n\nimport type { AXPReportGenerationDedupePolicy } from './report.types';\n\nexport enum AXPReportManagementSettings {\n GenerationDedupePolicy = 'ReportManagement:Setting:Generation.Dedupe.Policy',\n GenerationDedupeCooldownMinutes = 'ReportManagement:Setting:Generation.Dedupe.CooldownMinutes',\n GenerationMaxConcurrentPerUser = 'ReportManagement:Setting:Generation.MaxConcurrentPerUser',\n}\n\nexport const AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS = {\n [AXPReportManagementSettings.GenerationDedupePolicy]: 'in-flight' as AXPReportGenerationDedupePolicy,\n [AXPReportManagementSettings.GenerationDedupeCooldownMinutes]: 0,\n [AXPReportManagementSettings.GenerationMaxConcurrentPerUser]: 3,\n} as const;\n\n//#endregion\n","const config = {\n i18n: 'report-management',\n module: 'ReportManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'report-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-chart-bar',\n },\n entities: {\n dataSet: {\n name: 'DataSet',\n title: `t(\"dataSet\", { scope: \"${config.i18n}\" })`,\n titlePlural: `t(\"dataSetPlural\", { scope: \"${config.i18n}\" })`,\n icon: 'fa-light fa-default',\n },\n category: {\n name: 'ReportCategory',\n fullName: `${config.module}.ReportCategory`,\n title: `@${config.i18n}:reports.entities.category.title`,\n titlePlural: `@${config.i18n}:reports.entities.category.plural`,\n icon: 'fa-light fa-folder',\n },\n report: {\n name: 'Report',\n fullName: `${config.module}.Report`,\n title: `@${config.i18n}:reports.entities.report.title`,\n titlePlural: `@${config.i18n}:reports.entities.report.plural`,\n icon: 'fa-light fa-file-chart-pie',\n },\n querySnapshotPolicy: {\n name: 'QuerySnapshotPolicy',\n fullName: `${config.module}.QuerySnapshotPolicy`,\n title: `@${config.i18n}:query-snapshots.entities.policy.title`,\n titlePlural: `@${config.i18n}:query-snapshots.entities.policy.plural`,\n icon: 'fa-light fa-sliders',\n },\n querySnapshot: {\n name: 'QuerySnapshot',\n fullName: `${config.module}.QuerySnapshot`,\n title: `@${config.i18n}:query-snapshots.entities.snapshot.title`,\n titlePlural: `@${config.i18n}:query-snapshots.entities.snapshot.plural`,\n icon: 'fa-light fa-camera',\n },\n reportGenerationRequest: {\n name: 'ReportGenerationRequest',\n fullName: `${config.module}.ReportGenerationRequest`,\n title: `@${config.i18n}:report-generation.entities.request.title`,\n titlePlural: `@${config.i18n}:report-generation.entities.request.plural`,\n icon: 'fa-light fa-file-export',\n },\n },\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetColumnNode } from '@acorex-platform/framework-shared/widget-core';\nimport { AXPQuerySort } from '@acorex-platform/framework-shared/entity';\nimport { AXPActionMenuItem, AXPCategoryEntity, AXPExportOptions, AXPFilterClause, AXPSystemActionType, type AXPMultiLanguageString, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Core Report Types and Interfaces ----\n\nexport type AXPReportLayoutType = 'table' | 'chart' | 'cards' | 'custom' | 'pdf';\n\n/**\n * Report Category - Extends AXPCategoryEntity for consistency and performance\n *\n * Inherited properties from AXPCategoryEntity:\n * - id: string - Unique identifier\n * - title: string - Display name\n * - description?: string - Category description\n * - parentId?: string - Parent category ID\n * - childrenCount: number - Direct child categories count (enables lazy loading)\n * - itemsCount?: number - Direct reports count (replaces hasReport boolean)\n * - totalChildrenCount?: number - Total nested categories (optional, for analytics)\n * - totalItemsCount?: number - Total reports in tree (optional, for analytics)\n *\n * Performance benefits:\n * - Lazy loading support (childrenCount > 0 shows expand icon)\n * - Report count display (itemsCount shows \"5 reports\" badge)\n * - Efficient queries (no need to query to know if expandable)\n */\nexport interface AXPReportCategory extends AXPCategoryEntity {\n // No additional properties needed - all inherited from AXPCategoryEntity\n // Use: childrenCount instead of hasChild\n // Use: itemsCount instead of hasReport\n}\n\n/** How an entity-bound report is surfaced on the host entity UI. */\nexport type AXPReportEntityDisplay = 'action' | 'page' | 'popup';\n\n/**\n * Parameter value on an entity binding:\n * - field path / expression string (e.g. `id`)\n * - `'today'` → local calendar day `{ from, to }`\n * - explicit `{ from, to }` date range\n */\nexport type AXPReportEntityParameterValue = string | { from: string; to: string };\n\n/** Binds a report to a host entity type for Reports page discovery. */\nexport interface AXPReportEntityBinding {\n /** Fully qualified entity type, e.g. `SecurityManagement.User`. */\n entity: string;\n /** Optional list title (i18n key or plain text). Falls back to report title. */\n title?: string;\n /** Optional list description (i18n key or plain text). Falls back to report description. */\n description?: string;\n layoutId?: string;\n /**\n * Where to surface the report. Defaults to `['page']` (Reports side-menu page).\n * `action` / `popup` are retained for data compatibility but are not contributed as entity Actions.\n */\n display?: AXPReportEntityDisplay | AXPReportEntityDisplay[];\n /**\n * Map report parameter path → entity field / expression / date token.\n * Example: `{ userId: 'id', dateRange: 'today' }`\n */\n parameters?: Record<string, AXPReportEntityParameterValue>;\n order?: number;\n}\n\nexport interface AXPReportDefinition {\n id: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n categoryIds: string[];\n parameterGroups: AXPReportParameterGroup[];\n permissions?: string[];\n layouts: AXPReportLayoutDefinition[]; // Changed to support multiple layouts\n defaultLayoutId: string; // Which layout to show by default\n /** Optional host-entity bindings for the entity `reports` plugin. */\n entities?: AXPReportEntityBinding[];\n /** Background / choose / interactive generation options. Omitted = interactive. */\n generation?: AXPReportGenerationOptions;\n}\n\nexport type AXPReportGenerationMode = 'interactive' | 'background' | 'choose';\n\nexport type AXPReportArtifactKind = 'viewer' | 'pdf' | 'excel' | 'csv';\n\nexport type AXPReportFreezeLayouts = 'current' | 'all';\n\nexport type AXPReportGenerationDedupePolicy =\n | 'none'\n | 'in-flight'\n | 'in-flight-or-cooldown';\n\nexport interface AXPReportGenerationDedupeOptions {\n /** Omitted → inherit platform `ReportManagement:Setting:Generation.Dedupe.Policy`. */\n policy?: AXPReportGenerationDedupePolicy;\n /** Omitted → inherit platform `ReportManagement:Setting:Generation.Dedupe.CooldownMinutes`. */\n cooldownMs?: number;\n}\n\nexport interface AXPReportGenerationOptions {\n /** Omitted = interactive (today’s viewer). */\n mode?: AXPReportGenerationMode;\n /** Default `['viewer']` when mode is background or choose. */\n formats?: AXPReportArtifactKind[];\n executionTimeoutMs?: number;\n /** Default 30. Used to set `expiresAt` when the run finishes. */\n retentionDays?: number;\n /** Default `'all'` query layouts. `'current'` freezes only the layout the user ran. */\n freezeLayouts?: AXPReportFreezeLayouts;\n /** Default true. Store layout/title/parameter snapshot in the viewer freeze file. */\n pinDefinition?: boolean;\n /** Demo/local only. Worker waits this long after marking the run running. */\n simulateDelayMs?: number;\n /** Omitted → dedupe behavior comes from platform settings. */\n dedupe?: AXPReportGenerationDedupeOptions;\n /**\n * When true (default for background/choose), completed jobs stay in the footer tray until dismissed.\n * Set false to remove from tray as soon as the job completes.\n */\n keepInTray?: boolean;\n}\n\nexport type AXPReportLayoutAction = AXPActionMenuItem & {\n priority: 'primary' | 'secondary';\n};\n\n/**\n * Layout Definition - Associates a layout with metadata\n */\nexport interface AXPReportLayoutDefinition {\n id: string; // Unique identifier for this layout\n title: AXPMultiLanguageString; // Display name (e.g., \"Table View\", \"Chart View\")\n description?: AXPMultiLanguageString; // Optional description\n icon?: string; // Icon for layout switcher UI\n layout: AXPReportLayout; // The actual layout configuration\n dataSource?: AXPReportDataSource; // Optional layout-specific dataSource (overrides report-level)\n isDefault?: boolean; // Alternative to defaultLayoutId\n actions?: AXPReportLayoutAction[];\n export?: AXPExportOptions;\n}\n\nexport interface AXPReportParameterGroup {\n name: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parameters: AXPReportParameter[];\n}\n\nexport interface AXPReportParameter {\n path: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n /**\n * Boolean or expression (e.g. `{{ permission.check(\"…\") }}` / `{{ feature.check(\"…\") }}`).\n * Omitted / `true` means visible. Evaluated by the Report Viewer layout renderer.\n */\n visible?: boolean | string;\n widget: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ---- Data Source Types ----\n\nexport type AXPReportDataSource =\n | AXPQueryDataSource\n | AXPCustomDataSource\n | AXPAggregatedDataSource\n | AXPTransformedDataSource;\n\n/**\n * Query Data Source - Used for executing predefined queries (AXPQuery)\n */\nexport interface AXPQueryDataSource {\n type: 'query';\n name: string; // The registered query name, e.g., 'getProductList'\n description?: string;\n\n inputs?: AXPReportParameterBinding[]; // Maps report parameters to query inputs\n sortFields?: AXPQuerySort[]; // Default sorting applied by the backend\n pagination?: boolean; // Enables paging in result set\n}\n\n/**\n * Custom Data Source - Used for fetching data from custom providers like REST APIs or external services\n */\nexport interface AXPCustomDataSource {\n type: 'custom';\n provider: string; // Example: 'http://api/report' or 'custom:MyHandler'\n description?: string;\n\n inputs?: AXPReportParameterBinding[]; // Maps report parameters to payload\n options?: { [key: string]: any }; // Additional options for the custom handler\n}\n\n/**\n * Parameter Binding - Maps report-level parameters to actual query/command input structure\n */\nexport interface AXPReportParameterBinding {\n parameterKey: string; // Report parameter key, e.g., 'startDate'\n bindTo: string; // Input key in the query/command payload, e.g., 'filters.from'\n}\n\n/**\n * Aggregated Data Source - Used for pre-aggregated data optimized for charts\n */\nexport interface AXPAggregatedDataSource {\n type: 'aggregated';\n baseQuery: string; // Base query to aggregate from\n description?: string;\n\n groupBy: string[]; // Fields to group by\n aggregations: AXPAggregation[]; // Aggregation operations\n inputs?: AXPReportParameterBinding[];\n}\n\n/**\n * Transformed Data Source - Applies transformations to existing data sources\n */\nexport interface AXPTransformedDataSource {\n type: 'transformed';\n baseDataSource: AXPReportDataSource; // Source to transform\n description?: string;\n\n transformations: AXPDataTransformation[]; // List of transformations\n inputs?: AXPReportParameterBinding[];\n}\n\n/**\n * Aggregation operation for aggregated data sources\n */\nexport interface AXPAggregation {\n field: string;\n operation: 'sum' | 'avg' | 'count' | 'min' | 'max' | 'distinct';\n alias?: string; // Output field name\n}\n\n/**\n * Data transformation operation\n */\nexport interface AXPDataTransformation {\n type: 'filter' | 'sort' | 'group' | 'pivot' | 'format';\n config: Record<string, any>; // Transformation-specific configuration\n}\n\n//#endregion\n\n//#region ---- Group By & Drill Down ----\n\n/**\n * Drill-down target for a grouped report row.\n * When reportId is omitted, the current report is used.\n */\nexport interface AXPReportDrillDownConfig {\n reportId?: string;\n layoutId?: string;\n title?: string;\n parameters?: Record<string, string>;\n}\n\n/**\n * Declares how a summary report is grouped and which detail view opens on drill-down.\n * Multiple definitions allow alternative drill paths (e.g. by brand vs by category).\n */\nexport interface AXPReportGroupByDefinition {\n fields: string[];\n displayField?: string;\n /** When true (default), `displayField` renders as a link instead of a row command column. */\n linkDisplay?: boolean;\n title?: string;\n default?: boolean;\n priority?: 'primary' | 'secondary';\n drillDown: AXPReportDrillDownConfig;\n}\n\n//#endregion\n\n//#region ---- Layout Types ----\n\nexport type AXPReportLayout = AXPReportTableLayout | AXPReportChartLayout | AXPReportPdfLayout;\n\n/**\n * Table Layout - Displays data in tabular format\n */\n\nexport interface AXPReportTableLayoutRowAction extends AXPActionMenuItem {\n priority: 'primary' | 'secondary';\n type: AXPSystemActionType | string;\n default?: boolean;\n}\n\nexport interface AXPReportTableLayout {\n type: 'table';\n columns: AXPReportColumn[];\n actions?: AXPReportTableLayoutRowAction[];\n options?: AXPTableOptions;\n groupBy?: AXPReportGroupByDefinition[];\n conditionalFormatting?: AXPConditionalFormatRule[];\n summary?: AXPReportSummaryOptions[];\n header?: AXPReportHeaderFooter;\n footer?: AXPReportHeaderFooter;\n}\n\nexport interface AXPTableOptions {\n pagination?: boolean;\n stickyHeader?: boolean;\n stripedRows?: boolean;\n sorting?: AXPQuerySort[];\n selectable?: {\n mode: 'single' | 'multiple' | 'none';\n };\n}\n\n/**\n * Chart Layout - Displays data in various chart formats\n */\nexport interface AXPReportChartLayout {\n type: 'chart';\n options: AXPReportChartOptions;\n header?: AXPReportHeaderFooter;\n footer?: AXPReportHeaderFooter;\n}\n\nexport interface AXPReportChartOptions {\n chartType: 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'radar' | 'mixed';\n dataMapping: AXPChartDataMapping;\n styling?: AXPChartStyling;\n interactivity?: AXPChartInteractivity;\n}\n\n/**\n * Chart Data Mapping Configuration\n */\nexport interface AXPChartDataMapping {\n // Core fields\n xField: string; // X-axis data field\n yFields: string | string[]; // Y-axis data field(s) for multiple series\n\n // Grouping and categorization\n groupBy?: string; // Group data by this field\n seriesField?: string; // Field to create multiple series\n\n // Special fields for specific chart types\n sizeField?: string; // For bubble charts\n colorField?: string; // For gradient/conditional coloring\n labelField?: string; // Custom label field\n\n // Data aggregation\n aggregation?: {\n method: 'sum' | 'avg' | 'count' | 'min' | 'max';\n field: string;\n };\n}\n\n/**\n * Chart Visual Styling Configuration\n */\nexport interface AXPChartStyling {\n // Theme and colors\n colorScheme?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'custom';\n /** Palette applied by series index when `seriesColors` is not set. */\n customColors?: string[];\n /**\n * Per-series fill colors keyed by chart category id/label\n * (e.g. Online → success, Away → warning, Busy → danger).\n */\n seriesColors?: Record<string, string>;\n\n // Chart appearance\n gridLines?: boolean;\n legend?: {\n show: boolean;\n position: 'top' | 'bottom' | 'left' | 'right';\n };\n\n // Axes configuration\n xAxis?: AXPChartAxisConfig;\n yAxis?: AXPChartAxisConfig;\n\n // Animation\n animation?: {\n enabled: boolean;\n duration?: number;\n };\n\n // Chart-specific styling\n chartSpecific?: {\n // Bar chart options\n bar?: {\n orientation: 'vertical' | 'horizontal';\n mode: 'grouped' | 'stacked';\n barWidth?: number;\n };\n\n // Line chart options\n line?: {\n style: 'straight' | 'curved' | 'stepped';\n showPoints?: boolean;\n tension?: number;\n };\n\n // Area chart options\n area?: {\n mode: 'normal' | 'stacked' | 'percentage';\n opacity?: number;\n };\n\n // Pie/Doughnut options\n pie?: {\n startAngle?: number;\n innerRadius?: number; // For doughnut charts\n showLabels?: boolean;\n };\n };\n}\n\n/**\n * Chart Axis Configuration\n */\nexport interface AXPChartAxisConfig {\n title?: string;\n show?: boolean;\n type?: 'linear' | 'logarithmic' | 'datetime' | 'category';\n min?: number | string;\n max?: number | string;\n format?: string;\n gridLines?: boolean;\n tickInterval?: number;\n}\n\n/**\n * Chart Interactivity Configuration\n */\nexport interface AXPChartInteractivity {\n // Zoom and pan\n zoom?: {\n enabled: boolean;\n mode?: 'x' | 'y' | 'xy';\n };\n\n // Tooltips\n tooltips?: {\n enabled: boolean;\n format?: string;\n showOnHover?: boolean;\n };\n\n // Click events\n onClick?: {\n enabled: boolean;\n action?: 'drill-down' | 'filter' | 'custom';\n };\n\n // Selection\n selection?: {\n enabled: boolean;\n mode?: 'single' | 'multiple';\n };\n\n // Export\n export?: {\n enabled: boolean;\n formats?: ('png' | 'jpg' | 'pdf' | 'svg')[];\n };\n}\n\n/**\n * PDF Layout - Displays PDF documents\n */\nexport interface AXPReportPdfLayout {\n type: 'pdf';\n options?: AXPReportPdfOptions;\n header?: AXPReportHeaderFooter;\n footer?: AXPReportHeaderFooter;\n}\n\n/**\n * PDF Layout Options\n */\nexport interface AXPReportPdfOptions {\n showDownloadButton?: boolean;\n showPrintButton?: boolean;\n showZoomControls?: boolean;\n showFullscreenButton?: boolean;\n defaultZoom?: number; // Percentage (e.g., 100, 150, 200)\n height?: string; // CSS height (e.g., '100%', '600px')\n}\n\n//#region ---- Shared Models ----\n\nexport interface AXPReportColumn {\n field: string;\n title?: string;\n /**\n * Boolean or expression (e.g. `{{ permission.check(\"…\") }}`).\n * Omitted / `true` means visible. Evaluated when building the table view.\n */\n visible?: boolean | string;\n width?: number | 'auto';\n align?: 'left' | 'center' | 'right';\n /** When true, column header supports interactive sort (opt-in). */\n sortable?: boolean;\n /** Pin column to the start or end of the table (definition-only). */\n pin?: 'start' | 'end';\n widget?: AXPWidgetColumnNode;\n /**\n * Optional cell interactivity. When omitted, group-by `displayField` columns\n * can still render as drill links automatically in report table view.\n */\n interactivity?: AXPReportColumnInteractivity;\n}\n\n/**\n * Column cell interaction — link triggers a command with the current row as context.\n * Platform widgets may mirror this via column `options.displayAs: 'link'` in the future.\n */\nexport interface AXPReportColumnInteractivity {\n type: 'link';\n command: {\n name: string;\n options?: Record<string, unknown>;\n };\n}\n\n/** Server-computed report footer totals keyed by column field. */\nexport type AXPReportTableSummaryResult = Record<string, number | null>;\n\nexport interface AXPReportSummaryOptions {\n field: string;\n operation: 'sum' | 'avg' | 'count' | 'min' | 'max';\n displayIn: 'groupFooter' | 'reportFooter';\n}\n\nexport interface AXPConditionalFormatRule {\n field: string;\n condition: '>' | '<' | '=' | '!=' | 'contains';\n value: any;\n style: {\n color?: string;\n backgroundColor?: string;\n fontWeight?: 'normal' | 'bold';\n };\n}\n\nexport interface AXPReportHeaderFooter {\n title?: string;\n logoUrl?: string;\n showDate?: boolean;\n showParameters?: boolean;\n customHtml?: string;\n}\n\n/**\n * Layout switcher options for UI components\n */\nexport interface AXPLayoutSwitcherOption {\n id: string;\n title: AXPMultiLanguageString;\n icon?: string;\n type: AXPReportLayoutType;\n}\n\n/**\n * Runtime layout selection state\n */\nexport interface AXPReportLayoutState {\n reportId: string;\n activeLayoutId: string;\n availableLayouts: AXPLayoutSwitcherOption[];\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPMultiLanguageString, AXPRuntimeQueryResult } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type {\n AXPReportArtifactKind,\n AXPReportLayoutDefinition,\n} from './report.types';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXPReportGenerationStatus = 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';\n\nexport type AXPReportGenerationTrigger = 'manual' | 'schedule' | 'export';\n\nexport interface AXPReportGenerationArtifact {\n kind: AXPReportArtifactKind;\n fileId?: string;\n contentType?: string;\n fileName?: string;\n rowCount?: number;\n byteLength?: number;\n lastError?: string;\n}\n\nexport const REPORT_GENERATION_NOTIFICATION_DEFINITION_KEY = 'ReportManagement:ReportGeneration';\n\nexport const REPORT_GENERATION_OPEN_FROZEN_COMMAND = 'ReportManagement.Report:OpenViewer';\n\n/** In-app inbox correlation id for a completed report generation run. */\nexport function buildReportGenerationNotificationCorrelationId(runId: string): string {\n const normalized = runId.trim();\n return normalized ? `report-generation:${normalized}` : 'report-generation:';\n}\n\nexport interface AXMReportGenerationRequest extends AXPEntityModel<string> {\n reportId: string;\n layoutId?: string;\n layoutIds?: string[];\n parameters?: Record<string, unknown>;\n formats: AXPReportArtifactKind[];\n trigger: AXPReportGenerationTrigger;\n status: AXPReportGenerationStatus;\n requestedBy?: string;\n jobId?: string;\n scheduleId?: string;\n scheduledOccurrence?: string;\n startedAt?: string;\n completedAt?: string;\n durationMs?: number;\n lastError?: string;\n expiresAt?: string;\n sourceRequestId?: string;\n /** When true, skip in-app notification because the report viewer is watching this run inline. */\n suppressNotificationOnComplete?: boolean;\n artifacts: AXPReportGenerationArtifact[];\n}\n\nexport interface AXPReportViewerFreeze {\n version: 1;\n reportId: string;\n generatedAt: string;\n parameters: Record<string, unknown>;\n definition?: {\n title: AXPMultiLanguageString;\n defaultLayoutId: string;\n layouts: AXPReportLayoutDefinition[];\n };\n dataSources: Array<{\n layoutId: string;\n queryName: string;\n result: AXPRuntimeQueryResult;\n }>;\n}\n\nexport interface AXPReportGenerationCreateInput {\n reportId: string;\n layoutId?: string;\n layoutIds?: string[];\n parameters?: Record<string, unknown>;\n formats?: AXPReportArtifactKind[];\n trigger?: AXPReportGenerationTrigger;\n sourceRequestId?: string;\n scheduleId?: string;\n scheduledOccurrence?: string;\n /** Set when the report viewer will poll and show the result inline. */\n suppressNotificationOnComplete?: boolean;\n}\n\nexport interface AXPReportGenerationReleaseInlineWatchInput {\n id: string;\n}\n\nexport interface AXPReportGenerationCreateResult {\n id: string;\n jobId?: string;\n status: AXPReportGenerationStatus;\n /** True when an existing run was returned instead of creating a new row. */\n deduplicated?: boolean;\n}\n\nexport interface AXPReportGenerationExecuteInput {\n reportRequestId: string;\n}\n\nexport interface AXPReportGenerationExecuteResult {\n reportRequestId: string;\n fileIds: string[];\n rowCount?: number;\n}\n\nexport interface AXPReportGenerationGetInput {\n id: string;\n}\n\nexport interface AXPReportGenerationGetViewerFreezeInput {\n id: string;\n}\n\nexport interface AXPReportGenerationListMineInput {\n skip?: number;\n take?: number;\n}\n\n//#endregion\n","//#region ---- Report management runtime keys ----\n\nexport const AXMReportManagementQueryKeys = {\n Category: {\n ListRoot: 'ReportManagement:Category:ListRoot',\n GetById: 'ReportManagement:Category:GetById',\n },\n Report: {\n GetDefinition: 'ReportManagement:Report:GetDefinition',\n },\n ReportGeneration: {\n Get: 'ReportManagement:ReportGeneration:Get',\n ListMine: 'ReportManagement:ReportGeneration:ListMine',\n GetViewerFreeze: 'ReportManagement:ReportGeneration:GetViewerFreeze',\n },\n} as const;\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMQuerySnapshotTriggerOperation = 'create' | 'update' | 'delete';\n\nexport interface AXMQuerySnapshotPolicyTriggers {\n entities: string[];\n operations: AXMQuerySnapshotTriggerOperation[];\n debounceMs: number;\n}\n\nexport interface AXMQuerySnapshotPolicyEntityModel extends AXPEntityModel<string> {\n queryName: string;\n enabled: boolean;\n schedule: string;\n staleAfterMs: number;\n triggers: AXMQuerySnapshotPolicyTriggers;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPRuntimeCollectionData } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMQuerySnapshotStatus = 'ready' | 'stale' | 'failed';\n\nexport type AXMQuerySnapshotPayload =\n | { success: true; kind: 'value'; data: unknown }\n | { success: true; kind: 'object'; data: unknown }\n | { success: true; kind: 'collection'; data: AXPRuntimeCollectionData };\n\nexport interface AXMQuerySnapshotEntityModel extends AXPEntityModel<string> {\n key: string;\n status: AXMQuerySnapshotStatus;\n calculatedAt: string;\n durationMs: number;\n lastError?: string;\n payload: AXMQuerySnapshotPayload;\n}\n\nexport interface AXMRecalculateQuerySnapshotsInput {\n tenantId?: string;\n applicationId?: string;\n queryKeys?: string[];\n /** When true, a full run ignores catch-up skips (manual refresh all). */\n force?: boolean;\n}\n\nexport interface AXMRefreshQuerySnapshotsInput {\n queryKeys?: string[];\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './root-config';\nexport * from './report.types';\nexport * from './report-generation.types';\nexport * from './runtime.keys';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-report-management-client-contracts.mjs","sources":["../../../../libs/modules/report-management/contracts/src/commands.keys.ts","../../../../libs/modules/report-management/contracts/src/features.keys.ts","../../../../libs/modules/report-management/contracts/src/menu.keys.ts","../../../../libs/modules/report-management/contracts/src/permission.keys.ts","../../../../libs/modules/report-management/contracts/src/settings.keys.ts","../../../../libs/modules/report-management/contracts/src/root-config.ts","../../../../libs/modules/report-management/contracts/src/report.types.ts","../../../../libs/modules/report-management/contracts/src/report-generation.types.ts","../../../../libs/modules/report-management/contracts/src/runtime.keys.ts","../../../../libs/modules/report-management/contracts/src/entities/query-snapshot-policy/query-snapshot-policy.types.ts","../../../../libs/modules/report-management/contracts/src/entities/query-snapshot/query-snapshot.types.ts","../../../../libs/modules/report-management/contracts/src/index.ts","../../../../libs/modules/report-management/contracts/src/acorex-platform-module-report-management-client-contracts.ts"],"sourcesContent":["//#region ---- Report management command keys ----\n\nexport const AXMReportManagementCommandKeys = {\n RecalculateQuerySnapshots: 'ReportManagement:RecalculateQuerySnapshots',\n RefreshQuerySnapshots: 'ReportManagement:RefreshQuerySnapshots',\n ReportGeneration: {\n Create: 'ReportManagement:ReportGeneration:Create',\n Execute: 'ReportManagement:ReportGeneration:Execute',\n ReleaseInlineWatch: 'ReportManagement:ReportGeneration:ReleaseInlineWatch',\n },\n} as const;\n\nexport const AXM_RECALCULATE_QUERY_SNAPSHOTS_COMMAND_KEY =\n AXMReportManagementCommandKeys.RecalculateQuerySnapshots;\n\nexport const AXM_REFRESH_QUERY_SNAPSHOTS_COMMAND_KEY =\n AXMReportManagementCommandKeys.RefreshQuerySnapshots;\n\n//#endregion\n","export const AXPReportManagementFeatureKeys = {\n ReportBuilder: 'ReportManagement:Feature:ReportBuilder',\n SavedReports: 'ReportManagement:Feature:SavedReports',\n ScheduledReports: 'ReportManagement:Feature:ScheduledReports',\n BackgroundReports: 'ReportManagement:Feature:BackgroundReports',\n} as const;\n\n","export const AXPReportManagementMenuKeys = {\n Root: 'report-management:menu',\n Reports: 'report-management:menu:reports',\n Categories: 'report-management:menu:categories',\n DataSets: 'report-management:menu:data-sets',\n} as const;\n\n","/**\n * Insights & Reporting capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPInsightsReportingPermissionKeys = {\n Access: 'InsightsReporting:Permission:Access',\n MaintainReports: 'InsightsReporting:Permission:MaintainReports',\n MaintainData: 'InsightsReporting:Permission:MaintainData',\n ViewActivityInsight: 'InsightsReporting:Permission:ViewActivityInsight',\n ManageActivityInsight: 'InsightsReporting:Permission:ManageActivityInsight',\n Setup: 'InsightsReporting:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPInsightsReportingPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n ReportManagement: {\n Management: AXPInsightsReportingPermissionKeys.MaintainReports,\n Report: {\n Management: AXPInsightsReportingPermissionKeys.MaintainReports,\n View: AXPInsightsReportingPermissionKeys.MaintainReports,\n Create: AXPInsightsReportingPermissionKeys.MaintainReports,\n Update: AXPInsightsReportingPermissionKeys.MaintainReports,\n Delete: AXPInsightsReportingPermissionKeys.MaintainReports,\n },\n Category: {\n Management: AXPInsightsReportingPermissionKeys.Setup,\n View: AXPInsightsReportingPermissionKeys.Setup,\n Create: AXPInsightsReportingPermissionKeys.Setup,\n Update: AXPInsightsReportingPermissionKeys.Setup,\n Delete: AXPInsightsReportingPermissionKeys.Setup,\n },\n },\n} as const;\n","//#region ----- Report management settings -----\n\nimport type { AXPReportGenerationDedupePolicy } from './report.types';\n\nexport enum AXPReportManagementSettings {\n GenerationDedupePolicy = 'ReportManagement:Setting:Generation.Dedupe.Policy',\n GenerationDedupeCooldownMinutes = 'ReportManagement:Setting:Generation.Dedupe.CooldownMinutes',\n GenerationMaxConcurrentPerUser = 'ReportManagement:Setting:Generation.MaxConcurrentPerUser',\n}\n\nexport const AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS = {\n [AXPReportManagementSettings.GenerationDedupePolicy]: 'in-flight' as AXPReportGenerationDedupePolicy,\n [AXPReportManagementSettings.GenerationDedupeCooldownMinutes]: 0,\n [AXPReportManagementSettings.GenerationMaxConcurrentPerUser]: 3,\n} as const;\n\n//#endregion\n","const config = {\n i18n: 'report-management',\n module: 'ReportManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'report-management',\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-chart-bar',\n },\n entities: {\n dataSet: {\n name: 'DataSet',\n title: `t(\"dataSet\", { scope: \"${config.i18n}\" })`,\n titlePlural: `t(\"dataSetPlural\", { scope: \"${config.i18n}\" })`,\n icon: 'fa-light fa-default',\n },\n category: {\n name: 'ReportCategory',\n fullName: `${config.module}.ReportCategory`,\n title: `@${config.i18n}:reports.entities.category.title`,\n titlePlural: `@${config.i18n}:reports.entities.category.plural`,\n icon: 'fa-light fa-folder',\n },\n report: {\n name: 'Report',\n fullName: `${config.module}.Report`,\n title: `@${config.i18n}:reports.entities.report.title`,\n titlePlural: `@${config.i18n}:reports.entities.report.plural`,\n icon: 'fa-light fa-file-chart-pie',\n },\n querySnapshotPolicy: {\n name: 'QuerySnapshotPolicy',\n fullName: `${config.module}.QuerySnapshotPolicy`,\n title: `@${config.i18n}:query-snapshots.entities.policy.title`,\n titlePlural: `@${config.i18n}:query-snapshots.entities.policy.plural`,\n icon: 'fa-light fa-sliders',\n },\n querySnapshot: {\n name: 'QuerySnapshot',\n fullName: `${config.module}.QuerySnapshot`,\n title: `@${config.i18n}:query-snapshots.entities.snapshot.title`,\n titlePlural: `@${config.i18n}:query-snapshots.entities.snapshot.plural`,\n icon: 'fa-light fa-camera',\n },\n reportGenerationRequest: {\n name: 'ReportGenerationRequest',\n fullName: `${config.module}.ReportGenerationRequest`,\n title: `@${config.i18n}:report-generation.entities.request.title`,\n titlePlural: `@${config.i18n}:report-generation.entities.request.plural`,\n icon: 'fa-light fa-file-export',\n },\n },\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPWidgetColumnNode } from '@acorex-platform/framework-shared/widget-core';\nimport { AXPQuerySort } from '@acorex-platform/framework-shared/entity';\nimport { AXPActionMenuItem, AXPCategoryEntity, AXPExportOptions, AXPFilterClause, AXPSystemActionType, type AXPMultiLanguageString, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Core Report Types and Interfaces ----\n\nexport type AXPReportLayoutType = 'table' | 'chart' | 'cards' | 'custom' | 'pdf';\n\n/**\n * Report Category - Extends AXPCategoryEntity for consistency and performance\n *\n * Inherited properties from AXPCategoryEntity:\n * - id: string - Unique identifier\n * - title: string - Display name\n * - description?: string - Category description\n * - parentId?: string - Parent category ID\n * - childrenCount: number - Direct child categories count (enables lazy loading)\n * - itemsCount?: number - Direct reports count (replaces hasReport boolean)\n * - totalChildrenCount?: number - Total nested categories (optional, for analytics)\n * - totalItemsCount?: number - Total reports in tree (optional, for analytics)\n *\n * Performance benefits:\n * - Lazy loading support (childrenCount > 0 shows expand icon)\n * - Report count display (itemsCount shows \"5 reports\" badge)\n * - Efficient queries (no need to query to know if expandable)\n */\nexport interface AXPReportCategory extends AXPCategoryEntity {\n // No additional properties needed - all inherited from AXPCategoryEntity\n // Use: childrenCount instead of hasChild\n // Use: itemsCount instead of hasReport\n}\n\n/** How an entity-bound report is surfaced on the host entity UI. */\nexport type AXPReportEntityDisplay = 'action' | 'page' | 'popup';\n\n/**\n * Parameter value on an entity binding:\n * - field path / expression string (e.g. `id`)\n * - `'today'` → local calendar day `{ from, to }`\n * - explicit `{ from, to }` date range\n */\nexport type AXPReportEntityParameterValue = string | { from: string; to: string };\n\n/** Binds a report to a host entity type for Reports page discovery. */\nexport interface AXPReportEntityBinding {\n /** Fully qualified entity type, e.g. `SecurityManagement.User`. */\n entity: string;\n /** Optional list title (i18n key or plain text). Falls back to report title. */\n title?: string;\n /** Optional list description (i18n key or plain text). Falls back to report description. */\n description?: string;\n layoutId?: string;\n /**\n * Where to surface the report. Defaults to `['page']` (Reports side-menu page).\n * `action` / `popup` are retained for data compatibility but are not contributed as entity Actions.\n */\n display?: AXPReportEntityDisplay | AXPReportEntityDisplay[];\n /**\n * Map report parameter path → entity field / expression / date token.\n * Example: `{ userId: 'id', dateRange: 'today' }`\n */\n parameters?: Record<string, AXPReportEntityParameterValue>;\n order?: number;\n}\n\nexport interface AXPReportDefinition {\n id: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n categoryIds: string[];\n parameterGroups: AXPReportParameterGroup[];\n permissions?: string[];\n layouts: AXPReportLayoutDefinition[]; // Changed to support multiple layouts\n defaultLayoutId: string; // Which layout to show by default\n /** Optional host-entity bindings for the entity `reports` plugin. */\n entities?: AXPReportEntityBinding[];\n /** Background / choose / interactive generation options. Omitted = interactive. */\n generation?: AXPReportGenerationOptions;\n}\n\nexport type AXPReportGenerationMode = 'interactive' | 'background' | 'choose';\n\nexport type AXPReportArtifactKind = 'viewer' | 'pdf' | 'excel' | 'csv';\n\nexport type AXPReportFreezeLayouts = 'current' | 'all';\n\nexport type AXPReportGenerationDedupePolicy =\n | 'none'\n | 'in-flight'\n | 'in-flight-or-cooldown';\n\nexport interface AXPReportGenerationDedupeOptions {\n /** Omitted → inherit platform `ReportManagement:Setting:Generation.Dedupe.Policy`. */\n policy?: AXPReportGenerationDedupePolicy;\n /** Omitted → inherit platform `ReportManagement:Setting:Generation.Dedupe.CooldownMinutes`. */\n cooldownMs?: number;\n}\n\nexport interface AXPReportGenerationOptions {\n /** Omitted = interactive (today’s viewer). */\n mode?: AXPReportGenerationMode;\n /** Default `['viewer']` when mode is background or choose. */\n formats?: AXPReportArtifactKind[];\n executionTimeoutMs?: number;\n /** Default 30. Used to set `expiresAt` when the run finishes. */\n retentionDays?: number;\n /** Default `'all'` query layouts. `'current'` freezes only the layout the user ran. */\n freezeLayouts?: AXPReportFreezeLayouts;\n /** Default true. Store layout/title/parameter snapshot in the viewer freeze file. */\n pinDefinition?: boolean;\n /** Demo/local only. Worker waits this long after marking the run running. */\n simulateDelayMs?: number;\n /** Omitted → dedupe behavior comes from platform settings. */\n dedupe?: AXPReportGenerationDedupeOptions;\n /**\n * When true (default for background/choose), completed jobs stay in the footer tray until dismissed.\n * Set false to remove from tray as soon as the job completes.\n */\n keepInTray?: boolean;\n}\n\nexport type AXPReportLayoutAction = AXPActionMenuItem & {\n priority: 'primary' | 'secondary';\n};\n\n/**\n * Layout Definition - Associates a layout with metadata\n */\nexport interface AXPReportLayoutDefinition {\n id: string; // Unique identifier for this layout\n title: AXPMultiLanguageString; // Display name (e.g., \"Table View\", \"Chart View\")\n description?: AXPMultiLanguageString; // Optional description\n icon?: string; // Icon for layout switcher UI\n layout: AXPReportLayout; // The actual layout configuration\n dataSource?: AXPReportDataSource; // Optional layout-specific dataSource (overrides report-level)\n isDefault?: boolean; // Alternative to defaultLayoutId\n actions?: AXPReportLayoutAction[];\n export?: AXPExportOptions;\n}\n\nexport interface AXPReportParameterGroup {\n name: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n parameters: AXPReportParameter[];\n}\n\nexport interface AXPReportParameter {\n path: string;\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n /**\n * Boolean or expression (e.g. `{{ permission.check(\"…\") }}` / `{{ feature.check(\"…\") }}`).\n * Omitted / `true` means visible. Evaluated by the Report Viewer layout renderer.\n */\n visible?: boolean | string;\n widget: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ---- Data Source Types ----\n\nexport type AXPReportDataSource =\n | AXPQueryDataSource\n | AXPCustomDataSource\n | AXPAggregatedDataSource\n | AXPTransformedDataSource;\n\n/**\n * Query Data Source - Used for executing predefined queries (AXPQuery)\n */\nexport interface AXPQueryDataSource {\n type: 'query';\n name: string; // The registered query name, e.g., 'getProductList'\n description?: string;\n\n inputs?: AXPReportParameterBinding[]; // Maps report parameters to query inputs\n sortFields?: AXPQuerySort[]; // Default sorting applied by the backend\n pagination?: boolean; // Enables paging in result set\n}\n\n/**\n * Custom Data Source - Used for fetching data from custom providers like REST APIs or external services\n */\nexport interface AXPCustomDataSource {\n type: 'custom';\n provider: string; // Example: 'http://api/report' or 'custom:MyHandler'\n description?: string;\n\n inputs?: AXPReportParameterBinding[]; // Maps report parameters to payload\n options?: { [key: string]: any }; // Additional options for the custom handler\n}\n\n/**\n * Parameter Binding - Maps report-level parameters to actual query/command input structure\n */\nexport interface AXPReportParameterBinding {\n parameterKey: string; // Report parameter key, e.g., 'startDate'\n bindTo: string; // Input key in the query/command payload, e.g., 'filters.from'\n}\n\n/**\n * Aggregated Data Source - Used for pre-aggregated data optimized for charts\n */\nexport interface AXPAggregatedDataSource {\n type: 'aggregated';\n baseQuery: string; // Base query to aggregate from\n description?: string;\n\n groupBy: string[]; // Fields to group by\n aggregations: AXPAggregation[]; // Aggregation operations\n inputs?: AXPReportParameterBinding[];\n}\n\n/**\n * Transformed Data Source - Applies transformations to existing data sources\n */\nexport interface AXPTransformedDataSource {\n type: 'transformed';\n baseDataSource: AXPReportDataSource; // Source to transform\n description?: string;\n\n transformations: AXPDataTransformation[]; // List of transformations\n inputs?: AXPReportParameterBinding[];\n}\n\n/**\n * Aggregation operation for aggregated data sources\n */\nexport interface AXPAggregation {\n field: string;\n operation: 'sum' | 'avg' | 'count' | 'min' | 'max' | 'distinct';\n alias?: string; // Output field name\n}\n\n/**\n * Data transformation operation\n */\nexport interface AXPDataTransformation {\n type: 'filter' | 'sort' | 'group' | 'pivot' | 'format';\n config: Record<string, any>; // Transformation-specific configuration\n}\n\n//#endregion\n\n//#region ---- Group By & Drill Down ----\n\n/**\n * Drill-down target for a grouped report row.\n * When reportId is omitted, the current report is used.\n */\nexport interface AXPReportDrillDownConfig {\n reportId?: string;\n layoutId?: string;\n title?: string;\n parameters?: Record<string, string>;\n}\n\n/**\n * Declares how a summary report is grouped and which detail view opens on drill-down.\n * Multiple definitions allow alternative drill paths (e.g. by brand vs by category).\n */\nexport interface AXPReportGroupByDefinition {\n fields: string[];\n displayField?: string;\n /** When true (default), `displayField` renders as a link instead of a row command column. */\n linkDisplay?: boolean;\n title?: string;\n default?: boolean;\n priority?: 'primary' | 'secondary';\n drillDown: AXPReportDrillDownConfig;\n}\n\n//#endregion\n\n//#region ---- Layout Types ----\n\nexport type AXPReportLayout = AXPReportTableLayout | AXPReportChartLayout | AXPReportPdfLayout;\n\n/**\n * Table Layout - Displays data in tabular format\n */\n\nexport interface AXPReportTableLayoutRowAction extends AXPActionMenuItem {\n priority: 'primary' | 'secondary';\n type: AXPSystemActionType | string;\n default?: boolean;\n}\n\nexport interface AXPReportTableLayout {\n type: 'table';\n columns: AXPReportColumn[];\n actions?: AXPReportTableLayoutRowAction[];\n options?: AXPTableOptions;\n groupBy?: AXPReportGroupByDefinition[];\n conditionalFormatting?: AXPConditionalFormatRule[];\n summary?: AXPReportSummaryOptions[];\n header?: AXPReportHeaderFooter;\n footer?: AXPReportHeaderFooter;\n}\n\nexport interface AXPTableOptions {\n pagination?: boolean;\n stickyHeader?: boolean;\n stripedRows?: boolean;\n sorting?: AXPQuerySort[];\n selectable?: {\n mode: 'single' | 'multiple' | 'none';\n };\n}\n\n/**\n * Chart Layout - Displays data in various chart formats\n */\nexport interface AXPReportChartLayout {\n type: 'chart';\n options: AXPReportChartOptions;\n header?: AXPReportHeaderFooter;\n footer?: AXPReportHeaderFooter;\n}\n\nexport interface AXPReportChartOptions {\n chartType: 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'radar' | 'mixed';\n dataMapping: AXPChartDataMapping;\n styling?: AXPChartStyling;\n interactivity?: AXPChartInteractivity;\n}\n\n/**\n * Chart Data Mapping Configuration\n */\nexport interface AXPChartDataMapping {\n // Core fields\n xField: string; // X-axis data field\n yFields: string | string[]; // Y-axis data field(s) for multiple series\n\n // Grouping and categorization\n groupBy?: string; // Group data by this field\n seriesField?: string; // Field to create multiple series\n\n // Special fields for specific chart types\n sizeField?: string; // For bubble charts\n colorField?: string; // For gradient/conditional coloring\n labelField?: string; // Custom label field\n\n // Data aggregation\n aggregation?: {\n method: 'sum' | 'avg' | 'count' | 'min' | 'max';\n field: string;\n };\n}\n\n/**\n * Chart Visual Styling Configuration\n */\nexport interface AXPChartStyling {\n // Theme and colors\n colorScheme?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'custom';\n /** Palette applied by series index when `seriesColors` is not set. */\n customColors?: string[];\n /**\n * Per-series fill colors keyed by chart category id/label\n * (e.g. Online → success, Away → warning, Busy → danger).\n */\n seriesColors?: Record<string, string>;\n\n // Chart appearance\n gridLines?: boolean;\n legend?: {\n show: boolean;\n position: 'top' | 'bottom' | 'left' | 'right';\n };\n\n // Axes configuration\n xAxis?: AXPChartAxisConfig;\n yAxis?: AXPChartAxisConfig;\n\n // Animation\n animation?: {\n enabled: boolean;\n duration?: number;\n };\n\n // Chart-specific styling\n chartSpecific?: {\n // Bar chart options\n bar?: {\n orientation: 'vertical' | 'horizontal';\n mode: 'grouped' | 'stacked';\n barWidth?: number;\n };\n\n // Line chart options\n line?: {\n style: 'straight' | 'curved' | 'stepped';\n showPoints?: boolean;\n tension?: number;\n };\n\n // Area chart options\n area?: {\n mode: 'normal' | 'stacked' | 'percentage';\n opacity?: number;\n };\n\n // Pie/Doughnut options\n pie?: {\n startAngle?: number;\n innerRadius?: number; // For doughnut charts\n showLabels?: boolean;\n };\n };\n}\n\n/**\n * Chart Axis Configuration\n */\nexport interface AXPChartAxisConfig {\n title?: string;\n show?: boolean;\n type?: 'linear' | 'logarithmic' | 'datetime' | 'category';\n min?: number | string;\n max?: number | string;\n format?: string;\n gridLines?: boolean;\n tickInterval?: number;\n}\n\n/**\n * Chart Interactivity Configuration\n */\nexport interface AXPChartInteractivity {\n // Zoom and pan\n zoom?: {\n enabled: boolean;\n mode?: 'x' | 'y' | 'xy';\n };\n\n // Tooltips\n tooltips?: {\n enabled: boolean;\n format?: string;\n showOnHover?: boolean;\n };\n\n // Click events\n onClick?: {\n enabled: boolean;\n action?: 'drill-down' | 'filter' | 'custom';\n };\n\n // Selection\n selection?: {\n enabled: boolean;\n mode?: 'single' | 'multiple';\n };\n\n // Export\n export?: {\n enabled: boolean;\n formats?: ('png' | 'jpg' | 'pdf' | 'svg')[];\n };\n}\n\n/**\n * PDF Layout - Displays PDF documents\n */\nexport interface AXPReportPdfLayout {\n type: 'pdf';\n options?: AXPReportPdfOptions;\n header?: AXPReportHeaderFooter;\n footer?: AXPReportHeaderFooter;\n}\n\n/**\n * PDF Layout Options\n */\nexport interface AXPReportPdfOptions {\n showDownloadButton?: boolean;\n showPrintButton?: boolean;\n showZoomControls?: boolean;\n showFullscreenButton?: boolean;\n defaultZoom?: number; // Percentage (e.g., 100, 150, 200)\n height?: string; // CSS height (e.g., '100%', '600px')\n}\n\n//#region ---- Shared Models ----\n\nexport interface AXPReportColumn {\n field: string;\n title?: string;\n /**\n * Boolean or expression (e.g. `{{ permission.check(\"…\") }}`).\n * Omitted / `true` means visible. Evaluated when building the table view.\n */\n visible?: boolean | string;\n width?: number | 'auto';\n align?: 'left' | 'center' | 'right';\n /** When true, column header supports interactive sort (opt-in). */\n sortable?: boolean;\n /** Pin column to the start or end of the table (definition-only). */\n pin?: 'start' | 'end';\n widget?: AXPWidgetColumnNode;\n /**\n * Optional cell interactivity. When omitted, group-by `displayField` columns\n * can still render as drill links automatically in report table view.\n */\n interactivity?: AXPReportColumnInteractivity;\n}\n\n/**\n * Column cell interaction — link triggers a command with the current row as context.\n * Platform widgets may mirror this via column `options.displayAs: 'link'` in the future.\n */\nexport interface AXPReportColumnInteractivity {\n type: 'link';\n command: {\n name: string;\n options?: Record<string, unknown>;\n };\n}\n\n/** Server-computed report footer totals keyed by column field. */\nexport type AXPReportTableSummaryResult = Record<string, number | null>;\n\nexport interface AXPReportSummaryOptions {\n field: string;\n operation: 'sum' | 'avg' | 'count' | 'min' | 'max';\n displayIn: 'groupFooter' | 'reportFooter';\n}\n\nexport interface AXPConditionalFormatRule {\n field: string;\n condition: '>' | '<' | '=' | '!=' | 'contains';\n value: any;\n style: {\n color?: string;\n backgroundColor?: string;\n fontWeight?: 'normal' | 'bold';\n };\n}\n\nexport interface AXPReportHeaderFooter {\n title?: string;\n logoUrl?: string;\n showDate?: boolean;\n showParameters?: boolean;\n customHtml?: string;\n}\n\n/**\n * Layout switcher options for UI components\n */\nexport interface AXPLayoutSwitcherOption {\n id: string;\n title: AXPMultiLanguageString;\n icon?: string;\n type: AXPReportLayoutType;\n}\n\n/**\n * Runtime layout selection state\n */\nexport interface AXPReportLayoutState {\n reportId: string;\n activeLayoutId: string;\n availableLayouts: AXPLayoutSwitcherOption[];\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPMultiLanguageString, AXPRuntimeQueryResult } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type {\n AXPReportArtifactKind,\n AXPReportLayoutDefinition,\n} from './report.types';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXPReportGenerationStatus = 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';\n\nexport type AXPReportGenerationTrigger = 'manual' | 'schedule' | 'export';\n\nexport interface AXPReportGenerationArtifact {\n kind: AXPReportArtifactKind;\n fileId?: string;\n contentType?: string;\n fileName?: string;\n rowCount?: number;\n byteLength?: number;\n lastError?: string;\n}\n\nexport const REPORT_GENERATION_NOTIFICATION_DEFINITION_KEY = 'ReportManagement:ReportGeneration';\n\nexport const REPORT_GENERATION_OPEN_FROZEN_COMMAND = 'ReportManagement.Report:OpenViewer';\n\n/** In-app inbox correlation id for a completed report generation run. */\nexport function buildReportGenerationNotificationCorrelationId(runId: string): string {\n const normalized = runId.trim();\n return normalized ? `report-generation:${normalized}` : 'report-generation:';\n}\n\nexport interface AXMReportGenerationRequest extends AXPEntityModel<string> {\n reportId: string;\n layoutId?: string;\n layoutIds?: string[];\n parameters?: Record<string, unknown>;\n formats: AXPReportArtifactKind[];\n trigger: AXPReportGenerationTrigger;\n status: AXPReportGenerationStatus;\n requestedBy?: string;\n jobId?: string;\n scheduleId?: string;\n scheduledOccurrence?: string;\n startedAt?: string;\n completedAt?: string;\n durationMs?: number;\n lastError?: string;\n expiresAt?: string;\n sourceRequestId?: string;\n /** When true, skip in-app notification because the report viewer is watching this run inline. */\n suppressNotificationOnComplete?: boolean;\n artifacts: AXPReportGenerationArtifact[];\n}\n\nexport interface AXPReportViewerFreeze {\n version: 1;\n reportId: string;\n generatedAt: string;\n parameters: Record<string, unknown>;\n definition?: {\n title: AXPMultiLanguageString;\n defaultLayoutId: string;\n layouts: AXPReportLayoutDefinition[];\n };\n dataSources: Array<{\n layoutId: string;\n queryName: string;\n result: AXPRuntimeQueryResult;\n }>;\n}\n\nexport interface AXPReportGenerationCreateInput {\n reportId: string;\n layoutId?: string;\n layoutIds?: string[];\n parameters?: Record<string, unknown>;\n formats?: AXPReportArtifactKind[];\n trigger?: AXPReportGenerationTrigger;\n sourceRequestId?: string;\n scheduleId?: string;\n scheduledOccurrence?: string;\n /** Set when the report viewer will poll and show the result inline. */\n suppressNotificationOnComplete?: boolean;\n}\n\nexport interface AXPReportGenerationReleaseInlineWatchInput {\n id: string;\n}\n\nexport interface AXPReportGenerationCreateResult {\n id: string;\n jobId?: string;\n status: AXPReportGenerationStatus;\n /** True when an existing run was returned instead of creating a new row. */\n deduplicated?: boolean;\n}\n\nexport interface AXPReportGenerationExecuteInput {\n reportRequestId: string;\n}\n\nexport interface AXPReportGenerationExecuteResult {\n reportRequestId: string;\n fileIds: string[];\n rowCount?: number;\n}\n\nexport interface AXPReportGenerationGetInput {\n id: string;\n}\n\nexport interface AXPReportGenerationGetViewerFreezeInput {\n id: string;\n}\n\nexport interface AXPReportGenerationListMineInput {\n skip?: number;\n take?: number;\n}\n\n//#endregion\n","//#region ---- Report management runtime keys ----\n\nexport const AXMReportManagementQueryKeys = {\n Category: {\n ListRoot: 'ReportManagement:Category:ListRoot',\n GetById: 'ReportManagement:Category:GetById',\n },\n Report: {\n GetDefinition: 'ReportManagement:Report:GetDefinition',\n },\n ReportGeneration: {\n Get: 'ReportManagement:ReportGeneration:Get',\n ListMine: 'ReportManagement:ReportGeneration:ListMine',\n GetViewerFreeze: 'ReportManagement:ReportGeneration:GetViewerFreeze',\n },\n} as const;\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMQuerySnapshotTriggerOperation = 'create' | 'update' | 'delete';\n\nexport interface AXMQuerySnapshotPolicyTriggers {\n entities: string[];\n operations: AXMQuerySnapshotTriggerOperation[];\n debounceMs: number;\n}\n\nexport interface AXMQuerySnapshotPolicyEntityModel extends AXPEntityModel<string> {\n queryName: string;\n enabled: boolean;\n schedule: string;\n staleAfterMs: number;\n triggers: AXMQuerySnapshotPolicyTriggers;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPRuntimeCollectionData } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type AXMQuerySnapshotStatus = 'ready' | 'stale' | 'failed';\n\nexport type AXMQuerySnapshotPayload =\n | { success: true; kind: 'value'; data: unknown }\n | { success: true; kind: 'object'; data: unknown }\n | { success: true; kind: 'collection'; data: AXPRuntimeCollectionData };\n\nexport interface AXMQuerySnapshotEntityModel extends AXPEntityModel<string> {\n key: string;\n status: AXMQuerySnapshotStatus;\n calculatedAt: string;\n durationMs: number;\n lastError?: string;\n payload: AXMQuerySnapshotPayload;\n}\n\nexport interface AXMRecalculateQuerySnapshotsInput {\n tenantId?: string;\n applicationId?: string;\n queryKeys?: string[];\n /** When true, a full run ignores catch-up skips (manual refresh all). */\n force?: boolean;\n}\n\nexport interface AXMRefreshQuerySnapshotsInput {\n queryKeys?: string[];\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\n\nexport * from './root-config';\nexport * from './report.types';\nexport * from './report-generation.types';\nexport * from './runtime.keys';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
-
import { E as ENTITY_REPORTS_PAGE_COMPONENT_KEY } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-
|
|
3
|
+
import { E as ENTITY_REPORTS_PAGE_COMPONENT_KEY } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DUdUNlnp.mjs';
|
|
4
4
|
|
|
5
5
|
//#endregion
|
|
6
6
|
//#region ----- Provider -----
|
|
@@ -9,7 +9,7 @@ class AXMEntityReportsPageComponentProvider {
|
|
|
9
9
|
return [
|
|
10
10
|
{
|
|
11
11
|
key: ENTITY_REPORTS_PAGE_COMPONENT_KEY,
|
|
12
|
-
loader: () => import('./acorex-platform-module-report-management-client-entity-reports-page.component-
|
|
12
|
+
loader: () => import('./acorex-platform-module-report-management-client-entity-reports-page.component-D4SAGGn-.mjs').then((c) => c.AXMEntityReportsPageComponent),
|
|
13
13
|
},
|
|
14
14
|
];
|
|
15
15
|
}
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
21
21
|
}] });
|
|
22
22
|
|
|
23
23
|
export { AXMEntityReportsPageComponentProvider };
|
|
24
|
-
//# sourceMappingURL=acorex-platform-module-report-management-client-entity-reports-page-component.provider-
|
|
24
|
+
//# sourceMappingURL=acorex-platform-module-report-management-client-entity-reports-page-component.provider-B0dU2K_E.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-report-management-client-entity-reports-page-component.provider-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-report-management-client-entity-reports-page-component.provider-B0dU2K_E.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports-page-component.provider.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { ENTITY_REPORTS_PAGE_COMPONENT_KEY } from './entity-reports.util';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXMEntityReportsPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./entity-reports-page.component').then((c) => c.AXMEntityReportsPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AASA;AAEA;MAGa,qCAAqC,CAAA;AAChD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,iCAAiC;AACtC,gBAAA,MAAM,EAAE,MACN,OAAO,8FAAiC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AACzF,aAAA;SACF;IACH;8GATW,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArC,qCAAqC,EAAA,CAAA,CAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBADjD;;;"}
|
|
@@ -13,7 +13,7 @@ import { AsyncPipe } from '@angular/common';
|
|
|
13
13
|
import * as i0 from '@angular/core';
|
|
14
14
|
import { input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
15
15
|
import { ActivatedRoute } from '@angular/router';
|
|
16
|
-
import { g as AXPReportViewerService, h as bindingShowsOnPage, O as OPEN_REPORT_IN_POPUP_COMMAND, j as buildOpenInPopupCommandOptions, k as resolveBindingTitle, l as resolveBindingDescription } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-
|
|
16
|
+
import { g as AXPReportViewerService, h as bindingShowsOnPage, O as OPEN_REPORT_IN_POPUP_COMMAND, j as buildOpenInPopupCommandOptions, k as resolveBindingTitle, l as resolveBindingDescription } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DUdUNlnp.mjs';
|
|
17
17
|
|
|
18
18
|
//#region ----- Persisted entity id -----
|
|
19
19
|
/**
|
|
@@ -141,7 +141,7 @@ class AXMEntityReportsPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
141
141
|
provide: AXPPageLayoutBase,
|
|
142
142
|
useExisting: AXMEntityReportsPageComponent,
|
|
143
143
|
},
|
|
144
|
-
], usesInheritance: true, ngImport: i0, template: "@if (isLoading()) {\n <!-- ----- Skeleton while entity-bound reports load ----- -->\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\" aria-hidden=\"true\">\n @for (widthClass of ['w-2/3', 'w-1/2', 'w-3/5']; track $index) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div class=\"h-10 w-10 shrink-0 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-2\">\n <div class=\"h-4 max-w-full rounded-md overflow-hidden\" [class]=\"widthClass\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"h-3 w-4/5 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n </div>\n </div>\n }\n </div>\n}\n<!-- ----- Record must be saved before reports can use its id ----- -->\n@else if (!entityId()) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.save-record-first.title'\"\n [description]=\"'@report-management:entity-reports.messages.save-record-first.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- No report definitions bound to this entity type ----- -->\n@else if (pageReports().length === 0) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.empty.title'\"\n [description]=\"'@report-management:entity-reports.messages.empty.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- Bound reports list ----- -->\n@else {\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\">\n <p class=\"text-sm opacity-70\">\n {{ '@report-management:entity-reports.page.description' | translate | async }}\n </p>\n @for (item of pageReports(); track item.report.id) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary text-lg\"\n aria-hidden=\"true\"\n >\n <ax-icon class=\"fa-light fa-file-chart-column\"></ax-icon>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-1\">\n <span class=\"font-medium truncate\">\n {{ reportTitle(item) | translate | async }}\n </span>\n @if (reportDescription(item); as description) {\n <!-- ----- Optional report description under the title ----- -->\n <span class=\"text-sm opacity-70 line-clamp-2\">\n {{ description | translate | async }}\n </span>\n }\n </div>\n <ax-button\n look=\"solid\"\n color=\"secondary\"\n [text]=\"'@report-management:entity-reports.actions.open.title' | translate | async\"\n (onClick)=\"openReport(item)\">\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-arrow-right\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "
|
|
144
|
+
], usesInheritance: true, ngImport: i0, template: "@if (isLoading()) {\n <!-- ----- Skeleton while entity-bound reports load ----- -->\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\" aria-hidden=\"true\">\n @for (widthClass of ['w-2/3', 'w-1/2', 'w-3/5']; track $index) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div class=\"h-10 w-10 shrink-0 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-2\">\n <div class=\"h-4 max-w-full rounded-md overflow-hidden\" [class]=\"widthClass\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"h-3 w-4/5 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n </div>\n </div>\n }\n </div>\n}\n<!-- ----- Record must be saved before reports can use its id ----- -->\n@else if (!entityId()) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.save-record-first.title'\"\n [description]=\"'@report-management:entity-reports.messages.save-record-first.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- No report definitions bound to this entity type ----- -->\n@else if (pageReports().length === 0) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.empty.title'\"\n [description]=\"'@report-management:entity-reports.messages.empty.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- Bound reports list ----- -->\n@else {\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\">\n <p class=\"text-sm opacity-70\">\n {{ '@report-management:entity-reports.page.description' | translate | async }}\n </p>\n @for (item of pageReports(); track item.report.id) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary text-lg\"\n aria-hidden=\"true\"\n >\n <ax-icon class=\"fa-light fa-file-chart-column\"></ax-icon>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-1\">\n <span class=\"font-medium truncate\">\n {{ reportTitle(item) | translate | async }}\n </span>\n @if (reportDescription(item); as description) {\n <!-- ----- Optional report description under the title ----- -->\n <span class=\"text-sm opacity-70 line-clamp-2\">\n {{ description | translate | async }}\n </span>\n }\n </div>\n <ax-button\n look=\"solid\"\n color=\"secondary\"\n [text]=\"'@report-management:entity-reports.actions.open.title' | translate | async\"\n (onClick)=\"openReport(item)\">\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-arrow-right\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </div>\n }\n </div>\n}\n", dependencies: [{ kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
145
145
|
}
|
|
146
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMEntityReportsPageComponent, decorators: [{
|
|
147
147
|
type: Component,
|
|
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
163
163
|
}], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
|
|
164
164
|
|
|
165
165
|
export { AXMEntityReportsPageComponent };
|
|
166
|
-
//# sourceMappingURL=acorex-platform-module-report-management-client-entity-reports-page.component-
|
|
166
|
+
//# sourceMappingURL=acorex-platform-module-report-management-client-entity-reports-page.component-D4SAGGn-.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-report-management-client-entity-reports-page.component-D27Gtma6.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/features/entity-reports/resolve-entity-record-id.util.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports-page.component.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports-page.component.html"],"sourcesContent":["//#region ----- Persisted entity id -----\n\n/**\n * Resolves the persisted record id from entity detail page root context.\n */\nexport function resolvePersistedEntityId(\n ctx: Record<string, unknown> | null | undefined,\n): string | undefined {\n if (!ctx) {\n return undefined;\n }\n const raw = ctx['id'] ?? ctx['_id'];\n if (typeof raw === 'string' && raw.length > 0) {\n return raw;\n }\n if (typeof raw === 'number' && !Number.isNaN(raw)) {\n return String(raw);\n }\n return undefined;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AXPReportViewerService } from '../../reports/report-viewer.service';\nimport {\n bindingShowsOnPage,\n buildOpenInPopupCommandOptions,\n OPEN_REPORT_IN_POPUP_COMMAND,\n resolveBindingDescription,\n resolveBindingTitle,\n type AXPEntityBoundReport,\n} from './entity-reports.util';\nimport { resolvePersistedEntityId } from './resolve-entity-record-id.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-entity-reports-page',\n standalone: true,\n imports: [\n AXPStateMessageComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXTranslationModule,\n AsyncPipe,\n ],\n templateUrl: './entity-reports-page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMEntityReportsPageComponent,\n },\n ],\n host: {\n class: 'flex h-full min-h-0 flex-1 flex-col overflow-hidden',\n },\n})\nexport class AXMEntityReportsPageComponent extends AXPPageLayoutBaseComponent {\n //#region ----- Inputs -----\n\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n private readonly reportViewerService = inject(AXPReportViewerService);\n private readonly commandService = inject(AXPCommandService);\n private readonly route = inject(ActivatedRoute);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isLoading = signal(true);\n protected readonly boundReports = signal<AXPEntityBoundReport[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly entityId = computed(() => resolvePersistedEntityId(this.rootContext()));\n\n protected readonly entityType = computed(() => this.resolveEntityType());\n\n protected readonly pageReports = computed(() =>\n this.boundReports().filter(({ binding }) => bindingShowsOnPage(binding)),\n );\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const entityType = this.entityType();\n untracked(() => {\n void this.loadBoundReports(entityType);\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected async openReport(item: AXPEntityBoundReport): Promise<void> {\n const entityId = this.entityId();\n if (!entityId) {\n return;\n }\n\n await this.commandService.execute(OPEN_REPORT_IN_POPUP_COMMAND, {\n data: this.rootContext() ?? { id: entityId },\n options: buildOpenInPopupCommandOptions(item.report, item.binding),\n });\n }\n\n protected reportTitle(item: AXPEntityBoundReport): AXPMultiLanguageString {\n return resolveBindingTitle(item.report, item.binding);\n }\n\n protected reportDescription(item: AXPEntityBoundReport): AXPMultiLanguageString | undefined {\n return resolveBindingDescription(item.report, item.binding);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private resolveEntityType(): string {\n const fromOptions = this.options()?.['entityType'];\n if (typeof fromOptions === 'string' && fromOptions.trim()) {\n return fromOptions.trim();\n }\n const fromConfig = this.pageConfig()?.['entityType'];\n if (typeof fromConfig === 'string' && fromConfig.trim()) {\n return fromConfig.trim();\n }\n\n const ctx = this.rootContext() ?? {};\n const moduleName = typeof ctx['moduleName'] === 'string' ? ctx['moduleName'] : null;\n const entityName = typeof ctx['entityName'] === 'string' ? ctx['entityName'] : null;\n if (moduleName && entityName) {\n return `${moduleName}.${entityName}`;\n }\n\n const module = this.route.snapshot.parent?.paramMap.get('module');\n const entity = this.route.snapshot.paramMap.get('entity');\n if (module && entity) {\n return `${module}.${entity}`;\n }\n\n return '';\n }\n\n private async loadBoundReports(entityType: string): Promise<void> {\n if (!entityType) {\n this.boundReports.set([]);\n this.isLoading.set(false);\n return;\n }\n\n this.isLoading.set(true);\n try {\n const reports = await this.reportViewerService.getReportsByEntityType(entityType);\n this.boundReports.set(reports);\n } catch {\n this.boundReports.set([]);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (isLoading()) {\n <!-- ----- Skeleton while entity-bound reports load ----- -->\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\" aria-hidden=\"true\">\n @for (widthClass of ['w-2/3', 'w-1/2', 'w-3/5']; track $index) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div class=\"h-10 w-10 shrink-0 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-2\">\n <div class=\"h-4 max-w-full rounded-md overflow-hidden\" [class]=\"widthClass\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"h-3 w-4/5 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n </div>\n </div>\n }\n </div>\n}\n<!-- ----- Record must be saved before reports can use its id ----- -->\n@else if (!entityId()) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.save-record-first.title'\"\n [description]=\"'@report-management:entity-reports.messages.save-record-first.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- No report definitions bound to this entity type ----- -->\n@else if (pageReports().length === 0) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.empty.title'\"\n [description]=\"'@report-management:entity-reports.messages.empty.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- Bound reports list ----- -->\n@else {\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\">\n <p class=\"text-sm opacity-70\">\n {{ '@report-management:entity-reports.page.description' | translate | async }}\n </p>\n @for (item of pageReports(); track item.report.id) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary text-lg\"\n aria-hidden=\"true\"\n >\n <ax-icon class=\"fa-light fa-file-chart-column\"></ax-icon>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-1\">\n <span class=\"font-medium truncate\">\n {{ reportTitle(item) | translate | async }}\n </span>\n @if (reportDescription(item); as description) {\n <!-- ----- Optional report description under the title ----- -->\n <span class=\"text-sm opacity-70 line-clamp-2\">\n {{ description | translate | async }}\n </span>\n }\n </div>\n <ax-button\n look=\"solid\"\n color=\"secondary\"\n [text]=\"'@report-management:entity-reports.actions.open.title' | translate | async\"\n (onClick)=\"openReport(item)\">\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-arrow-right\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </div>\n }\n </div>\n}\n"],"names":["i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-report-management-client-entity-reports-page.component-D4SAGGn-.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/features/entity-reports/resolve-entity-record-id.util.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports-page.component.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports-page.component.html"],"sourcesContent":["//#region ----- Persisted entity id -----\n\n/**\n * Resolves the persisted record id from entity detail page root context.\n */\nexport function resolvePersistedEntityId(\n ctx: Record<string, unknown> | null | undefined,\n): string | undefined {\n if (!ctx) {\n return undefined;\n }\n const raw = ctx['id'] ?? ctx['_id'];\n if (typeof raw === 'string' && raw.length > 0) {\n return raw;\n }\n if (typeof raw === 'number' && !Number.isNaN(raw)) {\n return String(raw);\n }\n return undefined;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AXPReportViewerService } from '../../reports/report-viewer.service';\nimport {\n bindingShowsOnPage,\n buildOpenInPopupCommandOptions,\n OPEN_REPORT_IN_POPUP_COMMAND,\n resolveBindingDescription,\n resolveBindingTitle,\n type AXPEntityBoundReport,\n} from './entity-reports.util';\nimport { resolvePersistedEntityId } from './resolve-entity-record-id.util';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-entity-reports-page',\n standalone: true,\n imports: [\n AXPStateMessageComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXSkeletonModule,\n AXTranslationModule,\n AsyncPipe,\n ],\n templateUrl: './entity-reports-page.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMEntityReportsPageComponent,\n },\n ],\n host: {\n class: 'flex h-full min-h-0 flex-1 flex-col overflow-hidden',\n },\n})\nexport class AXMEntityReportsPageComponent extends AXPPageLayoutBaseComponent {\n //#region ----- Inputs -----\n\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n private readonly reportViewerService = inject(AXPReportViewerService);\n private readonly commandService = inject(AXPCommandService);\n private readonly route = inject(ActivatedRoute);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isLoading = signal(true);\n protected readonly boundReports = signal<AXPEntityBoundReport[]>([]);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly entityId = computed(() => resolvePersistedEntityId(this.rootContext()));\n\n protected readonly entityType = computed(() => this.resolveEntityType());\n\n protected readonly pageReports = computed(() =>\n this.boundReports().filter(({ binding }) => bindingShowsOnPage(binding)),\n );\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n super();\n effect(() => {\n const entityType = this.entityType();\n untracked(() => {\n void this.loadBoundReports(entityType);\n });\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected async openReport(item: AXPEntityBoundReport): Promise<void> {\n const entityId = this.entityId();\n if (!entityId) {\n return;\n }\n\n await this.commandService.execute(OPEN_REPORT_IN_POPUP_COMMAND, {\n data: this.rootContext() ?? { id: entityId },\n options: buildOpenInPopupCommandOptions(item.report, item.binding),\n });\n }\n\n protected reportTitle(item: AXPEntityBoundReport): AXPMultiLanguageString {\n return resolveBindingTitle(item.report, item.binding);\n }\n\n protected reportDescription(item: AXPEntityBoundReport): AXPMultiLanguageString | undefined {\n return resolveBindingDescription(item.report, item.binding);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private resolveEntityType(): string {\n const fromOptions = this.options()?.['entityType'];\n if (typeof fromOptions === 'string' && fromOptions.trim()) {\n return fromOptions.trim();\n }\n const fromConfig = this.pageConfig()?.['entityType'];\n if (typeof fromConfig === 'string' && fromConfig.trim()) {\n return fromConfig.trim();\n }\n\n const ctx = this.rootContext() ?? {};\n const moduleName = typeof ctx['moduleName'] === 'string' ? ctx['moduleName'] : null;\n const entityName = typeof ctx['entityName'] === 'string' ? ctx['entityName'] : null;\n if (moduleName && entityName) {\n return `${moduleName}.${entityName}`;\n }\n\n const module = this.route.snapshot.parent?.paramMap.get('module');\n const entity = this.route.snapshot.paramMap.get('entity');\n if (module && entity) {\n return `${module}.${entity}`;\n }\n\n return '';\n }\n\n private async loadBoundReports(entityType: string): Promise<void> {\n if (!entityType) {\n this.boundReports.set([]);\n this.isLoading.set(false);\n return;\n }\n\n this.isLoading.set(true);\n try {\n const reports = await this.reportViewerService.getReportsByEntityType(entityType);\n this.boundReports.set(reports);\n } catch {\n this.boundReports.set([]);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (isLoading()) {\n <!-- ----- Skeleton while entity-bound reports load ----- -->\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\" aria-hidden=\"true\">\n @for (widthClass of ['w-2/3', 'w-1/2', 'w-3/5']; track $index) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div class=\"h-10 w-10 shrink-0 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-2\">\n <div class=\"h-4 max-w-full rounded-md overflow-hidden\" [class]=\"widthClass\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n <div class=\"h-3 w-4/5 rounded-md overflow-hidden\">\n <ax-skeleton\n [animated]=\"true\"\n style=\"display: block; width: 100%; height: 100%\"\n ></ax-skeleton>\n </div>\n </div>\n </div>\n }\n </div>\n}\n<!-- ----- Record must be saved before reports can use its id ----- -->\n@else if (!entityId()) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.save-record-first.title'\"\n [description]=\"'@report-management:entity-reports.messages.save-record-first.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- No report definitions bound to this entity type ----- -->\n@else if (pageReports().length === 0) {\n <div class=\"flex h-full min-h-[20rem] items-center justify-center p-6\">\n <axp-state-message\n [title]=\"'@report-management:entity-reports.messages.empty.title'\"\n [description]=\"'@report-management:entity-reports.messages.empty.description'\"\n ></axp-state-message>\n </div>\n}\n<!-- ----- Bound reports list ----- -->\n@else {\n <div class=\"flex h-full min-h-0 flex-1 flex-col gap-3 overflow-auto p-4\">\n <p class=\"text-sm opacity-70\">\n {{ '@report-management:entity-reports.page.description' | translate | async }}\n </p>\n @for (item of pageReports(); track item.report.id) {\n <div class=\"flex items-center gap-4 rounded-lg border border-default bg-lightest p-4\">\n <div\n class=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary text-lg\"\n aria-hidden=\"true\"\n >\n <ax-icon class=\"fa-light fa-file-chart-column\"></ax-icon>\n </div>\n <div class=\"min-w-0 flex-1 flex flex-col gap-1\">\n <span class=\"font-medium truncate\">\n {{ reportTitle(item) | translate | async }}\n </span>\n @if (reportDescription(item); as description) {\n <!-- ----- Optional report description under the title ----- -->\n <span class=\"text-sm opacity-70 line-clamp-2\">\n {{ description | translate | async }}\n </span>\n }\n </div>\n <ax-button\n look=\"solid\"\n color=\"secondary\"\n [text]=\"'@report-management:entity-reports.actions.open.title' | translate | async\"\n (onClick)=\"openReport(item)\">\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-arrow-right\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </div>\n }\n </div>\n}\n"],"names":["i4"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-report-management-client-local-entities.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/report-management/client/src/lib/acorex-platform-module-report-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers report-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideReportManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.querySnapshot.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/query-snapshot').then((m) => m.querySnapshotEntityFactory()),\n [RootConfig.entities.querySnapshotPolicy.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/query-snapshot-policy').then((m) => m.querySnapshotPolicyEntityFactory()),\n [RootConfig.entities.report.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/report').then((m) => m.reportEntityFactory()),\n [RootConfig.entities.category.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/report-category').then((m) => m.reportCategoryEntityFactory()),\n [RootConfig.entities.reportGenerationRequest.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/report-generation-request').then((m) => m.reportGenerationRequestEntityFactory()),\n },\n });\n}\n\nexport { reportManagementLocalEntityCatalog } from '@acorex-platform/module-report-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,oCAAoC,GAAA;AAClD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,MACxC,OAAO,oFAAoF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,CAAC;AAC1I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,MAC9C,OAAO,2FAA2F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,EAAE,CAAC;AACvJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,MACjC,OAAO,4EAA4E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAC3H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,MACnC,OAAO,qFAAqF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,EAAE,CAAC;AAC5I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,GAAG,MAClD,OAAO,+FAA+F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,EAAE,CAAC;AAChK,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnCA;;AAEG
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-report-management-client-local-entities.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/report-management/client/src/lib/acorex-platform-module-report-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers report-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideReportManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.querySnapshot.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/query-snapshot').then((m) => m.querySnapshotEntityFactory()),\n [RootConfig.entities.querySnapshotPolicy.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/query-snapshot-policy').then((m) => m.querySnapshotPolicyEntityFactory()),\n [RootConfig.entities.report.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/report').then((m) => m.reportEntityFactory()),\n [RootConfig.entities.category.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/report-category').then((m) => m.reportCategoryEntityFactory()),\n [RootConfig.entities.reportGenerationRequest.name]: () =>\n import('@acorex-platform/module-report-management-client/contracts/entities/report-generation-request').then((m) => m.reportGenerationRequestEntityFactory()),\n },\n });\n}\n\nexport { reportManagementLocalEntityCatalog } from '@acorex-platform/module-report-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,oCAAoC,GAAA;AAClD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,MACxC,OAAO,oFAAoF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,CAAC;AAC1I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,MAC9C,OAAO,2FAA2F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,EAAE,CAAC;AACvJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,MACjC,OAAO,4EAA4E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;AAC3H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,MACnC,OAAO,qFAAqF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,EAAE,CAAC;AAC5I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,GAAG,MAClD,OAAO,+FAA+F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oCAAoC,EAAE,CAAC;AAChK,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnCA;;AAEG;;"}
|
|
@@ -13,7 +13,7 @@ import * as i2$1 from '@angular/common';
|
|
|
13
13
|
import { CommonModule } from '@angular/common';
|
|
14
14
|
import * as i0 from '@angular/core';
|
|
15
15
|
import { inject, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
16
|
-
import { A as AXPReportViewerViewModel, a as AXPOpenReportViewerCommand, r as reportLayoutPageIcon, b as resolveReportFilterDefaultValue, i as isDistinctLayoutTitle, c as reportLayoutTitleKey, d as AXPReportTableViewComponent, e as AXPReportChartViewComponent, f as AXPReportPdfViewComponent } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-
|
|
16
|
+
import { A as AXPReportViewerViewModel, a as AXPOpenReportViewerCommand, r as reportLayoutPageIcon, b as resolveReportFilterDefaultValue, i as isDistinctLayoutTitle, c as reportLayoutTitleKey, d as AXPReportTableViewComponent, e as AXPReportChartViewComponent, f as AXPReportPdfViewComponent } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DUdUNlnp.mjs';
|
|
17
17
|
|
|
18
18
|
//#region ----- Imports -----
|
|
19
19
|
//#endregion
|
|
@@ -89,7 +89,7 @@ class AXPReportPopupViewerComponent extends AXBasePageComponent {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPReportPopupViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPReportPopupViewerComponent, isStandalone: true, selector: "axp-report-popup-viewer", host: { classAttribute: "axp-report-popup-viewer flex h-full min-h-0 flex-1 flex-col overflow-hidden" }, providers: [AXPReportViewerViewModel], usesInheritance: true, ngImport: i0, template: "<ax-content class=\"flex min-h-0 flex-1 flex-col overflow-hidden\" *translate=\"let t\">\n <div class=\"__popup-content\">\n <!-- ----- Layout switcher for multi-layout reports ----- -->\n @if (vm.hasMultipleLayouts() && vm.canSwitchLayout()) {\n <div class=\"__layout-switcher mb-3\">\n <ax-tabs\n class=\"__layout-tabs\"\n [look]=\"'with-line'\"\n [location]=\"'bottom'\"\n [fitParent]=\"false\"\n (onActiveTabChanged)=\"handleLayoutTabChanged($event)\"\n >\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-tab-item\n [key]=\"layout.id\"\n [text]=\"(getLayoutSwitcherLabel(layout) | translate | async) ?? ''\"\n [active]=\"vm.activeLayoutId() === layout.id\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"layoutPageIcon(layout.icon, layout)\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n <!-- ----- Error or results ----- -->\n @if (vm.hasError()) {\n <axp-state-message\n icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"'@report-management:report-viewer.messages.error.fetch-title'\"\n [description]=\"vm.error() || '@report-management:report-viewer.messages.error.unexpected'\"\n >\n </axp-state-message>\n }\n <!-- ----- Table layout results ----- -->\n @else if (vm.isTableLayout()) {\n <axp-report-table-view class=\"__popup-view\"></axp-report-table-view>\n }\n <!-- ----- Chart layout results ----- -->\n @else if (vm.isChartLayout()) {\n <axp-report-chart-view class=\"__popup-view\"></axp-report-chart-view>\n }\n <!-- ----- PDF layout results ----- -->\n @else if (vm.isPdfLayout()) {\n <axp-report-pdf-view class=\"__popup-view\"></axp-report-pdf-view>\n }\n <!-- ----- Unsupported layout types ----- -->\n @else {\n <axp-state-message\n icon=\"fa-light fa-chart-line\"\n [title]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.title'\"\n [description]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.description'\"\n >\n </axp-state-message>\n }\n </div>\n</ax-content>\n<ax-footer class=\"__popup-footer\">\n <ax-prefix>\n <ax-button\n look=\"outline\"\n color=\"secondary\"\n [text]=\"'@report-management:report-viewer.actions.open-in-report-viewer.title' | translate | async\"\n (onClick)=\"openInFullViewer()\"\n >\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-file-chart-column\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"default\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n", styles: [".axp-report-popup-viewer{display:flex;height:100%;min-height:0px;flex:1;flex-direction:column;overflow:hidden}.__popup-content{display:flex;min-height:0px;flex:1;flex-direction:column;overflow:hidden;padding:calc(var(--spacing, .25rem) * 4)}.__popup-view{display:flex;height:100%;max-height:100%;min-height:20rem;width:100%;min-width:0px;flex:1;flex-direction:column;overflow:hidden}.__popup-view ax-data-table{display:flex;height:100%;max-height:100%;min-height:0px;flex:1;flex-direction:column;overflow:hidden}.__popup-view.axp-report-chart-view,.__popup-view.axp-report-pdf-view{min-height:20rem}.__layout-switcher{flex-shrink:0}.__layout-tabs{width:100%}.ax-popup:has(axp-report-popup-viewer){display:flex;flex-direction:column;overflow:hidden;height:80vh;max-height:80vh}.ax-popup:has(axp-report-popup-viewer) .ax-popup-header-container .ax-popup-header{padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}.ax-popup:has(axp-report-popup-viewer) .ax-popup-main-container{display:flex;min-height:0px;flex:1;flex-direction:column;overflow:hidden;flex:1 1 auto}.ax-popup:has(axp-report-popup-viewer) .ax-popup-body-container{display:flex;min-height:0px;flex:1;flex-direction:column;overflow:hidden;flex:1 1 auto;overflow:hidden!important}.ax-popup:has(axp-report-popup-viewer) .ax-popup-body-container>ng-component,.ax-popup:has(axp-report-popup-viewer) .ax-popup-body-container>*{display:flex;height:100%;min-height:0px;flex:1;flex-direction:column;overflow:hidden}.ax-popup:has(axp-report-popup-viewer) .ax-popup-footer-container{flex-shrink:0}.ax-popup:has(axp-report-popup-viewer) ax-footer{padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}@media(min-width:320px)and (max-width:640px){.ax-popup.ax-popup-sm:has(axp-report-popup-viewer),.ax-popup.ax-popup-md:has(axp-report-popup-viewer),.ax-popup.ax-popup-lg:has(axp-report-popup-viewer){height:90vh!important;max-height:90vh!important}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPReportPopupViewerComponent, isStandalone: true, selector: "axp-report-popup-viewer", host: { classAttribute: "axp-report-popup-viewer flex h-full min-h-0 flex-1 flex-col overflow-hidden" }, providers: [AXPReportViewerViewModel], usesInheritance: true, ngImport: i0, template: "<ax-content class=\"flex min-h-0 flex-1 flex-col overflow-hidden\" *translate=\"let t\">\n <div class=\"__popup-content\">\n <!-- ----- Layout switcher for multi-layout reports ----- -->\n @if (vm.hasMultipleLayouts() && vm.canSwitchLayout()) {\n <div class=\"__layout-switcher mb-3\">\n <ax-tabs\n class=\"__layout-tabs\"\n [look]=\"'with-line'\"\n [location]=\"'bottom'\"\n [fitParent]=\"false\"\n (onActiveTabChanged)=\"handleLayoutTabChanged($event)\"\n >\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-tab-item\n [key]=\"layout.id\"\n [text]=\"(getLayoutSwitcherLabel(layout) | translate | async) ?? ''\"\n [active]=\"vm.activeLayoutId() === layout.id\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"layoutPageIcon(layout.icon, layout)\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n <!-- ----- Error or results ----- -->\n @if (vm.hasError()) {\n <axp-state-message\n icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"'@report-management:report-viewer.messages.error.fetch-title'\"\n [description]=\"vm.error() || '@report-management:report-viewer.messages.error.unexpected'\"\n >\n </axp-state-message>\n }\n <!-- ----- Table layout results ----- -->\n @else if (vm.isTableLayout()) {\n <axp-report-table-view class=\"__popup-view\"></axp-report-table-view>\n }\n <!-- ----- Chart layout results ----- -->\n @else if (vm.isChartLayout()) {\n <axp-report-chart-view class=\"__popup-view\"></axp-report-chart-view>\n }\n <!-- ----- PDF layout results ----- -->\n @else if (vm.isPdfLayout()) {\n <axp-report-pdf-view class=\"__popup-view\"></axp-report-pdf-view>\n }\n <!-- ----- Unsupported layout types ----- -->\n @else {\n <axp-state-message\n icon=\"fa-light fa-chart-line\"\n [title]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.title'\"\n [description]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.description'\"\n >\n </axp-state-message>\n }\n </div>\n</ax-content>\n<ax-footer class=\"__popup-footer\">\n <ax-prefix>\n <ax-button\n look=\"outline\"\n color=\"secondary\"\n [text]=\"'@report-management:report-viewer.actions.open-in-report-viewer.title' | translate | async\"\n (onClick)=\"openInFullViewer()\"\n >\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-file-chart-column\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"default\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n", styles: [".axp-report-popup-viewer{display:flex;height:100%;min-height:0px;flex:1;flex-direction:column;overflow:hidden}.__popup-content{display:flex;min-height:0px;flex:1;flex-direction:column;overflow:hidden;padding:calc(var(--spacing, .25rem) * 4)}.__popup-view{display:flex;height:100%;max-height:100%;min-height:20rem;width:100%;min-width:0px;flex:1;flex-direction:column;overflow:hidden}.__popup-view ax-data-table{display:flex;height:100%;max-height:100%;min-height:0px;flex:1;flex-direction:column;overflow:hidden}.__popup-view.axp-report-chart-view,.__popup-view.axp-report-pdf-view{min-height:20rem}.__layout-switcher{flex-shrink:0}.__layout-tabs{width:100%}.ax-popup:has(axp-report-popup-viewer){display:flex;flex-direction:column;overflow:hidden;height:80vh;max-height:80vh}.ax-popup:has(axp-report-popup-viewer) .ax-popup-header-container .ax-popup-header{padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}.ax-popup:has(axp-report-popup-viewer) .ax-popup-main-container{display:flex;min-height:0px;flex:1;flex-direction:column;overflow:hidden;flex:1 1 auto}.ax-popup:has(axp-report-popup-viewer) .ax-popup-body-container{display:flex;min-height:0px;flex:1;flex-direction:column;overflow:hidden;flex:1 1 auto;overflow:hidden!important}.ax-popup:has(axp-report-popup-viewer) .ax-popup-body-container>ng-component,.ax-popup:has(axp-report-popup-viewer) .ax-popup-body-container>*{display:flex;height:100%;min-height:0px;flex:1;flex-direction:column;overflow:hidden}.ax-popup:has(axp-report-popup-viewer) .ax-popup-footer-container{flex-shrink:0}.ax-popup:has(axp-report-popup-viewer) ax-footer{padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 3)}@media(min-width:320px)and (max-width:640px){.ax-popup.ax-popup-sm:has(axp-report-popup-viewer),.ax-popup.ax-popup-md:has(axp-report-popup-viewer),.ax-popup.ax-popup-lg:has(axp-report-popup-viewer){height:90vh!important;max-height:90vh!important}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i3.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i3.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "component", type: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type: AXPReportChartViewComponent, selector: "axp-report-chart-view" }, { kind: "component", type: AXPReportPdfViewComponent, selector: "axp-report-pdf-view" }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
93
93
|
}
|
|
94
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPReportPopupViewerComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
@@ -110,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
110
110
|
}] });
|
|
111
111
|
|
|
112
112
|
export { AXPReportPopupViewerComponent };
|
|
113
|
-
//# sourceMappingURL=acorex-platform-module-report-management-client-report-popup-viewer.component-
|
|
113
|
+
//# sourceMappingURL=acorex-platform-module-report-management-client-report-popup-viewer.component-Dg3IxjGy.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-report-management-client-report-popup-viewer.component-B6aTfRp0.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/features/report-viewer/report-popup-viewer/report-popup-viewer.component.ts","../../../../libs/modules/report-management/client/src/lib/features/report-viewer/report-popup-viewer/report-popup-viewer.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule, type AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport type { AXPLayoutSwitcherOption } from '@acorex-platform/module-report-management-client/contracts';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPOpenReportViewerCommand } from '../../../commands/open-report-viewer.command';\nimport { resolveReportFilterDefaultValue } from '../../../reports/report-parameter.util';\nimport {\n isDistinctLayoutTitle,\n reportLayoutPageIcon,\n reportLayoutTitleKey,\n} from '../report-layout-switcher.util';\nimport { AXPReportViewerViewModel } from '../report-viewer.viewmodel';\nimport { AXPReportChartViewComponent } from '../views/report-chart-view/report-chart-view.component';\nimport { AXPReportPdfViewComponent } from '../views/report-pdf-view/report-pdf-view.component';\nimport { AXPReportTableViewComponent } from '../views/report-table-view/report-table-view.component';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axp-report-popup-viewer',\n templateUrl: './report-popup-viewer.component.html',\n styleUrl: './report-popup-viewer.component.css',\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTabsModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXPReportTableViewComponent,\n AXPReportChartViewComponent,\n AXPReportPdfViewComponent,\n ],\n providers: [AXPReportViewerViewModel],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'axp-report-popup-viewer flex h-full min-h-0 flex-1 flex-col overflow-hidden',\n },\n})\nexport class AXPReportPopupViewerComponent extends AXBasePageComponent {\n //#region ----- Popup Data -----\n\n reportId!: string;\n layoutId?: string;\n runId?: string;\n parameters: Record<string, unknown> = {};\n hideColumnFields: string[] = [];\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n protected readonly vm = inject(AXPReportViewerViewModel);\n private readonly openViewer = inject(AXPOpenReportViewerCommand);\n private readonly translateService = inject(AXTranslationService);\n protected readonly layoutPageIcon = reportLayoutPageIcon;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n const runId = this.runId?.trim();\n if (runId) {\n await this.vm.loadFrozenRun(runId);\n // Table mounts after this tick; nudge so the grid refresh effect sees a ready view child.\n setTimeout(() => this.vm.nudgeFetch());\n return;\n }\n\n await this.vm.loadReport(this.reportId);\n\n if (this.layoutId) {\n this.vm.switchLayout(this.layoutId);\n }\n\n if (this.hideColumnFields.length > 0) {\n this.vm.applyDrillView({ hideColumnFields: this.hideColumnFields });\n }\n\n if (this.parameters && Object.keys(this.parameters).length > 0) {\n const resolvedParameters = Object.fromEntries(\n Object.entries(this.parameters).map(([key, value]) => [key, resolveReportFilterDefaultValue(value)]),\n );\n this.vm.updateFilterContext(resolvedParameters);\n }\n\n await this.vm.executeReport();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected async openInFullViewer(): Promise<void> {\n if (!this.reportId) {\n return;\n }\n\n const runId = this.runId?.trim() || this.vm.runId()?.trim();\n await this.openViewer.execute({\n reportId: this.reportId,\n ...(runId ? { runId } : {}),\n });\n this.close();\n }\n\n protected getLayoutSwitcherLabel(layout: AXPLayoutSwitcherOption): AXPMultiLanguageString {\n const locale = this.translateService.getActiveLang() || 'en-US';\n const reportTitle = this.vm.reportDefinition()?.title;\n if (isDistinctLayoutTitle(layout.title, reportTitle, locale)) {\n return layout.title ?? reportLayoutTitleKey(layout);\n }\n return reportLayoutTitleKey(layout);\n }\n\n protected handleLayoutSwitch(layoutId: string): void {\n if (this.vm.activeLayoutId() === layoutId) {\n return;\n }\n this.vm.switchLayout(layoutId);\n this.vm.nudgeFetch();\n }\n\n protected handleLayoutTabChanged(event: AXTabStripChangedEvent): void {\n const layout = this.vm.availableLayouts()[event.index];\n if (layout) {\n this.handleLayoutSwitch(layout.id);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<ax-content class=\"flex min-h-0 flex-1 flex-col overflow-hidden\" *translate=\"let t\">\n <div class=\"__popup-content\">\n <!-- ----- Layout switcher for multi-layout reports ----- -->\n @if (vm.hasMultipleLayouts() && vm.canSwitchLayout()) {\n <div class=\"__layout-switcher mb-3\">\n <ax-tabs\n class=\"__layout-tabs\"\n [look]=\"'with-line'\"\n [location]=\"'bottom'\"\n [fitParent]=\"false\"\n (onActiveTabChanged)=\"handleLayoutTabChanged($event)\"\n >\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-tab-item\n [key]=\"layout.id\"\n [text]=\"(getLayoutSwitcherLabel(layout) | translate | async) ?? ''\"\n [active]=\"vm.activeLayoutId() === layout.id\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"layoutPageIcon(layout.icon, layout)\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n <!-- ----- Error or results ----- -->\n @if (vm.hasError()) {\n <axp-state-message\n icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"'@report-management:report-viewer.messages.error.fetch-title'\"\n [description]=\"vm.error() || '@report-management:report-viewer.messages.error.unexpected'\"\n >\n </axp-state-message>\n }\n <!-- ----- Table layout results ----- -->\n @else if (vm.isTableLayout()) {\n <axp-report-table-view class=\"__popup-view\"></axp-report-table-view>\n }\n <!-- ----- Chart layout results ----- -->\n @else if (vm.isChartLayout()) {\n <axp-report-chart-view class=\"__popup-view\"></axp-report-chart-view>\n }\n <!-- ----- PDF layout results ----- -->\n @else if (vm.isPdfLayout()) {\n <axp-report-pdf-view class=\"__popup-view\"></axp-report-pdf-view>\n }\n <!-- ----- Unsupported layout types ----- -->\n @else {\n <axp-state-message\n icon=\"fa-light fa-chart-line\"\n [title]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.title'\"\n [description]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.description'\"\n >\n </axp-state-message>\n }\n </div>\n</ax-content>\n<ax-footer class=\"__popup-footer\">\n <ax-prefix>\n <ax-button\n look=\"outline\"\n color=\"secondary\"\n [text]=\"'@report-management:report-viewer.actions.open-in-report-viewer.title' | translate | async\"\n (onClick)=\"openInFullViewer()\"\n >\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-file-chart-column\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"default\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n"],"names":["i4","i5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-report-management-client-report-popup-viewer.component-Dg3IxjGy.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/features/report-viewer/report-popup-viewer/report-popup-viewer.component.ts","../../../../libs/modules/report-management/client/src/lib/features/report-viewer/report-popup-viewer/report-popup-viewer.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule, type AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport type { AXPLayoutSwitcherOption } from '@acorex-platform/module-report-management-client/contracts';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPOpenReportViewerCommand } from '../../../commands/open-report-viewer.command';\nimport { resolveReportFilterDefaultValue } from '../../../reports/report-parameter.util';\nimport {\n isDistinctLayoutTitle,\n reportLayoutPageIcon,\n reportLayoutTitleKey,\n} from '../report-layout-switcher.util';\nimport { AXPReportViewerViewModel } from '../report-viewer.viewmodel';\nimport { AXPReportChartViewComponent } from '../views/report-chart-view/report-chart-view.component';\nimport { AXPReportPdfViewComponent } from '../views/report-pdf-view/report-pdf-view.component';\nimport { AXPReportTableViewComponent } from '../views/report-table-view/report-table-view.component';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axp-report-popup-viewer',\n templateUrl: './report-popup-viewer.component.html',\n styleUrl: './report-popup-viewer.component.css',\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTabsModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXPReportTableViewComponent,\n AXPReportChartViewComponent,\n AXPReportPdfViewComponent,\n ],\n providers: [AXPReportViewerViewModel],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'axp-report-popup-viewer flex h-full min-h-0 flex-1 flex-col overflow-hidden',\n },\n})\nexport class AXPReportPopupViewerComponent extends AXBasePageComponent {\n //#region ----- Popup Data -----\n\n reportId!: string;\n layoutId?: string;\n runId?: string;\n parameters: Record<string, unknown> = {};\n hideColumnFields: string[] = [];\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n protected readonly vm = inject(AXPReportViewerViewModel);\n private readonly openViewer = inject(AXPOpenReportViewerCommand);\n private readonly translateService = inject(AXTranslationService);\n protected readonly layoutPageIcon = reportLayoutPageIcon;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n const runId = this.runId?.trim();\n if (runId) {\n await this.vm.loadFrozenRun(runId);\n // Table mounts after this tick; nudge so the grid refresh effect sees a ready view child.\n setTimeout(() => this.vm.nudgeFetch());\n return;\n }\n\n await this.vm.loadReport(this.reportId);\n\n if (this.layoutId) {\n this.vm.switchLayout(this.layoutId);\n }\n\n if (this.hideColumnFields.length > 0) {\n this.vm.applyDrillView({ hideColumnFields: this.hideColumnFields });\n }\n\n if (this.parameters && Object.keys(this.parameters).length > 0) {\n const resolvedParameters = Object.fromEntries(\n Object.entries(this.parameters).map(([key, value]) => [key, resolveReportFilterDefaultValue(value)]),\n );\n this.vm.updateFilterContext(resolvedParameters);\n }\n\n await this.vm.executeReport();\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected async openInFullViewer(): Promise<void> {\n if (!this.reportId) {\n return;\n }\n\n const runId = this.runId?.trim() || this.vm.runId()?.trim();\n await this.openViewer.execute({\n reportId: this.reportId,\n ...(runId ? { runId } : {}),\n });\n this.close();\n }\n\n protected getLayoutSwitcherLabel(layout: AXPLayoutSwitcherOption): AXPMultiLanguageString {\n const locale = this.translateService.getActiveLang() || 'en-US';\n const reportTitle = this.vm.reportDefinition()?.title;\n if (isDistinctLayoutTitle(layout.title, reportTitle, locale)) {\n return layout.title ?? reportLayoutTitleKey(layout);\n }\n return reportLayoutTitleKey(layout);\n }\n\n protected handleLayoutSwitch(layoutId: string): void {\n if (this.vm.activeLayoutId() === layoutId) {\n return;\n }\n this.vm.switchLayout(layoutId);\n this.vm.nudgeFetch();\n }\n\n protected handleLayoutTabChanged(event: AXTabStripChangedEvent): void {\n const layout = this.vm.availableLayouts()[event.index];\n if (layout) {\n this.handleLayoutSwitch(layout.id);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<ax-content class=\"flex min-h-0 flex-1 flex-col overflow-hidden\" *translate=\"let t\">\n <div class=\"__popup-content\">\n <!-- ----- Layout switcher for multi-layout reports ----- -->\n @if (vm.hasMultipleLayouts() && vm.canSwitchLayout()) {\n <div class=\"__layout-switcher mb-3\">\n <ax-tabs\n class=\"__layout-tabs\"\n [look]=\"'with-line'\"\n [location]=\"'bottom'\"\n [fitParent]=\"false\"\n (onActiveTabChanged)=\"handleLayoutTabChanged($event)\"\n >\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-tab-item\n [key]=\"layout.id\"\n [text]=\"(getLayoutSwitcherLabel(layout) | translate | async) ?? ''\"\n [active]=\"vm.activeLayoutId() === layout.id\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"layoutPageIcon(layout.icon, layout)\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n <!-- ----- Error or results ----- -->\n @if (vm.hasError()) {\n <axp-state-message\n icon=\"fa-light fa-exclamation-triangle\"\n [title]=\"'@report-management:report-viewer.messages.error.fetch-title'\"\n [description]=\"vm.error() || '@report-management:report-viewer.messages.error.unexpected'\"\n >\n </axp-state-message>\n }\n <!-- ----- Table layout results ----- -->\n @else if (vm.isTableLayout()) {\n <axp-report-table-view class=\"__popup-view\"></axp-report-table-view>\n }\n <!-- ----- Chart layout results ----- -->\n @else if (vm.isChartLayout()) {\n <axp-report-chart-view class=\"__popup-view\"></axp-report-chart-view>\n }\n <!-- ----- PDF layout results ----- -->\n @else if (vm.isPdfLayout()) {\n <axp-report-pdf-view class=\"__popup-view\"></axp-report-pdf-view>\n }\n <!-- ----- Unsupported layout types ----- -->\n @else {\n <axp-state-message\n icon=\"fa-light fa-chart-line\"\n [title]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.title'\"\n [description]=\"'@report-management:report-viewer.components.report-popup-viewer.unsupported-layout.description'\"\n >\n </axp-state-message>\n }\n </div>\n</ax-content>\n<ax-footer class=\"__popup-footer\">\n <ax-prefix>\n <ax-button\n look=\"outline\"\n color=\"secondary\"\n [text]=\"'@report-management:report-viewer.actions.open-in-report-viewer.title' | translate | async\"\n (onClick)=\"openInFullViewer()\"\n >\n <ax-suffix>\n <ax-icon icon=\"fa-light fa-file-chart-column\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"'@general:actions.close.title' | translate | async\"\n look=\"solid\"\n color=\"default\"\n (onClick)=\"close()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n"],"names":["i4","i5"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { m as AXBarChartReportMapper, n as AXLineChartReportMapper, o as AXMPermissionDefinitionProvider, p as AXMReportManagementModule, q as AXPOpenReportInPopupCommand, a as AXPOpenReportViewerCommand, s as AXPReportBarChartViewComponent, d as AXPReportTableViewComponent, t as AXPReportViewerPageComponent, g as AXPReportViewerService, A as AXPReportViewerViewModel, u as AXPieChartReportMapper, v as collectReportParameterDefaults, w as convertContextDataToFilterClause, x as flattenReportParametersToQueryParams, y as formatReportDateOnly, z as isReportDateRangeObject, B as mapEntityBindingParameters, C as queryResultToChartSeries, D as queryResultToPdfSource, b as resolveReportFilterDefaultValue, F as resolveReportParameterValues, G as resolveTodayDateRange, H as toReportDateRangeFilterValue } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-
|
|
1
|
+
export { m as AXBarChartReportMapper, n as AXLineChartReportMapper, o as AXMPermissionDefinitionProvider, p as AXMReportManagementModule, q as AXPOpenReportInPopupCommand, a as AXPOpenReportViewerCommand, s as AXPReportBarChartViewComponent, d as AXPReportTableViewComponent, t as AXPReportViewerPageComponent, g as AXPReportViewerService, A as AXPReportViewerViewModel, u as AXPieChartReportMapper, v as collectReportParameterDefaults, w as convertContextDataToFilterClause, x as flattenReportParametersToQueryParams, y as formatReportDateOnly, z as isReportDateRangeObject, B as mapEntityBindingParameters, C as queryResultToChartSeries, D as queryResultToPdfSource, b as resolveReportFilterDefaultValue, F as resolveReportParameterValues, G as resolveTodayDateRange, H as toReportDateRangeFilterValue } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DUdUNlnp.mjs';
|
|
2
2
|
export * from '@acorex-platform/module-report-management-client/contracts';
|
|
3
3
|
//# sourceMappingURL=acorex-platform-module-report-management-client.mjs.map
|