@acorex-platform/module-report-management-client 0.0.53 → 0.0.54

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.
Files changed (15) hide show
  1. package/fesm2022/{acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-D5dCG62j.mjs → acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DhTbq8K0.mjs} +6 -6
  2. package/fesm2022/{acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-D5dCG62j.mjs.map → acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DhTbq8K0.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page-component.provider-0eSOzb0y.mjs → acorex-platform-module-report-management-client-entity-reports-page-component.provider-DaX9owYf.mjs} +3 -3
  4. package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page-component.provider-0eSOzb0y.mjs.map → acorex-platform-module-report-management-client-entity-reports-page-component.provider-DaX9owYf.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page.component-CHBZbbaH.mjs → acorex-platform-module-report-management-client-entity-reports-page.component-1pkBoTlX.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-report-management-client-entity-reports-page.component-CHBZbbaH.mjs.map → acorex-platform-module-report-management-client-entity-reports-page.component-1pkBoTlX.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-report-management-client-report-layout-switcher.util-BGhHRYfe.mjs → acorex-platform-module-report-management-client-report-layout-switcher.util-GNdaXlQx.mjs} +4 -4
  8. package/fesm2022/acorex-platform-module-report-management-client-report-layout-switcher.util-GNdaXlQx.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-report-management-client-report-popup-viewer.component-BJq1BeUz.mjs → acorex-platform-module-report-management-client-report-popup-viewer.component-Bjb6ECKz.mjs} +3 -3
  10. package/fesm2022/{acorex-platform-module-report-management-client-report-popup-viewer.component-BJq1BeUz.mjs.map → acorex-platform-module-report-management-client-report-popup-viewer.component-Bjb6ECKz.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-report-management-client-report-viewer-page.component-YUdzA4B9.mjs → acorex-platform-module-report-management-client-report-viewer-page.component-uKCoRWfX.mjs} +3 -3
  12. package/fesm2022/{acorex-platform-module-report-management-client-report-viewer-page.component-YUdzA4B9.mjs.map → acorex-platform-module-report-management-client-report-viewer-page.component-uKCoRWfX.mjs.map} +1 -1
  13. package/fesm2022/acorex-platform-module-report-management-client.mjs +1 -1
  14. package/package.json +1 -1
  15. package/fesm2022/acorex-platform-module-report-management-client-report-layout-switcher.util-BGhHRYfe.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-D5dCG62j.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/report-management/client/src/lib/menu.provider.ts","../../../../libs/modules/report-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/report-management/client/src/lib/settings.provider.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-parameter.util.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports.util.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports.plugin.ts","../../../../libs/modules/report-management/client/src/lib/commands/open-report-viewer.command.ts","../../../../libs/modules/report-management/client/src/lib/features/background-operation/report-generation-background-operation.handler.ts","../../../../libs/modules/report-management/client/src/lib/features/report-generation/report-generation-inbox-toast.bridge.service.ts","../../../../libs/modules/report-management/client/src/lib/features/report-generation/report-generation-inbox-toast.providers.ts","../../../../libs/modules/report-management/client/src/lib/report-management.module.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-viewer-user-settings.types.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-viewer.service.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-mapper.ts","../../../../libs/modules/report-management/client/src/lib/commands/open-report-in-popup.command.ts","../../../../libs/modules/report-management/client/src/acorex-platform-module-report-management-client.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPInsightsReportingPermissionKeys\n} from '@acorex-platform/module-report-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ----- Permission Definition Provider -----\n\n/**\n * Registers report capabilities into the shared Insights & Reporting group.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPInsightsReportingPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:insights-reporting.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.InsightsReporting.Root, `${G}.insights-reporting.title`, `${G}.insights-reporting.description`, { order: 100 });\n\n context\n .addGroup(\n groups.InsightsReporting.Reports,\n `${G}.insights-reporting-reports.title`,\n `${G}.insights-reporting-reports.description`,\n { parent: groups.InsightsReporting.Root, order: 10 },\n )\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(keys.MaintainReports, `${P}.maintain-reports.title`, `${P}.maintain-reports.description`)\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n AXPInsightsReportingPermissionKeys,\n AXPReportManagementMenuKeys,\n RootConfig,\n} from '@acorex-platform/module-report-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n context.addItems([\n {\n name: AXPReportManagementMenuKeys.Reports,\n text: RootConfig.entities.report.titlePlural,\n path: this.entityService.withEntity(module.name, RootConfig.entities.report.name).createPath(),\n icon: RootConfig.entities.report.icon,\n priority: 8300,\n policy: {\n features: [module.name],\n permissions: [AXPInsightsReportingPermissionKeys.MaintainReports],\n },\n },\n ]);\n }\n}\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport { AXPReportManagementFeatureKeys } from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Report Management Feature Definition Provider.\n * Provides feature definitions for the Report Management module.\n */\nexport class AXPReportManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n // Report Builder feature\n context.addFeature(AXPReportManagementFeatureKeys.ReportBuilder, {\n title: '@report-management:features.report-builder.title',\n description: '@report-management:features.report-builder.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Saved Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.SavedReports, {\n title: '@report-management:features.saved-reports.title',\n description: '@report-management:features.saved-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Scheduled Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.ScheduledReports, {\n title: '@report-management:features.scheduled-reports.title',\n description: '@report-management:features.scheduled-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Background Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.BackgroundReports, {\n title: '@report-management:features.background-reports.title',\n description: '@report-management:features.background-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPReportManagementSettings,\n AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS,\n} from '@acorex-platform/module-report-management-client/contracts';\n\n//#region ----- Report management settings -----\n\nconst DEDUPE_POLICY_ITEMS = [\n {\n value: 'none',\n text: '@report-management:settings.generation.items.dedupe-policy.options.none',\n },\n {\n value: 'in-flight',\n text: '@report-management:settings.generation.items.dedupe-policy.options.in-flight',\n },\n {\n value: 'in-flight-or-cooldown',\n text: '@report-management:settings.generation.items.dedupe-policy.options.in-flight-or-cooldown',\n },\n];\n\nexport class AXMReportManagementSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n const cooldownPolicy = `{{ context.eval('${AXPReportManagementSettings.GenerationDedupePolicy}') === 'in-flight-or-cooldown' }}`;\n\n context\n .addGroup(\n 'report-management',\n '@report-management:settings.group.title',\n '@report-management:settings.group.description',\n 'fa-light fa-chart-line',\n undefined,\n 840,\n )\n .addSection(\n 'generation',\n '@report-management:settings.generation.title',\n '@report-management:settings.generation.description',\n )\n .addSetting({\n key: AXPReportManagementSettings.GenerationDedupePolicy,\n title: '@report-management:settings.generation.items.dedupe-policy.title',\n description: '@report-management:settings.generation.items.dedupe-policy.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS[\n AXPReportManagementSettings.GenerationDedupePolicy\n ],\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: DEDUPE_POLICY_ITEMS,\n },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPReportManagementSettings.GenerationDedupeCooldownMinutes,\n title: '@report-management:settings.generation.items.dedupe-cooldown-minutes.title',\n description: '@report-management:settings.generation.items.dedupe-cooldown-minutes.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS[\n AXPReportManagementSettings.GenerationDedupeCooldownMinutes\n ],\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 0, maxValue: 1440, visibility: cooldownPolicy },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPReportManagementSettings.GenerationMaxConcurrentPerUser,\n title: '@report-management:settings.generation.items.max-concurrent-per-user.title',\n description: '@report-management:settings.generation.items.max-concurrent-per-user.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS[\n AXPReportManagementSettings.GenerationMaxConcurrentPerUser\n ],\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 0, maxValue: 50 },\n },\n validationRules: [{ rule: 'required' }],\n })\n .endSection()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ----- Types -----\n\nexport type AXPReportDateRangeValue = 'today' | { from: string; to: string };\n\nexport type AXPReportParameterValue = string | number | boolean | AXPReportDateRangeValue | Record<string, unknown>;\n\n//#endregion\n\n//#region ----- Date helpers -----\n\n/** Local calendar date as `yyyy-MM-dd` (session \"today\" for report ranges). */\nexport function formatReportDateOnly(date: Date = new Date()): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\nexport function resolveTodayDateRange(date: Date = new Date()): { from: string; to: string } {\n const day = formatReportDateOnly(date);\n return { from: day, to: day };\n}\n\nexport function isReportDateRangeObject(value: unknown): value is { from?: unknown; to?: unknown; start?: unknown; end?: unknown } {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const raw = value as Record<string, unknown>;\n const from = raw['from'] ?? raw['start'];\n const to = raw['to'] ?? raw['end'];\n return typeof from === 'string' && typeof to === 'string' && !!from.trim() && !!to.trim();\n}\n\nexport function toReportDateRangeFilterValue(\n range: { from: string; to: string },\n): { operation: { type: 'between' }; value: { from: string; to: string } } {\n return {\n operation: { type: 'between' },\n value: { from: range.from, to: range.to },\n };\n}\n\n/**\n * Converts report default / binding values into filter-form context shape.\n * - `'today'` and `{ from, to }` → `{ operation: between, value }`\n * - existing filter objects are left unchanged\n */\nexport function resolveReportFilterDefaultValue(value: unknown, now: Date = new Date()): unknown {\n if (value === 'today') {\n return toReportDateRangeFilterValue(resolveTodayDateRange(now));\n }\n if (isReportDateRangeObject(value)) {\n return toReportDateRangeFilterValue({\n from: String(value.from ?? value.start),\n to: String(value.to ?? value.end),\n });\n }\n return value;\n}\n\ntype ReportParameterDefaultSource = {\n path: string;\n widget?: {\n defaultValue?: unknown;\n options?: Record<string, unknown>;\n };\n};\n\ntype ReportParameterGroupDefaultSource = {\n parameters?: ReportParameterDefaultSource[];\n};\n\nexport function collectReportParameterDefaults(\n parameterGroups: ReportParameterGroupDefaultSource[] | undefined,\n now: Date = new Date(),\n): Record<string, unknown> {\n const defaults: Record<string, unknown> = {};\n for (const group of parameterGroups ?? []) {\n for (const param of group.parameters ?? []) {\n const rawDefault = param.widget?.defaultValue ?? param.widget?.options?.['defaultValue'];\n if (rawDefault === undefined) {\n continue;\n }\n defaults[param.path] = resolveReportFilterDefaultValue(rawDefault, now);\n }\n }\n return defaults;\n}\n\n//#endregion\n\n//#region ----- Parameter resolution -----\n\n/**\n * Resolves special parameter tokens after expression evaluation.\n * - `dateRange: 'today'` → `{ from, to }` for the local calendar day\n */\nexport function resolveReportParameterValues(\n parameters: Record<string, unknown> | undefined,\n now: Date = new Date(),\n): Record<string, unknown> {\n if (!parameters) {\n return {};\n }\n\n const resolved: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(parameters)) {\n if (value === 'today') {\n resolved[key] = resolveTodayDateRange(now);\n continue;\n }\n resolved[key] = value;\n }\n return resolved;\n}\n\n/**\n * Maps entity-binding parameter declarations into OpenInPopup command parameters.\n * Field paths become `context.eval` expressions; `today` and `{from,to}` stay literal.\n */\nexport function mapEntityBindingParameters(\n parameters: Record<string, AXPReportParameterValue> | undefined,\n): Record<string, unknown> | undefined {\n if (!parameters) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(parameters).map(([key, value]) => [key, toBindingParameterExpression(value)]),\n );\n}\n\nfunction toBindingParameterExpression(value: AXPReportParameterValue): unknown {\n if (value === 'today') {\n return 'today';\n }\n\n if (isReportDateRangeObject(value)) {\n return {\n from: String(value.from ?? value.start),\n to: String(value.to ?? value.end),\n };\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n const trimmed = value.trim();\n if (!trimmed || trimmed.includes('{{') || trimmed.includes('context.eval')) {\n return value;\n }\n\n return `{{ context.eval('${trimmed}') }}`;\n}\n\n//#endregion\n\n//#region ----- Viewer query params -----\n\n/**\n * Flattens popup/filter parameters into report-viewer URL query params\n * (`field.operation.type` + `field.value` / nested `from`/`to`).\n */\nexport function flattenReportParametersToQueryParams(\n parameters: Record<string, unknown>,\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const [field, rawValue] of Object.entries(parameters)) {\n if (rawValue === null || rawValue === undefined || rawValue === '') {\n continue;\n }\n\n if (isReportDateRangeObject(rawValue)) {\n const from = String(rawValue.from ?? rawValue.start);\n const to = String(rawValue.to ?? rawValue.end);\n result[`${field}.operation.type`] = 'between';\n result[`${field}.value.from`] = from;\n result[`${field}.value.to`] = to;\n continue;\n }\n\n if (typeof rawValue === 'object' && !Array.isArray(rawValue) && 'operation' in rawValue) {\n const filterObj = rawValue as { operation?: { type?: string }; value?: unknown };\n if (filterObj.operation?.type) {\n result[`${field}.operation.type`] = String(filterObj.operation.type);\n }\n if (isReportDateRangeObject(filterObj.value)) {\n result[`${field}.value.from`] = String(filterObj.value.from ?? filterObj.value.start);\n result[`${field}.value.to`] = String(filterObj.value.to ?? filterObj.value.end);\n } else if (filterObj.value !== undefined && filterObj.value !== null && filterObj.value !== '') {\n result[`${field}.value`] = Array.isArray(filterObj.value)\n ? filterObj.value.map(String).join(',')\n : String(filterObj.value);\n }\n continue;\n }\n\n result[`${field}.operation.type`] = Array.isArray(rawValue) ? 'in' : 'equal';\n result[`${field}.value`] = Array.isArray(rawValue) ? rawValue.map(String).join(',') : String(rawValue);\n }\n\n return result;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type {\n AXPReportDefinition,\n AXPReportEntityBinding,\n AXPReportEntityDisplay,\n} from '@acorex-platform/module-report-management-client/contracts';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { mapEntityBindingParameters } from '../../reports/report-parameter.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXPEntityBoundReport {\n report: AXPReportDefinition;\n binding: AXPReportEntityBinding;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nexport const OPEN_REPORT_IN_POPUP_COMMAND = 'ReportManagement.Report:OpenInPopup';\nexport const ENTITY_REPORTS_PAGE_COMPONENT_KEY = 'entity-reports-page';\n\n//#endregion\n\n//#region ----- Display helpers -----\n\nexport function normalizeReportEntityDisplays(\n display: AXPReportEntityBinding['display'],\n): Set<AXPReportEntityDisplay> {\n if (!display) {\n return new Set<AXPReportEntityDisplay>(['page']);\n }\n const list = Array.isArray(display) ? display : [display];\n return new Set(list);\n}\n\nexport function bindingShowsOnPage(binding: AXPReportEntityBinding): boolean {\n const displays = normalizeReportEntityDisplays(binding.display);\n // Default / empty → page. Explicit lists without `page` hide from the Reports page.\n return displays.has('page') || displays.size === 0;\n}\n\nexport function resolveBindingTitle(\n report: AXPReportDefinition,\n binding: AXPReportEntityBinding,\n): AXPMultiLanguageString {\n if (typeof binding.title === 'string' && binding.title.trim()) {\n return binding.title.trim();\n }\n return report.title;\n}\n\nexport function resolveBindingDescription(\n report: AXPReportDefinition,\n binding: AXPReportEntityBinding,\n): AXPMultiLanguageString | undefined {\n if (typeof binding.description === 'string' && binding.description.trim()) {\n return binding.description.trim();\n }\n if (typeof report.description === 'string') {\n const trimmed = report.description.trim();\n return trimmed || undefined;\n }\n return report.description;\n}\n\nexport function buildOpenInPopupCommandOptions(\n report: AXPReportDefinition,\n binding: AXPReportEntityBinding,\n): Record<string, unknown> {\n return {\n reportId: report.id,\n layoutId: binding.layoutId,\n title: resolveBindingTitle(report, binding),\n parameters: mapEntityBindingParameters(binding.parameters),\n };\n}\n\nexport function extractEntityBindings(\n report: AXPReportDefinition,\n entityType: string,\n): AXPReportEntityBinding[] {\n const bindings = report.entities ?? [];\n return bindings\n .filter((binding) => binding?.entity === entityType)\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPEntityActionPlugin,\n resolveEntityPluginDetailPageOrder,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { Injector } from '@angular/core';\nimport { ENTITY_REPORTS_PAGE_COMPONENT_KEY } from './entity-reports.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type EntityReportsPluginOptions = {\n /** Title for the Reports detail page. */\n title?: string;\n /** Icon for the Reports detail page. */\n icon?: string;\n};\n\n//#endregion\n\n//#region ----- Plugin factory -----\n\n/**\n * Entity `reports` plugin — contributes a Reports detail page for definitions\n * bound via `entities[]`. Reports open from that page (not entity Actions).\n *\n * Takes {@link Injector} for factory signature parity with other entity plugins.\n */\nexport function createEntityReportsPlugin(_injector: Injector): AXPEntityActionPlugin {\n return {\n name: 'reports',\n order: 55,\n apply: async (ctx, options?: EntityReportsPluginOptions) => {\n const opts = options ?? {};\n const entityType = `${ctx.entity.module}.${ctx.entity.name}`;\n const pageTitle = opts.title?.trim() || '@report-management:entity-reports.page.title';\n\n //#region ----- Reports detail page -----\n\n ctx.entity.pages ??= [];\n const pageExists = ctx.entity.pages.some(\n (p: { componentKey?: string }) => p.componentKey === ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n );\n const pageOrder = resolveEntityPluginDetailPageOrder(\n { relatedEntities: ctx.entity.relatedEntities, pages: ctx.entity.pages },\n 'reports',\n {\n componentKey: ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n skipPage: pageExists ? { componentKey: ENTITY_REPORTS_PAGE_COMPONENT_KEY } : undefined,\n },\n );\n const page = {\n componentKey: ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n title: pageTitle,\n icon: opts.icon ?? 'fa-light fa-chart-mixed',\n layout: { order: pageOrder },\n options: { entityType },\n } as any;\n if (!pageExists) {\n ctx.entity.pages.push(page);\n } else {\n const pages = ctx.entity.pages as any[];\n const index = pages.findIndex((p) => p.componentKey === ENTITY_REPORTS_PAGE_COMPONENT_KEY);\n if (index >= 0) {\n pages[index] = { ...pages[index], ...page };\n }\n }\n\n //#endregion\n\n (ctx.entity as any).extensions ??= {};\n (ctx.entity as any).extensions.reports = {\n entityType,\n };\n },\n };\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client/core';\nimport { AXPTabNavigationService } from '@acorex-platform/framework-client/common';\nimport { AXPExpressionEvaluatorScope } from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport { buildReportGenerationNotificationCorrelationId } from '@acorex-platform/module-report-management-client/contracts';\nimport { get } from 'lodash-es';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ----- Command Input -----\n\nexport interface AXPOpenReportViewerCommandInput {\n reportId?: string;\n runId?: string;\n data?: Record<string, unknown>;\n options?: Partial<AXPOpenReportViewerCommandInput>;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/** Opens a report in the full-page report viewer. */\n@Injectable({ providedIn: 'root' })\nexport class AXPOpenReportViewerCommand\n implements AXPCommand<AXPOpenReportViewerCommandInput | Record<string, unknown>, void>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly tabNavigation = inject(AXPTabNavigationService);\n private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n private readonly translate = inject(AXTranslationService);\n private readonly inboxConnector = inject(AXPInAppInboxConnectorService, { optional: true });\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(\n input: AXPOpenReportViewerCommandInput | Record<string, unknown>,\n ): AXPCommandExecuteResultPromise<void> {\n const rowData = this.resolveRowData(input);\n const options = await this.resolveOptions(input, rowData);\n\n if (!options.reportId) {\n return {\n success: false,\n message: {\n text: await this.translate.translateAsync(\n '@report-management:report-viewer.messages.error.invalid-popup-target',\n ),\n },\n };\n }\n\n const runId = typeof options.runId === 'string' ? options.runId.trim() : '';\n if (runId) {\n await this.dismissReportGenerationInboxNotification(runId);\n }\n\n const appName = this.sessionService.application?.name;\n if (!appName) {\n return {\n success: false,\n message: {\n text: await this.translate.translateAsync(\n '@report-management:report-viewer.messages.error.invalid-popup-target',\n ),\n },\n };\n }\n\n // Put reportId in the path (not queryParams): tabular navigation drops NavigationExtras.\n const path = runId\n ? `${appName}/${RootConfig.module.route}/viewer/${options.reportId}?runId=${encodeURIComponent(runId)}`\n : `${appName}/${RootConfig.module.route}/viewer/${options.reportId}`;\n await this.tabNavigation.navigate(path);\n\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private async dismissReportGenerationInboxNotification(runId: string): Promise<void> {\n if (!this.inboxConnector) {\n return;\n }\n try {\n await this.inboxConnector.dismissByCorrelationId(\n buildReportGenerationNotificationCorrelationId(runId),\n );\n } catch {\n // Best-effort — navigation should still proceed.\n }\n }\n\n private resolveRowData(\n input: AXPOpenReportViewerCommandInput | Record<string, unknown>,\n ): Record<string, unknown> {\n const ctx = input as AXPOpenReportViewerCommandInput;\n if (ctx?.data && typeof ctx.data === 'object') {\n return ctx.data as Record<string, unknown>;\n }\n if (\n (input as Record<string, unknown>)['data'] &&\n typeof (input as Record<string, unknown>)['data'] === 'object'\n ) {\n return (input as Record<string, unknown>)['data'] as Record<string, unknown>;\n }\n return input as Record<string, unknown>;\n }\n\n private async resolveOptions(\n input: AXPOpenReportViewerCommandInput | Record<string, unknown>,\n rowData: Record<string, unknown>,\n ): Promise<AXPOpenReportViewerCommandInput> {\n const typedInput = input as AXPOpenReportViewerCommandInput;\n const rawOptions = {\n reportId: typedInput.reportId,\n runId: typedInput.runId,\n ...(typedInput.options ?? {}),\n };\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n return (await this.expressionEvaluator.evaluate(rawOptions, scope)) as AXPOpenReportViewerCommandInput;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXP_BACKGROUND_OPERATION_HANDLERS,\n AXPBackgroundOperationHandler,\n type AXPBackgroundOperation,\n type AXPBackgroundOperationCta,\n} from '@acorex-platform/framework-client/common';\nimport { AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport { Injectable, Provider, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPOpenReportViewerCommand } from '../../commands/open-report-viewer.command';\nimport { AXPQueryService } from '@acorex-platform/framework-client/runtime';\nimport { runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport {\n AXMReportManagementQueryKeys,\n type AXMReportGenerationRequest,\n} from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ----- Handler -----\n\n@Injectable()\nexport class AXMReportGenerationBackgroundOperationHandler extends AXPBackgroundOperationHandler {\n readonly providerKey = 'report-management';\n\n private readonly openViewer = inject(AXPOpenReportViewerCommand);\n private readonly queryService = inject(AXPQueryService);\n\n async execute(command: AXPExecuteCommand, operation: AXPBackgroundOperation): Promise<void> {\n if (command.name !== 'click') {\n return;\n }\n\n const reportRequestId =\n get(operation.data, 'reportRequestId') ??\n get(operation.data, 'payload.reportRequestId') ??\n get(operation.data, 'command.payload.reportRequestId');\n if (typeof reportRequestId !== 'string' || !reportRequestId.trim()) {\n return;\n }\n\n const result = await this.queryService.fetch<{ id: string }, AXMReportGenerationRequest>(\n AXMReportManagementQueryKeys.ReportGeneration.Get,\n { id: reportRequestId },\n );\n const request = runtimeQueryPayloadData(result);\n if (!request?.reportId) {\n return;\n }\n\n if (request.status === 'completed') {\n await this.openViewer.execute({ reportId: request.reportId, runId: request.id });\n return;\n }\n\n await this.openViewer.execute({ reportId: request.reportId });\n }\n\n override resolveCta(operation: AXPBackgroundOperation): AXPBackgroundOperationCta | null {\n if (operation.status === 'failed' && operation.capabilities.retryable) {\n return {\n text: '@general:background-operation.actions.retry',\n icon: 'fa-light fa-arrow-rotate-right',\n color: 'primary',\n look: 'solid',\n command: { name: 'retry' },\n };\n }\n\n if (operation.status === 'completed' && operation.capabilities.clickable) {\n return {\n text: '@report-management:report-generation.notifications.actions.open-viewer',\n icon: 'fa-light fa-file-chart-column',\n color: 'primary',\n look: 'solid',\n command: { name: 'click' },\n };\n }\n\n return null;\n }\n}\n\n//#endregion\n\n//#region ----- Providers -----\n\nexport const AXM_REPORT_GENERATION_BACKGROUND_OPERATION_HANDLERS: Provider[] = [\n {\n provide: AXP_BACKGROUND_OPERATION_HANDLERS,\n useExisting: AXMReportGenerationBackgroundOperationHandler,\n multi: true,\n },\n AXMReportGenerationBackgroundOperationHandler,\n];\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXP_USER_NOTIFICATION_SERVICE } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport type { AXPInAppInboxItem } from '@acorex-platform/module-communication-management-client';\nimport { REPORT_GENERATION_NOTIFICATION_DEFINITION_KEY } from '@acorex-platform/module-report-management-client/contracts';\nimport { DestroyRef, effect, inject, Injectable, Injector } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map } from 'rxjs';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst TOASTED_KEYS_STORAGE = 'axp:report-generation-inbox-toast-keys';\n\n//#endregion\n\n//#region ----- Bridge -----\n\n/**\n * When a report-generation inbox row arrives (user was not watching inline),\n * mirrors it as a transient toast with an open action. Inbox persistence stays server-owned.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMReportGenerationInboxToastBridgeService {\n //#region ----- Dependencies -----\n\n private readonly inboxConnector = inject(AXPInAppInboxConnectorService, { optional: true });\n private readonly userNotificationService = inject(AXP_USER_NOTIFICATION_SERVICE);\n private readonly commandService = inject(AXPCommandService);\n private readonly translationService = inject(AXTranslationService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n //#endregion\n\n //#region ----- State -----\n\n private started = false;\n private inboxBaselined = false;\n private boundUserId: string | null = null;\n private readonly toastedKeys = new Set<string>();\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n start(): void {\n if (this.started || !this.inboxConnector) {\n return;\n }\n this.started = true;\n\n this.sessionService.isReadyForAppScopedApi$\n .pipe(\n map(() => this.sessionService.user?.id?.trim() || null),\n distinctUntilChanged(),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((userId) => {\n this.bindSessionUser(userId);\n });\n\n this.bindSessionUser(this.sessionService.user?.id?.trim() || null);\n\n effect(\n () => {\n const userId = this.sessionService.user?.id?.trim();\n const inboxLoading = this.inboxConnector?.loading() ?? false;\n const items = this.readReportGenerationItems();\n\n if (!this.sessionService.isReadyForAppScopedApi || !userId) {\n return;\n }\n\n if (!this.inboxBaselined) {\n for (const item of items) {\n this.markToasted(this.toastKey(item));\n }\n if (!inboxLoading) {\n this.inboxBaselined = true;\n }\n return;\n }\n\n for (const item of items) {\n const key = this.toastKey(item);\n if (this.toastedKeys.has(key)) {\n continue;\n }\n this.markToasted(key);\n void this.showToastForInboxItem(item);\n }\n },\n { injector: this.injector },\n );\n }\n\n //#endregion\n\n //#region ----- Toast -----\n\n private async showToastForInboxItem(item: AXPInAppInboxItem): Promise<void> {\n const action = item.actions?.[0];\n const actionTitle = action?.title\n ? await this.translationService.translateAsync(action.title)\n : await this.translationService.translateAsync(\n '@report-management:report-generation.notifications.actions.open-viewer',\n );\n\n const toastActions = action?.command?.name\n ? [\n {\n text: actionTitle,\n color: 'primary' as const,\n onClick: () => this.executeInboxAction(item, action),\n },\n ]\n : undefined;\n\n await this.userNotificationService.notify({\n correlationId: item.correlationId?.trim() || item.id,\n title: await this.resolveText(item.title),\n body: await this.resolveText(item.body),\n icon: item.iconClass ?? this.resolveIcon(item),\n delivery: {\n toast: {\n color: this.resolveToastColor(item),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 8_000,\n timeOutProgress: true,\n showActions: !!toastActions?.length,\n },\n },\n toastActions,\n });\n }\n\n private async executeInboxAction(\n item: AXPInAppInboxItem,\n action: NonNullable<AXPInAppInboxItem['actions']>[number],\n ): Promise<void> {\n if (!action.command?.name) {\n return;\n }\n await this.commandService.execute(action.command.name, action.command.options ?? {});\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private readReportGenerationItems(): AXPInAppInboxItem[] {\n const userId = this.sessionService.user?.id?.trim();\n return (this.inboxConnector?.inboxList() ?? []).filter((item) => {\n if (item.definitionKey !== REPORT_GENERATION_NOTIFICATION_DEFINITION_KEY) {\n return false;\n }\n const recipientUserId = item.recipientUserId?.trim();\n return !recipientUserId || recipientUserId === userId;\n });\n }\n\n private toastKey(item: AXPInAppInboxItem): string {\n return item.correlationId?.trim() || item.id;\n }\n\n private bindSessionUser(userId: string | null): void {\n if (userId === this.boundUserId) {\n return;\n }\n this.boundUserId = userId;\n this.inboxBaselined = false;\n this.toastedKeys.clear();\n if (userId) {\n this.loadPersistedToastedKeys(userId);\n }\n }\n\n private markToasted(key: string): void {\n const normalized = key.trim();\n if (!normalized) {\n return;\n }\n this.toastedKeys.add(normalized);\n this.persistToastedKeys();\n }\n\n private toastedStorageKey(userId: string): string {\n return `${TOASTED_KEYS_STORAGE}:${userId}`;\n }\n\n private loadPersistedToastedKeys(userId: string): void {\n try {\n const raw = sessionStorage.getItem(this.toastedStorageKey(userId));\n if (!raw) {\n return;\n }\n const parsed = JSON.parse(raw) as unknown;\n if (!Array.isArray(parsed)) {\n return;\n }\n for (const entry of parsed) {\n if (typeof entry === 'string' && entry.trim()) {\n this.toastedKeys.add(entry.trim());\n }\n }\n } catch {\n // Ignore corrupt session storage.\n }\n }\n\n private persistToastedKeys(): void {\n const userId = this.boundUserId?.trim();\n if (!userId) {\n return;\n }\n try {\n sessionStorage.setItem(this.toastedStorageKey(userId), JSON.stringify([...this.toastedKeys]));\n } catch {\n // Ignore quota / privacy errors.\n }\n }\n\n private async resolveText(value: string): Promise<string> {\n const text = value?.trim();\n if (!text) {\n return '';\n }\n if (text.startsWith('@')) {\n return this.translationService.translateAsync(text);\n }\n return text;\n }\n\n private resolveToastColor(item: AXPInAppInboxItem): 'success' | 'danger' | 'warning' {\n switch (item.priority) {\n case 'Danger':\n return 'danger';\n case 'Warning':\n return 'warning';\n default:\n return 'success';\n }\n }\n\n private resolveIcon(item: AXPInAppInboxItem): string {\n if (item.priority === 'Danger') {\n return 'fa-light fa-circle-exclamation';\n }\n if (item.priority === 'Warning') {\n return 'fa-light fa-triangle-exclamation';\n }\n return 'fa-light fa-circle-check';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { inject, type Provider } from '@angular/core';\nimport {\n AXP_APP_STARTUP_PRIORITY,\n provideAppStartUpTask,\n} from '@acorex-platform/framework-client/core';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport { AXMReportGenerationInboxToastBridgeService } from './report-generation-inbox-toast.bridge.service';\n\n//#endregion\n\n//#region ----- Providers -----\n\nexport function provideReportGenerationInboxToastBridge(): Provider[] {\n return [\n provideAppStartUpTask(() => {\n const bridge = inject(AXMReportGenerationInboxToastBridgeService);\n const inbox = inject(AXPInAppInboxConnectorService, { optional: true });\n return {\n name: 'report-generation-inbox-toast-bridge',\n priority: AXP_APP_STARTUP_PRIORITY.realtimeHandlers,\n run: async () => {\n if (inbox) {\n await inbox.ensureReady();\n await inbox.refresh();\n }\n bridge.start();\n },\n };\n }),\n ];\n}\n\n//#endregion\n","import { AXP_FEATURE_DEFINITION_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';\nimport { AXPDomainModule } from '@acorex-platform/framework-client/domain';\nimport { AXP_ENTITY_ACTION_PLUGIN, provideEntity } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { inject, Injector, NgModule } from '@angular/core';\nimport { Routes, ROUTES } from '@angular/router';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\nimport { AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex-platform/framework-client/runtime';\n\n// Entity Modules\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\n\nimport { AXPReportManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMReportManagementSettingProvider } from './settings.provider';\nimport { createEntityReportsPlugin } from './features/entity-reports/entity-reports.plugin';\nimport { AXM_REPORT_GENERATION_BACKGROUND_OPERATION_HANDLERS } from './features/background-operation/report-generation-background-operation.handler';\nimport { provideReportGenerationInboxToastBridge } from './features/report-generation/report-generation-inbox-toast.providers';\n\nfunction routesFacory() {\n let routes: Routes = [\n {\n path: `:app/${RootConfig.module.route}/viewer`,\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true, rootLayout: true },\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: ':reportId',\n loadComponent: () =>\n import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then(\n (c) => c.AXPReportViewerPageComponent,\n ),\n data: { reuse: true },\n },\n {\n path: '',\n loadComponent: () =>\n import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then(\n (c) => c.AXPReportViewerPageComponent,\n ),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [\n AXPDomainModule,\n AXPRuntimeModule,\n // Entity Modules\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPReportManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMReportManagementSettingProvider,\n multi: true,\n },\n ...AXM_REPORT_GENERATION_BACKGROUND_OPERATION_HANDLERS,\n ...provideReportGenerationInboxToastBridge(),\n provideCommandSetups([\n {\n key: 'ReportManagement.Report:OpenInPopup',\n command: () =>\n import('./commands/open-report-in-popup.command').then((c) => c.AXPOpenReportInPopupCommand),\n },\n {\n key: 'ReportManagement.Report:OpenViewer',\n command: () =>\n import('./commands/open-report-viewer.command').then((c) => c.AXPOpenReportViewerCommand),\n },\n ]),\n {\n provide: AXP_ENTITY_ACTION_PLUGIN,\n multi: true,\n useFactory: () => createEntityReportsPlugin(inject(Injector)),\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/entity-reports/entity-reports-page-component.provider').then(\n (m) => m.AXMEntityReportsPageComponentProvider,\n ),\n ),\n ],\n})\nexport class AXMReportManagementModule { }\n","import { AXPQuerySort } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- User Settings (per report + layout) ----\n\nexport interface AXPReportTableColumnUserState {\n field: string;\n width?: number;\n}\n\nexport interface AXPReportTableLayoutUserState {\n columns?: AXPReportTableColumnUserState[];\n sorts?: AXPQuerySort[];\n pageSize?: number;\n}\n\nexport interface AXPReportViewerUserSettings {\n activeLayoutId?: string;\n layouts?: Record<string, { table?: AXPReportTableLayoutUserState }>;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport { resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n AXPReportDefinition,\n AXPReportLayoutDefinition,\n AXPReportLayoutType,\n AXPReportLayoutAction,\n} from '@acorex-platform/module-report-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\nimport {\n extractEntityBindings,\n type AXPEntityBoundReport,\n} from '../features/entity-reports/entity-reports.util';\n\n//#endregion\n\n/**\n * Report Viewer Service\n *\n * Handles report definition retrieval, caching, and layout actions.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPReportViewerService {\n //#region ---- Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly reportDefinitionService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.report.name)\n .data();\n\n //#endregion\n\n //#region ---- Cache Storage ----\n\n /** Cache for individual report definitions by id */\n private definitionsById = new Map<string, AXPReportDefinition>();\n\n /** Pending API requests to prevent duplicate calls */\n private pendingReportRequests = new Map<string, Promise<AXPReportDefinition | undefined>>();\n\n //#endregion\n\n //#region ---- Public API: Report Definitions ----\n\n /**\n * Reports bound to a host entity type via `entities[].entity`.\n * Falls back to an in-memory filter when the nested-array query returns nothing\n * (or is unsupported by the current query backend).\n */\n async getReportsByEntityType(entityType: string): Promise<AXPEntityBoundReport[]> {\n if (!entityType?.trim()) {\n return [];\n }\n\n let items: AXPReportDefinition[] = [];\n try {\n const result = await this.reportDefinitionService.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entities.entity',\n operator: { type: 'equal' },\n value: entityType,\n },\n ],\n },\n });\n items = (result.items ?? []) as AXPReportDefinition[];\n } catch {\n items = [];\n }\n\n if (items.length === 0) {\n try {\n const fallback = await this.reportDefinitionService.query({\n skip: 0,\n take: 1000,\n });\n items = ((fallback.items ?? []) as AXPReportDefinition[]).filter((report) =>\n (report.entities ?? []).some((binding) => binding?.entity === entityType),\n );\n } catch {\n items = [];\n }\n }\n\n const bound: AXPEntityBoundReport[] = [];\n for (const report of items) {\n this.definitionsById.set(report.id, report);\n for (const binding of extractEntityBindings(report, entityType)) {\n bound.push({ report, binding });\n }\n }\n\n return bound.sort(\n (a, b) =>\n (a.binding.order ?? 0) - (b.binding.order ?? 0) ||\n resolveMultiLanguageString(a.report.title, 'en-US').localeCompare(\n resolveMultiLanguageString(b.report.title, 'en-US'),\n ),\n );\n }\n\n /**\n * Get single report definition by ID with O(1) lookup\n */\n async getReportById(id: string): Promise<AXPReportDefinition | undefined> {\n if (this.definitionsById.has(id)) {\n return this.definitionsById.get(id);\n }\n\n if (this.pendingReportRequests.has(id)) {\n return this.pendingReportRequests.get(id)!;\n }\n\n const requestPromise = this.loadReport(id);\n this.pendingReportRequests.set(id, requestPromise);\n\n return requestPromise;\n }\n\n //#endregion\n\n //#region ---- Public API: Layout Actions ----\n\n /**\n * Get general actions list for a layout type.\n * Override in connectivity layer (mock/API) to provide general actions.\n */\n getGeneralActionsList(layoutType: AXPReportLayoutType): AXPReportLayoutAction[] {\n return [];\n }\n\n /**\n * Get merged actions for a layout definition.\n * Combines general actions with layout-specific actions.\n */\n getMergedActions(layoutDefinition: AXPReportLayoutDefinition): AXPReportLayoutAction[] {\n const generalActions = this.getGeneralActionsList(layoutDefinition.layout.type);\n const customActions = layoutDefinition.actions || [];\n\n const customActionsMap = new Map<string, AXPReportLayoutAction>();\n customActions.forEach((action) => {\n if (action.name) {\n customActionsMap.set(action.name, action);\n }\n });\n\n const merged: AXPReportLayoutAction[] = [];\n const usedNames = new Set<string>();\n\n generalActions.forEach((action) => {\n if (action.name && customActionsMap.has(action.name)) {\n merged.push(customActionsMap.get(action.name)!);\n usedNames.add(action.name);\n } else {\n merged.push(action);\n if (action.name) {\n usedNames.add(action.name);\n }\n }\n });\n\n customActions.forEach((action) => {\n if (action.name && !usedNames.has(action.name)) {\n merged.push(action);\n usedNames.add(action.name);\n } else if (!action.name) {\n merged.push(action);\n }\n });\n\n return merged;\n }\n\n getPrimaryActions(layoutDefinition: AXPReportLayoutDefinition): AXPReportLayoutAction[] {\n return this.getMergedActions(layoutDefinition).filter((action) => action.priority === 'primary');\n }\n\n getSecondaryActions(layoutDefinition: AXPReportLayoutDefinition): AXPReportLayoutAction[] {\n return this.getMergedActions(layoutDefinition).filter((action) => action.priority === 'secondary');\n }\n\n //#endregion\n\n //#region ---- Private: Data Loading ----\n\n /**\n * Load single report from entity service and cache result.\n * Can be overridden in extended services (e.g., API layer).\n */\n protected async loadReport(id: string): Promise<AXPReportDefinition | undefined> {\n try {\n const result = (await this.reportDefinitionService.byKey(id)) as AXPReportDefinition | undefined;\n\n if (result) {\n this.definitionsById.set(id, result);\n return result;\n }\n\n return undefined;\n } finally {\n this.pendingReportRequests.delete(id);\n }\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n protected isReportCached(reportId: string): boolean {\n return this.definitionsById.has(reportId) || this.pendingReportRequests.has(reportId);\n }\n\n clearAllCache(): void {\n this.definitionsById.clear();\n this.pendingReportRequests.clear();\n }\n\n clearReportsCache(): void {\n this.definitionsById.clear();\n this.pendingReportRequests.clear();\n }\n\n //#endregion\n\n //#region ---- Action Handlers (Override in Connectivity Layer) ----\n\n async executeAction(commandName: string, options?: Record<string, unknown>): Promise<void> {\n console.log(`Execute action: ${commandName} - should be implemented in connectivity layer`, options);\n }\n\n //#endregion\n}\n","import {\n AXPContextData,\n AXPFilterClause,\n type AXPRuntimeQueryResult,\n runtimeQueryCollectionData,\n runtimeQueryObjectData,\n runtimeQueryPayloadData,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXBarChartValue } from '@acorex/charts/bar-chart';\nimport type { AXDonutChartValue } from '@acorex/charts/donut-chart';\nimport type { AXLineChartValue } from '@acorex/charts/line-chart';\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { isReportDateRangeObject } from './report-parameter.util';\nimport type { AXPChartDataMapping } from '@acorex-platform/module-report-management-client/contracts';\n\nexport function AXPieChartReportMapper(data: Record<string, number>): AXDonutChartValue {\n return Object.entries(data)\n .map(([key, value]) => ({\n id: key,\n label: key,\n value: Number(value),\n }))\n .filter((item) => Number.isFinite(item.value) && item.value > 0);\n}\n\nexport function AXBarChartReportMapper(data: Record<string, number>): AXBarChartValue {\n return Object.entries(data)\n .map(([key, value]) => ({\n id: key,\n label: key,\n value: Number(value),\n }))\n .filter((item) => Number.isFinite(item.value));\n}\n\nexport function AXLineChartReportMapper(data: Record<string, number>): AXLineChartValue {\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return [];\n }\n const dataPoints = entries.map(([key, value]) => ({\n x: key,\n y: value,\n }));\n\n return [\n {\n id: 'series-1',\n label: 'Data Series',\n tooltipLabel: 'Countries Info',\n lineColor: '#d81159',\n fillColor: '#d8115920',\n data: dataPoints,\n },\n ];\n}\n\n//#region ---- Helpers ----\n\n/**\n * Determines whether a filter value should be treated as empty.\n * This handles deep objects, arrays, and primitives so that\n * values like { from: null, to: null } are considered empty.\n */\nfunction isEmptyFilterValue(value: unknown): boolean {\n if (value === null || value === undefined || value === '') {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0 || value.every((item) => isEmptyFilterValue(item));\n }\n\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>);\n if (entries.length === 0) {\n return true;\n }\n\n // Consider object empty if all nested values are empty\n return entries.every(([, v]) => isEmptyFilterValue(v));\n }\n\n return false;\n}\n\n//#endregion\n\n/**\n * Converts AXPContextData (filter context) to AXPFilterClause format\n *\n * Input format:\n * {\n * \"fieldName\": {\n * \"operation\": { \"type\": \"between\" },\n * \"value\": { \"from\": \"...\", \"to\": \"...\" }\n * }\n * }\n *\n * Output format:\n * {\n * logic: 'and',\n * filters: [\n * {\n * field: 'fieldName',\n * operator: { type: 'between' },\n * value: { from: \"...\", to: \"...\" }\n * }\n * ]\n * }\n */\nexport function convertContextDataToFilterClause(context: AXPContextData): AXPFilterClause {\n const filters: AXDataSourceFilterOption[] = [];\n\n // Iterate through all keys in context\n for (const [fieldName, fieldData] of Object.entries(context)) {\n if (fieldName.endsWith('EditorObj') || fieldName.startsWith('__')) {\n continue;\n }\n\n // Drill-down and URL shortcuts may pass plain parameter values (e.g. { brand: 'id' })\n if (fieldData === null || fieldData === undefined || typeof fieldData !== 'object' || Array.isArray(fieldData)) {\n if (!isEmptyFilterValue(fieldData)) {\n filters.push({\n field: fieldName,\n operator: {\n type: Array.isArray(fieldData) ? 'in' : 'equal',\n },\n value: fieldData,\n });\n }\n continue;\n }\n\n // Plain `{ from, to }` / `{ start, end }` objects (e.g. dateRange from OpenInPopup)\n if (isReportDateRangeObject(fieldData) && !('operation' in fieldData)) {\n // Date-range widgets use `between`; CDK operator union is narrower than runtime.\n filters.push({\n field: fieldName,\n operator: { type: 'between' as never },\n value: {\n from: String(fieldData.from ?? fieldData.start),\n to: String(fieldData.to ?? fieldData.end),\n },\n });\n continue;\n }\n\n // Skip structured filter objects without operation metadata\n if (!('operation' in fieldData)) {\n continue;\n }\n\n const operation = (fieldData as any).operation;\n const value = (fieldData as any).value;\n\n // Skip if operation type is missing\n if (!operation || !operation.type) {\n continue;\n }\n\n // Skip if value is effectively empty (null/undefined/empty string,\n // empty object/array, or deep object where all nested values are empty)\n if (isEmptyFilterValue(value)) {\n continue;\n }\n\n // Create filter clause\n const filter: AXDataSourceFilterOption = {\n field: fieldName,\n operator: {\n type: operation.type,\n },\n value: value,\n };\n\n filters.push(filter);\n }\n\n // Return filter clause with AND logic\n if (filters.length === 0) {\n return {\n logic: 'and',\n filters: [],\n };\n }\n\n return {\n logic: 'and',\n filters: filters,\n };\n}\n\n//#region ----- Query payload helpers -----\n\nexport type AXPReportPdfSource = {\n url?: string;\n base64?: string;\n blob?: Blob;\n filename?: string;\n};\n\nfunction asPdfSource(record: Record<string, unknown> | undefined): AXPReportPdfSource | null {\n if (!record) {\n return null;\n }\n const url = typeof record['url'] === 'string' ? record['url'] : undefined;\n const base64 = typeof record['base64'] === 'string' ? record['base64'] : undefined;\n const blob = record['blob'] instanceof Blob ? record['blob'] : undefined;\n const filename = typeof record['filename'] === 'string' ? record['filename'] : undefined;\n if (url == null && base64 == null && blob == null) {\n return null;\n }\n return { url, base64, blob, filename };\n}\n\nexport function queryResultToPdfSource(\n queryResult: AXPRuntimeQueryResult<unknown> | null | undefined,\n): AXPReportPdfSource | null {\n if (!queryResult?.success) {\n return null;\n }\n\n const fromObject = asPdfSource(\n (runtimeQueryPayloadData(queryResult) ?? runtimeQueryObjectData(queryResult)) as\n | Record<string, unknown>\n | undefined,\n );\n if (fromObject) {\n return fromObject;\n }\n\n const page = runtimeQueryCollectionData(queryResult);\n return asPdfSource(page?.items?.[0] as Record<string, unknown> | undefined);\n}\n\nexport function queryResultToChartSeries(\n queryResult: AXPRuntimeQueryResult<unknown> | null | undefined,\n mapping?: AXPChartDataMapping | null,\n): Record<string, number> {\n if (!queryResult?.success) {\n return {};\n }\n\n const objectData = runtimeQueryObjectData(queryResult) as Record<string, unknown> | undefined;\n if (objectData && !('items' in objectData)) {\n const series: Record<string, number> = {};\n for (const [key, value] of Object.entries(objectData)) {\n const n = Number(value);\n if (Number.isFinite(n)) {\n series[key] = n;\n }\n }\n if (Object.keys(series).length > 0) {\n return series;\n }\n }\n\n const page = runtimeQueryCollectionData(queryResult);\n const rows = (page?.items ?? []) as Record<string, unknown>[];\n if (rows.length === 0) {\n return {};\n }\n\n const firstRow = rows[0] ?? {};\n const keys = Object.keys(firstRow);\n const xField = mapping?.xField ?? keys[0] ?? 'x';\n const yFieldsRaw = mapping?.yFields;\n const yField = Array.isArray(yFieldsRaw)\n ? yFieldsRaw[0]\n : yFieldsRaw\n ? String(yFieldsRaw)\n : (keys[1] ?? 'value');\n\n const chartData: Record<string, number> = {};\n for (const row of rows) {\n const key = String(row[xField] ?? '');\n if (!key) {\n continue;\n }\n const value = Number(row[yField] ?? 0);\n if (Number.isFinite(value)) {\n chartData[key] = value;\n }\n }\n return chartData;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client/core';\nimport {\n AXPExpressionEvaluatorScope,\n resolveMultiLanguageString,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport { buildReportGenerationNotificationCorrelationId } from '@acorex-platform/module-report-management-client/contracts';\nimport { get, isString } from 'lodash-es';\nimport { inject, Injectable } from '@angular/core';\nimport { resolveReportParameterValues } from '../reports/report-parameter.util';\nimport { AXPReportViewerService } from '../reports';\n\n//#endregion\n\n//#region ----- Command Input -----\n\nexport interface AXPOpenReportInPopupCommandInput {\n reportId?: string;\n layoutId?: string;\n runId?: string;\n title?: AXPMultiLanguageString;\n parameters?: Record<string, unknown>;\n hideColumnFields?: string[];\n data?: Record<string, unknown>;\n options?: Partial<AXPOpenReportInPopupCommandInput>;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/** Opens a report in a results-only popup. Pass `runId` to show a frozen generation run. */\n@Injectable({ providedIn: 'root' })\nexport class AXPOpenReportInPopupCommand\n implements AXPCommand<AXPOpenReportInPopupCommandInput | Record<string, unknown>, void>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly popupService = inject(AXPopupService);\n private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n private readonly translate = inject(AXTranslationService);\n private readonly reportViewerService = inject(AXPReportViewerService);\n private readonly inboxConnector = inject(AXPInAppInboxConnectorService, { optional: true });\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(\n input: AXPOpenReportInPopupCommandInput | Record<string, unknown>,\n ): AXPCommandExecuteResultPromise<void> {\n const rowData = this.resolveRowData(input);\n const options = await this.resolveOptions(input, rowData);\n\n if (!options.reportId) {\n return {\n success: false,\n message: {\n text: await this.translate.translateAsync(\n '@report-management:report-viewer.messages.error.invalid-popup-target',\n ),\n },\n };\n }\n\n const runId = typeof options.runId === 'string' ? options.runId.trim() : '';\n if (runId) {\n await this.dismissReportGenerationInboxNotification(runId);\n }\n const popupTitle = await this.resolvePopupTitle(options, rowData, runId);\n const parameters = resolveReportParameterValues(options.parameters);\n\n const comp = (\n await import('../features/report-viewer/report-popup-viewer/report-popup-viewer.component')\n ).AXPReportPopupViewerComponent;\n\n this.popupService.open(comp, {\n title: popupTitle,\n size: 'lg',\n maximizable: true,\n data: {\n reportId: options.reportId,\n layoutId: options.layoutId,\n runId,\n parameters,\n hideColumnFields: options.hideColumnFields ?? [],\n },\n });\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private resolveRowData(\n input: AXPOpenReportInPopupCommandInput | Record<string, unknown>,\n ): Record<string, unknown> {\n const ctx = input as AXPOpenReportInPopupCommandInput;\n if (ctx?.data && typeof ctx.data === 'object') {\n return ctx.data as Record<string, unknown>;\n }\n if (\n (input as Record<string, unknown>)['data'] &&\n typeof (input as Record<string, unknown>)['data'] === 'object'\n ) {\n return (input as Record<string, unknown>)['data'] as Record<string, unknown>;\n }\n return input as Record<string, unknown>;\n }\n\n private async resolveOptions(\n input: AXPOpenReportInPopupCommandInput | Record<string, unknown>,\n rowData: Record<string, unknown>,\n ): Promise<AXPOpenReportInPopupCommandInput> {\n const typedInput = input as AXPOpenReportInPopupCommandInput;\n const rawOptions = {\n reportId: typedInput.reportId,\n layoutId: typedInput.layoutId,\n runId: typedInput.runId,\n title: typedInput.title,\n parameters: typedInput.parameters,\n hideColumnFields: typedInput.hideColumnFields,\n ...(typedInput.options ?? {}),\n };\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n return (await this.expressionEvaluator.evaluate(rawOptions, scope)) as AXPOpenReportInPopupCommandInput;\n }\n\n private async resolvePopupTitle(\n options: AXPOpenReportInPopupCommandInput,\n rowData: Record<string, unknown>,\n runId: string,\n ): Promise<string> {\n let baseTitle = await this.resolveExplicitPopupTitle(options.title, rowData);\n\n if (!baseTitle && options.reportId) {\n const report = await this.reportViewerService.getReportById(options.reportId);\n if (report?.title) {\n baseTitle =\n this.translate.resolve(report.title) ||\n resolveMultiLanguageString(report.title, this.translate.getActiveLang() || 'en-US') ||\n '';\n }\n }\n\n if (!baseTitle) {\n baseTitle = await this.translate.translateAsync(\n '@report-management:report-viewer.components.report-popup-viewer.title',\n );\n }\n\n if (!runId) {\n return baseTitle;\n }\n\n return this.translate.translateAsync(\n '@report-management:report-viewer.components.report-popup-viewer.generated-title',\n { params: { title: baseTitle } },\n );\n }\n\n private async resolveExplicitPopupTitle(\n title: AXPMultiLanguageString | undefined,\n rowData: Record<string, unknown>,\n ): Promise<string> {\n if (title && typeof title === 'object') {\n const resolved = this.translate.resolve(title);\n if (resolved) {\n return resolved;\n }\n }\n\n if (!isString(title) || !title.trim()) {\n return '';\n }\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n const evaluated = await this.expressionEvaluator.evaluate(title, scope);\n return isString(evaluated) ? evaluated : title;\n }\n\n private async dismissReportGenerationInboxNotification(runId: string): Promise<void> {\n if (!this.inboxConnector) {\n return;\n }\n try {\n await this.inboxConnector.dismissByCorrelationId(\n buildReportGenerationNotificationCorrelationId(runId),\n );\n } catch {\n // Best-effort — opening the report should still proceed.\n }\n }\n\n //#endregion\n}\n\n//#endregion\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-acorex-platform-module-report-management-client-DhTbq8K0.mjs","sources":["../../../../libs/modules/report-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/report-management/client/src/lib/menu.provider.ts","../../../../libs/modules/report-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/report-management/client/src/lib/settings.provider.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-parameter.util.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports.util.ts","../../../../libs/modules/report-management/client/src/lib/features/entity-reports/entity-reports.plugin.ts","../../../../libs/modules/report-management/client/src/lib/commands/open-report-viewer.command.ts","../../../../libs/modules/report-management/client/src/lib/features/background-operation/report-generation-background-operation.handler.ts","../../../../libs/modules/report-management/client/src/lib/features/report-generation/report-generation-inbox-toast.bridge.service.ts","../../../../libs/modules/report-management/client/src/lib/features/report-generation/report-generation-inbox-toast.providers.ts","../../../../libs/modules/report-management/client/src/lib/report-management.module.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-viewer-user-settings.types.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-viewer.service.ts","../../../../libs/modules/report-management/client/src/lib/reports/report-mapper.ts","../../../../libs/modules/report-management/client/src/lib/commands/open-report-in-popup.command.ts","../../../../libs/modules/report-management/client/src/acorex-platform-module-report-management-client.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPInsightsReportingPermissionKeys\n} from '@acorex-platform/module-report-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ----- Permission Definition Provider -----\n\n/**\n * Registers report capabilities into the shared Insights & Reporting group.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPInsightsReportingPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:insights-reporting.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.InsightsReporting.Root, `${G}.insights-reporting.title`, `${G}.insights-reporting.description`, { order: 100 });\n\n context\n .addGroup(\n groups.InsightsReporting.Reports,\n `${G}.insights-reporting-reports.title`,\n `${G}.insights-reporting-reports.description`,\n { parent: groups.InsightsReporting.Root, order: 10 },\n )\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(keys.MaintainReports, `${P}.maintain-reports.title`, `${P}.maintain-reports.description`)\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n AXPInsightsReportingPermissionKeys,\n AXPReportManagementMenuKeys,\n RootConfig,\n} from '@acorex-platform/module-report-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n\n context.addItems([\n {\n name: AXPReportManagementMenuKeys.Reports,\n text: RootConfig.entities.report.titlePlural,\n path: this.entityService.withEntity(module.name, RootConfig.entities.report.name).createPath(),\n icon: RootConfig.entities.report.icon,\n priority: 8300,\n policy: {\n features: [module.name],\n permissions: [AXPInsightsReportingPermissionKeys.MaintainReports],\n },\n },\n ]);\n }\n}\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport { AXPReportManagementFeatureKeys } from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Report Management Feature Definition Provider.\n * Provides feature definitions for the Report Management module.\n */\nexport class AXPReportManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n // Report Builder feature\n context.addFeature(AXPReportManagementFeatureKeys.ReportBuilder, {\n title: '@report-management:features.report-builder.title',\n description: '@report-management:features.report-builder.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Saved Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.SavedReports, {\n title: '@report-management:features.saved-reports.title',\n description: '@report-management:features.saved-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Scheduled Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.ScheduledReports, {\n title: '@report-management:features.scheduled-reports.title',\n description: '@report-management:features.scheduled-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Background Reports feature\n context.addFeature(AXPReportManagementFeatureKeys.BackgroundReports, {\n title: '@report-management:features.background-reports.title',\n description: '@report-management:features.background-reports.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPReportManagementSettings,\n AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS,\n} from '@acorex-platform/module-report-management-client/contracts';\n\n//#region ----- Report management settings -----\n\nconst DEDUPE_POLICY_ITEMS = [\n {\n value: 'none',\n text: '@report-management:settings.generation.items.dedupe-policy.options.none',\n },\n {\n value: 'in-flight',\n text: '@report-management:settings.generation.items.dedupe-policy.options.in-flight',\n },\n {\n value: 'in-flight-or-cooldown',\n text: '@report-management:settings.generation.items.dedupe-policy.options.in-flight-or-cooldown',\n },\n];\n\nexport class AXMReportManagementSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n const cooldownPolicy = `{{ context.eval('${AXPReportManagementSettings.GenerationDedupePolicy}') === 'in-flight-or-cooldown' }}`;\n\n context\n .addGroup(\n 'report-management',\n '@report-management:settings.group.title',\n '@report-management:settings.group.description',\n 'fa-light fa-chart-line',\n undefined,\n 840,\n )\n .addSection(\n 'generation',\n '@report-management:settings.generation.title',\n '@report-management:settings.generation.description',\n )\n .addSetting({\n key: AXPReportManagementSettings.GenerationDedupePolicy,\n title: '@report-management:settings.generation.items.dedupe-policy.title',\n description: '@report-management:settings.generation.items.dedupe-policy.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS[\n AXPReportManagementSettings.GenerationDedupePolicy\n ],\n widget: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: DEDUPE_POLICY_ITEMS,\n },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPReportManagementSettings.GenerationDedupeCooldownMinutes,\n title: '@report-management:settings.generation.items.dedupe-cooldown-minutes.title',\n description: '@report-management:settings.generation.items.dedupe-cooldown-minutes.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS[\n AXPReportManagementSettings.GenerationDedupeCooldownMinutes\n ],\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 0, maxValue: 1440, visibility: cooldownPolicy },\n },\n validationRules: [{ rule: 'required' }],\n })\n .addSetting({\n key: AXPReportManagementSettings.GenerationMaxConcurrentPerUser,\n title: '@report-management:settings.generation.items.max-concurrent-per-user.title',\n description: '@report-management:settings.generation.items.max-concurrent-per-user.description',\n scope: 'P',\n overridableAt: [],\n isInherited: false,\n defaultValue: AXP_REPORT_MANAGEMENT_GENERATION_SETTING_DEFAULTS[\n AXPReportManagementSettings.GenerationMaxConcurrentPerUser\n ],\n widget: {\n type: AXPWidgetsList.Editors.NumberBox,\n options: { minValue: 0, maxValue: 50 },\n },\n validationRules: [{ rule: 'required' }],\n })\n .endSection()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ----- Types -----\n\nexport type AXPReportDateRangeValue = 'today' | { from: string; to: string };\n\nexport type AXPReportParameterValue = string | number | boolean | AXPReportDateRangeValue | Record<string, unknown>;\n\n//#endregion\n\n//#region ----- Date helpers -----\n\n/** Local calendar date as `yyyy-MM-dd` (session \"today\" for report ranges). */\nexport function formatReportDateOnly(date: Date = new Date()): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\nexport function resolveTodayDateRange(date: Date = new Date()): { from: string; to: string } {\n const day = formatReportDateOnly(date);\n return { from: day, to: day };\n}\n\nexport function isReportDateRangeObject(value: unknown): value is { from?: unknown; to?: unknown; start?: unknown; end?: unknown } {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const raw = value as Record<string, unknown>;\n const from = raw['from'] ?? raw['start'];\n const to = raw['to'] ?? raw['end'];\n return typeof from === 'string' && typeof to === 'string' && !!from.trim() && !!to.trim();\n}\n\nexport function toReportDateRangeFilterValue(\n range: { from: string; to: string },\n): { operation: { type: 'between' }; value: { from: string; to: string } } {\n return {\n operation: { type: 'between' },\n value: { from: range.from, to: range.to },\n };\n}\n\n/**\n * Converts report default / binding values into filter-form context shape.\n * - `'today'` and `{ from, to }` → `{ operation: between, value }`\n * - existing filter objects are left unchanged\n */\nexport function resolveReportFilterDefaultValue(value: unknown, now: Date = new Date()): unknown {\n if (value === 'today') {\n return toReportDateRangeFilterValue(resolveTodayDateRange(now));\n }\n if (isReportDateRangeObject(value)) {\n return toReportDateRangeFilterValue({\n from: String(value.from ?? value.start),\n to: String(value.to ?? value.end),\n });\n }\n return value;\n}\n\ntype ReportParameterDefaultSource = {\n path: string;\n widget?: {\n defaultValue?: unknown;\n options?: Record<string, unknown>;\n };\n};\n\ntype ReportParameterGroupDefaultSource = {\n parameters?: ReportParameterDefaultSource[];\n};\n\nexport function collectReportParameterDefaults(\n parameterGroups: ReportParameterGroupDefaultSource[] | undefined,\n now: Date = new Date(),\n): Record<string, unknown> {\n const defaults: Record<string, unknown> = {};\n for (const group of parameterGroups ?? []) {\n for (const param of group.parameters ?? []) {\n const rawDefault = param.widget?.defaultValue ?? param.widget?.options?.['defaultValue'];\n if (rawDefault === undefined) {\n continue;\n }\n defaults[param.path] = resolveReportFilterDefaultValue(rawDefault, now);\n }\n }\n return defaults;\n}\n\n//#endregion\n\n//#region ----- Parameter resolution -----\n\n/**\n * Resolves special parameter tokens after expression evaluation.\n * - `dateRange: 'today'` → `{ from, to }` for the local calendar day\n */\nexport function resolveReportParameterValues(\n parameters: Record<string, unknown> | undefined,\n now: Date = new Date(),\n): Record<string, unknown> {\n if (!parameters) {\n return {};\n }\n\n const resolved: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(parameters)) {\n if (value === 'today') {\n resolved[key] = resolveTodayDateRange(now);\n continue;\n }\n resolved[key] = value;\n }\n return resolved;\n}\n\n/**\n * Maps entity-binding parameter declarations into OpenInPopup command parameters.\n * Field paths become `context.eval` expressions; `today` and `{from,to}` stay literal.\n */\nexport function mapEntityBindingParameters(\n parameters: Record<string, AXPReportParameterValue> | undefined,\n): Record<string, unknown> | undefined {\n if (!parameters) {\n return undefined;\n }\n\n return Object.fromEntries(\n Object.entries(parameters).map(([key, value]) => [key, toBindingParameterExpression(value)]),\n );\n}\n\nfunction toBindingParameterExpression(value: AXPReportParameterValue): unknown {\n if (value === 'today') {\n return 'today';\n }\n\n if (isReportDateRangeObject(value)) {\n return {\n from: String(value.from ?? value.start),\n to: String(value.to ?? value.end),\n };\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n const trimmed = value.trim();\n if (!trimmed || trimmed.includes('{{') || trimmed.includes('context.eval')) {\n return value;\n }\n\n return `{{ context.eval('${trimmed}') }}`;\n}\n\n//#endregion\n\n//#region ----- Viewer query params -----\n\n/**\n * Flattens popup/filter parameters into report-viewer URL query params\n * (`field.operation.type` + `field.value` / nested `from`/`to`).\n */\nexport function flattenReportParametersToQueryParams(\n parameters: Record<string, unknown>,\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const [field, rawValue] of Object.entries(parameters)) {\n if (rawValue === null || rawValue === undefined || rawValue === '') {\n continue;\n }\n\n if (isReportDateRangeObject(rawValue)) {\n const from = String(rawValue.from ?? rawValue.start);\n const to = String(rawValue.to ?? rawValue.end);\n result[`${field}.operation.type`] = 'between';\n result[`${field}.value.from`] = from;\n result[`${field}.value.to`] = to;\n continue;\n }\n\n if (typeof rawValue === 'object' && !Array.isArray(rawValue) && 'operation' in rawValue) {\n const filterObj = rawValue as { operation?: { type?: string }; value?: unknown };\n if (filterObj.operation?.type) {\n result[`${field}.operation.type`] = String(filterObj.operation.type);\n }\n if (isReportDateRangeObject(filterObj.value)) {\n result[`${field}.value.from`] = String(filterObj.value.from ?? filterObj.value.start);\n result[`${field}.value.to`] = String(filterObj.value.to ?? filterObj.value.end);\n } else if (filterObj.value !== undefined && filterObj.value !== null && filterObj.value !== '') {\n result[`${field}.value`] = Array.isArray(filterObj.value)\n ? filterObj.value.map(String).join(',')\n : String(filterObj.value);\n }\n continue;\n }\n\n result[`${field}.operation.type`] = Array.isArray(rawValue) ? 'in' : 'equal';\n result[`${field}.value`] = Array.isArray(rawValue) ? rawValue.map(String).join(',') : String(rawValue);\n }\n\n return result;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type {\n AXPReportDefinition,\n AXPReportEntityBinding,\n AXPReportEntityDisplay,\n} from '@acorex-platform/module-report-management-client/contracts';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { mapEntityBindingParameters } from '../../reports/report-parameter.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXPEntityBoundReport {\n report: AXPReportDefinition;\n binding: AXPReportEntityBinding;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nexport const OPEN_REPORT_IN_POPUP_COMMAND = 'ReportManagement.Report:OpenInPopup';\nexport const ENTITY_REPORTS_PAGE_COMPONENT_KEY = 'entity-reports-page';\n\n//#endregion\n\n//#region ----- Display helpers -----\n\nexport function normalizeReportEntityDisplays(\n display: AXPReportEntityBinding['display'],\n): Set<AXPReportEntityDisplay> {\n if (!display) {\n return new Set<AXPReportEntityDisplay>(['page']);\n }\n const list = Array.isArray(display) ? display : [display];\n return new Set(list);\n}\n\nexport function bindingShowsOnPage(binding: AXPReportEntityBinding): boolean {\n const displays = normalizeReportEntityDisplays(binding.display);\n // Default / empty → page. Explicit lists without `page` hide from the Reports page.\n return displays.has('page') || displays.size === 0;\n}\n\nexport function resolveBindingTitle(\n report: AXPReportDefinition,\n binding: AXPReportEntityBinding,\n): AXPMultiLanguageString {\n if (typeof binding.title === 'string' && binding.title.trim()) {\n return binding.title.trim();\n }\n return report.title;\n}\n\nexport function resolveBindingDescription(\n report: AXPReportDefinition,\n binding: AXPReportEntityBinding,\n): AXPMultiLanguageString | undefined {\n if (typeof binding.description === 'string' && binding.description.trim()) {\n return binding.description.trim();\n }\n if (typeof report.description === 'string') {\n const trimmed = report.description.trim();\n return trimmed || undefined;\n }\n return report.description;\n}\n\nexport function buildOpenInPopupCommandOptions(\n report: AXPReportDefinition,\n binding: AXPReportEntityBinding,\n): Record<string, unknown> {\n return {\n reportId: report.id,\n layoutId: binding.layoutId,\n title: resolveBindingTitle(report, binding),\n parameters: mapEntityBindingParameters(binding.parameters),\n };\n}\n\nexport function extractEntityBindings(\n report: AXPReportDefinition,\n entityType: string,\n): AXPReportEntityBinding[] {\n const bindings = report.entities ?? [];\n return bindings\n .filter((binding) => binding?.entity === entityType)\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPEntityActionPlugin,\n resolveEntityPluginDetailPageOrder,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { Injector } from '@angular/core';\nimport { ENTITY_REPORTS_PAGE_COMPONENT_KEY } from './entity-reports.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport type EntityReportsPluginOptions = {\n /** Title for the Reports detail page. */\n title?: string;\n /** Icon for the Reports detail page. */\n icon?: string;\n};\n\n//#endregion\n\n//#region ----- Plugin factory -----\n\n/**\n * Entity `reports` plugin — contributes a Reports detail page for definitions\n * bound via `entities[]`. Reports open from that page (not entity Actions).\n *\n * Takes {@link Injector} for factory signature parity with other entity plugins.\n */\nexport function createEntityReportsPlugin(_injector: Injector): AXPEntityActionPlugin {\n return {\n name: 'reports',\n order: 55,\n apply: async (ctx, options?: EntityReportsPluginOptions) => {\n const opts = options ?? {};\n const entityType = `${ctx.entity.module}.${ctx.entity.name}`;\n const pageTitle = opts.title?.trim() || '@report-management:entity-reports.page.title';\n\n //#region ----- Reports detail page -----\n\n ctx.entity.pages ??= [];\n const pageExists = ctx.entity.pages.some(\n (p: { componentKey?: string }) => p.componentKey === ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n );\n const pageOrder = resolveEntityPluginDetailPageOrder(\n { relatedEntities: ctx.entity.relatedEntities, pages: ctx.entity.pages },\n 'reports',\n {\n componentKey: ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n skipPage: pageExists ? { componentKey: ENTITY_REPORTS_PAGE_COMPONENT_KEY } : undefined,\n },\n );\n const page = {\n componentKey: ENTITY_REPORTS_PAGE_COMPONENT_KEY,\n title: pageTitle,\n icon: opts.icon ?? 'fa-light fa-chart-mixed',\n layout: { order: pageOrder },\n options: { entityType },\n } as any;\n if (!pageExists) {\n ctx.entity.pages.push(page);\n } else {\n const pages = ctx.entity.pages as any[];\n const index = pages.findIndex((p) => p.componentKey === ENTITY_REPORTS_PAGE_COMPONENT_KEY);\n if (index >= 0) {\n pages[index] = { ...pages[index], ...page };\n }\n }\n\n //#endregion\n\n (ctx.entity as any).extensions ??= {};\n (ctx.entity as any).extensions.reports = {\n entityType,\n };\n },\n };\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client/core';\nimport { AXPTabNavigationService } from '@acorex-platform/framework-client/common';\nimport { AXPExpressionEvaluatorScope } from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport { buildReportGenerationNotificationCorrelationId } from '@acorex-platform/module-report-management-client/contracts';\nimport { get } from 'lodash-es';\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ----- Command Input -----\n\nexport interface AXPOpenReportViewerCommandInput {\n reportId?: string;\n runId?: string;\n data?: Record<string, unknown>;\n options?: Partial<AXPOpenReportViewerCommandInput>;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/** Opens a report in the full-page report viewer. */\n@Injectable({ providedIn: 'root' })\nexport class AXPOpenReportViewerCommand\n implements AXPCommand<AXPOpenReportViewerCommandInput | Record<string, unknown>, void>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly sessionService = inject(AXPSessionService);\n private readonly tabNavigation = inject(AXPTabNavigationService);\n private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n private readonly translate = inject(AXTranslationService);\n private readonly inboxConnector = inject(AXPInAppInboxConnectorService, { optional: true });\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(\n input: AXPOpenReportViewerCommandInput | Record<string, unknown>,\n ): AXPCommandExecuteResultPromise<void> {\n const rowData = this.resolveRowData(input);\n const options = await this.resolveOptions(input, rowData);\n\n if (!options.reportId) {\n return {\n success: false,\n message: {\n text: await this.translate.translateAsync(\n '@report-management:report-viewer.messages.error.invalid-popup-target',\n ),\n },\n };\n }\n\n const runId = typeof options.runId === 'string' ? options.runId.trim() : '';\n if (runId) {\n await this.dismissReportGenerationInboxNotification(runId);\n }\n\n const appName = this.sessionService.application?.name;\n if (!appName) {\n return {\n success: false,\n message: {\n text: await this.translate.translateAsync(\n '@report-management:report-viewer.messages.error.invalid-popup-target',\n ),\n },\n };\n }\n\n // Put reportId in the path (not queryParams): tabular navigation drops NavigationExtras.\n const path = runId\n ? `${appName}/${RootConfig.module.route}/viewer/${options.reportId}?runId=${encodeURIComponent(runId)}`\n : `${appName}/${RootConfig.module.route}/viewer/${options.reportId}`;\n await this.tabNavigation.navigate(path);\n\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private async dismissReportGenerationInboxNotification(runId: string): Promise<void> {\n if (!this.inboxConnector) {\n return;\n }\n try {\n await this.inboxConnector.dismissByCorrelationId(\n buildReportGenerationNotificationCorrelationId(runId),\n );\n } catch {\n // Best-effort — navigation should still proceed.\n }\n }\n\n private resolveRowData(\n input: AXPOpenReportViewerCommandInput | Record<string, unknown>,\n ): Record<string, unknown> {\n const ctx = input as AXPOpenReportViewerCommandInput;\n if (ctx?.data && typeof ctx.data === 'object') {\n return ctx.data as Record<string, unknown>;\n }\n if (\n (input as Record<string, unknown>)['data'] &&\n typeof (input as Record<string, unknown>)['data'] === 'object'\n ) {\n return (input as Record<string, unknown>)['data'] as Record<string, unknown>;\n }\n return input as Record<string, unknown>;\n }\n\n private async resolveOptions(\n input: AXPOpenReportViewerCommandInput | Record<string, unknown>,\n rowData: Record<string, unknown>,\n ): Promise<AXPOpenReportViewerCommandInput> {\n const typedInput = input as AXPOpenReportViewerCommandInput;\n const rawOptions = {\n reportId: typedInput.reportId,\n runId: typedInput.runId,\n ...(typedInput.options ?? {}),\n };\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n return (await this.expressionEvaluator.evaluate(rawOptions, scope)) as AXPOpenReportViewerCommandInput;\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXP_BACKGROUND_OPERATION_HANDLERS,\n AXPBackgroundOperationHandler,\n type AXPBackgroundOperation,\n type AXPBackgroundOperationCta,\n} from '@acorex-platform/framework-client/common';\nimport { AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport { Injectable, Provider, inject } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPOpenReportViewerCommand } from '../../commands/open-report-viewer.command';\nimport { AXPQueryService } from '@acorex-platform/framework-client/runtime';\nimport { runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport {\n AXMReportManagementQueryKeys,\n type AXMReportGenerationRequest,\n} from '@acorex-platform/module-report-management-client/contracts';\n\n//#endregion\n\n//#region ----- Handler -----\n\n@Injectable()\nexport class AXMReportGenerationBackgroundOperationHandler extends AXPBackgroundOperationHandler {\n readonly providerKey = 'report-management';\n\n private readonly openViewer = inject(AXPOpenReportViewerCommand);\n private readonly queryService = inject(AXPQueryService);\n\n async execute(command: AXPExecuteCommand, operation: AXPBackgroundOperation): Promise<void> {\n if (command.name !== 'click') {\n return;\n }\n\n const reportRequestId =\n get(operation.data, 'reportRequestId') ??\n get(operation.data, 'payload.reportRequestId') ??\n get(operation.data, 'command.payload.reportRequestId');\n if (typeof reportRequestId !== 'string' || !reportRequestId.trim()) {\n return;\n }\n\n const result = await this.queryService.fetch<{ id: string }, AXMReportGenerationRequest>(\n AXMReportManagementQueryKeys.ReportGeneration.Get,\n { id: reportRequestId },\n );\n const request = runtimeQueryPayloadData(result);\n if (!request?.reportId) {\n return;\n }\n\n if (request.status === 'completed') {\n await this.openViewer.execute({ reportId: request.reportId, runId: request.id });\n return;\n }\n\n await this.openViewer.execute({ reportId: request.reportId });\n }\n\n override resolveCta(operation: AXPBackgroundOperation): AXPBackgroundOperationCta | null {\n if (operation.status === 'failed' && operation.capabilities.retryable) {\n return {\n text: '@general:background-operation.actions.retry',\n icon: 'fa-light fa-arrow-rotate-right',\n color: 'primary',\n look: 'solid',\n command: { name: 'retry' },\n };\n }\n\n if (operation.status === 'completed' && operation.capabilities.clickable) {\n return {\n text: '@report-management:report-generation.notifications.actions.open-viewer',\n icon: 'fa-light fa-file-chart-column',\n color: 'primary',\n look: 'solid',\n command: { name: 'click' },\n };\n }\n\n return null;\n }\n}\n\n//#endregion\n\n//#region ----- Providers -----\n\nexport const AXM_REPORT_GENERATION_BACKGROUND_OPERATION_HANDLERS: Provider[] = [\n {\n provide: AXP_BACKGROUND_OPERATION_HANDLERS,\n useExisting: AXMReportGenerationBackgroundOperationHandler,\n multi: true,\n },\n AXMReportGenerationBackgroundOperationHandler,\n];\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXP_USER_NOTIFICATION_SERVICE } from '@acorex-platform/framework-client/common';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport type { AXPInAppInboxItem } from '@acorex-platform/module-communication-management-client';\nimport { REPORT_GENERATION_NOTIFICATION_DEFINITION_KEY } from '@acorex-platform/module-report-management-client/contracts';\nimport { DestroyRef, effect, inject, Injectable, Injector } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map } from 'rxjs';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst TOASTED_KEYS_STORAGE = 'axp:report-generation-inbox-toast-keys';\n\n//#endregion\n\n//#region ----- Bridge -----\n\n/**\n * When a report-generation inbox row arrives (user was not watching inline),\n * mirrors it as a transient toast with an open action. Inbox persistence stays server-owned.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMReportGenerationInboxToastBridgeService {\n //#region ----- Dependencies -----\n\n private readonly inboxConnector = inject(AXPInAppInboxConnectorService, { optional: true });\n private readonly userNotificationService = inject(AXP_USER_NOTIFICATION_SERVICE);\n private readonly commandService = inject(AXPCommandService);\n private readonly translationService = inject(AXTranslationService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n\n //#endregion\n\n //#region ----- State -----\n\n private started = false;\n private inboxBaselined = false;\n private boundUserId: string | null = null;\n private readonly toastedKeys = new Set<string>();\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n start(): void {\n if (this.started || !this.inboxConnector) {\n return;\n }\n this.started = true;\n\n this.sessionService.isReadyForAppScopedApi$\n .pipe(\n map(() => this.sessionService.user?.id?.trim() || null),\n distinctUntilChanged(),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((userId) => {\n this.bindSessionUser(userId);\n });\n\n this.bindSessionUser(this.sessionService.user?.id?.trim() || null);\n\n effect(\n () => {\n const userId = this.sessionService.user?.id?.trim();\n const inboxLoading = this.inboxConnector?.loading() ?? false;\n const items = this.readReportGenerationItems();\n\n if (!this.sessionService.isReadyForAppScopedApi || !userId) {\n return;\n }\n\n if (!this.inboxBaselined) {\n for (const item of items) {\n this.markToasted(this.toastKey(item));\n }\n if (!inboxLoading) {\n this.inboxBaselined = true;\n }\n return;\n }\n\n for (const item of items) {\n const key = this.toastKey(item);\n if (this.toastedKeys.has(key)) {\n continue;\n }\n this.markToasted(key);\n void this.showToastForInboxItem(item);\n }\n },\n { injector: this.injector },\n );\n }\n\n //#endregion\n\n //#region ----- Toast -----\n\n private async showToastForInboxItem(item: AXPInAppInboxItem): Promise<void> {\n const action = item.actions?.[0];\n const actionTitle = action?.title\n ? await this.translationService.translateAsync(action.title)\n : await this.translationService.translateAsync(\n '@report-management:report-generation.notifications.actions.open-viewer',\n );\n\n const toastActions = action?.command?.name\n ? [\n {\n text: actionTitle,\n color: 'primary' as const,\n onClick: () => this.executeInboxAction(item, action),\n },\n ]\n : undefined;\n\n await this.userNotificationService.notify({\n correlationId: item.correlationId?.trim() || item.id,\n title: await this.resolveText(item.title),\n body: await this.resolveText(item.body),\n icon: item.iconClass ?? this.resolveIcon(item),\n delivery: {\n toast: {\n color: this.resolveToastColor(item),\n location: 'bottom-center',\n closeButton: true,\n timeOut: 8_000,\n timeOutProgress: true,\n showActions: !!toastActions?.length,\n },\n },\n toastActions,\n });\n }\n\n private async executeInboxAction(\n item: AXPInAppInboxItem,\n action: NonNullable<AXPInAppInboxItem['actions']>[number],\n ): Promise<void> {\n if (!action.command?.name) {\n return;\n }\n await this.commandService.execute(action.command.name, action.command.options ?? {});\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private readReportGenerationItems(): AXPInAppInboxItem[] {\n const userId = this.sessionService.user?.id?.trim();\n return (this.inboxConnector?.inboxList() ?? []).filter((item) => {\n if (item.definitionKey !== REPORT_GENERATION_NOTIFICATION_DEFINITION_KEY) {\n return false;\n }\n const recipientUserId = item.recipientUserId?.trim();\n return !recipientUserId || recipientUserId === userId;\n });\n }\n\n private toastKey(item: AXPInAppInboxItem): string {\n return item.correlationId?.trim() || item.id;\n }\n\n private bindSessionUser(userId: string | null): void {\n if (userId === this.boundUserId) {\n return;\n }\n this.boundUserId = userId;\n this.inboxBaselined = false;\n this.toastedKeys.clear();\n if (userId) {\n this.loadPersistedToastedKeys(userId);\n }\n }\n\n private markToasted(key: string): void {\n const normalized = key.trim();\n if (!normalized) {\n return;\n }\n this.toastedKeys.add(normalized);\n this.persistToastedKeys();\n }\n\n private toastedStorageKey(userId: string): string {\n return `${TOASTED_KEYS_STORAGE}:${userId}`;\n }\n\n private loadPersistedToastedKeys(userId: string): void {\n try {\n const raw = sessionStorage.getItem(this.toastedStorageKey(userId));\n if (!raw) {\n return;\n }\n const parsed = JSON.parse(raw) as unknown;\n if (!Array.isArray(parsed)) {\n return;\n }\n for (const entry of parsed) {\n if (typeof entry === 'string' && entry.trim()) {\n this.toastedKeys.add(entry.trim());\n }\n }\n } catch {\n // Ignore corrupt session storage.\n }\n }\n\n private persistToastedKeys(): void {\n const userId = this.boundUserId?.trim();\n if (!userId) {\n return;\n }\n try {\n sessionStorage.setItem(this.toastedStorageKey(userId), JSON.stringify([...this.toastedKeys]));\n } catch {\n // Ignore quota / privacy errors.\n }\n }\n\n private async resolveText(value: string): Promise<string> {\n const text = value?.trim();\n if (!text) {\n return '';\n }\n if (text.startsWith('@')) {\n return this.translationService.translateAsync(text);\n }\n return text;\n }\n\n private resolveToastColor(item: AXPInAppInboxItem): 'success' | 'danger' | 'warning' {\n switch (item.priority) {\n case 'Danger':\n return 'danger';\n case 'Warning':\n return 'warning';\n default:\n return 'success';\n }\n }\n\n private resolveIcon(item: AXPInAppInboxItem): string {\n if (item.priority === 'Danger') {\n return 'fa-light fa-circle-exclamation';\n }\n if (item.priority === 'Warning') {\n return 'fa-light fa-triangle-exclamation';\n }\n return 'fa-light fa-circle-check';\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { inject, type Provider } from '@angular/core';\nimport {\n AXP_APP_STARTUP_PRIORITY,\n provideAppStartUpTask,\n} from '@acorex-platform/framework-client/core';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport { AXMReportGenerationInboxToastBridgeService } from './report-generation-inbox-toast.bridge.service';\n\n//#endregion\n\n//#region ----- Providers -----\n\nexport function provideReportGenerationInboxToastBridge(): Provider[] {\n return [\n provideAppStartUpTask(() => {\n const bridge = inject(AXMReportGenerationInboxToastBridgeService);\n const inbox = inject(AXPInAppInboxConnectorService, { optional: true });\n return {\n name: 'report-generation-inbox-toast-bridge',\n priority: AXP_APP_STARTUP_PRIORITY.realtimeHandlers,\n run: async () => {\n if (inbox) {\n await inbox.ensureReady();\n await inbox.refresh();\n }\n bridge.start();\n },\n };\n }),\n ];\n}\n\n//#endregion\n","import { AXP_FEATURE_DEFINITION_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';\nimport { AXPDomainModule } from '@acorex-platform/framework-client/domain';\nimport { AXP_ENTITY_ACTION_PLUGIN, provideEntity } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\nimport { inject, Injector, NgModule } from '@angular/core';\nimport { Routes, ROUTES } from '@angular/router';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\nimport { AXP_MENU_PROVIDER, AXP_PROTECTED_ROUTE_GUARDS, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXPRuntimeModule, provideCommandSetups } from '@acorex-platform/framework-client/runtime';\n\n// Entity Modules\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\n\nimport { AXPReportManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMReportManagementSettingProvider } from './settings.provider';\nimport { createEntityReportsPlugin } from './features/entity-reports/entity-reports.plugin';\nimport { AXM_REPORT_GENERATION_BACKGROUND_OPERATION_HANDLERS } from './features/background-operation/report-generation-background-operation.handler';\nimport { provideReportGenerationInboxToastBridge } from './features/report-generation/report-generation-inbox-toast.providers';\n\nfunction routesFacory() {\n let routes: Routes = [\n {\n path: `:app/${RootConfig.module.route}/viewer`,\n canActivate: [...AXP_PROTECTED_ROUTE_GUARDS],\n data: { tab: true, rootLayout: true },\n loadComponent: () => {\n return AXPRootLayoutComponent;\n },\n children: [\n {\n path: ':reportId',\n loadComponent: () =>\n import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then(\n (c) => c.AXPReportViewerPageComponent,\n ),\n data: { reuse: true },\n },\n {\n path: '',\n loadComponent: () =>\n import('./features/report-viewer/report-viewer-page/report-viewer-page.component').then(\n (c) => c.AXPReportViewerPageComponent,\n ),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [\n AXPDomainModule,\n AXPRuntimeModule,\n // Entity Modules\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n provideEntity([RootConfig.entities.report.fullName, RootConfig.entities.category.fullName]),\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPReportManagementFeatureDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMReportManagementSettingProvider,\n multi: true,\n },\n ...AXM_REPORT_GENERATION_BACKGROUND_OPERATION_HANDLERS,\n ...provideReportGenerationInboxToastBridge(),\n provideCommandSetups([\n {\n key: 'ReportManagement.Report:OpenInPopup',\n command: () =>\n import('./commands/open-report-in-popup.command').then((c) => c.AXPOpenReportInPopupCommand),\n },\n {\n key: 'ReportManagement.Report:OpenViewer',\n command: () =>\n import('./commands/open-report-viewer.command').then((c) => c.AXPOpenReportViewerCommand),\n },\n ]),\n {\n provide: AXP_ENTITY_ACTION_PLUGIN,\n multi: true,\n useFactory: () => createEntityReportsPlugin(inject(Injector)),\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/entity-reports/entity-reports-page-component.provider').then(\n (m) => m.AXMEntityReportsPageComponentProvider,\n ),\n ),\n ],\n})\nexport class AXMReportManagementModule { }\n","import { AXPQuerySort } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- User Settings (per report + layout) ----\n\nexport interface AXPReportTableColumnUserState {\n field: string;\n width?: number;\n}\n\nexport interface AXPReportTableLayoutUserState {\n columns?: AXPReportTableColumnUserState[];\n sorts?: AXPQuerySort[];\n pageSize?: number;\n}\n\nexport interface AXPReportViewerUserSettings {\n activeLayoutId?: string;\n layouts?: Record<string, { table?: AXPReportTableLayoutUserState }>;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport { resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n AXPReportDefinition,\n AXPReportLayoutDefinition,\n AXPReportLayoutType,\n AXPReportLayoutAction,\n} from '@acorex-platform/module-report-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-report-management-client/contracts';\nimport {\n extractEntityBindings,\n type AXPEntityBoundReport,\n} from '../features/entity-reports/entity-reports.util';\n\n//#endregion\n\n/**\n * Report Viewer Service\n *\n * Handles report definition retrieval, caching, and layout actions.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPReportViewerService {\n //#region ---- Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly reportDefinitionService = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.report.name)\n .data();\n\n //#endregion\n\n //#region ---- Cache Storage ----\n\n /** Cache for individual report definitions by id */\n private definitionsById = new Map<string, AXPReportDefinition>();\n\n /** Pending API requests to prevent duplicate calls */\n private pendingReportRequests = new Map<string, Promise<AXPReportDefinition | undefined>>();\n\n //#endregion\n\n //#region ---- Public API: Report Definitions ----\n\n /**\n * Reports bound to a host entity type via `entities[].entity`.\n * Falls back to an in-memory filter when the nested-array query returns nothing\n * (or is unsupported by the current query backend).\n */\n async getReportsByEntityType(entityType: string): Promise<AXPEntityBoundReport[]> {\n if (!entityType?.trim()) {\n return [];\n }\n\n let items: AXPReportDefinition[] = [];\n try {\n const result = await this.reportDefinitionService.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n {\n field: 'entities.entity',\n operator: { type: 'equal' },\n value: entityType,\n },\n ],\n },\n });\n items = (result.items ?? []) as AXPReportDefinition[];\n } catch {\n items = [];\n }\n\n if (items.length === 0) {\n try {\n const fallback = await this.reportDefinitionService.query({\n skip: 0,\n take: 1000,\n });\n items = ((fallback.items ?? []) as AXPReportDefinition[]).filter((report) =>\n (report.entities ?? []).some((binding) => binding?.entity === entityType),\n );\n } catch {\n items = [];\n }\n }\n\n const bound: AXPEntityBoundReport[] = [];\n for (const report of items) {\n this.definitionsById.set(report.id, report);\n for (const binding of extractEntityBindings(report, entityType)) {\n bound.push({ report, binding });\n }\n }\n\n return bound.sort(\n (a, b) =>\n (a.binding.order ?? 0) - (b.binding.order ?? 0) ||\n resolveMultiLanguageString(a.report.title, 'en-US').localeCompare(\n resolveMultiLanguageString(b.report.title, 'en-US'),\n ),\n );\n }\n\n /**\n * Get single report definition by ID with O(1) lookup\n */\n async getReportById(id: string): Promise<AXPReportDefinition | undefined> {\n if (this.definitionsById.has(id)) {\n return this.definitionsById.get(id);\n }\n\n if (this.pendingReportRequests.has(id)) {\n return this.pendingReportRequests.get(id)!;\n }\n\n const requestPromise = this.loadReport(id);\n this.pendingReportRequests.set(id, requestPromise);\n\n return requestPromise;\n }\n\n //#endregion\n\n //#region ---- Public API: Layout Actions ----\n\n /**\n * Get general actions list for a layout type.\n * Override in connectivity layer (mock/API) to provide general actions.\n */\n getGeneralActionsList(layoutType: AXPReportLayoutType): AXPReportLayoutAction[] {\n return [];\n }\n\n /**\n * Get merged actions for a layout definition.\n * Combines general actions with layout-specific actions.\n */\n getMergedActions(layoutDefinition: AXPReportLayoutDefinition): AXPReportLayoutAction[] {\n const generalActions = this.getGeneralActionsList(layoutDefinition.layout.type);\n const customActions = layoutDefinition.actions || [];\n\n const customActionsMap = new Map<string, AXPReportLayoutAction>();\n customActions.forEach((action) => {\n if (action.name) {\n customActionsMap.set(action.name, action);\n }\n });\n\n const merged: AXPReportLayoutAction[] = [];\n const usedNames = new Set<string>();\n\n generalActions.forEach((action) => {\n if (action.name && customActionsMap.has(action.name)) {\n merged.push(customActionsMap.get(action.name)!);\n usedNames.add(action.name);\n } else {\n merged.push(action);\n if (action.name) {\n usedNames.add(action.name);\n }\n }\n });\n\n customActions.forEach((action) => {\n if (action.name && !usedNames.has(action.name)) {\n merged.push(action);\n usedNames.add(action.name);\n } else if (!action.name) {\n merged.push(action);\n }\n });\n\n return merged;\n }\n\n getPrimaryActions(layoutDefinition: AXPReportLayoutDefinition): AXPReportLayoutAction[] {\n return this.getMergedActions(layoutDefinition).filter((action) => action.priority === 'primary');\n }\n\n getSecondaryActions(layoutDefinition: AXPReportLayoutDefinition): AXPReportLayoutAction[] {\n return this.getMergedActions(layoutDefinition).filter((action) => action.priority === 'secondary');\n }\n\n //#endregion\n\n //#region ---- Private: Data Loading ----\n\n /**\n * Load single report from entity service and cache result.\n * Can be overridden in extended services (e.g., API layer).\n */\n protected async loadReport(id: string): Promise<AXPReportDefinition | undefined> {\n try {\n const result = (await this.reportDefinitionService.byKey(id)) as AXPReportDefinition | undefined;\n\n if (result) {\n this.definitionsById.set(id, result);\n return result;\n }\n\n return undefined;\n } finally {\n this.pendingReportRequests.delete(id);\n }\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n protected isReportCached(reportId: string): boolean {\n return this.definitionsById.has(reportId) || this.pendingReportRequests.has(reportId);\n }\n\n clearAllCache(): void {\n this.definitionsById.clear();\n this.pendingReportRequests.clear();\n }\n\n clearReportsCache(): void {\n this.definitionsById.clear();\n this.pendingReportRequests.clear();\n }\n\n //#endregion\n\n //#region ---- Action Handlers (Override in Connectivity Layer) ----\n\n async executeAction(commandName: string, options?: Record<string, unknown>): Promise<void> {\n console.log(`Execute action: ${commandName} - should be implemented in connectivity layer`, options);\n }\n\n //#endregion\n}\n","import {\n AXPContextData,\n AXPFilterClause,\n type AXPRuntimeQueryResult,\n runtimeQueryCollectionData,\n runtimeQueryObjectData,\n runtimeQueryPayloadData,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXBarChartValue } from '@acorex/charts/bar-chart';\nimport type { AXDonutChartValue } from '@acorex/charts/donut-chart';\nimport type { AXLineChartValue } from '@acorex/charts/line-chart';\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { isReportDateRangeObject } from './report-parameter.util';\nimport type { AXPChartDataMapping } from '@acorex-platform/module-report-management-client/contracts';\n\nexport function AXPieChartReportMapper(data: Record<string, number>): AXDonutChartValue {\n return Object.entries(data)\n .map(([key, value]) => ({\n id: key,\n label: key,\n value: Number(value),\n }))\n .filter((item) => Number.isFinite(item.value) && item.value > 0);\n}\n\nexport function AXBarChartReportMapper(data: Record<string, number>): AXBarChartValue {\n return Object.entries(data)\n .map(([key, value]) => ({\n id: key,\n label: key,\n value: Number(value),\n }))\n .filter((item) => Number.isFinite(item.value));\n}\n\nexport function AXLineChartReportMapper(data: Record<string, number>): AXLineChartValue {\n const entries = Object.entries(data);\n if (entries.length === 0) {\n return [];\n }\n const dataPoints = entries.map(([key, value]) => ({\n x: key,\n y: value,\n }));\n\n return [\n {\n id: 'series-1',\n label: 'Data Series',\n tooltipLabel: 'Countries Info',\n lineColor: '#d81159',\n fillColor: '#d8115920',\n data: dataPoints,\n },\n ];\n}\n\n//#region ---- Helpers ----\n\n/**\n * Determines whether a filter value should be treated as empty.\n * This handles deep objects, arrays, and primitives so that\n * values like { from: null, to: null } are considered empty.\n */\nfunction isEmptyFilterValue(value: unknown): boolean {\n if (value === null || value === undefined || value === '') {\n return true;\n }\n\n if (Array.isArray(value)) {\n return value.length === 0 || value.every((item) => isEmptyFilterValue(item));\n }\n\n if (typeof value === 'object') {\n const entries = Object.entries(value as Record<string, unknown>);\n if (entries.length === 0) {\n return true;\n }\n\n // Consider object empty if all nested values are empty\n return entries.every(([, v]) => isEmptyFilterValue(v));\n }\n\n return false;\n}\n\n//#endregion\n\n/**\n * Converts AXPContextData (filter context) to AXPFilterClause format\n *\n * Input format:\n * {\n * \"fieldName\": {\n * \"operation\": { \"type\": \"between\" },\n * \"value\": { \"from\": \"...\", \"to\": \"...\" }\n * }\n * }\n *\n * Output format:\n * {\n * logic: 'and',\n * filters: [\n * {\n * field: 'fieldName',\n * operator: { type: 'between' },\n * value: { from: \"...\", to: \"...\" }\n * }\n * ]\n * }\n */\nexport function convertContextDataToFilterClause(context: AXPContextData): AXPFilterClause {\n const filters: AXDataSourceFilterOption[] = [];\n\n // Iterate through all keys in context\n for (const [fieldName, fieldData] of Object.entries(context)) {\n if (fieldName.endsWith('EditorObj') || fieldName.startsWith('__')) {\n continue;\n }\n\n // Drill-down and URL shortcuts may pass plain parameter values (e.g. { brand: 'id' })\n if (fieldData === null || fieldData === undefined || typeof fieldData !== 'object' || Array.isArray(fieldData)) {\n if (!isEmptyFilterValue(fieldData)) {\n filters.push({\n field: fieldName,\n operator: {\n type: Array.isArray(fieldData) ? 'in' : 'equal',\n },\n value: fieldData,\n });\n }\n continue;\n }\n\n // Plain `{ from, to }` / `{ start, end }` objects (e.g. dateRange from OpenInPopup)\n if (isReportDateRangeObject(fieldData) && !('operation' in fieldData)) {\n // Date-range widgets use `between`; CDK operator union is narrower than runtime.\n filters.push({\n field: fieldName,\n operator: { type: 'between' as never },\n value: {\n from: String(fieldData.from ?? fieldData.start),\n to: String(fieldData.to ?? fieldData.end),\n },\n });\n continue;\n }\n\n // Skip structured filter objects without operation metadata\n if (!('operation' in fieldData)) {\n continue;\n }\n\n const operation = (fieldData as any).operation;\n const value = (fieldData as any).value;\n\n // Skip if operation type is missing\n if (!operation || !operation.type) {\n continue;\n }\n\n // Skip if value is effectively empty (null/undefined/empty string,\n // empty object/array, or deep object where all nested values are empty)\n if (isEmptyFilterValue(value)) {\n continue;\n }\n\n // Create filter clause\n const filter: AXDataSourceFilterOption = {\n field: fieldName,\n operator: {\n type: operation.type,\n },\n value: value,\n };\n\n filters.push(filter);\n }\n\n // Return filter clause with AND logic\n if (filters.length === 0) {\n return {\n logic: 'and',\n filters: [],\n };\n }\n\n return {\n logic: 'and',\n filters: filters,\n };\n}\n\n//#region ----- Query payload helpers -----\n\nexport type AXPReportPdfSource = {\n url?: string;\n base64?: string;\n blob?: Blob;\n filename?: string;\n};\n\nfunction asPdfSource(record: Record<string, unknown> | undefined): AXPReportPdfSource | null {\n if (!record) {\n return null;\n }\n const url = typeof record['url'] === 'string' ? record['url'] : undefined;\n const base64 = typeof record['base64'] === 'string' ? record['base64'] : undefined;\n const blob = record['blob'] instanceof Blob ? record['blob'] : undefined;\n const filename = typeof record['filename'] === 'string' ? record['filename'] : undefined;\n if (url == null && base64 == null && blob == null) {\n return null;\n }\n return { url, base64, blob, filename };\n}\n\nexport function queryResultToPdfSource(\n queryResult: AXPRuntimeQueryResult<unknown> | null | undefined,\n): AXPReportPdfSource | null {\n if (!queryResult?.success) {\n return null;\n }\n\n const fromObject = asPdfSource(\n (runtimeQueryPayloadData(queryResult) ?? runtimeQueryObjectData(queryResult)) as\n | Record<string, unknown>\n | undefined,\n );\n if (fromObject) {\n return fromObject;\n }\n\n const page = runtimeQueryCollectionData(queryResult);\n return asPdfSource(page?.items?.[0] as Record<string, unknown> | undefined);\n}\n\nexport function queryResultToChartSeries(\n queryResult: AXPRuntimeQueryResult<unknown> | null | undefined,\n mapping?: AXPChartDataMapping | null,\n): Record<string, number> {\n if (!queryResult?.success) {\n return {};\n }\n\n const objectData = runtimeQueryObjectData(queryResult) as Record<string, unknown> | undefined;\n if (objectData && !('items' in objectData)) {\n const series: Record<string, number> = {};\n for (const [key, value] of Object.entries(objectData)) {\n const n = Number(value);\n if (Number.isFinite(n)) {\n series[key] = n;\n }\n }\n if (Object.keys(series).length > 0) {\n return series;\n }\n }\n\n const page = runtimeQueryCollectionData(queryResult);\n const rows = (page?.items ?? []) as Record<string, unknown>[];\n if (rows.length === 0) {\n return {};\n }\n\n const firstRow = rows[0] ?? {};\n const keys = Object.keys(firstRow);\n const xField = mapping?.xField ?? keys[0] ?? 'x';\n const yFieldsRaw = mapping?.yFields;\n const yField = Array.isArray(yFieldsRaw)\n ? yFieldsRaw[0]\n : yFieldsRaw\n ? String(yFieldsRaw)\n : (keys[1] ?? 'value');\n\n const chartData: Record<string, number> = {};\n for (const row of rows) {\n const key = String(row[xField] ?? '');\n if (!key) {\n continue;\n }\n const value = Number(row[yField] ?? 0);\n if (Number.isFinite(value)) {\n chartData[key] = value;\n }\n }\n return chartData;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPExpressionEvaluatorService } from '@acorex-platform/framework-client/core';\nimport {\n AXPExpressionEvaluatorScope,\n resolveMultiLanguageString,\n type AXPMultiLanguageString,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPInAppInboxConnectorService } from '@acorex-platform/module-communication-management-client';\nimport { buildReportGenerationNotificationCorrelationId } from '@acorex-platform/module-report-management-client/contracts';\nimport { get, isString } from 'lodash-es';\nimport { inject, Injectable } from '@angular/core';\nimport { resolveReportParameterValues } from '../reports/report-parameter.util';\nimport { AXPReportViewerService } from '../reports';\n\n//#endregion\n\n//#region ----- Command Input -----\n\nexport interface AXPOpenReportInPopupCommandInput {\n reportId?: string;\n layoutId?: string;\n runId?: string;\n title?: AXPMultiLanguageString;\n parameters?: Record<string, unknown>;\n hideColumnFields?: string[];\n data?: Record<string, unknown>;\n options?: Partial<AXPOpenReportInPopupCommandInput>;\n}\n\n//#endregion\n\n//#region ----- Command -----\n\n/** Opens a report in a results-only popup. Pass `runId` to show a frozen generation run. */\n@Injectable({ providedIn: 'root' })\nexport class AXPOpenReportInPopupCommand\n implements AXPCommand<AXPOpenReportInPopupCommandInput | Record<string, unknown>, void>\n{\n //#region ----- Services & Dependencies -----\n\n private readonly popupService = inject(AXPopupService);\n private readonly expressionEvaluator = inject(AXPExpressionEvaluatorService);\n private readonly translate = inject(AXTranslationService);\n private readonly reportViewerService = inject(AXPReportViewerService);\n private readonly inboxConnector = inject(AXPInAppInboxConnectorService, { optional: true });\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(\n input: AXPOpenReportInPopupCommandInput | Record<string, unknown>,\n ): AXPCommandExecuteResultPromise<void> {\n const rowData = this.resolveRowData(input);\n const options = await this.resolveOptions(input, rowData);\n\n if (!options.reportId) {\n return {\n success: false,\n message: {\n text: await this.translate.translateAsync(\n '@report-management:report-viewer.messages.error.invalid-popup-target',\n ),\n },\n };\n }\n\n const runId = typeof options.runId === 'string' ? options.runId.trim() : '';\n if (runId) {\n await this.dismissReportGenerationInboxNotification(runId);\n }\n const popupTitle = await this.resolvePopupTitle(options, rowData, runId);\n const parameters = resolveReportParameterValues(options.parameters);\n\n const comp = (\n await import('../features/report-viewer/report-popup-viewer/report-popup-viewer.component')\n ).AXPReportPopupViewerComponent;\n\n this.popupService.open(comp, {\n title: popupTitle,\n size: 'lg',\n maximizable: true,\n data: {\n reportId: options.reportId,\n layoutId: options.layoutId,\n runId,\n parameters,\n hideColumnFields: options.hideColumnFields ?? [],\n },\n });\n\n return {\n success: true,\n kind: 'object',\n data: undefined,\n metadata: { refresh: false },\n };\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private resolveRowData(\n input: AXPOpenReportInPopupCommandInput | Record<string, unknown>,\n ): Record<string, unknown> {\n const ctx = input as AXPOpenReportInPopupCommandInput;\n if (ctx?.data && typeof ctx.data === 'object') {\n return ctx.data as Record<string, unknown>;\n }\n if (\n (input as Record<string, unknown>)['data'] &&\n typeof (input as Record<string, unknown>)['data'] === 'object'\n ) {\n return (input as Record<string, unknown>)['data'] as Record<string, unknown>;\n }\n return input as Record<string, unknown>;\n }\n\n private async resolveOptions(\n input: AXPOpenReportInPopupCommandInput | Record<string, unknown>,\n rowData: Record<string, unknown>,\n ): Promise<AXPOpenReportInPopupCommandInput> {\n const typedInput = input as AXPOpenReportInPopupCommandInput;\n const rawOptions = {\n reportId: typedInput.reportId,\n layoutId: typedInput.layoutId,\n runId: typedInput.runId,\n title: typedInput.title,\n parameters: typedInput.parameters,\n hideColumnFields: typedInput.hideColumnFields,\n ...(typedInput.options ?? {}),\n };\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n return (await this.expressionEvaluator.evaluate(rawOptions, scope)) as AXPOpenReportInPopupCommandInput;\n }\n\n private async resolvePopupTitle(\n options: AXPOpenReportInPopupCommandInput,\n rowData: Record<string, unknown>,\n runId: string,\n ): Promise<string> {\n let baseTitle = await this.resolveExplicitPopupTitle(options.title, rowData);\n\n if (!baseTitle && options.reportId) {\n const report = await this.reportViewerService.getReportById(options.reportId);\n if (report?.title) {\n baseTitle =\n this.translate.resolve(report.title) ||\n resolveMultiLanguageString(report.title, this.translate.getActiveLang() || 'en-US') ||\n '';\n }\n }\n\n if (!baseTitle) {\n baseTitle = await this.translate.translateAsync(\n '@report-management:report-viewer.components.report-popup-viewer.title',\n );\n }\n\n if (!runId) {\n return baseTitle;\n }\n\n return this.translate.translateAsync(\n '@report-management:report-viewer.components.report-popup-viewer.generated-title',\n { params: { title: baseTitle } },\n );\n }\n\n private async resolveExplicitPopupTitle(\n title: AXPMultiLanguageString | undefined,\n rowData: Record<string, unknown>,\n ): Promise<string> {\n if (title && typeof title === 'object') {\n const resolved = this.translate.resolve(title);\n if (resolved) {\n return resolved;\n }\n }\n\n if (!isString(title) || !title.trim()) {\n return '';\n }\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n const evaluated = await this.expressionEvaluator.evaluate(title, scope);\n return isString(evaluated) ? evaluated : title;\n }\n\n private async dismissReportGenerationInboxNotification(runId: string): Promise<void> {\n if (!this.inboxConnector) {\n return;\n }\n try {\n await this.inboxConnector.dismissByCorrelationId(\n buildReportGenerationNotificationCorrelationId(runId),\n );\n } catch {\n // Best-effort — opening the report should still proceed.\n }\n }\n\n //#endregion\n}\n\n//#endregion\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-D5dCG62j.mjs';
3
+ import { E as ENTITY_REPORTS_PAGE_COMPONENT_KEY } from './acorex-platform-module-report-management-client-acorex-platform-module-report-management-client-DhTbq8K0.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-CHBZbbaH.mjs').then((c) => c.AXMEntityReportsPageComponent),
12
+ loader: () => import('./acorex-platform-module-report-management-client-entity-reports-page.component-1pkBoTlX.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-0eSOzb0y.mjs.map
24
+ //# sourceMappingURL=acorex-platform-module-report-management-client-entity-reports-page-component.provider-DaX9owYf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-report-management-client-entity-reports-page-component.provider-0eSOzb0y.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;;;"}
1
+ {"version":3,"file":"acorex-platform-module-report-management-client-entity-reports-page-component.provider-DaX9owYf.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;;;"}