@acorex/modules 21.0.0-next.31 → 21.0.0-next.34

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 (65) hide show
  1. package/fesm2022/{acorex-modules-ai-management-acorex-modules-ai-management-B6lnG21F.mjs → acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs} +10 -11
  2. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs.map +1 -0
  3. package/fesm2022/{acorex-modules-ai-management-agent.entity-C2APPc7g.mjs → acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs} +2 -2
  4. package/fesm2022/{acorex-modules-ai-management-agent.entity-C2APPc7g.mjs.map → acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D_54-MqC.mjs → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D_54-MqC.mjs.map → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs → acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs} +6 -4
  8. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs.map +1 -0
  9. package/fesm2022/{acorex-modules-ai-management-assist.entity-D7sIFWTx.mjs → acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-ai-management-assist.entity-D7sIFWTx.mjs.map → acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-ai-management-index-DoOTRMvM.mjs → acorex-modules-ai-management-index-KX3TVRXr.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-ai-management-index-DoOTRMvM.mjs.map → acorex-modules-ai-management-index-KX3TVRXr.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-ai-management-model.entity-xhfG1tFZ.mjs → acorex-modules-ai-management-model.entity-BeuDUahR.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-ai-management-model.entity-xhfG1tFZ.mjs.map → acorex-modules-ai-management-model.entity-BeuDUahR.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-Bot8Ctq1.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-Bot8Ctq1.mjs.map → acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs.map} +1 -1
  17. package/fesm2022/acorex-modules-ai-management.mjs +1 -1
  18. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-D1DhOSYU.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs} +25 -25
  19. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-D1DhOSYU.mjs.map → acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BwwarDP0.mjs → acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs} +2 -2
  21. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BwwarDP0.mjs.map → acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs.map} +1 -1
  22. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQNn4Ryb.mjs → acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQNn4Ryb.mjs.map → acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-AptlLpWh.mjs → acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs} +2 -2
  25. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-AptlLpWh.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs.map} +1 -1
  26. package/fesm2022/{acorex-modules-assessment-management-index-BBzx9W5u.mjs → acorex-modules-assessment-management-index-B2SncZAW.mjs} +6 -6
  27. package/fesm2022/acorex-modules-assessment-management-index-B2SncZAW.mjs.map +1 -0
  28. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-BMoPn_op.mjs → acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs} +2 -2
  29. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-BMoPn_op.mjs.map → acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BI7JJIbZ.mjs → acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs} +2 -2
  31. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BI7JJIbZ.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs.map} +1 -1
  32. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BfWuSVG9.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs} +2 -2
  33. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BfWuSVG9.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CcDAcPJJ.mjs → acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CcDAcPJJ.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-DC7xwETF.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-DC7xwETF.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DF7F-quh.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DF7F-quh.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-zybar1sK.mjs → acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs} +3 -3
  41. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-zybar1sK.mjs.map → acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-DqJ-_k-4.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-DqJ-_k-4.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-IHxXETJQ.mjs → acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-IHxXETJQ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs.map} +1 -1
  46. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  47. package/fesm2022/acorex-modules-dashboard-management.mjs +4366 -3497
  48. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  49. package/fesm2022/acorex-modules-data-management.mjs +3 -2
  50. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  51. package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs +784 -0
  52. package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs.map +1 -0
  53. package/fesm2022/acorex-modules-organization-management.mjs +3 -9
  54. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  55. package/fesm2022/acorex-modules-workflow-management.mjs +488 -105
  56. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  57. package/package.json +2 -2
  58. package/types/acorex-modules-dashboard-management.d.ts +397 -218
  59. package/types/acorex-modules-organization-management.d.ts +3 -12
  60. package/types/acorex-modules-workflow-management.d.ts +27 -0
  61. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-B6lnG21F.mjs.map +0 -1
  62. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs.map +0 -1
  63. package/fesm2022/acorex-modules-assessment-management-index-BBzx9W5u.mjs.map +0 -1
  64. package/fesm2022/acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs +0 -638
  65. package/fesm2022/acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-modules-data-management.mjs","sources":["../../../../libs/modules/data-management/src/lib/const.ts","../../../../libs/modules/data-management/src/lib/manifest.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget.config.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-edit.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-view.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-column.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-filter.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-print.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/query-builder-widget.config.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/condition/query-builder-condition.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/condition/query-builder-condition.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/where/where-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/where/where-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/columns/columns-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/columns/columns-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/sort/sort-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/sort/sort-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/group-by/group-by-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/group-by/group-by-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-function.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-category.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-function.service.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-functions.registry.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/default-aggregate-function.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/default-aggregate-category.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/database-type.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/database-type/database-type.service.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/raw-query/raw-query-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/raw-query/raw-query-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/output/output-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/output/output-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/query-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/query-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-edit/query-builder-widget-edit.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-view/query-builder-widget-view.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-column/query-builder-widget-column.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-designer/query-builder-widget-designer.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/query-builder.types.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/database-type/default-database-type.provider.ts","../../../../libs/modules/data-management/src/lib/widget-definition.provider.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/config.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/metadata-evaluator-scope.provider.ts","../../../../libs/modules/data-management/src/lib/features/shared/data-source-evaluator-scope.provider.ts","../../../../libs/modules/data-management/src/lib/features.keys.ts","../../../../libs/modules/data-management/src/lib/feature-definition.provider.ts","../../../../libs/modules/data-management/src/lib/permission.keys.ts","../../../../libs/modules/data-management/src/lib/permission-definition.provider.ts","../../../../libs/modules/data-management/src/lib/menu.keys.ts","../../../../libs/modules/data-management/src/lib/menu.provider.ts","../../../../libs/modules/data-management/src/lib/entity.provider.ts","../../../../libs/modules/data-management/src/lib/features/shared/choice-options.datasource.ts","../../../../libs/modules/data-management/src/lib/features/shared/datasources-list.datasource.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.service.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.entity.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.types.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-def.widget.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.service.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.types.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.entity.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/filter-def.widget.ts","../../../../libs/modules/data-management/src/lib/entities/meta-data-definition/meta-data-definition.entity.ts","../../../../libs/modules/data-management/src/lib/entities/meta-data-definition/meta-data-definition.service.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.entity.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.module.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.service.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.types.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.module.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.module.ts","../../../../libs/modules/data-management/src/lib/entities/meta-data-definition/meta-data-definition.module.ts","../../../../libs/modules/data-management/src/lib/entities/index.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/meta-data-form.config.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/meta-data-form-edit.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/show-meta-data-form-popup.command.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder.config.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder.types.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-mapping.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-groups.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-groups.component.html","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-edit.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-edit.component.html","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder.plugin.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-record.service.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-view.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/show-meta-data-builder-popup.command.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/widget-definition.provider.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/meta-data-form.plugin.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data.module.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/components/meta-data-configurator/meta-data-configurator.component.ts","../../../../libs/modules/data-management/src/lib/features/tags/tag-system.provider.ts","../../../../libs/modules/data-management/src/lib/features/tags/tags.plugin.ts","../../../../libs/modules/data-management/src/lib/features/tags/tag-user.provider.ts","../../../../libs/modules/data-management/src/lib/features/tags/tags.module.ts","../../../../libs/modules/data-management/src/lib/data-management.module.ts","../../../../libs/modules/data-management/src/acorex-modules-data-management.ts"],"sourcesContent":["const config = {\n i18n: 'data-management',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'data-management',\n name: 'DataManagement',\n title: '@data-management:module.title',\n icon: 'fa-regular fa-database',\n },\n entities: {\n query: {\n name: 'Query',\n title: '@data-management:queries.entities.query.title',\n titlePlural: '@data-management:queries.entities.query.plural',\n icon: 'fa-regular fa-nfc-magnifying-glass',\n },\n queryCategory: {\n name: 'QueryCategory',\n title: '@data-management:queries.terms.category',\n titlePlural: '@data-management:queries.terms.categories',\n icon: 'fa-regular fa-layer-group',\n },\n dataSource: {\n name: 'DataSource',\n title: '@data-management:data-sources.entities.data-source.title',\n titlePlural: '@data-management:data-sources.entities.data-source.plural',\n icon: 'fa-regular fa-database',\n },\n dataSourceCategory: {\n name: 'DataSourceCategory',\n title: '@data-management:data-sources.terms.category',\n titlePlural: '@data-management:data-sources.terms.categories',\n icon: 'fa-regular fa-layer-group',\n },\n metaDataDefinition: {\n name: 'MetaDataDefinition',\n title: '@data-management:metadata-definitions.entities.metadata-definition.title',\n titlePlural: '@data-management:metadata-definitions.entities.metadata-definition.plural',\n icon: 'fa-light fa-server',\n },\n tag: {\n name: 'Tag',\n source: 'DataManagement.Tag',\n title: '@general:terms.common.tag',\n icon: 'fa-light fa-tags',\n },\n equipmentCategory: {\n name: 'EquipmentCategory',\n title: '@data-management:equipments.entities.equipment-category.title',\n titlePlural: '@data-management:equipments.entities.equipment-category.plural',\n icon: 'fa-light fa-folder-tree',\n },\n equipment: {\n name: 'Equipment',\n source: 'DataManagement.Equipment',\n title: '@data-management:equipments.entities.equipment.title',\n titlePlural: '@data-management:equipments.entities.equipment.plural',\n icon: 'fa-light fa-plug',\n },\n },\n};\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './const';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Data Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const DataManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n required : true,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport interface AXMColumnFilterSelectorWidgetConfigType {\n columns?: Array<{\n name: string;\n title: string;\n type: string;\n }>;\n}\n\nexport const AXMColumnFilterSelectorWidget: AXPWidgetConfig<AXMColumnFilterSelectorWidgetConfigType> = {\n name: 'column-filter-selector-editor',\n title: 'Column Filter Selector',\n icon: 'fa-light fa-filter',\n description: 'Selects a column and configures its filter value',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n type: 'editor',\n defaultFilterWidgetName: 'string-filter',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./column-filter-selector-widget-view.component').then((c) => c.AXMColumnFilterSelectorWidgetViewComponent),\n },\n edit: {\n component: () => import('./column-filter-selector-widget-edit.component').then((c) => c.AXMColumnFilterSelectorWidgetEditComponent),\n },\n filter: {\n component: () => import('./column-filter-selector-widget-filter.component').then((c) => c.AXMColumnFilterSelectorWidgetFilterComponent),\n },\n column: {\n component: () => import('./column-filter-selector-widget-column.component').then((c) => c.AXMColumnFilterSelectorWidgetColumnComponent),\n },\n print: {\n component: () => import('./column-filter-selector-widget-print.component').then((c) => c.AXMColumnFilterSelectorWidgetPrintComponent),\n },\n designer: {\n component: () => import('./column-filter-selector-widget-edit.component').then((c) => c.AXMColumnFilterSelectorWidgetEditComponent),\n },\n },\n}; ","import { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\n\n\n\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPContextChangeEvent } from '@acorex/platform/core';\n\nexport interface ColumnFilterValue {\n columnName?: string;\n value?: any;\n}\n\n@Component({\n selector: 'axm-column-filter-selector-widget-edit',\n template: `\n <div class=\"ax-flex ax-gap-4 ax-w-full ax-items-center\">\n <axp-widgets-container \n [context]=\"getValue()\"\n (onContextChanged)=\"handleWidgetValueChange($event)\">\n <ax-select-box\n [placeholder]=\"'Select Column'\"\n [dataSource]=\"columnsDataSource()\"\n [valueField]=\"'name'\"\n [textField]=\"'title'\"\n [ngModel]=\"getValue().columnName\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"handleColumnChange($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n\n\n @if (filterWidgetNode()) {\n \n <ng-container \n axp-widget-renderer \n [node]=\"filterWidgetNode()!\" \n [mode]=\"'edit'\">\n </ng-container>\n } \n </axp-widgets-container>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n AXSelectBoxModule,\n AXDecoratorModule,\n AXPWidgetCoreModule\n],\n})\nexport class AXMColumnFilterSelectorWidgetEditComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n\n //#region ---- Properties ----\n\n protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n protected columns = computed(() => this.options()['columns'] as Array<{ name: string; title: string; type: string }> || []);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected columnsDataSource = computed(() => {\n return new AXDataSource({\n load: async () => {\n const items = this.columns();\n return {\n items: items,\n total: items.length,\n };\n },\n pageSize: 100,\n });\n });\n\n protected selectedColumn = computed(() => {\n const columnName = this.getValue()?.columnName;\n if (!columnName) return null;\n return this.columns().find(col => col.name === columnName);\n });\n\n protected filterWidgetNode = computed<AXPWidgetNode | null>(() => {\n const column = this.selectedColumn();\n if (!column) return null;\n\n const widgetType = this.getWidgetTypeForColumn(column.type);\n return {\n type: widgetType,\n defaultValue: this.getValue()?.value,\n path: 'value',\n name: 'value',\n options: {\n placeholder: `Enter ${column.title}`,\n disabled: this.disabled()\n }\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n //Update parent value when selections change\n #effect = effect(() => {\n const columnName = this.getValue()?.columnName;\n const value = this.getValue()?.value;\n\n console.log(columnName, value);\n\n this.setValue({\n columnName: columnName || undefined,\n value: value\n });\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleColumnChange(event: any) {\n this.setValue({\n columnName: event.value,\n value: undefined\n });\n }\n\n protected handleWidgetValueChange(event: AXPContextChangeEvent) {\n this.setValue({\n columnName: this.getValue()?.columnName,\n value: event.data.value\n });\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n protected getWidgetTypeForColumn(columnType: string): string {\n // Map column types to appropriate widget types\n //TODO default value need object \n let type = columnType;\n if (typeof columnType === 'object' && columnType !== null && 'name' in columnType) {\n type = columnType['name'];\n }\n switch (type) {\n case 'text-editor':\n case 'large-text-editor':\n case 'string':\n return 'string-filter';\n\n case 'number-editor':\n case 'number':\n return 'number-filter';\n\n case 'date-time-editor':\n case 'datetime':\n case 'date':\n return 'datetime-filter';\n\n case 'select-editor':\n case 'select':\n return 'select-filter';\n\n case 'checkbox-editor':\n case 'toggle-editor':\n case 'boolean':\n return 'boolean-filter';\n\n case 'color-editor':\n return 'color-filter';\n\n default:\n return 'text-editor'; // Default fallback\n }\n }\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget-edit';\n }\n\n //#endregion\n} ","import { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-view',\n template: `\n <div class=\"__content\">\n @if (currentValue()) {\n <div class=\"__filter-display\">\n <span class=\"__column-name\">{{ currentValue().columnName }}</span>\n <span class=\"__separator\">:</span>\n <span class=\"__filter-value\">{{ displayValue() }}</span>\n </div>\n } @else {\n <axp-state-message icon=\"fa-light fa-filter\" [title]=\"'@data-management:metadata-definitions.components.column-filter-selector.empty-states.no-filter-selected.title'\"\n [description]=\"'@data-management:metadata-definitions.components.column-filter-selector.empty-states.no-filter-selected.description'\">\n </axp-state-message>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPStateMessageComponent],\n})\nexport class AXMColumnFilterSelectorWidgetViewComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n\n //#region ---- Computed Properties ----\n\n protected currentValue = computed(() => this.getValue());\n\n protected displayValue = computed(() => {\n const value = this.currentValue()?.value;\n if (value === null || value === undefined) {\n return '';\n }\n return ` ${value.operation.type} ${value.value}`;\n });\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-column',\n template: `\n @if (currentValue().columnName) {\n <span class=\"__column-filter\">{{ currentValue().columnName }}: {{ displayValue() }}</span>\n } @else {\n <span class=\"__empty\">-</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AXMColumnFilterSelectorWidgetColumnComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n \n //#region ---- Computed Properties ----\n \n protected currentValue = computed(() => this.getValue());\n \n protected displayValue = computed(() => {\n const value = this.currentValue()?.value;\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n if (typeof value === 'string' && value.length > 20) {\n return value.substring(0, 20) + '...';\n }\n return String(value);\n });\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-filter',\n template: `\n <ax-text-box\n [placeholder]=\"'Filter by column name...'\"\n [ngModel]=\"getValue().columnName\"\n (onValueChanged)=\"handleValueChange($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-text-box>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, AXTextBoxModule, AXDecoratorModule],\n})\nexport class AXMColumnFilterSelectorWidgetFilterComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n \n //#region ---- Event Handlers ----\n \n protected handleValueChange(event: any) {\n const currentValue = this.getValue() || {};\n this.setValue({\n ...currentValue,\n columnName: event.value\n });\n }\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-print',\n template: `\n @if (currentValue().columnName) {\n <div class=\"__print-content\">\n <strong>{{ currentValue().columnName }}:</strong> {{ displayValue() }}\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AXMColumnFilterSelectorWidgetPrintComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n \n //#region ---- Computed Properties ----\n \n protected currentValue = computed(() => this.getValue());\n \n protected displayValue = computed(() => {\n const value = this.currentValue()?.value;\n if (value === null || value === undefined) {\n return 'No value';\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n return String(value);\n });\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport const AXPQueryBuilderWidget: AXPWidgetConfig<AXPQueryBuilderWidgetConfigType> = {\n name: 'query-builder-editor',\n title: 'Query Builder',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Visual query builder for creating dynamic queries',\n icon: 'fa-light fa-filter',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n designer: {\n component: () => import('./widget-designer/query-builder-widget-designer.component').then((c) => c.AXPQueryBuilderWidgetDesignerComponent),\n },\n view: {\n component: () => import('./widget-view/query-builder-widget-view.component').then((c) => c.AXPQueryBuilderWidgetViewComponent),\n },\n edit: {\n component: () => import('./widget-edit/query-builder-widget-edit.component').then((c) => c.AXPQueryBuilderWidgetEditComponent),\n },\n print: {\n component: () => import('./widget-view/query-builder-widget-view.component').then((c) => c.AXPQueryBuilderWidgetViewComponent),\n },\n column: {\n component: () => import('./widget-column/query-builder-widget-column.component').then((c) => c.AXPQueryBuilderWidgetColumnComponent),\n },\n filter: {\n component: () => import('./widget-edit/query-builder-widget-edit.component').then((c) => c.AXPQueryBuilderWidgetEditComponent),\n },\n },\n};\n\nexport type AXPQueryBuilderWidgetConfigType = {\n type: 'editor';\n}; ","import { Component, Input, Output, EventEmitter, signal, ChangeDetectionStrategy, OnInit, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXPFilterClause, AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDataSourceOperator, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXLabelModule } from '@acorex/components/label';\n\n//#region ---- Interfaces ----\n\n/**\n * Selected field data emitted when condition changes\n */\nexport type SelectedField = {\n id: string;\n field: string;\n operator: AXDataSourceOperator['type'];\n value: any;\n /**\n * When true, this condition should be filled by user as a parameter (isParametric).\n */\n isParametric: boolean;\n}\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-condition',\n templateUrl: './query-builder-condition.component.html',\n styleUrls: ['./query-builder-condition.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXButtonModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXPWidgetCoreModule,\n AXTranslationModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPQueryBuilderConditionComponent implements OnInit {\n\n //#region ---- Inputs / Outputs ----\n\n @Input() item!: AXPFilterClause;\n @Input() filterDefinitions: AXPFilterDefinition[] = [];\n @Input() onResolveWidget?: (fieldId: string) => string;\n\n @Output() itemChange = new EventEmitter<SelectedField>();\n @Output() removeItem = new EventEmitter<string>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected selectedField = signal<SelectedField | null>(null);\n\n /**\n * Widget node for rendering the default filter widget\n * The type is resolved from filterDefinition using widget registry\n */\n protected filterNode = signal<AXPWidgetNode>({\n name: 'filter',\n path: 'filter',\n type: 'string-filter',\n mode: 'edit',\n options: {}\n });\n\n /**\n * Context data for the filter widget\n * Contains the filter value and operator\n */\n protected context = signal<Record<string, any>>({\n filter: {\n value: undefined,\n operation: {\n type: 'equal'\n }\n }\n });\n\n /**\n * Available filter definitions formatted for select-box\n */\n protected readonly availableFields = computed(() => {\n return this.filterDefinitions.map(def => ({\n value: def.field,\n text: def.title,\n definition: def\n }));\n });\n\n /**\n * Current filter definition for the selected field\n */\n protected readonly currentFilterDefinition = computed(() => {\n const fieldId = this.selectedField()?.field;\n if (!fieldId) return undefined;\n return this.filterDefinitions.find(def => def.field === fieldId);\n });\n\n /**\n * Selected field value for ngModel binding (always returns string)\n */\n protected readonly selectedFieldValue = computed(() => {\n return this.selectedField()?.field || '';\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n // Initialize from item\n this.selectedField.set({\n field: this.item?.field ?? '',\n operator: this.item?.operator?.type ?? 'equal',\n value: this.item?.value ?? undefined,\n id: this.item?.id ?? '',\n isParametric: (this.item as any)?.isParametric ?? false,\n });\n\n // Initialize filter widget node\n this.updateFilterWidgetNode();\n\n // Initialize context\n this.updateContext();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Update filter widget node based on selected field\n * Resolves the default filter widget type from filterDefinition\n */\n private updateFilterWidgetNode(): void {\n const fieldId = this.selectedField()?.field;\n if (!fieldId) {\n this.filterNode.set({\n name: 'filter',\n path: 'filter',\n type: 'string-filter',\n mode: 'edit',\n options: {}\n });\n return;\n }\n\n const filterDef = this.currentFilterDefinition();\n if (!filterDef) return;\n\n // Resolve widget type using the provided resolver or fallback\n let widgetType = 'string-filter';\n if (this.onResolveWidget) {\n widgetType = this.onResolveWidget(fieldId);\n } else if (filterDef.widget?.type) {\n widgetType = filterDef.widget.type;\n }\n\n // Update filter node with resolved widget type and options\n this.filterNode.set({\n name: 'filter',\n path: 'filter',\n type: widgetType,\n mode: 'edit',\n options: {\n ...filterDef.widget?.options,\n clearButton: true,\n hasClearButton: true,\n }\n });\n }\n\n /**\n * Update context data for the filter widget\n */\n private updateContext(): void {\n const selected = this.selectedField();\n this.context.set({\n filter: {\n value: selected?.value,\n operation: {\n type: selected?.operator || 'equal'\n }\n }\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle field selection change\n * Updates the filter widget type based on the selected field's filterDefinition\n */\n onFieldChange(event: AXValueChangedEvent): void {\n const fieldId = event.value as string;\n const filterDef = this.filterDefinitions.find(def => def.field === fieldId);\n\n this.selectedField.update(prev => ({\n ...prev,\n field: fieldId,\n operator: filterDef?.operator?.type || 'equal',\n value: undefined, // Reset value when field changes\n isParametric: prev?.isParametric ?? false,\n } as any));\n\n // Update filter widget node for the new field\n this.updateFilterWidgetNode();\n \n // Reset context\n this.updateContext();\n\n // Emit change\n this.itemChange.emit(this.selectedField()!);\n }\n\n /**\n * Handle filter widget value change\n * The default filter widget emits context changes with filter.value and filter.operation\n */\n onContextChange(event: any): void {\n const filterData = event.data?.filter;\n if (!filterData) return;\n\n this.selectedField.update(prev => ({\n ...prev,\n operator: filterData.operation?.type || prev?.operator || 'equal',\n value: filterData.value,\n } as any));\n\n // Update context\n this.updateContext();\n\n // Emit change\n this.itemChange.emit(this.selectedField()!);\n }\n\n /**\n * Handle FillByUser (isParametric) checkbox change\n */\n onFillByUserChange(checked: boolean): void {\n this.selectedField.update(prev => ({\n ...prev,\n isParametric: checked,\n } as any));\n\n this.itemChange.emit(this.selectedField()!);\n }\n\n /**\n * Handle remove button click\n */\n onRemoveClick(): void {\n this.removeItem.emit(this.item.id);\n }\n\n //#endregion\n}\n\n","<div class=\"__condition-row\">\n <div class=\"__item-content\">\n <!-- Field Selector -->\n <div class=\"__field-selector\">\n <ax-select-box\n class=\"ax-sm\"\n [dataSource]=\"availableFields()\"\n [ngModel]=\"selectedFieldValue()\"\n (onValueChanged)=\"onFieldChange($event)\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.condition.select-field' | translate | async) || 'Select a field'\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n\n <!-- Default Filter Widget (Operator + Value) -->\n <div class=\"__operator-selector\">\n @if (selectedField()?.field && filterNode().type) {\n <axp-widgets-container \n class=\"__filter-widget-container\" \n [context]=\"context()\" \n (onContextChanged)=\"onContextChange($event)\">\n <ng-container \n axp-widget-renderer \n [node]=\"filterNode()\" \n [mode]=\"'edit'\">\n </ng-container>\n </axp-widgets-container>\n } @else {\n <div class=\"__filter-placeholder\">\n <span class=\"__placeholder-text\">{{ ('@data-management:metadata-definitions.components.query-builder.condition.select-field-first' | translate | async) || 'Select a field first' }}</span>\n </div>\n }\n </div>\n\n <!-- Fill By User (isParametric) -->\n <div class=\"__fill-by-user\">\n <ax-check-box\n class=\"ax-text-xs\"\n [ngModel]=\"selectedField()?.isParametric\"\n (ngModelChange)=\"onFillByUserChange($event)\"\n >\n <ax-label>\n {{ '@data-management:metadata-definitions.components.query-builder.condition.fill-by-user' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n </div>\n</div>\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropListDroppedEvent, moveItemInArray } from '@acorex/cdk/drag-drop';\nimport { AXPFilterClause, AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator, AXFilterLogic } from '@acorex/cdk/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, PLATFORM_ID, afterNextRender, computed, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXPQueryBuilderConditionComponent, SelectedField } from '../condition/query-builder-condition.component';\n\n//#region ---- Types ----\n\n// Internal models are no longer needed; we use AXPFilterDefinition / AXPFilterClause directly\n\n//#endregion\n\n/**\n * Where Builder Component\n * \n * Handles WHERE clause building with groups (AND/OR) and conditions (field/operator/value).\n * This component is used as a child component within the full QueryBuilderComponent.\n * \n * Layout Architecture:\n * \n * Grid-Based Group Layout:\n * - Each group uses CSS Grid: `grid-template-columns: auto 1fr`\n * - Left column: connector line with AND/OR selector (fixed width: 3.5rem)\n * - Right column: conditions container (flexible width)\n * - Both columns stretch to same height via `align-items: stretch`\n * \n * Single Connector Line Per Group:\n * - ONE continuous vertical connector line per group (root and nested)\n * - Line spans full height of the group using `top: 0; bottom: 0` positioning\n * - Rendered using `border-left: 2px solid` for clean appearance\n * - The AND/OR selector chip is absolutely positioned in the center of this line\n * - Selector uses `left: 50%; top: 50%; transform: translate(-50%, -50%)` for perfect centering\n * - All conditions in the group visually attach to this single line on the right side\n * - Nested groups create their own connector line, indented appropriately\n * \n * Typography:\n * - Uses standard platform font sizes (ax-sm for buttons/selects)\n * - AND/OR chip: 0.8125rem (13px) font size for readability\n * - Condition rows: standard padding and spacing matching form controls\n * - No reduced font sizes - relies on spacing and subtle borders for visual lightness\n * \n * Empty Group State:\n * - Compact empty state with just an \"Add condition\" button\n * - No nested boxes or heavy borders\n * - Minimal height, aligned with group padding\n * \n * Visual Design:\n * - Subtle borders (1px) using platform border tokens\n * - Soft colors with light surface elevation\n * - Standard spacing throughout (gap-3, px-3, py-2.5)\n * - Consistent styling for root and nested groups (except root has no border/background)\n */\n@Component({\n selector: 'axp-where-builder',\n templateUrl: './where-builder.component.html',\n styleUrl: './where-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXDragDirective,\n AXDragHandleDirective,\n AXDropListDirective,\n AXPQueryBuilderConditionComponent,\n AXTranslationModule,\n ],\n})\nexport class AXPWhereBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current query builder value (root group with conditions/groups)\n */\n value = input<AXPFilterDefinition>({\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n });\n\n /**\n * Available filter definitions from entity/context\n * Each filterDefinition contains field metadata and widget configuration\n */\n filterDefinitions = input<AXPFilterDefinition[]>([]);\n\n /**\n * Emitted when query structure changes\n * Parent components can consume this to build queries\n */\n valueChange = output<AXPFilterDefinition>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected queryData = signal<AXPFilterDefinition>({\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n });\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n protected readonly logicalOperatorsItems = [\n { value: 'and', text: 'And' },\n { value: 'or', text: 'Or' }\n ];\n\n protected readonly logicalOperators = new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: this.logicalOperatorsItems,\n total: this.logicalOperatorsItems.length,\n });\n },\n byKey: (id: unknown) => {\n const item = this.logicalOperatorsItems.find((c) => c.value?.toString() === id?.toString());\n return Promise.resolve(item);\n },\n pageSize: 10,\n key: 'value',\n });\n\n /**\n * Computed filter definitions for field selector\n * Maps filterDefinitions to a format suitable for select-box\n */\n protected readonly availableFilterDefinitions = computed(() => {\n return this.filterDefinitions().map(def => ({\n value: def.field,\n text: def.title,\n definition: def\n }));\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Initialize from input value\n const initialValue = this.value();\n this.queryData.set(this.normalizeOrder(initialValue));\n \n // Track last emitted value to prevent circular updates\n let lastEmittedValue: AXPFilterDefinition | null = null;\n \n effect(() => {\n const val = this.value();\n \n if (val) {\n const currentData = untracked(() => this.queryData());\n const currentValueStr = JSON.stringify(currentData);\n const incomingValueStr = JSON.stringify(val);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n \n // Only update if:\n // 1. The incoming value is different from current state\n // 2. AND it's not the value we just emitted (prevent circular updates)\n if (incomingValueStr !== currentValueStr && incomingValueStr !== lastEmittedStr) {\n console.log('[QueryBuilder] Syncing external value change to queryData');\n this.queryData.set(this.normalizeOrder(val));\n }\n }\n });\n\n effect(() => {\n const defs = this.filterDefinitions();\n });\n\n effect(() => {\n const data = this.queryData();\n const filters = data.filters ?? [];\n });\n\n effect(() => {\n const defs = this.filterDefinitions();\n });\n\n // Update connector line bounds after each render.\n afterNextRender(() => {\n this.initConnectorAutoLayout();\n });\n\n effect(() => {\n // Any structural change can affect connector layout (especially nested groups).\n this.queryData();\n this.scheduleConnectorLayoutUpdate();\n });\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n //#region ---- Connector Auto Layout ----\n\n private connectorLayoutRafId: number | null = null;\n private connectorResizeObserver: ResizeObserver | null = null;\n\n /**\n * Initialize a ResizeObserver to keep connector line bounds synced with the DOM.\n * This is browser-only and safely skipped during SSR.\n */\n private initConnectorAutoLayout(): void {\n if (!this.isBrowser) return;\n\n // ResizeObserver may not exist in very old environments.\n const RO = (globalThis as any).ResizeObserver as (typeof ResizeObserver | undefined);\n if (!RO) {\n this.scheduleConnectorLayoutUpdate();\n return;\n }\n\n this.connectorResizeObserver = new RO(() => this.scheduleConnectorLayoutUpdate());\n this.connectorResizeObserver.observe(this.elementRef.nativeElement);\n\n this.destroyRef.onDestroy(() => {\n this.connectorResizeObserver?.disconnect();\n this.connectorResizeObserver = null;\n if (this.connectorLayoutRafId !== null) {\n cancelAnimationFrame(this.connectorLayoutRafId);\n this.connectorLayoutRafId = null;\n }\n });\n\n this.scheduleConnectorLayoutUpdate();\n }\n\n private scheduleConnectorLayoutUpdate(): void {\n if (!this.isBrowser) return;\n if (this.connectorLayoutRafId !== null) return;\n\n this.connectorLayoutRafId = requestAnimationFrame(() => {\n this.connectorLayoutRafId = null;\n this.updateConnectorCssVars();\n });\n }\n\n /**\n * Sets CSS variables on each group element so the vertical connector line\n * starts/ends exactly at the center of the first/last rendered row.\n *\n * This fixes cases where an item grows vertically (nested groups), which\n * cannot be handled accurately by fixed CSS insets.\n */\n private updateConnectorCssVars(): void {\n const root = this.elementRef.nativeElement;\n const groups = Array.from(root.querySelectorAll<HTMLElement>('.__group'));\n\n for (const groupEl of groups) {\n const connectorEl = groupEl.querySelector<HTMLElement>('.__group-wrapper > .__group-connector');\n const conditionsEl = groupEl.querySelector<HTMLElement>('.__group-wrapper > .__conditions-container');\n if (!connectorEl || !conditionsEl) continue;\n\n const rows = Array.from(\n conditionsEl.querySelectorAll<HTMLElement>(':scope > .__condition-item, :scope > .__group-empty'),\n );\n\n // For 0 or 1 item, connectors are disabled by design.\n if (rows.length < 2) {\n groupEl.style.removeProperty('--qb-connector-top');\n groupEl.style.removeProperty('--qb-connector-bottom');\n continue;\n }\n\n const connectorRect = connectorEl.getBoundingClientRect();\n const firstRect = rows[0].getBoundingClientRect();\n const lastRect = rows[rows.length - 1].getBoundingClientRect();\n\n const firstCenterY = firstRect.top + firstRect.height / 2;\n const lastCenterY = lastRect.top + lastRect.height / 2;\n\n const topInset = Math.max(0, firstCenterY - connectorRect.top);\n const bottomInset = Math.max(0, connectorRect.bottom - lastCenterY);\n\n groupEl.style.setProperty('--qb-connector-top', `${topInset}px`);\n groupEl.style.setProperty('--qb-connector-bottom', `${bottomInset}px`);\n }\n }\n\n //#endregion\n\n private generateId(): string {\n return Math.random().toString(36).substr(2, 9);\n }\n\n private updateValue(): void {\n const currentData = this.queryData();\n this.valueChange.emit(currentData);\n // Note: We don't track lastEmittedValue here because the parent component\n // will handle the value update and may pass it back, which we'll ignore\n // in the effect due to the comparison logic\n }\n\n /**\n * Normalize order property for all items in the query structure\n * Ensures all items have order property and filters are sorted by order\n */\n private normalizeOrder(data: AXPFilterDefinition): AXPFilterDefinition {\n const normalizeFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n // First, ensure all items have order\n const withOrder = filters.map((filter, index) => {\n const normalized = {\n ...filter,\n order: filter.order ?? index\n };\n\n if (normalized.filters && normalized.filters.length) {\n return {\n ...normalized,\n filters: normalizeFilters(normalized.filters)\n };\n }\n\n return normalized;\n });\n\n // Sort by order\n return withOrder.sort((a, b) => a.order - b.order);\n };\n\n return {\n ...data,\n order: data.order ?? 0,\n filters: normalizeFilters(data.filters || [])\n };\n }\n\n /**\n * Get sorted filters for a group (used in template)\n * Ensures filters are sorted by order property\n */\n protected getSortedFilters(filters: AXPFilterClause[]): AXPFilterClause[] {\n return [...filters].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n }\n\n private findGroupById(id: string, node: AXPFilterClause = this.queryData()): AXPFilterClause | null {\n if (node.id === id && Array.isArray(node.filters)) {\n return node;\n }\n\n if (node.filters) {\n for (const child of node.filters) {\n const found = this.findGroupById(id, child);\n if (found) {\n return found;\n }\n }\n }\n\n return null;\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Add a new condition (rule) to the root group\n * All conditions must be inside a group, so this adds to the root group\n */\n addCondition(): void {\n const rootId = this.queryData().id ?? 'root';\n this.addConditionToGroup(rootId);\n }\n\n /**\n * Add a new nested group to the root group\n * All groups must be inside the root group\n */\n addGroup(): void {\n const rootId = this.queryData().id ?? 'root';\n this.addGroupToGroup(rootId);\n }\n\n /**\n * Add a new condition to a specific group\n */\n addConditionToGroup(groupId: string): void {\n this.queryData.update(data => {\n // Find target group to get current filters count for order\n const findGroup = (node: AXPFilterClause): AXPFilterClause | null => {\n if (node.id === groupId && Array.isArray(node.filters)) {\n return node;\n }\n if (node.filters) {\n for (const child of node.filters) {\n const found = findGroup(child);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n\n const targetGroup = data.id === groupId ? data : findGroup(data);\n const currentOrder = targetGroup && targetGroup.filters ? targetGroup.filters.length : 0;\n\n const newCondition: AXPFilterDefinition = {\n id: this.generateId(),\n field: '',\n value: undefined,\n operator: { type: 'equal' },\n order: currentOrder,\n title: '',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n };\n\n // If adding to root group, update root group directly\n if (data.id === groupId) {\n return {\n ...data,\n filters: [...(data.filters ?? []), newCondition]\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateNode = (node: AXPFilterClause): AXPFilterClause => {\n if (node.id === groupId && Array.isArray(node.filters)) {\n return {\n ...node,\n filters: [...node.filters, newCondition],\n };\n }\n\n if (node.filters) {\n return {\n ...node,\n filters: node.filters.map(updateNode),\n };\n }\n\n return node;\n };\n\n return {\n ...data,\n filters: (updateNode(data).filters ?? [])\n };\n });\n this.updateValue();\n }\n\n /**\n * Get filter definition by field ID\n * Used to resolve widget type and metadata for a condition\n */\n getFilterDefinition(fieldId: string): AXPFilterDefinition | undefined {\n return this.filterDefinitions().find(def => def.field === fieldId);\n }\n\n /**\n * Resolve default filter widget type for a field\n * Uses widget registry to get the defaultFilterWidgetName from the field's widget config\n */\n resolveDefaultFilterWidget(fieldId: string): string {\n const filterDef = this.getFilterDefinition(fieldId);\n if (!filterDef) {\n return 'string-filter'; // Default fallback\n }\n\n try {\n // Resolve the widget config from registry\n const widgetConfig = this.widgetRegistry.resolve(filterDef.widget.type);\n // Use defaultFilterWidgetName if available, otherwise use the widget type\n return widgetConfig?.defaultFilterWidgetName || filterDef.widget.type || 'string-filter';\n } catch {\n // If widget not found in registry, use the widget type from filterDefinition\n return filterDef.widget.type || 'string-filter';\n }\n }\n\n /**\n * Convert QueryBuilderData to AXPFilterClause format\n * \n * This method transforms the internal query builder structure to the platform's filter clause format\n * that can be consumed by data sources and query services.\n * \n * Conversion Logic:\n * - Conditions (rules) are converted to AXDataSourceFilterOption with field, operator, and value\n * - Groups are converted to nested filter structures with logic (AND/OR) and filters array\n * - Empty conditions (no field or value) are skipped\n * - Single-item groups are flattened (no nested structure needed)\n * \n * @returns AXPFilterClause compatible with AXDataSourceFilterOption structure\n * \n * Example output:\n * {\n * logic: 'and',\n * filters: [\n * { field: 'name', operator: { type: 'contains' }, value: 'John' },\n * {\n * logic: 'or',\n * filters: [\n * { field: 'age', operator: { type: 'gt' }, value: 18 },\n * { field: 'status', operator: { type: 'equal' }, value: 'active' }\n * ]\n * }\n * ]\n * }\n */\n toFilterClause(): AXPFilterClause {\n const data = this.queryData();\n \n const convertItem = (item: AXPFilterClause): AXDataSourceFilterOption | null => {\n const isGroup = Array.isArray(item.filters) && item.filters.length > 0;\n\n if (!isGroup) {\n // Treat as condition\n if (!item.field || item.value === undefined || item.value === null || item.value === '') {\n return null;\n }\n\n return {\n field: item.field,\n operator: item.operator,\n value: item.value,\n };\n }\n\n // Convert group\n const groupFilters = (item.filters ?? [])\n .map(convertItem)\n .filter((f): f is AXDataSourceFilterOption => f !== null);\n\n if (groupFilters.length === 0) {\n return null;\n }\n\n // If group has only one filter, return it directly (no need for nested structure)\n if (groupFilters.length === 1) {\n return groupFilters[0];\n }\n\n // Return nested filter structure\n // Note: Groups don't have a field or operator, only logic and filters\n return {\n logic: item.logic,\n filters: groupFilters,\n } as AXDataSourceFilterOption;\n };\n\n const filters = (data.filters ?? [])\n .map(convertItem)\n .filter((f): f is AXDataSourceFilterOption => f !== null);\n\n return {\n logic: data.logic,\n filters: filters,\n };\n }\n\n addGroupToGroup(parentGroupId: string): void {\n this.queryData.update(data => {\n // Find target group to get current filters count for order\n const findGroup = (node: AXPFilterClause): AXPFilterClause | null => {\n if (node.id === parentGroupId && Array.isArray(node.filters)) {\n return node;\n }\n if (node.filters) {\n for (const child of node.filters) {\n const found = findGroup(child);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n\n const targetGroup = data.id === parentGroupId ? data : findGroup(data);\n const currentOrder = targetGroup && targetGroup.filters ? targetGroup.filters.length : 0;\n\n const newGroup: AXPFilterDefinition = {\n id: this.generateId(),\n logic: 'and',\n filters: [],\n order: currentOrder,\n title: 'Group',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n };\n\n // If adding to root group, update root group directly\n if (data.id === parentGroupId) {\n return {\n ...data,\n filters: [...(data.filters ?? []), newGroup]\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateNode = (node: AXPFilterClause): AXPFilterClause => {\n if (node.id === parentGroupId && Array.isArray(node.filters)) {\n return {\n ...node,\n filters: [...node.filters, newGroup],\n };\n }\n\n if (node.filters) {\n return {\n ...node,\n filters: node.filters.map(updateNode),\n };\n }\n\n return node;\n };\n\n return {\n ...data,\n filters: (updateNode(data).filters ?? [])\n };\n });\n this.updateValue();\n }\n\n removeItem(id: string): void {\n this.queryData.update(data => {\n const removeFromFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters\n .filter(filter => filter.id !== id)\n .map(filter => ({\n ...filter,\n filters: filter.filters ? removeFromFilters(filter.filters) : filter.filters,\n }));\n };\n\n return {\n ...data,\n filters: removeFromFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n updateCondition(condition: SelectedField): void {\n this.queryData.update(data => {\n const updateFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters.map(filter => {\n if (filter.id === condition.id) {\n const def = this.getFilterDefinition(condition.field);\n const current = filter as AXPFilterDefinition;\n return {\n ...filter,\n field: condition.field,\n operator: { type: condition.operator },\n value: condition.value,\n title: def?.title ?? current.title ?? '',\n widget: def?.widget ?? current.widget,\n filterType: def?.filterType ?? current.filterType,\n isParametric: condition.isParametric ?? current.isParametric,\n };\n }\n if (filter.filters) {\n return {\n ...filter,\n filters: updateFilters(filter.filters)\n };\n }\n return filter;\n });\n };\n return {\n ...data,\n filters: updateFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n updateRootLogicalOperator(operator: AXFilterLogic): void {\n this.queryData.update(data => ({\n ...data,\n logic: operator\n }));\n this.updateValue();\n }\n\n updateGroupLogicalOperator(groupId: string, operator: AXFilterLogic): void {\n this.queryData.update(data => {\n // If updating root group, update root group directly\n if (data.id === groupId) {\n return {\n ...data,\n logic: operator\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters.map(filter => {\n if (filter.id === groupId && filter.filters) {\n return { ...filter, logic: operator };\n } else if (filter.filters) {\n return {\n ...filter,\n filters: updateFilters(filter.filters)\n };\n }\n return filter;\n });\n };\n\n return {\n ...data,\n filters: updateFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n clearAll(): void {\n this.queryData.update(data => ({\n ...data,\n filters: []\n }));\n this.updateValue();\n }\n\n getTotalItemsCount(): number {\n const countFilters = (filters: AXPFilterClause[]): number => {\n return filters.reduce((count, filter) => {\n if (!filter.filters || filter.filters.length === 0) {\n // condition\n return count + 1;\n }\n\n // group\n return count + 1 + countFilters(filter.filters);\n }, 0);\n };\n\n return countFilters(this.queryData().filters ?? []);\n }\n\n //#endregion\n\n //#region ---- Drag and Drop / Move Methods ----\n\n reorderRootItems(event: AXDropListDroppedEvent): void {\n this.queryData.update(data => {\n const filters = [...(data.filters ?? [])];\n moveItemInArray(filters, event.previousIndex, event.currentIndex);\n\n // Update order property for all items\n const updatedFilters = filters.map((filter, index) => ({\n ...filter,\n order: index\n }));\n\n return {\n ...data,\n filters: updatedFilters\n };\n });\n this.updateValue();\n }\n\n reorderGroupItems(groupId: string, previousIndex: number, currentIndex: number): void {\n this.queryData.update(data => {\n // If reordering root group items\n if (data.id === groupId) {\n const filters = [...(data.filters ?? [])];\n moveItemInArray(filters, previousIndex, currentIndex);\n\n // Update order property for all items\n const updatedFilters = filters.map((filter, index) => ({\n ...filter,\n order: index\n }));\n\n return {\n ...data,\n filters: updatedFilters\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters.map(filter => {\n if (filter.id === groupId && filter.filters) {\n const groupFilters = [...filter.filters];\n moveItemInArray(groupFilters, previousIndex, currentIndex);\n\n // Update order property for all items in the group\n const updatedGroupFilters = groupFilters.map((item, index) => ({\n ...item,\n order: index\n }));\n\n return {\n ...filter,\n filters: updatedGroupFilters\n };\n } else if (filter.filters) {\n return {\n ...filter,\n filters: updateFilters(filter.filters)\n };\n }\n return filter;\n });\n };\n\n return {\n ...data,\n filters: updateFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n reorderGroupItemsEvent(groupId: string, event: AXDropListDroppedEvent): void {\n this.reorderGroupItems(groupId, event.previousIndex, event.currentIndex);\n }\n\n moveItemUp(index: number, parentId: string): void {\n if (index === 0) return;\n\n if (parentId === 'root') {\n // Create a fake event for root items\n const fakeEvent: AXDropListDroppedEvent = {\n previousIndex: index,\n currentIndex: index - 1,\n item: null as any,\n container: null as any,\n previousContainer: null as any,\n nativeEvent: null as any,\n sender: null as any\n };\n this.reorderRootItems(fakeEvent);\n } else {\n this.reorderGroupItems(parentId, index, index - 1);\n }\n }\n\n moveItemDown(index: number, parentId: string): void {\n if (parentId === 'root') {\n const rootFiltersLength = this.queryData().filters?.length ?? 0;\n if (index === rootFiltersLength - 1) return;\n // Create a fake event for root items\n const fakeEvent: AXDropListDroppedEvent = {\n previousIndex: index,\n currentIndex: index + 1,\n item: null as any,\n container: null as any,\n previousContainer: null as any,\n nativeEvent: null as any,\n sender: null as any\n };\n this.reorderRootItems(fakeEvent);\n } else {\n const group = this.findGroupById(parentId);\n if (!group || !group.filters || index === group.filters.length - 1) return;\n this.reorderGroupItems(parentId, index, index + 1);\n }\n }\n\n //#endregion\n}\n\n","<div class=\"axp-where-builder\">\n <div class=\"__content\">\n <!-- Root Group - Render directly to ensure reactivity -->\n <div class=\"__group __root-group\" [class.__connectors-enabled]=\"(queryData().filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"queryData().logic\"\n textField=\"text\" valueField=\"value\"\n (onValueChanged)=\"updateGroupLogicalOperator(queryData().id!, $event.value)\" [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList\n (dropListDropped)=\"reorderGroupItemsEvent(queryData().id!, $event)\">\n @if ((queryData().filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(queryData().filters || []); track item.id; let i = $index; let first = $first;\n let last = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (queryData().filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (queryData().filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: queryData().logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n\n<!-- Group Template -->\n<ng-template #groupTemplate let-group=\"group\" let-parentLogic=\"parentLogic\" let-isRoot=\"isRoot\">\n <div class=\"__group\" [class.__root-group]=\"isRoot\" [class.__connectors-enabled]=\"(group.filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"group.logic\"\n textField=\"text\" valueField=\"value\" (onValueChanged)=\"updateGroupLogicalOperator(group.id, $event.value)\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList (dropListDropped)=\"reorderGroupItemsEvent(group.id, $event)\">\n @if ((group.filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(group.filters || []); track item.id; let i = $index; let first = $first; let last\n = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (group.filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (group.filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: group.logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((group.filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n</ng-template>","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n\n/**\n * Columns Builder Component\n * \n * Handles column selection for query builder.\n * Provides multi-select interface with select all/clear all functionality.\n */\n@Component({\n selector: 'axp-columns-builder',\n templateUrl: './columns-builder.component.html',\n styleUrl: './columns-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPColumnsBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Selected column names\n */\n value = input<string[]>([]);\n\n /**\n * Emitted when selection changes\n */\n valueChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Columns data source for multi-select\n */\n protected readonly columnsDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n definition: col,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name, definition: col } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handle columns selection change\n */\n protected onColumnsChange(selectedColumns: string[]): void {\n this.valueChange.emit(selectedColumns || []);\n }\n\n /**\n * Select all columns\n */\n protected selectAll(): void {\n const allColumnNames = this.columns().map(col => col.name);\n this.valueChange.emit(allColumnNames);\n }\n\n /**\n * Clear all columns\n */\n protected clearAll(): void {\n this.valueChange.emit([]);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-columns-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.columns.title' | translate | async) || 'Select Columns' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onColumnsChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.columns.placeholder' | translate | async) || 'Select columns to include in the query'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPQuerySortRule } from '../query-builder.types';\n\n/**\n * Sort Builder Component\n * \n * Handles sort rules for query builder.\n * Allows adding/removing sort rules with field and direction selection.\n */\n@Component({\n selector: 'axp-sort-builder',\n templateUrl: './sort-builder.component.html',\n styleUrl: './sort-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPSortBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Current sort rules\n */\n value = input<AXPQuerySortRule[]>([]);\n\n /**\n * Emitted when sort rules change\n */\n valueChange = output<AXPQuerySortRule[]>();\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Sort field data source (from columns)\n */\n protected readonly sortFieldDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n /**\n * Sort direction options\n */\n protected readonly sortDirectionItems = [\n { value: 'asc', text: 'ASC' },\n { value: 'desc', text: 'DESC' },\n ];\n\n protected readonly sortDirectionDataSource = new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: this.sortDirectionItems,\n total: this.sortDirectionItems.length,\n });\n },\n byKey: (key: unknown) => {\n const item = this.sortDirectionItems.find(c => c.value?.toString() === key?.toString());\n return Promise.resolve(item);\n },\n pageSize: 10,\n key: 'value',\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Add a new sort rule\n */\n protected addSortRule(): void {\n const currentRules = this.value();\n const newRule: AXPQuerySortRule = {\n field: '',\n dir: 'asc',\n };\n const newRules = [...currentRules, newRule];\n this.valueChange.emit(newRules);\n }\n\n /**\n * Remove a sort rule\n */\n protected removeSortRule(index: number): void {\n const currentRules = this.value();\n const newRules = currentRules.filter((_, i) => i !== index);\n this.valueChange.emit(newRules);\n }\n\n /**\n * Update a sort rule field\n */\n protected updateSortRuleField(index: number, field: string): void {\n const currentRules = this.value();\n const updatedRules: AXPQuerySortRule[] = currentRules.map((rule, i) => \n i === index ? { ...rule, field } : rule\n );\n this.valueChange.emit(updatedRules);\n }\n\n /**\n * Update a sort rule direction\n */\n protected updateSortRuleDirection(index: number, dir: string): void {\n const currentRules = this.value();\n // Ensure dir is 'asc' or 'desc'\n const validDir: 'asc' | 'desc' = (dir === 'asc' || dir === 'desc') ? dir : 'asc';\n const updatedRules: AXPQuerySortRule[] = currentRules.map((rule, i) => \n i === index ? { ...rule, dir: validDir } : rule\n );\n this.valueChange.emit(updatedRules);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-sort-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.title' | translate | async) || 'Sort Rules' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-sort-rule.title' | translate | async) || 'Add Sort Rule'\"\n (onClick)=\"addSortRule()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.empty-state' | translate | async) || 'No sort rules defined. Click \\'Add Sort Rule\\' to add sorting.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__sort-rules\">\n @for (rule of value(); track $index; let i = $index) {\n <div class=\"__sort-rule\">\n <ax-select-box\n class=\"__sort-field\"\n [dataSource]=\"sortFieldDataSource()\"\n [ngModel]=\"rule.field\"\n (ngModelChange)=\"updateSortRuleField(i, $event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.sort.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-select-box\n class=\"__sort-direction\"\n [dataSource]=\"sortDirectionDataSource\"\n [ngModel]=\"rule.dir\"\n (ngModelChange)=\"updateSortRuleDirection(i, $event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeSortRule(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n\n/**\n * Group By Builder Component\n * \n * Handles group by column selection for query builder.\n * Provides multi-select interface with select all/clear all functionality.\n */\n@Component({\n selector: 'axp-group-by-builder',\n templateUrl: './group-by-builder.component.html',\n styleUrl: './group-by-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPGroupByBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Selected column names for group by\n */\n value = input<string[]>([]);\n\n /**\n * Emitted when selection changes\n */\n valueChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Group By columns data source (same as columns)\n */\n protected readonly groupByDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n definition: col,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name, definition: col } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handle group by selection change\n */\n protected onGroupByChange(selectedColumns: string[]): void {\n this.valueChange.emit(selectedColumns || []);\n }\n\n /**\n * Select all columns\n */\n protected selectAll(): void {\n const allColumnNames = this.columns().map(col => col.name);\n this.valueChange.emit(allColumnNames);\n }\n\n /**\n * Clear all columns\n */\n protected clearAll(): void {\n this.valueChange.emit([]);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-group-by-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.group-by.title' | translate | async) || 'Group By' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"groupByDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onGroupByChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.group-by.placeholder' | translate | async) || 'Select columns to group by'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPAggregateFunctionDefinition, AXPDatabaseType, AXPAggregateCategory } from '../query-builder.types';\n\n// Re-export types for convenience\nexport type { AXPAggregateFunctionDefinition, AXPDatabaseType, AXPAggregateCategory } from '../query-builder.types';\n\n/**\n * Aggregate Function Provider Token\n * Can be a provider instance or a Promise that resolves to a provider\n */\nexport type AXPAggregateFunctionProviderToken =\n | AXPAggregateFunctionProvider\n | Promise<AXPAggregateFunctionProvider>;\n\n/**\n * Injection token for aggregate function providers\n * Multiple providers can be registered to extend aggregate function definitions\n */\nexport const AXP_AGGREGATE_FUNCTION_PROVIDER = new InjectionToken<AXPAggregateFunctionProviderToken[]>(\n 'AXP_AGGREGATE_FUNCTION_PROVIDER',\n {\n factory: () => [],\n }\n);\n\n/**\n * Aggregate Function Provider Interface\n * \n * Allows modules to provide custom aggregate functions that extend\n * the default set of aggregate functions available in the query builder.\n * \n * Example usage:\n * ```typescript\n * @Injectable()\n * export class MyCustomAggregateProvider implements AXPAggregateFunctionProvider {\n * async getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]> {\n * return [\n * {\n * name: 'custom_avg',\n * title: 'CUSTOM_AVG',\n * description: 'Custom average function',\n * category: 'statistical',\n * supportedDatabases: ['mysql'],\n * requiresField: true,\n * supportsDistinct: true,\n * }\n * ];\n * }\n * }\n * ```\n */\nexport interface AXPAggregateFunctionProvider {\n /**\n * Get list of aggregate functions\n * \n * @param databaseType - Optional database type filter. If provided, only functions\n * supported by this database type should be returned.\n * If undefined, return all functions.\n * @returns Promise that resolves to array of aggregate function definitions\n */\n getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]>;\n\n /**\n * Get a single aggregate function by name\n * \n * @param name - Function name/identifier (e.g., 'sum', 'avg', 'count')\n * @returns Promise that resolves to function definition or undefined if not found\n */\n getByName(name: string): Promise<AXPAggregateFunctionDefinition | undefined>;\n\n /**\n * Get all unique categories available from this provider\n * \n * @returns Promise that resolves to array of category names\n */\n getCategories(): Promise<AXPAggregateCategory[]>;\n\n /**\n * Get maximum nesting depth for nested aggregates\n * \n * @returns Maximum allowed nesting depth (default: 3)\n */\n getMaxNestingDepth(): number;\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPAggregateCategory } from '../query-builder.types';\n\n//#region ---- Aggregate Category Provider Types ----\n\n/**\n * Aggregate category definition.\n * Used by providers to describe available aggregate categories.\n */\nexport interface AXPAggregateCategoryDefinition {\n /**\n * Unique category name (e.g., 'statistical', 'string', 'date', or any custom value)\n */\n name: AXPAggregateCategory;\n\n /**\n * Display title for UI\n */\n title: string;\n\n /**\n * Optional description for tooltips or help text\n */\n description?: string;\n\n /**\n * Optional order index for sorting in UI\n */\n order?: number;\n}\n\n/**\n * Aggregate Category Provider Token\n * Can be a provider instance or a Promise that resolves to a provider.\n */\nexport type AXPAggregateCategoryProviderToken =\n | AXPAggregateCategoryProvider\n | Promise<AXPAggregateCategoryProvider>;\n\n/**\n * Injection token for aggregate category providers.\n * Multiple providers can be registered to extend category definitions.\n */\nexport const AXP_AGGREGATE_CATEGORY_PROVIDER = new InjectionToken<AXPAggregateCategoryProviderToken[]>(\n 'AXP_AGGREGATE_CATEGORY_PROVIDER',\n {\n factory: () => [],\n },\n);\n\n/**\n * Aggregate Category Provider Interface\n *\n * Allows modules to provide custom aggregate categories that are used\n * by the query builder UI for filtering aggregate functions.\n */\nexport interface AXPAggregateCategoryProvider {\n /**\n * Get list of aggregate categories.\n */\n getList(): Promise<AXPAggregateCategoryDefinition[]>;\n\n /**\n * Get a single category by name.\n */\n getByName(name: AXPAggregateCategory): Promise<AXPAggregateCategoryDefinition | undefined>;\n}\n\n//#endregion\n\n\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXPAggregateFunctionProvider,\n AXP_AGGREGATE_FUNCTION_PROVIDER,\n} from './aggregate-function.provider';\nimport { AXPAggregateFunctionDefinition, AXPDatabaseType, AXPAggregateCategory } from '../query-builder.types';\nimport { AXPAggregateCategoryProvider, AXP_AGGREGATE_CATEGORY_PROVIDER } from './aggregate-category.provider';\n\n//#endregion\n\n/**\n * Aggregate Function Service\n * \n * Aggregates functions from all registered providers and provides a unified API\n * for accessing aggregate function definitions.\n * \n * Performance optimizations:\n * 1. Aggressive caching prevents duplicate API calls\n * 2. Single pending request per resource prevents race conditions\n * 3. Lazy loading - only loads data when needed\n * 4. Merges results from all providers\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPAggregateFunctionService {\n //#region ---- Providers & Caches ----\n\n private readonly providers = inject(AXP_AGGREGATE_FUNCTION_PROVIDER, { optional: true }) || [];\n private readonly categoryProviders =\n (inject<AXPAggregateCategoryProvider[] | null>(AXP_AGGREGATE_CATEGORY_PROVIDER, {\n optional: true,\n }) as AXPAggregateCategoryProvider[] | null) || [];\n\n //#endregion\n\n //#region ---- Cache Storage ----\n\n /** Cache for all functions by database type - O(1) lookup */\n private functionsByDatabaseType = new Map<AXPDatabaseType | undefined, AXPAggregateFunctionDefinition[]>();\n\n /** Cache for functions by name - O(1) lookup */\n private functionsByName = new Map<string, AXPAggregateFunctionDefinition>();\n\n /** Cache for categories */\n private categoriesCache: AXPAggregateCategory[] | null = null;\n\n /** Pending API requests to prevent duplicate calls */\n private pendingFunctionsRequests = new Map<AXPDatabaseType | undefined, Promise<AXPAggregateFunctionDefinition[]>>();\n private pendingFunctionRequests = new Map<string, Promise<AXPAggregateFunctionDefinition | undefined>>();\n private pendingCategoriesRequest: Promise<AXPAggregateCategory[]> | null = null;\n\n //#endregion\n\n //#region ---- Public API: Functions ----\n\n /**\n * Get all aggregate functions with optional database type filter\n * \n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls\n * \n * @param databaseType - Optional database type filter\n * @returns Array of aggregate function definitions\n */\n async getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]> {\n // ✅ Fast path: Return cached result\n if (this.functionsByDatabaseType.has(databaseType)) {\n return this.functionsByDatabaseType.get(databaseType)!;\n }\n\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingFunctionsRequests.has(databaseType)) {\n return this.pendingFunctionsRequests.get(databaseType)!;\n }\n\n // ✅ Create single request and cache it\n const requestPromise = this.loadFunctionsFromProviders(databaseType);\n this.pendingFunctionsRequests.set(databaseType, requestPromise);\n\n return requestPromise;\n }\n\n /**\n * Get single function by name with O(1) lookup\n * \n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getByName(name: string): Promise<AXPAggregateFunctionDefinition | undefined> {\n // ✅ Fast path: O(1) lookup in cache\n if (this.functionsByName.has(name)) {\n return this.functionsByName.get(name);\n }\n\n // ✅ Prevent duplicate requests\n if (this.pendingFunctionRequests.has(name)) {\n return this.pendingFunctionRequests.get(name)!;\n }\n\n // ✅ Load from providers\n const requestPromise = this.loadFunctionFromProviders(name);\n this.pendingFunctionRequests.set(name, requestPromise);\n\n return requestPromise;\n }\n\n /**\n * Get all unique categories from all providers\n * \n * @returns Array of category names\n */\n async getCategories(): Promise<AXPAggregateCategory[]> {\n // ✅ Fast path: Return cached result\n if (this.categoriesCache !== null) {\n return this.categoriesCache;\n }\n\n // ✅ Prevent duplicate requests\n if (this.pendingCategoriesRequest) {\n return this.pendingCategoriesRequest;\n }\n\n // ✅ Load from providers\n this.pendingCategoriesRequest = this.loadCategoriesFromProviders();\n const result = await this.pendingCategoriesRequest;\n this.pendingCategoriesRequest = null;\n return result;\n }\n\n /**\n * Get maximum nesting depth for nested aggregates\n * Returns the minimum depth from all providers (most restrictive)\n * \n * @returns Maximum allowed nesting depth\n */\n getMaxNestingDepth(): number {\n const resolvedProviders = this.providers;\n let minDepth = Infinity;\n\n for (const provider of resolvedProviders) {\n // Handle both direct providers and promises\n if (provider && typeof provider === 'object' && 'then' in provider) {\n // Skip promises - we can't resolve them synchronously\n continue;\n }\n \n if (provider && typeof (provider as any).getMaxNestingDepth === 'function') {\n try {\n const depth = (provider as any).getMaxNestingDepth();\n if (typeof depth === 'number' && depth < minDepth) {\n minDepth = depth;\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n // Default to 3 if no provider specifies a depth\n return minDepth === Infinity ? 3 : minDepth;\n }\n\n //#endregion\n\n //#region ---- Private: Data Loading ----\n\n /**\n * Load functions from all providers and merge results\n * \n * Optimization: Merges results from all providers, removes duplicates by name\n */\n private async loadFunctionsFromProviders(\n databaseType?: AXPDatabaseType,\n ): Promise<AXPAggregateFunctionDefinition[]> {\n try {\n const resolvedProviders = await Promise.allSettled(this.providers);\n const allFunctions: AXPAggregateFunctionDefinition[] = [];\n const seenNames = new Set<string>();\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getFunctions === 'function') {\n try {\n const functions = await p.value.getFunctions(databaseType);\n if (Array.isArray(functions)) {\n // Merge functions, avoiding duplicates by name\n for (const func of functions) {\n if (!seenNames.has(func.name)) {\n seenNames.add(func.name);\n allFunctions.push(func);\n }\n }\n }\n } catch {\n // Continue on error - try other providers\n }\n }\n }\n\n // ✅ Cache results for fast subsequent access\n this.functionsByDatabaseType.set(databaseType, allFunctions);\n allFunctions.forEach(func => this.functionsByName.set(func.name, func));\n\n return allFunctions;\n } finally {\n this.pendingFunctionsRequests.delete(databaseType);\n }\n }\n\n /**\n * Load single function from providers\n */\n private async loadFunctionFromProviders(name: string): Promise<AXPAggregateFunctionDefinition | undefined> {\n try {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n // Try providers first\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getByName === 'function') {\n try {\n const result = await p.value.getByName(name);\n if (result) {\n this.functionsByName.set(name, result);\n return result;\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n // Fallback: Search in cached functions\n for (const functions of this.functionsByDatabaseType.values()) {\n const found = functions.find(func => func.name === name);\n if (found) {\n this.functionsByName.set(name, found);\n return found;\n }\n }\n\n return undefined;\n } finally {\n this.pendingFunctionRequests.delete(name);\n }\n }\n\n /**\n * Load categories from all providers and merge unique values\n */\n private async loadCategoriesFromProviders(): Promise<AXPAggregateCategory[]> {\n const allCategories = new Set<AXPAggregateCategory>();\n\n // Prefer dedicated category providers if available\n if (this.categoryProviders.length > 0) {\n const resolvedCategoryProviders = await Promise.allSettled(this.categoryProviders);\n\n for (const p of resolvedCategoryProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const categories = await p.value.getList();\n if (Array.isArray(categories)) {\n categories.forEach(cat => allCategories.add(cat.name));\n }\n } catch {\n // Continue on error\n }\n }\n }\n }\n\n // Backward compatibility: fall back to aggregate function providers\n if (allCategories.size === 0) {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getCategories === 'function') {\n try {\n const categories = await p.value.getCategories();\n if (Array.isArray(categories)) {\n categories.forEach(cat => allCategories.add(cat));\n }\n } catch {\n // Continue on error\n }\n }\n }\n }\n\n const result = Array.from(allCategories);\n this.categoriesCache = result;\n return result;\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n /**\n * Clear all caches\n */\n clearAllCache(): void {\n this.functionsByDatabaseType.clear();\n this.functionsByName.clear();\n this.categoriesCache = null;\n this.pendingFunctionsRequests.clear();\n this.pendingFunctionRequests.clear();\n this.pendingCategoriesRequest = null;\n }\n\n /**\n * Clear functions cache only\n */\n clearFunctionsCache(): void {\n this.functionsByDatabaseType.clear();\n this.functionsByName.clear();\n this.pendingFunctionsRequests.clear();\n this.pendingFunctionRequests.clear();\n }\n\n /**\n * Clear categories cache only\n */\n clearCategoriesCache(): void {\n this.categoriesCache = null;\n this.pendingCategoriesRequest = null;\n }\n\n //#endregion\n}\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXPAggregateOperation, AXPAggregateCategory, AXPDatabaseType, AXPAggregateFunctionDefinition } from '../query-builder.types';\nimport { AXPAggregateFunctionService } from './aggregate-function.service';\nimport { inject } from '@angular/core';\n\n/**\n * Aggregate Builder Component\n * \n * Handles aggregate function selection and configuration for query builder.\n * Provides filtering by category and database type, and allows adding/removing aggregate operations.\n */\n@Component({\n selector: 'axp-aggregate-builder',\n templateUrl: './aggregate-builder.component.html',\n styleUrl: './aggregate-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXTextBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXTranslationModule,\n ],\n})\nexport class AXPAggregateBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly aggregateFunctionService = inject(AXPAggregateFunctionService);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Current aggregate operations\n */\n value = input<AXPAggregateOperation[]>([]);\n\n /**\n * Database type for filtering functions (optional)\n * If provided, only functions supported by this database will be shown\n */\n databaseType = input<AXPDatabaseType | undefined>(undefined);\n\n /**\n * Emitted when aggregate operations change\n */\n valueChange = output<AXPAggregateOperation[]>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected selectedCategory = signal<AXPAggregateCategory | 'all'>('all');\n protected searchText = signal<string>('');\n protected showAddForm = signal<boolean>(false);\n protected newAggregate = signal<Partial<AXPAggregateOperation>>({\n field: '',\n function: '',\n alias: '',\n distinct: false,\n nestedAggregates: [],\n });\n protected availableFunctionsList = signal<AXPAggregateFunctionDefinition[]>([]);\n protected availableCategoriesList = signal<AXPAggregateCategory[]>([]);\n protected editingNestedIndex = signal<{ parentIndex: number; nestedIndex: number } | null>(null);\n protected maxNestingDepth = signal<number>(3);\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Load functions and categories on initialization\n this.loadFunctions();\n this.loadCategories();\n this.loadMaxNestingDepth();\n }\n\n /**\n * Load max nesting depth from service\n */\n private loadMaxNestingDepth(): void {\n const depth = this.aggregateFunctionService.getMaxNestingDepth();\n this.maxNestingDepth.set(depth);\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Available aggregate functions filtered by category, database, and search\n */\n protected readonly availableFunctions = computed(() => {\n const category = this.selectedCategory();\n const database = this.databaseType();\n const search = this.searchText();\n const allFunctions = this.availableFunctionsList();\n\n let filtered = allFunctions;\n\n if (category !== 'all') {\n filtered = filtered.filter(f => f.category === category);\n }\n\n if (database) {\n filtered = filtered.filter(f =>\n f.supportedDatabases.includes('all') ||\n f.supportedDatabases.includes(database) ||\n (database === 'sql' && f.supportedDatabases.some((db: AXPDatabaseType) => ['sql', 'mysql', 'postgresql'].includes(db))) ||\n (database === 'nosql' && f.supportedDatabases.some((db: AXPDatabaseType) => ['nosql', 'mongodb'].includes(db)))\n );\n }\n\n if (search) {\n const searchLower = search.toLowerCase();\n filtered = filtered.filter(\n f =>\n f.name.toLowerCase().includes(searchLower) ||\n f.title.toLowerCase().includes(searchLower) ||\n f.description?.toLowerCase().includes(searchLower)\n );\n }\n\n return filtered;\n });\n\n /**\n * Available categories\n */\n protected readonly categories = computed(() => {\n const allCategories = this.availableCategoriesList();\n return [\n { value: 'all', text: 'All Categories' },\n ...allCategories.map(cat => ({\n value: cat,\n text: this.getCategoryTitle(cat),\n })),\n ];\n });\n\n /**\n * Categories data source for filter dropdown\n */\n protected readonly categoriesDataSource = computed(() => {\n const cats = this.categories();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cats,\n total: cats.length,\n });\n },\n byKey: (key: unknown) => {\n const cat = cats.find(c => c.value === key);\n return Promise.resolve(cat || null);\n },\n pageSize: 100,\n key: 'value',\n });\n });\n\n /**\n * Columns data source for field selection\n */\n protected readonly columnsDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n /**\n * Functions data source for function selection\n */\n protected readonly functionsDataSource = computed(() => {\n const funcs = this.availableFunctions();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: funcs.map(f => ({\n value: f.name,\n text: `${f.title} - ${f.description || f.name}`,\n definition: f,\n })),\n total: funcs.length,\n });\n },\n byKey: (key: unknown) => {\n const func = funcs.find(f => f.name === key);\n return Promise.resolve(func ? {\n value: func.name,\n text: `${func.title} - ${func.description || func.name}`,\n definition: func,\n } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Add a new aggregate operation\n */\n protected addAggregate(): void {\n const newAgg = this.newAggregate();\n \n // Function is required\n if (!newAgg.function) {\n return;\n }\n\n const funcDef = this.availableFunctionsList().find(f => f.name === newAgg.function);\n if (!funcDef) {\n return;\n }\n\n // Check field requirement:\n // - If function requires field AND doesn't support nested, field is mandatory\n // - If function doesn't require field (e.g., COUNT(*)), field is optional\n // - If function supports nested (e.g., CONCAT), field is optional (can use nestedAggregates)\n if (funcDef.requiresField && !funcDef.supportsNested && !newAgg.field) {\n return;\n }\n\n const currentAggregates = this.value();\n const newOperation: AXPAggregateOperation = {\n field: newAgg.field || undefined,\n function: newAgg.function,\n alias: newAgg.alias || undefined,\n distinct: funcDef.supportsDistinct ? (newAgg.distinct || false) : undefined,\n // TODO: Add nestedAggregates support in UI\n nestedAggregates: funcDef.supportsNested ? (newAgg.nestedAggregates || []) : undefined,\n };\n\n this.valueChange.emit([...currentAggregates, newOperation]);\n this.resetNewAggregate();\n }\n\n /**\n * Remove an aggregate operation\n */\n protected removeAggregate(index: number): void {\n const currentAggregates = this.value();\n const newAggregates = currentAggregates.filter((_, i) => i !== index);\n this.valueChange.emit(newAggregates);\n }\n\n /**\n * Update an aggregate operation\n */\n protected updateAggregate(index: number, updates: Partial<AXPAggregateOperation>): void {\n const currentAggregates = this.value();\n const updatedAggregates = [...currentAggregates];\n updatedAggregates[index] = { ...updatedAggregates[index], ...updates };\n this.valueChange.emit(updatedAggregates);\n }\n\n /**\n * Load functions from service\n */\n private async loadFunctions(): Promise<void> {\n const database = this.databaseType();\n const functions = await this.aggregateFunctionService.getFunctions(database);\n this.availableFunctionsList.set(functions);\n }\n\n /**\n * Load categories from service\n */\n private async loadCategories(): Promise<void> {\n const categories = await this.aggregateFunctionService.getCategories();\n this.availableCategoriesList.set(categories);\n }\n\n /**\n * Get function definition for display (synchronous, uses cache)\n */\n protected getFunctionDefinition(functionName: string): AXPAggregateFunctionDefinition | undefined {\n return this.availableFunctionsList().find(f => f.name === functionName);\n }\n\n /**\n * Check if function requires field\n * Note: Functions that support nested aggregates don't require a field (they can use nestedAggregates instead)\n */\n protected functionRequiresField(functionName: string): boolean {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n if (!funcDef) {\n return true;\n }\n // If function supports nested aggregates, field is optional\n if (funcDef.supportsNested) {\n return false;\n }\n return funcDef.requiresField ?? true;\n }\n\n /**\n * Check if function supports distinct\n */\n protected functionSupportsDistinct(functionName: string): boolean {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n return funcDef?.supportsDistinct ?? false;\n }\n\n /**\n * Get category title for display\n */\n protected getCategoryTitle(category: AXPAggregateCategory | 'all'): string {\n const titles: Record<AXPAggregateCategory | 'all', string> = {\n all: 'All Categories',\n statistical: 'Statistical',\n mathematical: 'Mathematical',\n string: 'String',\n date: 'Date',\n custom: 'Custom',\n };\n return titles[category] || category;\n }\n\n /**\n * Toggle add form visibility\n */\n protected toggleAddForm(): void {\n this.showAddForm.update(v => !v);\n if (!this.showAddForm()) {\n this.resetNewAggregate();\n }\n }\n\n /**\n * Reset new aggregate form\n */\n protected resetNewAggregate(): void {\n this.newAggregate.set({\n field: '',\n function: '',\n alias: '',\n distinct: false,\n nestedAggregates: [],\n });\n this.showAddForm.set(false);\n this.editingNestedIndex.set(null);\n }\n\n /**\n * Handle function selection change\n */\n protected onFunctionChange(functionName: string): void {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n if (funcDef && !funcDef.requiresField) {\n // For functions like COUNT(*), clear the field\n this.newAggregate.update(agg => ({ ...agg, function: functionName, field: '' }));\n } else {\n this.newAggregate.update(agg => ({ ...agg, function: functionName }));\n }\n }\n\n /**\n * Handle field selection change\n */\n protected onFieldChange(field: string): void {\n this.newAggregate.update(agg => ({ ...agg, field }));\n }\n\n /**\n * Handle alias change\n */\n protected onAliasChange(alias: string): void {\n this.newAggregate.update(agg => ({ ...agg, alias: alias || undefined }));\n }\n\n /**\n * Handle distinct change\n */\n protected onDistinctChange(distinct: boolean): void {\n this.newAggregate.update(agg => ({ ...agg, distinct }));\n }\n\n /**\n * Check if function supports nested aggregates\n */\n protected functionSupportsNested(functionName: string): boolean {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n return funcDef?.supportsNested ?? false;\n }\n\n /**\n * Check if can add more nested aggregates (based on depth)\n */\n protected canAddNestedAggregate(parentIndex: number, currentDepth: number = 0): boolean {\n return currentDepth < this.maxNestingDepth();\n }\n\n /**\n * Get current nesting depth for an aggregate operation\n */\n protected getNestingDepth(agg: AXPAggregateOperation, currentDepth: number = 0): number {\n if (!agg.nestedAggregates || agg.nestedAggregates.length === 0) {\n return currentDepth;\n }\n let maxDepth = currentDepth;\n for (const nested of agg.nestedAggregates) {\n const depth = this.getNestingDepth(nested, currentDepth + 1);\n if (depth > maxDepth) {\n maxDepth = depth;\n }\n }\n return maxDepth;\n }\n\n /**\n * Add nested aggregate to an existing aggregate operation\n */\n protected addNestedAggregate(parentIndex: number): void {\n const currentAggregates = this.value();\n const parent = currentAggregates[parentIndex];\n if (!parent) {\n return;\n }\n\n const funcDef = this.availableFunctionsList().find(f => f.name === parent.function);\n if (!funcDef?.supportsNested) {\n return;\n }\n\n const currentDepth = this.getNestingDepth(parent);\n if (currentDepth >= this.maxNestingDepth()) {\n return;\n }\n\n const updatedAggregates = [...currentAggregates];\n const nestedAggregates = parent.nestedAggregates || [];\n updatedAggregates[parentIndex] = {\n ...parent,\n nestedAggregates: [\n ...nestedAggregates,\n {\n function: '',\n field: '',\n },\n ],\n };\n\n this.valueChange.emit(updatedAggregates);\n this.editingNestedIndex.set({ parentIndex, nestedIndex: nestedAggregates.length });\n }\n\n /**\n * Remove nested aggregate from an aggregate operation\n */\n protected removeNestedAggregate(parentIndex: number, nestedIndex: number): void {\n const currentAggregates = this.value();\n const parent = currentAggregates[parentIndex];\n if (!parent || !parent.nestedAggregates) {\n return;\n }\n\n const updatedAggregates = [...currentAggregates];\n const nestedAggregates = [...parent.nestedAggregates];\n nestedAggregates.splice(nestedIndex, 1);\n\n updatedAggregates[parentIndex] = {\n ...parent,\n nestedAggregates: nestedAggregates.length > 0 ? nestedAggregates : undefined,\n };\n\n this.valueChange.emit(updatedAggregates);\n }\n\n /**\n * Update nested aggregate\n */\n protected updateNestedAggregate(\n parentIndex: number,\n nestedIndex: number,\n updates: Partial<AXPAggregateOperation>\n ): void {\n const currentAggregates = this.value();\n const parent = currentAggregates[parentIndex];\n if (!parent || !parent.nestedAggregates) {\n return;\n }\n\n const updatedAggregates = [...currentAggregates];\n const nestedAggregates = [...parent.nestedAggregates];\n nestedAggregates[nestedIndex] = { ...nestedAggregates[nestedIndex], ...updates };\n\n updatedAggregates[parentIndex] = {\n ...parent,\n nestedAggregates,\n };\n\n this.valueChange.emit(updatedAggregates);\n }\n\n /**\n * Add nested aggregate to new aggregate form\n */\n protected addNestedToNewAggregate(): void {\n const newAgg = this.newAggregate();\n if (!newAgg.function) {\n return;\n }\n\n const funcDef = this.availableFunctionsList().find(f => f.name === newAgg.function);\n if (!funcDef?.supportsNested) {\n return;\n }\n\n const nestedAggregates = newAgg.nestedAggregates || [];\n const currentDepth = nestedAggregates.length > 0 ? 1 : 0; // Simple depth check for new aggregate\n \n if (currentDepth >= this.maxNestingDepth()) {\n return;\n }\n\n this.newAggregate.update(agg => ({\n ...agg,\n nestedAggregates: [...(agg.nestedAggregates || []), { function: '', field: '' }],\n }));\n }\n\n /**\n * Remove nested aggregate from new aggregate form\n */\n protected removeNestedFromNewAggregate(nestedIndex: number): void {\n this.newAggregate.update(agg => {\n const nestedAggregates = [...(agg.nestedAggregates || [])];\n nestedAggregates.splice(nestedIndex, 1);\n return {\n ...agg,\n nestedAggregates: nestedAggregates.length > 0 ? nestedAggregates : [],\n };\n });\n }\n\n /**\n * Update nested aggregate in new aggregate form\n */\n protected updateNestedInNewAggregate(nestedIndex: number, updates: Partial<AXPAggregateOperation>): void {\n this.newAggregate.update(agg => {\n const nestedAggregates = [...(agg.nestedAggregates || [])];\n nestedAggregates[nestedIndex] = { ...nestedAggregates[nestedIndex], ...updates };\n return {\n ...agg,\n nestedAggregates,\n };\n });\n }\n\n //#endregion\n}\n\n","<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-select-box\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-select-box>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { AXPAggregateFunctionDefinition, AXPAggregateCategory, AXPDatabaseType } from '../query-builder.types';\n\n/**\n * Standard Aggregate Functions Registry\n * \n * Provides a comprehensive list of aggregate functions with their properties,\n * categories, and database support information.\n * \n * Based on SQL standard (ISO/IEC 9075) and common NoSQL implementations.\n */\nexport class AXPAggregateFunctionsRegistry {\n private static readonly functions: AXPAggregateFunctionDefinition[] = [\n //#region ---- Statistical Functions ----\n\n {\n name: 'sum',\n title: 'SUM',\n description: 'Calculates the sum of numeric values',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: true,\n },\n {\n name: 'avg',\n title: 'AVG',\n description: 'Calculates the average of numeric values',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: true,\n },\n {\n name: 'count',\n title: 'COUNT',\n description: 'Counts the number of rows or non-null values',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: false, // COUNT(*) doesn't require a field\n supportsDistinct: true,\n },\n {\n name: 'min',\n title: 'MIN',\n description: 'Finds the minimum value',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'max',\n title: 'MAX',\n description: 'Finds the maximum value',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'stddev',\n title: 'STDDEV',\n description: 'Calculates the standard deviation',\n category: 'statistical',\n supportedDatabases: ['sql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'variance',\n title: 'VARIANCE',\n description: 'Calculates the variance',\n category: 'statistical',\n supportedDatabases: ['sql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n\n //#region ---- String Functions ----\n\n {\n name: 'concat',\n title: 'CONCAT',\n description: 'Concatenates multiple string values. Supports nested aggregates (e.g., CONCAT(MIN(field1), MAX(field2)))',\n category: 'string',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: false, // Can use nested aggregates instead\n supportsDistinct: false,\n supportsNested: true, // CONCAT can contain other aggregates\n },\n {\n name: 'group_concat',\n title: 'GROUP_CONCAT',\n description: 'Concatenates values from multiple rows into a single string',\n category: 'string',\n supportedDatabases: ['mysql'],\n requiresField: true,\n supportsDistinct: true,\n },\n {\n name: 'string_agg',\n title: 'STRING_AGG',\n description: 'Concatenates values from multiple rows (PostgreSQL)',\n category: 'string',\n supportedDatabases: ['postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n\n //#region ---- Date Functions ----\n\n {\n name: 'year',\n title: 'YEAR',\n description: 'Extracts the year from a date',\n category: 'date',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'month',\n title: 'MONTH',\n description: 'Extracts the month from a date',\n category: 'date',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'day',\n title: 'DAY',\n description: 'Extracts the day from a date',\n category: 'date',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n\n //#region ---- MongoDB Specific Functions ----\n\n {\n name: 'first',\n title: 'FIRST',\n description: 'Returns the first value in a group (MongoDB $first)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'last',\n title: 'LAST',\n description: 'Returns the last value in a group (MongoDB $last)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'push',\n title: 'PUSH',\n description: 'Creates an array of values (MongoDB $push)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'addToSet',\n title: 'ADD_TO_SET',\n description: 'Creates an array of unique values (MongoDB $addToSet)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n ];\n\n /**\n * Get all aggregate functions\n */\n static getAll(): AXPAggregateFunctionDefinition[] {\n return [...this.functions];\n }\n\n /**\n * Get functions by category\n */\n static getByCategory(category: AXPAggregateCategory): AXPAggregateFunctionDefinition[] {\n return this.functions.filter(f => f.category === category);\n }\n\n /**\n * Get functions by database support\n */\n static getByDatabase(database: AXPDatabaseType): AXPAggregateFunctionDefinition[] {\n return this.functions.filter(f => \n f.supportedDatabases.includes('all') || \n f.supportedDatabases.includes(database) ||\n (database === 'sql' && f.supportedDatabases.some(db => ['sql', 'mysql', 'postgresql'].includes(db))) ||\n (database === 'nosql' && f.supportedDatabases.some(db => ['nosql', 'mongodb'].includes(db)))\n );\n }\n\n /**\n * Get functions filtered by category and/or database\n */\n static getFiltered(options: {\n category?: AXPAggregateCategory;\n database?: AXPDatabaseType;\n search?: string;\n }): AXPAggregateFunctionDefinition[] {\n let result = this.functions;\n\n if (options.category) {\n result = result.filter(f => f.category === options.category);\n }\n\n if (options.database) {\n result = result.filter(f => \n f.supportedDatabases.includes('all') || \n f.supportedDatabases.includes(options.database!) ||\n (options.database === 'sql' && f.supportedDatabases.some(db => ['sql', 'mysql', 'postgresql'].includes(db))) ||\n (options.database === 'nosql' && f.supportedDatabases.some(db => ['nosql', 'mongodb'].includes(db)))\n );\n }\n\n if (options.search) {\n const searchLower = options.search.toLowerCase();\n result = result.filter(f => \n f.name.toLowerCase().includes(searchLower) ||\n f.title.toLowerCase().includes(searchLower) ||\n f.description?.toLowerCase().includes(searchLower)\n );\n }\n\n return result;\n }\n\n /**\n * Get function by name\n */\n static getByName(name: string): AXPAggregateFunctionDefinition | undefined {\n return this.functions.find(f => f.name === name);\n }\n\n /**\n * Get all categories\n */\n static getCategories(): AXPAggregateCategory[] {\n return ['statistical', 'mathematical', 'string', 'date', 'custom'];\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport {\n AXPAggregateFunctionProvider,\n AXPAggregateFunctionDefinition,\n AXPDatabaseType,\n AXPAggregateCategory,\n AXP_AGGREGATE_FUNCTION_PROVIDER,\n} from './aggregate-function.provider';\nimport { AXPAggregateFunctionsRegistry } from './aggregate-functions.registry';\n\n/**\n * Default Aggregate Function Provider\n * \n * Provides the standard set of aggregate functions defined in the registry.\n * This is the default provider that includes all built-in aggregate functions\n * (SUM, AVG, COUNT, MIN, MAX, CONCAT, etc.).\n * \n * This provider is automatically registered and provides the base set of\n * aggregate functions. Additional providers can be registered to extend\n * this functionality.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDefaultAggregateFunctionProvider implements AXPAggregateFunctionProvider {\n /**\n * Get list of aggregate functions\n * \n * @param databaseType - Optional database type filter\n * @returns Promise that resolves to array of aggregate function definitions\n */\n async getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]> {\n const allFunctions = AXPAggregateFunctionsRegistry.getAll();\n\n // If no database type filter, return all functions\n if (!databaseType || databaseType === 'all') {\n return allFunctions;\n }\n\n // Filter by database type\n return allFunctions.filter(func => func.supportedDatabases.includes(databaseType));\n }\n\n /**\n * Get a single aggregate function by name\n * \n * @param name - Function name/identifier\n * @returns Promise that resolves to function definition or undefined\n */\n async getByName(name: string): Promise<AXPAggregateFunctionDefinition | undefined> {\n return AXPAggregateFunctionsRegistry.getByName(name);\n }\n\n /**\n * Get all unique categories available\n * \n * @returns Promise that resolves to array of category names\n */\n async getCategories(): Promise<AXPAggregateCategory[]> {\n return AXPAggregateFunctionsRegistry.getCategories();\n }\n\n getMaxNestingDepth(): number {\n return 3; // Default: allow up to 3 levels of nesting\n }\n}\n\n/**\n * Default Aggregate Function Provider Registration\n * \n * This constant can be used in module providers to register the default provider:\n * \n * ```typescript\n * @NgModule({\n * providers: [\n * AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER,\n * ],\n * })\n * ```\n */\nexport const AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER = {\n provide: AXP_AGGREGATE_FUNCTION_PROVIDER,\n useClass: AXMDefaultAggregateFunctionProvider,\n multi: true,\n};\n\n","import { Injectable } from '@angular/core';\nimport { AXPAggregateCategory } from '../query-builder.types';\nimport {\n AXPAggregateCategoryDefinition,\n AXPAggregateCategoryProvider,\n AXP_AGGREGATE_CATEGORY_PROVIDER,\n} from './aggregate-category.provider';\nimport { AXPAggregateFunctionsRegistry } from './aggregate-functions.registry';\n\n//#region ---- Default Aggregate Category Provider ----\n\n/**\n * Default Aggregate Category Provider\n *\n * Provides the standard set of aggregate categories used by the built‑in\n * aggregate functions. Other modules can extend or override these categories\n * by registering additional providers for `AXP_AGGREGATE_CATEGORY_PROVIDER`.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDefaultAggregateCategoryProvider implements AXPAggregateCategoryProvider {\n //#region ---- Cached Categories ----\n\n private readonly categories: AXPAggregateCategoryDefinition[] = AXPAggregateFunctionsRegistry\n .getCategories()\n .map((name, index) => ({\n name,\n title: this.getTitle(name),\n description: this.getDescription(name),\n order: index,\n }));\n\n //#endregion\n\n //#region ---- Public API ----\n\n async getList(): Promise<AXPAggregateCategoryDefinition[]> {\n return this.categories;\n }\n\n async getByName(name: AXPAggregateCategory): Promise<AXPAggregateCategoryDefinition | undefined> {\n return this.categories.find(cat => cat.name === name);\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private getTitle(name: AXPAggregateCategory): string {\n switch (name) {\n case 'statistical':\n return 'Statistical';\n case 'mathematical':\n return 'Mathematical';\n case 'string':\n return 'String';\n case 'date':\n return 'Date';\n case 'custom':\n return 'Custom';\n default:\n // Fallback: use raw name\n return name;\n }\n }\n\n private getDescription(name: AXPAggregateCategory): string | undefined {\n switch (name) {\n case 'statistical':\n return 'Standard statistical aggregate functions';\n case 'mathematical':\n return 'Mathematical and numeric aggregate functions';\n case 'string':\n return 'String and text aggregate functions';\n case 'date':\n return 'Date and time aggregate functions';\n case 'custom':\n return 'Custom or extension aggregate functions';\n default:\n return undefined;\n }\n }\n\n //#endregion\n}\n\n//#region ---- Default Provider Registration ----\n\nexport const AXP_DEFAULT_AGGREGATE_CATEGORY_PROVIDER = {\n provide: AXP_AGGREGATE_CATEGORY_PROVIDER,\n useClass: AXMDefaultAggregateCategoryProvider,\n multi: true,\n};\n\n//#endregion\n\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPQueryBuilderData } from './query-builder.types';\n\n/**\n * Database Type Definition\n * Defines a database type with its properties and capabilities\n */\nexport interface AXPDatabaseTypeDefinition {\n /**\n * Unique identifier for the database type (e.g., 'mysql', 'postgresql', 'mongodb')\n */\n name: string;\n\n /**\n * Display title (e.g., 'MySQL', 'PostgreSQL', 'MongoDB')\n */\n title: string;\n\n /**\n * Description of the database type\n */\n description: string;\n\n /**\n * SQL identifier escape character (e.g., '`' for MySQL, '\"' for PostgreSQL)\n */\n identifierQuote: string;\n\n /**\n * Whether this database supports SQL syntax\n */\n supportsSql: boolean;\n\n /**\n * Whether this database is NoSQL\n */\n isNoSql: boolean;\n}\n\n/**\n * Database Type Provider Token\n */\nexport type AXPDatabaseTypeProviderToken =\n | AXPDatabaseTypeProvider\n | Promise<AXPDatabaseTypeProvider>;\n\n/**\n * Injection token for database type providers\n */\nexport const AXP_DATABASE_TYPE_PROVIDER = new InjectionToken<AXPDatabaseTypeProviderToken[]>(\n 'AXP_DATABASE_TYPE_PROVIDER',\n {\n factory: () => [],\n }\n);\n\n/**\n * Database Type Provider Interface\n * \n * Allows modules to provide custom database types and their conversion/validation logic.\n */\nexport interface AXPDatabaseTypeProvider {\n /**\n * Get list of all database types\n */\n getTypes(): Promise<AXPDatabaseTypeDefinition[]>;\n\n /**\n * Get a single database type by name\n */\n getByName(name: string): Promise<AXPDatabaseTypeDefinition | undefined>;\n\n /**\n * Escape SQL identifier for the given database type\n */\n escapeIdentifier(identifier: string, databaseType: string): string;\n\n /**\n * Escape SQL value for the given database type\n */\n escapeValue(value: unknown, databaseType: string): string;\n\n /**\n * Convert operator type to SQL operator for the given database type\n */\n convertOperatorToSql(operatorType: string, databaseType: string): string;\n\n /**\n * Validate SQL query syntax for the given database type\n */\n validateQuery(sql: string, databaseType: string): { valid: boolean; error?: string };\n\n /**\n * Convert QueryBuilderData model to query string (SQL or JSON for NoSQL)\n * \n * @param queryData - The structured query builder data model\n * @param databaseType - Target database type\n * @returns Promise that resolves to query string (SQL for SQL databases, JSON string for MongoDB)\n */\n toQuery(queryData: AXPQueryBuilderData, databaseType: string): Promise<string>;\n\n /**\n * Parse query string (SQL or JSON) back to QueryBuilderData model\n * \n * @param query - The query string (SQL or JSON)\n * @param databaseType - Source database type\n * @returns Promise that resolves to partial QueryBuilderData model\n */\n fromQuery(query: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>>;\n}\n\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXPDatabaseTypeProvider,\n AXPDatabaseTypeDefinition,\n AXP_DATABASE_TYPE_PROVIDER,\n} from '../database-type.provider';\nimport { AXPQueryBuilderData } from '../query-builder.types';\n\n//#endregion\n\n/**\n * Database Type Service\n * \n * Aggregates database types from all registered providers and provides a unified API\n * for accessing database type definitions and conversion/validation logic.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPDatabaseTypeService {\n //#region ---- Providers & Caches ----\n\n private readonly providers = inject(AXP_DATABASE_TYPE_PROVIDER, { optional: true }) || [];\n\n //#endregion\n\n //#region ---- Cache Storage ----\n\n /** Cache for all database types */\n private typesCache: AXPDatabaseTypeDefinition[] | null = null;\n\n /** Cache for types by name */\n private typesByName = new Map<string, AXPDatabaseTypeDefinition>();\n\n /** Pending requests */\n private pendingTypesRequest: Promise<AXPDatabaseTypeDefinition[]> | null = null;\n private pendingTypeRequests = new Map<string, Promise<AXPDatabaseTypeDefinition | undefined>>();\n\n //#endregion\n\n //#region ---- Public API: Types ----\n\n /**\n * Get all database types\n */\n async getTypes(): Promise<AXPDatabaseTypeDefinition[]> {\n if (this.typesCache !== null) {\n return this.typesCache;\n }\n\n if (this.pendingTypesRequest) {\n return this.pendingTypesRequest;\n }\n\n this.pendingTypesRequest = this.loadTypesFromProviders();\n const result = await this.pendingTypesRequest;\n this.pendingTypesRequest = null;\n return result;\n }\n\n /**\n * Get single database type by name\n */\n async getByName(name: string): Promise<AXPDatabaseTypeDefinition | undefined> {\n if (this.typesByName.has(name)) {\n return this.typesByName.get(name);\n }\n\n if (this.pendingTypeRequests.has(name)) {\n return this.pendingTypeRequests.get(name)!;\n }\n\n const requestPromise = this.loadTypeFromProviders(name);\n this.pendingTypeRequests.set(name, requestPromise);\n\n return requestPromise;\n }\n\n //#endregion\n\n //#region ---- Public API: Conversion & Validation ----\n\n /**\n * Escape SQL identifier for the given database type\n */\n async escapeIdentifier(identifier: string, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.escapeIdentifier === 'function') {\n try {\n return p.value.escapeIdentifier(identifier, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: no escaping\n return identifier;\n }\n\n /**\n * Escape SQL value for the given database type\n */\n async escapeValue(value: unknown, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.escapeValue === 'function') {\n try {\n return p.value.escapeValue(value, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: basic escaping\n if (value === null || value === undefined) {\n return 'NULL';\n }\n if (typeof value === 'string') {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n return String(value);\n }\n\n /**\n * Convert operator type to SQL operator\n */\n async convertOperatorToSql(operatorType: string, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.convertOperatorToSql === 'function') {\n try {\n return p.value.convertOperatorToSql(operatorType, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: default operator\n return '=';\n }\n\n /**\n * Validate SQL query syntax\n */\n async validateQuery(sql: string, databaseType: string): Promise<{ valid: boolean; error?: string }> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.validateQuery === 'function') {\n try {\n return p.value.validateQuery(sql, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: basic validation\n if (!sql || !sql.trim()) {\n return { valid: false, error: 'Query is empty' };\n }\n return { valid: true };\n }\n\n /**\n * Convert QueryBuilderData model to query string (SQL or JSON for NoSQL)\n * \n * @param queryData - The structured query builder data model\n * @param databaseType - Target database type\n * @returns Promise that resolves to query string\n */\n async toQuery(queryData: AXPQueryBuilderData, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.toQuery === 'function') {\n try {\n return await p.value.toQuery(queryData, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n throw new Error(`No provider found that supports toQuery for database type: ${databaseType}`);\n }\n\n /**\n * Parse query string (SQL or JSON) back to QueryBuilderData model\n * \n * @param query - The query string (SQL or JSON)\n * @param databaseType - Source database type\n * @returns Promise that resolves to partial QueryBuilderData model\n */\n async fromQuery(query: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.fromQuery === 'function') {\n try {\n return await p.value.fromQuery(query, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: return empty structure\n return {\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n }\n\n //#endregion\n\n //#region ---- Private: Data Loading ----\n\n private async loadTypesFromProviders(): Promise<AXPDatabaseTypeDefinition[]> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n const allTypes: AXPDatabaseTypeDefinition[] = [];\n const seenNames = new Set<string>();\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getTypes === 'function') {\n try {\n const types = await p.value.getTypes();\n if (Array.isArray(types)) {\n for (const type of types) {\n if (!seenNames.has(type.name)) {\n seenNames.add(type.name);\n allTypes.push(type);\n }\n }\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n this.typesCache = allTypes;\n allTypes.forEach(type => this.typesByName.set(type.name, type));\n\n return allTypes;\n }\n\n private async loadTypeFromProviders(name: string): Promise<AXPDatabaseTypeDefinition | undefined> {\n try {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getByName === 'function') {\n try {\n const result = await p.value.getByName(name);\n if (result) {\n this.typesByName.set(name, result);\n return result;\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n // Fallback: search in cache\n if (this.typesCache) {\n const found = this.typesCache.find(t => t.name === name);\n if (found) {\n this.typesByName.set(name, found);\n return found;\n }\n }\n\n return undefined;\n } finally {\n this.pendingTypeRequests.delete(name);\n }\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n clearCache(): void {\n this.typesCache = null;\n this.typesByName.clear();\n this.pendingTypesRequest = null;\n this.pendingTypeRequests.clear();\n }\n\n //#endregion\n}\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPDatabaseTypeService } from '../database-type/database-type.service';\nimport { AXPDatabaseTypeDefinition } from '../database-type.provider';\n\n/**\n * Raw Query Builder Component\n * \n * Provides a text area for writing raw SQL/queries with:\n * - Query language selector (MySQL, PostgreSQL, MongoDB, etc.)\n * - Syntax validation with error highlighting\n * - Two-way sync with structured query builder\n */\n@Component({\n selector: 'axp-raw-query-builder',\n templateUrl: './raw-query-builder.component.html',\n styleUrl: './raw-query-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXTextAreaModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPRawQueryBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly databaseTypeService = inject(AXPDatabaseTypeService);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current raw query string\n */\n value = input<string>('');\n\n /**\n * Current query language (database type name)\n */\n queryLanguage = input<string>('mysql');\n\n /**\n * Emitted when raw query changes\n */\n valueChange = output<string>();\n\n /**\n * Emitted when query language changes\n */\n queryLanguageChange = output<string>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected rawQuery = signal<string>('');\n protected selectedLanguage = signal<string>('mysql');\n protected validationError = signal<string | null>(null);\n protected isValid = computed(() => !this.validationError());\n protected databaseTypes = signal<Array<{ value: string; text: string }>>([]);\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Available query languages (loaded from database type service)\n */\n protected queryLanguageDataSource = signal<AXDataSource<{ value: string; text: string } | null>>(\n new AXDataSource<{ value: string; text: string } | null>({\n load: () => Promise.resolve({ items: [], total: 0 }),\n byKey: () => Promise.resolve(null),\n pageSize: 100,\n key: 'value',\n })\n );\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Load database types\n this.loadDatabaseTypes();\n\n // Initialize from inputs\n this.rawQuery.set(this.value());\n this.selectedLanguage.set(this.queryLanguage());\n\n // Sync with external value changes\n effect(() => {\n const val = this.value();\n if (val !== this.rawQuery()) {\n this.rawQuery.set(val);\n this.validateQuery(val).catch(() => {\n // Ignore validation errors in effect\n });\n }\n });\n\n effect(() => {\n const lang = this.queryLanguage();\n if (lang !== this.selectedLanguage()) {\n this.selectedLanguage.set(lang);\n // Re-validate query with new language\n this.validateQuery(this.rawQuery()).catch(() => {\n // Ignore validation errors\n });\n }\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handle raw query text change\n */\n protected onQueryChange(query: string): void {\n this.rawQuery.set(query);\n this.validateQuery(query).catch(() => {\n // Ignore validation errors\n });\n this.valueChange.emit(query);\n }\n\n /**\n * Load database types from service\n */\n private async loadDatabaseTypes(): Promise<void> {\n const types = await this.databaseTypeService.getTypes();\n const typeItems = types.map((t: AXPDatabaseTypeDefinition) => ({\n value: t.name,\n text: t.title,\n }));\n this.databaseTypes.set(typeItems);\n \n // Update data source\n this.queryLanguageDataSource.set(\n new AXDataSource<{ value: string; text: string } | null>({\n load: () => {\n return Promise.resolve({\n items: typeItems,\n total: typeItems.length,\n });\n },\n byKey: (key: unknown) => {\n const lang = typeItems.find(l => l.value === key);\n return Promise.resolve(lang || null);\n },\n pageSize: 100,\n key: 'value',\n })\n );\n }\n\n /**\n * Handle query language change\n */\n protected onLanguageChange(language: string): void {\n this.selectedLanguage.set(language);\n this.queryLanguageChange.emit(language);\n }\n\n /**\n * Validate SQL query syntax using database type service\n */\n protected async validateQuery(query: string): Promise<void> {\n if (!query || query.trim().length === 0) {\n this.validationError.set(null);\n return;\n }\n\n const databaseType = this.selectedLanguage();\n const result = await this.databaseTypeService.validateQuery(query, databaseType);\n\n if (result.valid) {\n this.validationError.set(null);\n } else {\n this.validationError.set(result.error || 'Invalid query syntax');\n }\n }\n\n /**\n * Format/beautify the query\n */\n protected formatQuery(): void {\n const query = this.rawQuery();\n if (!query) {\n return;\n }\n\n // Basic formatting: normalize whitespace\n let formatted = query\n .replace(/\\s+/g, ' ') // Replace multiple spaces with single space\n .replace(/\\s*,\\s*/g, ', ') // Normalize comma spacing\n .replace(/\\s*\\(\\s*/g, ' (') // Normalize opening parentheses\n .replace(/\\s*\\)\\s*/g, ') ') // Normalize closing parentheses\n .trim();\n\n // Add line breaks for major SQL keywords\n const keywords = ['SELECT', 'FROM', 'WHERE', 'GROUP BY', 'ORDER BY', 'HAVING', 'LIMIT'];\n for (const keyword of keywords) {\n const regex = new RegExp(`\\\\s+${keyword}\\\\s+`, 'gi');\n formatted = formatted.replace(regex, `\\n${keyword} `);\n }\n\n this.rawQuery.set(formatted);\n this.onQueryChange(formatted);\n }\n\n /**\n * Clear the query\n */\n protected clearQuery(): void {\n this.rawQuery.set('');\n this.validationError.set(null);\n this.valueChange.emit('');\n }\n\n //#endregion\n}\n\n","<div class=\"axp-raw-query-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.title' | translate | async) || 'Raw Query' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.format-query.title' | translate | async) || 'Format'\"\n (onClick)=\"formatQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-code\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'danger'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear.title' | translate | async) || 'Clear'\"\n (onClick)=\"clearQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Query Language Selector -->\n <div class=\"__language-selector\">\n <ax-select-box\n class=\"__language-filter\"\n [dataSource]=\"queryLanguageDataSource()\"\n [ngModel]=\"selectedLanguage()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.language-placeholder' | translate | async) || 'Select query language'\">\n </ax-select-box>\n </div>\n\n <!-- Query Editor -->\n <div class=\"__query-editor\">\n <ax-text-area\n class=\"__query-textarea\"\n [ngModel]=\"rawQuery()\"\n (ngModelChange)=\"onQueryChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.placeholder' | translate | async) || 'Enter your raw SQL query here...'\"\n [rows]=\"15\"\n [class.__error]=\"!isValid()\">\n </ax-text-area>\n \n @if (!isValid() && validationError()) {\n <div class=\"__validation-error\">\n <ax-label class=\"__error-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"ax-text-danger-500\"></ax-icon>\n {{ validationError() }}\n </ax-label>\n </div>\n }\n </div>\n\n <!-- Help Text -->\n <div class=\"__help-text\">\n <ax-label class=\"__help-label\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.help-text' | translate | async) || 'Write your query in ' + selectedLanguage().toUpperCase() + ' syntax. Changes here will sync with the structured query builder.' }}\n </ax-label>\n </div>\n</div>\n\n","import { ChangeDetectionStrategy, Component, effect, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPQueryOutputType } from '../../../entities/query/query.types';\n\n//#region ---- Types ----\n\n//#endregion\n\n/**\n * Output Builder Component\n * \n * Allows users to select the expected output type for the query result:\n * - value: Single value result (e.g., COUNT, SUM, AVG)\n * - table: Table result with items array and total\n * - object: Custom object structure\n */\n@Component({\n selector: 'axp-output-builder',\n templateUrl: './output-builder.component.html',\n styleUrl: './output-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXLabelModule,\n AXTranslationModule,\n ],\n})\nexport class AXPOutputBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current output type value\n */\n value = input<AXPQueryOutputType | undefined>(undefined);\n\n /**\n * Emitted when output type changes\n */\n valueChange = output<AXPQueryOutputType>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n /**\n * Internal value for ngModel binding\n */\n protected readonly internalValue = signal<AXPQueryOutputType>('table');\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Available output types\n */\n protected readonly outputTypes = [\n {\n value: 'value' as AXPQueryOutputType,\n text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.value.title',\n description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.value.description',\n },\n {\n value: 'table' as AXPQueryOutputType,\n text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.table.title',\n description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.table.description',\n },\n {\n value: 'object' as AXPQueryOutputType,\n text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.object.title',\n description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.object.description',\n },\n ];\n\n //#endregion\n\n //#region ---- Lifecycle Hooks ----\n\n constructor() {\n // Sync input value to internal signal\n effect(() => {\n const inputValue = this.value();\n if (inputValue !== undefined && inputValue !== this.internalValue()) {\n this.internalValue.set(inputValue);\n }\n });\n\n // Initialize with default if no value provided\n if (!this.value()) {\n this.internalValue.set('table');\n } else {\n this.internalValue.set(this.value()!);\n }\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle output type selection change\n */\n protected onOutputTypeChange(value: AXPQueryOutputType): void {\n this.internalValue.set(value);\n this.valueChange.emit(value);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-output-builder\">\n <div class=\"__section\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.title' | translate | async) || 'Output Type' }}\n </ax-label>\n <ax-label class=\"__section-description\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.description' | translate | async) || 'Select the expected structure of the query result' }}\n </ax-label>\n </div>\n\n <div class=\"__content\">\n <ax-select-box\n [ngModel]=\"internalValue()\"\n (ngModelChange)=\"onOutputTypeChange($event)\"\n [dataSource]=\"outputTypes\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.output.placeholder' | translate | async) || 'Select output type'\">\n </ax-select-box>\n </div>\n</div>\n\n","import { AXTabsModule } from '@acorex/components/tabs';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPDataSourceDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, output, signal, untracked } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXPWhereBuilderComponent } from './where/where-builder.component';\nimport { AXPColumnsBuilderComponent } from './columns/columns-builder.component';\nimport { AXPSortBuilderComponent } from './sort/sort-builder.component';\nimport { AXPGroupByBuilderComponent } from './group-by/group-by-builder.component';\nimport { AXPAggregateBuilderComponent } from './aggregate';\nimport { AXPRawQueryBuilderComponent } from './raw-query/raw-query-builder.component';\nimport { AXPOutputBuilderComponent } from './output';\nimport { AXPQueryBuilderData } from './query-builder.types';\nimport { AXPQueryOutputType } from '../../entities/query/query.types';\nimport { AXPDatabaseTypeService } from './database-type/database-type.service';\nimport { inject } from '@angular/core';\n\n//#region ---- Types ----\n\n//#endregion\n\n/**\n * Full Query Builder Component\n * \n * Provides a complete query builder interface with:\n * - Columns: Multi-select from datasource columns\n * - Where: WHERE clause builder (groups + conditions)\n * - Sort: Sort rules with field and direction\n * - Group By: Multi-select from datasource columns\n * \n * Receives AXPDataSourceDefinition as input and distributes data to child components.\n */\n@Component({\n selector: 'axp-query-builder',\n templateUrl: './query-builder.component.html',\n styleUrl: './query-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTabsModule,\n AXLabelModule,\n AXDecoratorModule,\n AXPWhereBuilderComponent,\n AXPColumnsBuilderComponent,\n AXPSortBuilderComponent,\n AXPGroupByBuilderComponent,\n AXPAggregateBuilderComponent,\n AXPRawQueryBuilderComponent,\n AXPOutputBuilderComponent,\n AXTranslationModule,\n ],\n})\nexport class AXPQueryBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly databaseTypeService = inject(AXPDatabaseTypeService);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current query builder value\n */\n value = input<AXPQueryBuilderData>({\n dataSource: undefined,\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n });\n\n /**\n * Datasource definition containing columns and filters\n */\n dataSourceDefinition = input<AXPDataSourceDefinition | undefined>(undefined);\n\n /**\n * Emitted when query structure changes\n */\n valueChange = output<AXPQueryBuilderData>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected queryData = signal<AXPQueryBuilderData>({\n dataSource: undefined,\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n rawQuery: undefined,\n queryLanguage: 'mysql',\n });\n\n protected activeTab = signal<number>(0);\n protected isRawMode = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Extract columns from datasource definition\n */\n protected readonly columns = computed(() => {\n const def = this.dataSourceDefinition();\n return def?.columns || [];\n });\n\n /**\n * Extract filter definitions from datasource definition\n */\n protected readonly filterDefinitions = computed(() => {\n const def = this.dataSourceDefinition();\n return def?.filters || [];\n });\n\n /**\n * Validation warnings/errors for query builder\n */\n protected readonly validationWarnings = computed(() => {\n const data = this.queryData();\n const warnings: string[] = [];\n\n // Check aggregate functions usage\n const hasAggregates = data.aggregates && data.aggregates.length > 0;\n const hasGroupBy = data.groupBy && data.groupBy.length > 0;\n\n // Warning: Aggregate functions are typically used with GROUP BY\n if (hasAggregates && !hasGroupBy) {\n warnings.push('@data-management:metadata-definitions.components.query-builder.validation.aggregate-without-group-by');\n }\n\n // Warning: GROUP BY without aggregates might be unnecessary\n if (hasGroupBy && !hasAggregates) {\n warnings.push('@data-management:metadata-definitions.components.query-builder.validation.group-by-without-aggregate');\n }\n\n // Warning: If aggregates are used, columns in SELECT should be either in GROUP BY or be aggregates\n if (hasAggregates && data.columns.length > 0 && !hasGroupBy) {\n warnings.push('@data-management:metadata-definitions.components.query-builder.validation.aggregate-columns-warning');\n }\n\n return warnings;\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Initialize from input value\n const initialValue = this.value();\n this.queryData.set({\n ...initialValue,\n rawQuery: initialValue.rawQuery || '',\n queryLanguage: initialValue.queryLanguage || 'mysql',\n });\n\n // Sync with external value changes\n effect(() => {\n const val = this.value();\n if (val) {\n // Only update if not in raw mode to avoid circular updates\n if (!this.isRawMode()) {\n this.queryData.set({\n ...val,\n rawQuery: val.rawQuery || '',\n queryLanguage: val.queryLanguage || 'mysql',\n });\n }\n }\n });\n\n // Track last generated SQL to prevent infinite loops\n let lastGeneratedSql = '';\n\n // Watch for tab changes to sync raw query\n effect(() => {\n const tab = this.activeTab();\n \n // When switching to RAW tab, generate SQL from structured query\n if (tab === 6) {\n const data = untracked(() => this.queryData());\n const isRaw = untracked(() => this.isRawMode());\n \n // Always regenerate SQL when switching to RAW tab (unless in raw mode)\n if (!isRaw) {\n this.databaseTypeService.toQuery(data, data.queryLanguage || 'mysql').then(sql => {\n if (sql !== lastGeneratedSql) {\n lastGeneratedSql = sql;\n untracked(() => {\n this.queryData.update(d => ({ ...d, rawQuery: sql }));\n });\n }\n });\n }\n }\n \n // When switching away from RAW tab, reset raw mode flag\n if (tab !== 6) {\n const isRaw = untracked(() => this.isRawMode());\n if (isRaw) {\n untracked(() => {\n this.isRawMode.set(false);\n });\n }\n }\n });\n\n // Watch for structured query changes to auto-update RAW query (when not in raw mode)\n // Use computed to track only structured parts (exclude rawQuery to avoid circular updates)\n const structuredQuery = computed(() => {\n const data = this.queryData();\n return {\n dataSource: data.dataSource,\n columns: data.columns,\n where: data.where,\n sort: data.sort,\n groupBy: data.groupBy,\n aggregates: data.aggregates,\n queryLanguage: data.queryLanguage || 'mysql',\n };\n });\n\n effect(() => {\n const structured = structuredQuery();\n const isRaw = untracked(() => this.isRawMode());\n const currentLanguage = untracked(() => this.queryData().queryLanguage || 'mysql');\n \n // Only auto-update RAW query if not in raw mode (user hasn't manually edited RAW)\n if (!isRaw) {\n this.databaseTypeService.toQuery(structured, structured.queryLanguage).then(query => {\n // Only update if different to avoid infinite loops\n if (query !== lastGeneratedSql) {\n lastGeneratedSql = query;\n untracked(() => {\n const currentData = this.queryData();\n if (query !== currentData.rawQuery) {\n this.queryData.update(d => ({ ...d, rawQuery: query }));\n }\n });\n }\n });\n }\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Update columns selection\n */\n protected onColumnsChange(selectedColumns: string[]): void {\n this.queryData.update(data => ({\n ...data,\n columns: selectedColumns || [],\n }));\n this.updateValue();\n }\n\n /**\n * Update WHERE clause\n */\n protected onWhereChange(where: AXPQueryBuilderData['where']): void {\n this.queryData.update(data => ({\n ...data,\n where,\n }));\n this.updateValue();\n }\n\n /**\n * Update sort rules\n */\n protected onSortChange(sort: AXPQueryBuilderData['sort']): void {\n this.queryData.update(data => ({\n ...data,\n sort,\n }));\n this.updateValue();\n }\n\n /**\n * Update group by selection\n */\n protected onGroupByChange(selectedColumns: string[]): void {\n this.queryData.update(data => ({\n ...data,\n groupBy: selectedColumns || [],\n }));\n this.updateValue();\n }\n\n /**\n * Update aggregate operations\n */\n protected onAggregatesChange(aggregates: AXPQueryBuilderData['aggregates']): void {\n this.queryData.update(data => ({\n ...data,\n aggregates: aggregates || [],\n }));\n this.updateValue();\n }\n\n /**\n * Update raw query\n */\n protected onRawQueryChange(rawQuery: string): void {\n this.isRawMode.set(true);\n this.queryData.update(data => ({\n ...data,\n rawQuery,\n }));\n this.updateValue();\n }\n\n /**\n * Update query language\n */\n protected async onQueryLanguageChange(language: string): Promise<void> {\n // Update query language\n this.queryData.update(data => ({\n ...data,\n queryLanguage: language,\n }));\n\n // Regenerate query with new language\n const data = this.queryData();\n const query = await this.databaseTypeService.toQuery(data, language);\n this.queryData.update(d => ({ ...d, rawQuery: query }));\n \n this.updateValue();\n }\n\n /**\n * Update output type\n */\n protected onOutputTypeChange(outputType: AXPQueryOutputType): void {\n this.queryData.update(data => ({\n ...data,\n outputType: outputType,\n }));\n this.updateValue();\n }\n\n /**\n * Generate SQL from structured query\n */\n protected async generateSqlFromStructured(): Promise<void> {\n const data = this.queryData();\n const sql = await this.databaseTypeService.toQuery(data, data.queryLanguage || 'mysql');\n this.queryData.update(d => ({ ...d, rawQuery: sql }));\n this.isRawMode.set(false);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private updateValue(): void {\n const currentData = this.queryData();\n this.valueChange.emit(currentData);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-query-builder\">\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"activeTab.set($event.index)\">\n <!-- Columns Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.columns.title' | translate | async) || 'Columns'\">\n </ax-tab-item>\n\n <!-- Where Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.where.title' | translate | async) || 'Where'\">\n </ax-tab-item>\n\n <!-- Sort Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.sort.title' | translate | async) || 'Sort'\">\n </ax-tab-item>\n\n <!-- Group By Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.group-by.title' | translate | async) || 'Group By'\">\n </ax-tab-item>\n\n <!-- Aggregate Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.aggregate.title' | translate | async) || 'Aggregate'\">\n </ax-tab-item>\n\n <!-- Output Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.output.title' | translate | async) || 'Output'\">\n </ax-tab-item>\n\n <!-- Raw Query Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.raw.title' | translate | async) || 'Raw Query'\">\n </ax-tab-item>\n </ax-tabs>\n\n <!-- Validation Warnings -->\n @if (validationWarnings().length > 0) {\n <div class=\"__validation-warnings\">\n @for (warning of validationWarnings(); track $index) {\n <div class=\"__warning-item\">\n <ax-label class=\"__warning-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"ax-text-warning-500\"></ax-icon>\n {{ (warning | translate | async) || warning }}\n </ax-label>\n </div>\n }\n </div>\n }\n\n <div class=\"__content\">\n <!-- Columns Section -->\n @if (activeTab() === 0) {\n <axp-columns-builder\n [columns]=\"columns()\"\n [value]=\"queryData().columns\"\n (valueChange)=\"onColumnsChange($event)\">\n </axp-columns-builder>\n }\n\n <!-- Where Section -->\n @if (activeTab() === 1) {\n <axp-where-builder\n [value]=\"queryData().where\"\n [filterDefinitions]=\"filterDefinitions()\"\n (valueChange)=\"onWhereChange($event)\">\n </axp-where-builder>\n }\n\n <!-- Sort Section -->\n @if (activeTab() === 2) {\n <axp-sort-builder\n [columns]=\"columns()\"\n [value]=\"queryData().sort\"\n (valueChange)=\"onSortChange($event)\">\n </axp-sort-builder>\n }\n\n <!-- Group By Section -->\n @if (activeTab() === 3) {\n <axp-group-by-builder\n [columns]=\"columns()\"\n [value]=\"queryData().groupBy\"\n (valueChange)=\"onGroupByChange($event)\">\n </axp-group-by-builder>\n }\n\n <!-- Aggregate Section -->\n @if (activeTab() === 4) {\n <axp-aggregate-builder\n [columns]=\"columns()\"\n [value]=\"queryData().aggregates\"\n (valueChange)=\"onAggregatesChange($event)\">\n </axp-aggregate-builder>\n }\n\n <!-- Output Section -->\n @if (activeTab() === 5) {\n <axp-output-builder\n [value]=\"queryData().outputType\"\n (valueChange)=\"onOutputTypeChange($event)\">\n </axp-output-builder>\n }\n\n <!-- Raw Query Section -->\n @if (activeTab() === 6) {\n <axp-raw-query-builder\n [value]=\"queryData().rawQuery || ''\"\n [queryLanguage]=\"queryData().queryLanguage || 'mysql'\"\n (valueChange)=\"onRawQueryChange($event)\"\n (queryLanguageChange)=\"onQueryLanguageChange($event)\">\n </axp-raw-query-builder>\n }\n </div>\n</div>\n","import { AXPDataSourceDefinition } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport { AXPQueryBuilderComponent } from '../../query-builder/query-builder.component';\nimport { AXPQueryBuilderData } from '../../query-builder/query-builder.types';\n\n//#region ---- Types ----\n\n// Uses AXPQueryBuilderData as root query data type\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-widget-edit',\n template: `\n <axp-query-builder\n [value]=\"getValue() || defaultQueryData\"\n [dataSourceDefinition]=\"dataSourceDefinition()\"\n (valueChange)=\"onValueChange($event)\">\n </axp-query-builder>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXPQueryBuilderComponent\n],\n})\nexport class AXPQueryBuilderWidgetEditComponent extends AXPValueWidgetComponent<AXPQueryBuilderData> {\n //#region ---- Constants ----\n\n /**\n * Default empty query data structure\n */\n protected readonly defaultQueryData: AXPQueryBuilderData = {\n dataSource: undefined,\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Get datasource definition from options (passed from entity context)\n * The entity passes the selected datasource definition via context\n */\n protected readonly dataSourceDefinition = computed<AXPDataSourceDefinition | undefined>(() => {\n const options = this.options();\n \n // Try to get datasource definition from options\n // It can come as 'dataSource' (single) or 'dataSources' (array, take first)\n const dataSource = options['dataSource'] || options['dataSources']?.[0];\n \n if (dataSource && typeof dataSource === 'object') {\n // Check if it has the structure of AXPDataSourceDefinition\n if (dataSource.columns && Array.isArray(dataSource.columns)) {\n return dataSource as AXPDataSourceDefinition;\n }\n }\n\n return undefined;\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from query builder\n */\n onValueChange(data: AXPQueryBuilderData): void {\n this.setValue(data);\n }\n\n //#endregion\n}\n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPFilterClause } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Types ----\n\n// Uses AXPFilterClause as node type and AXPFilterDefinition (root) as value type\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-widget-view',\n template: `\n <div class=\"__query-builder-view\">\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__query-display\">\n <div class=\"__root-group\">\n <div class=\"__group-header\">\n <span class=\"__group-title\">Query ({{ queryData().logic }})</span>\n </div>\n <div class=\"__group-content\">\n @for (item of (queryData().filters || []); track item.id; let i = $index) {\n <div class=\"__query-item\">\n <!-- Logical Operator -->\n @if (i > 0) {\n <div class=\"__item-connector\">\n <span class=\"__operator-badge\">{{ queryData().logic }}</span>\n </div>\n }\n \n <!-- Render Item -->\n @if (item.filters === undefined) {\n <ng-container [ngTemplateOutlet]=\"conditionTemplate\" [ngTemplateOutletContext]=\"{condition: item}\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\" [ngTemplateOutletContext]=\"{group: item}\"></ng-container>\n }\n </div>\n }\n </div>\n </div>\n </div>\n \n <div class=\"__summary\">\n <small class=\"__count\">{{ getTotalItemsCount() }} item(s) total</small>\n </div>\n } @else {\n <axp-state-message icon=\"fa-light fa-filter\" [title]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.title'\"\n [description]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.description'\">\n </axp-state-message>\n }\n </div>\n\n <!-- Templates -->\n <ng-template #conditionTemplate let-condition=\"condition\">\n <div class=\"__condition-display\">\n <span class=\"__field\">{{ condition.field }}</span>\n <span class=\"__operator\">{{ condition.operator.type }}</span>\n <span class=\"__value\">{{ condition.value }}</span>\n </div>\n </ng-template>\n\n <ng-template #groupTemplate let-group=\"group\">\n <div class=\"__group-display\">\n <div class=\"__group-header\">\n <span class=\"__group-title\">Group ({{ group.logic }}) - {{ group.filters?.length ?? 0 }} items</span>\n </div>\n <div class=\"__group-content\">\n @for (item of (group.filters || []); track item.id; let i = $index) {\n <div class=\"__query-item\">\n <!-- Logical Operator -->\n @if (i > 0) {\n <div class=\"__item-connector\">\n <span class=\"__operator-badge\">{{ group.logic }}</span>\n </div>\n }\n \n <!-- Render Item -->\n @if (item.filters === undefined) {\n <ng-container [ngTemplateOutlet]=\"conditionTemplate\" [ngTemplateOutletContext]=\"{condition: item}\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\" [ngTemplateOutletContext]=\"{group: item}\"></ng-container>\n }\n </div>\n }\n </div>\n </div>\n </ng-template>\n `,\n styleUrl: './query-builder-widget-view.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXPStateMessageComponent],\n})\nexport class AXPQueryBuilderWidgetViewComponent extends AXPValueWidgetComponent<AXPFilterClause> {\n\n //#region ---- Computed Properties ----\n\n protected queryData = computed(() => this.getValue() as AXPFilterClause);\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n getTotalItemsCount(): number {\n const countFilters = (filters: AXPFilterClause[] | undefined): number => {\n if (!filters) return 0;\n return filters.reduce((count, filter) => {\n if (filter.filters === undefined) {\n return count + 1;\n } else {\n return count + 1 + countFilters(filter.filters);\n }\n }, 0);\n };\n\n const data = this.queryData();\n return data?.filters ? countFilters(data.filters) : 0;\n }\n\n //#endregion\n}\n\n","\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPFilterClause } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Types ----\n\n// Uses AXPFilterClause as node type and AXPFilterDefinition (root) as value type\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-widget-column',\n template: `\n <div class=\"__query-builder-column\">\n @if ((queryData().filters?.length ?? 0) > 0) {\n <span class=\"__summary\">{{ getTotalItemsCount() }} item(s)</span>\n } @else {\n <axp-state-message icon=\"fa-light fa-filter\" [title]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.title'\"\n [description]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.description'\">\n </axp-state-message>\n }\n </div>\n `,\n styles: [`\n .__query-builder-column {\n @apply ax-text-sm;\n \n .__summary {\n @apply ax-text-blue-600 ax-font-medium;\n }\n \n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPStateMessageComponent],\n})\nexport class AXPQueryBuilderWidgetColumnComponent extends AXPValueWidgetComponent<AXPFilterClause> {\n\n //#region ---- Computed Properties ----\n\n protected queryData = computed(() => this.getValue() as AXPFilterClause);\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n getTotalItemsCount(): number {\n const countFilters = (filters: AXPFilterClause[] | undefined): number => {\n if (!filters) return 0;\n return filters.reduce((count, filter) => {\n if (filter.filters === undefined) {\n return count + 1;\n } else {\n return count + 1 + countFilters(filter.filters);\n }\n }, 0);\n };\n\n const data = this.queryData();\n return data?.filters ? countFilters(data.filters) : 0;\n }\n\n //#endregion\n}\n\n","\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\n@Component({\n selector: 'axp-query-builder-widget-designer',\n template: `\n <div class=\"__query-builder-designer\">\n <div class=\"__preview\">\n <div class=\"__icon\">\n <i class=\"fa-light fa-filter\"></i>\n </div>\n <div class=\"__content\">\n <h4 class=\"__title\">Query Builder</h4>\n <p class=\"__description\">Visual query builder for creating dynamic queries</p>\n </div>\n </div>\n </div>\n `,\n styles: [`\n .__query-builder-designer {\n @apply ax-w-full ax-border-2 ax-border-dashed ax-border-gray-300 ax-rounded-lg ax-p-4;\n \n .__preview {\n @apply ax-flex ax-items-center ax-gap-3;\n \n .__icon {\n @apply ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-bg-blue-100 ax-rounded-lg;\n \n i {\n @apply ax-text-blue-600 ax-text-lg;\n }\n }\n \n .__content {\n .__title {\n @apply ax-text-sm ax-font-semibold ax-text-gray-800 ax-mb-1;\n }\n \n .__description {\n @apply ax-text-xs ax-text-gray-500;\n }\n }\n }\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AXPQueryBuilderWidgetDesignerComponent extends AXPValueWidgetComponent<any> {}\n\n","//#region ---- Re-exports from Entity Types ----\n\n// Re-export query builder types from entity types\nexport type {\n AXPQuerySortRule,\n AXPAggregateOperation,\n AXPQueryBuilderData,\n} from '../../entities/query/query.types';\n\n//#endregion\n\n//#region ---- Query Builder Types ----\n\n/**\n * Aggregate function category\n * Logical category name coming from aggregate providers\n * (e.g., 'statistical', 'string', 'date', 'custom', or any custom category)\n */\nexport type AXPAggregateCategory = string;\n\n/**\n * Database type support\n * Logical database type name coming from providers\n * (e.g., 'mysql', 'postgresql', 'mongodb', 'sql', 'nosql', or any custom type)\n */\nexport type AXPDatabaseType = string;\n\n/**\n * Aggregate function definition\n * Defines an aggregate function with its properties and database support\n */\nexport interface AXPAggregateFunctionDefinition {\n /**\n * Function name/identifier (e.g., 'sum', 'avg', 'count')\n */\n name: string;\n\n /**\n * Display title\n */\n title: string;\n\n /**\n * Description of what the function does\n */\n description?: string;\n\n /**\n * Category for grouping functions\n */\n category: AXPAggregateCategory;\n\n /**\n * Database types that support this function\n * If 'all' is included, the function is universally supported\n */\n supportedDatabases: AXPDatabaseType[];\n\n /**\n * Whether this function requires a field parameter\n * Some functions like COUNT(*) don't require a field\n */\n requiresField: boolean;\n\n /**\n * Whether this function supports DISTINCT modifier\n */\n supportsDistinct?: boolean;\n\n /**\n * Whether this function supports nested aggregates\n * Functions like CONCAT can contain other aggregate functions as parameters\n * Example: CONCAT(MIN(field1), MAX(field2))\n */\n supportsNested?: boolean;\n}\n\n//#endregion\n\n\n","import { Injectable } from '@angular/core';\nimport {\n AXPDatabaseTypeProvider,\n AXPDatabaseTypeDefinition,\n AXP_DATABASE_TYPE_PROVIDER,\n} from '../database-type.provider';\nimport { AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXPQueryBuilderData, AXPQuerySortRule, AXPAggregateOperation } from '../query-builder.types';\n\n/**\n * Default Database Type Provider\n * \n * Provides standard database types (MySQL, PostgreSQL, SQL Server, MongoDB) with\n * their conversion and validation logic.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDefaultDatabaseTypeProvider implements AXPDatabaseTypeProvider {\n private readonly types: AXPDatabaseTypeDefinition[] = [\n {\n name: 'mysql',\n title: 'MySQL',\n description: 'MySQL database server',\n identifierQuote: '`',\n supportsSql: true,\n isNoSql: false,\n },\n {\n name: 'postgresql',\n title: 'PostgreSQL',\n description: 'PostgreSQL database server',\n identifierQuote: '\"',\n supportsSql: true,\n isNoSql: false,\n },\n {\n name: 'sqlserver',\n title: 'SQL Server',\n description: 'Microsoft SQL Server',\n identifierQuote: '\"',\n supportsSql: true,\n isNoSql: false,\n },\n {\n name: 'mongodb',\n title: 'MongoDB',\n description: 'MongoDB NoSQL database',\n identifierQuote: '',\n supportsSql: false,\n isNoSql: true,\n },\n {\n name: 'sqlite',\n title: 'SQLite',\n description: 'SQLite embedded database',\n identifierQuote: '\"',\n supportsSql: true,\n isNoSql: false,\n },\n ];\n\n async getTypes(): Promise<AXPDatabaseTypeDefinition[]> {\n return [...this.types];\n }\n\n async getByName(name: string): Promise<AXPDatabaseTypeDefinition | undefined> {\n return this.types.find(t => t.name === name);\n }\n\n escapeIdentifier(identifier: string, databaseType: string): string {\n const typeDef = this.types.find(t => t.name === databaseType);\n if (!typeDef || !typeDef.identifierQuote) {\n return identifier;\n }\n return `${typeDef.identifierQuote}${identifier}${typeDef.identifierQuote}`;\n }\n\n escapeValue(value: unknown, databaseType: string): string {\n if (value === null || value === undefined) {\n return 'NULL';\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (typeof value === 'string') {\n // Escape single quotes\n const escaped = value.replace(/'/g, \"''\");\n return `'${escaped}'`;\n }\n\n if (Array.isArray(value)) {\n return value.map(v => this.escapeValue(v, databaseType)).join(', ');\n }\n\n // For objects, convert to JSON string\n return `'${JSON.stringify(value).replace(/'/g, \"''\")}'`;\n }\n\n convertOperatorToSql(operatorType: string, databaseType: string): string {\n const operatorMap: Record<string, string> = {\n equal: '=',\n notEqual: '!=',\n lt: '<',\n lte: '<=',\n gt: '>',\n gte: '>=',\n startsWith: 'LIKE',\n endsWith: 'LIKE',\n contains: 'LIKE',\n };\n\n return operatorMap[operatorType] || '=';\n }\n\n validateQuery(sql: string, databaseType: string): { valid: boolean; error?: string } {\n if (!sql || !sql.trim()) {\n return { valid: false, error: 'Query is empty' };\n }\n\n const typeDef = this.types.find(t => t.name === databaseType);\n if (!typeDef) {\n return { valid: false, error: `Unknown database type: ${databaseType}` };\n }\n\n // MongoDB validation (JSON array validation)\n if (databaseType === 'mongodb') {\n try {\n const parsed = JSON.parse(sql);\n if (!Array.isArray(parsed)) {\n return { valid: false, error: 'MongoDB query must be a JSON array (aggregation pipeline)' };\n }\n // Validate pipeline stages\n for (const stage of parsed) {\n if (typeof stage !== 'object' || stage === null) {\n return { valid: false, error: 'Each MongoDB pipeline stage must be an object' };\n }\n const stageKeys = Object.keys(stage);\n if (stageKeys.length === 0) {\n return { valid: false, error: 'MongoDB pipeline stage cannot be empty' };\n }\n }\n return { valid: true };\n } catch (e) {\n return { valid: false, error: `Invalid JSON: ${e instanceof Error ? e.message : 'Unknown error'}` };\n }\n }\n\n // Basic SQL syntax validation\n const trimmed = sql.trim();\n\n // Check for balanced parentheses\n let parenCount = 0;\n for (const char of trimmed) {\n if (char === '(') parenCount++;\n if (char === ')') parenCount--;\n if (parenCount < 0) {\n return { valid: false, error: 'Unbalanced parentheses' };\n }\n }\n if (parenCount !== 0) {\n return { valid: false, error: 'Unbalanced parentheses' };\n }\n\n // Check for balanced quotes (single quotes)\n let inSingleQuote = false;\n let inDoubleQuote = false;\n let inBacktick = false;\n for (let i = 0; i < trimmed.length; i++) {\n const char = trimmed[i];\n const prevChar = i > 0 ? trimmed[i - 1] : '';\n\n if (char === \"'\" && prevChar !== '\\\\' && !inDoubleQuote && !inBacktick) {\n inSingleQuote = !inSingleQuote;\n } else if (char === '\"' && prevChar !== '\\\\' && !inSingleQuote && !inBacktick) {\n inDoubleQuote = !inDoubleQuote;\n } else if (char === '`' && prevChar !== '\\\\' && !inSingleQuote && !inDoubleQuote) {\n inBacktick = !inBacktick;\n }\n }\n if (inSingleQuote || inDoubleQuote || inBacktick) {\n return { valid: false, error: 'Unclosed quotes' };\n }\n\n // Basic SQL keyword validation (for SQL databases)\n if (typeDef.supportsSql) {\n const upperSql = trimmed.toUpperCase();\n const hasSelect = upperSql.includes('SELECT');\n const hasFrom = upperSql.includes('FROM');\n\n if (!hasSelect && !hasFrom) {\n // Allow other SQL statements (INSERT, UPDATE, DELETE, etc.)\n const allowedStatements = ['INSERT', 'UPDATE', 'DELETE', 'CREATE', 'ALTER', 'DROP'];\n const hasAllowedStatement = allowedStatements.some(stmt => upperSql.startsWith(stmt));\n if (!hasAllowedStatement) {\n return { valid: false, error: 'Invalid SQL syntax: Missing SELECT or FROM clause' };\n }\n }\n }\n\n return { valid: true };\n }\n\n async toQuery(queryData: AXPQueryBuilderData, databaseType: string): Promise<string> {\n // Check if it's MongoDB\n if (databaseType === 'mongodb') {\n return this.toMongoDb(queryData);\n }\n\n // SQL databases\n return this.toSql(queryData, databaseType);\n }\n\n async fromQuery(query: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>> {\n // Check if it's MongoDB\n if (databaseType === 'mongodb') {\n return this.fromMongoDb(query);\n }\n\n // SQL databases\n return this.fromSql(query, databaseType);\n }\n\n //#region ---- Private: SQL Conversion ----\n\n /**\n * Convert QueryBuilderData to SQL query string\n */\n private async toSql(queryData: AXPQueryBuilderData, databaseType: string): Promise<string> {\n const parts: string[] = [];\n\n // Build SELECT clause with columns and aggregates\n const selectItems: string[] = [];\n\n // Add regular columns\n if (queryData.columns.length > 0) {\n const columnEscapes = queryData.columns.map(col => this.escapeIdentifier(col, databaseType));\n selectItems.push(...columnEscapes);\n }\n\n // Add aggregate functions\n if (queryData.aggregates.length > 0) {\n const aggregateItems = await Promise.all(\n queryData.aggregates.map(agg => this.convertAggregateToSql(agg, databaseType))\n );\n selectItems.push(...aggregateItems);\n }\n\n // SELECT clause\n if (selectItems.length > 0) {\n parts.push(`SELECT ${selectItems.join(', ')}`);\n } else {\n parts.push('SELECT *');\n }\n\n // FROM clause (if dataSource is provided)\n if (queryData.dataSource) {\n const escapedDataSource = this.escapeIdentifier(queryData.dataSource, databaseType);\n parts.push(`FROM ${escapedDataSource}`);\n } else {\n parts.push('FROM <table_name>');\n }\n\n // WHERE clause\n const whereClause = await this.convertWhereToSql(queryData.where, databaseType);\n if (whereClause) {\n parts.push(`WHERE ${whereClause}`);\n }\n\n // GROUP BY clause\n if (queryData.groupBy.length > 0) {\n const groupByEscapes = queryData.groupBy.map(col => this.escapeIdentifier(col, databaseType));\n const groupByColumns = groupByEscapes.join(', ');\n parts.push(`GROUP BY ${groupByColumns}`);\n }\n\n // ORDER BY clause\n if (queryData.sort.length > 0) {\n const orderByEscapes = queryData.sort.map(sort => {\n const escapedField = this.escapeIdentifier(sort.field, databaseType);\n return `${escapedField} ${sort.dir.toUpperCase()}`;\n });\n const orderByClauses = orderByEscapes.join(', ');\n parts.push(`ORDER BY ${orderByClauses}`);\n }\n\n return parts.join('\\n');\n }\n\n /**\n * Convert WHERE clause (AXPFilterDefinition) to SQL WHERE clause\n */\n private async convertWhereToSql(\n filter: AXPFilterDefinition,\n databaseType: string,\n ): Promise<string | null> {\n if (!filter.filters || filter.filters.length === 0) {\n return null;\n }\n\n const conditionPromises = filter.filters.map(f =>\n this.convertFilterItemToSql(f as AXPFilterDefinition, databaseType)\n );\n const conditions = (await Promise.all(conditionPromises)).filter(\n (c): c is string => c !== null\n );\n\n if (conditions.length === 0) {\n return null;\n }\n\n if (conditions.length === 1) {\n return conditions[0];\n }\n\n const logic = (filter.logic || 'and').toUpperCase();\n return `(${conditions.join(` ${logic} `)})`;\n }\n\n /**\n * Convert a single filter item (condition or group) to SQL condition\n */\n private async convertFilterItemToSql(\n filter: AXPFilterDefinition,\n databaseType: string,\n ): Promise<string | null> {\n // Check if it's a group (has filters array)\n if (filter.filters && filter.filters.length > 0) {\n return this.convertWhereToSql(filter, databaseType);\n }\n\n // It's a condition\n if (!filter.field || filter.value === undefined || filter.value === null || filter.value === '') {\n return null;\n }\n\n const field = this.escapeIdentifier(filter.field, databaseType);\n const operator = this.convertOperatorToSql(filter.operator?.type || 'equal', databaseType);\n const value = this.escapeValue(filter.value, databaseType);\n\n // Handle special operators\n if (filter.operator?.type === 'isNull') {\n return `${field} IS NULL`;\n }\n\n if (filter.operator?.type === 'isEmpty') {\n return `(${field} IS NULL OR ${field} = '')`;\n }\n\n if (filter.operator?.type === 'in' && Array.isArray(filter.value)) {\n const valueEscapes = filter.value.map(v => this.escapeValue(v, databaseType));\n const values = valueEscapes.join(', ');\n return `${field} IN (${values})`;\n }\n\n if (filter.operator?.negative) {\n return `NOT (${field} ${operator} ${value})`;\n }\n\n return `${field} ${operator} ${value}`;\n }\n\n /**\n * Convert aggregate operation to SQL expression\n */\n private async convertAggregateToSql(\n aggregate: AXPAggregateOperation,\n databaseType: string,\n ): Promise<string> {\n const funcName = aggregate.function.toUpperCase();\n let expression = '';\n\n // Handle nested aggregates (e.g., CONCAT(MIN(field1), MAX(field2)))\n if (aggregate.nestedAggregates && aggregate.nestedAggregates.length > 0) {\n const nestedExpressions = await Promise.all(\n aggregate.nestedAggregates.map(nested => this.convertAggregateToSql(nested, databaseType))\n );\n expression = `${funcName}(${nestedExpressions.join(', ')})`;\n } else {\n // Regular aggregate with field\n const fieldExpr = aggregate.field\n ? this.escapeIdentifier(aggregate.field, databaseType)\n : '*';\n \n const distinctModifier = aggregate.distinct ? 'DISTINCT ' : '';\n expression = `${funcName}(${distinctModifier}${fieldExpr})`;\n }\n\n // Add alias if provided\n if (aggregate.alias) {\n const aliasEscaped = this.escapeIdentifier(aggregate.alias, databaseType);\n expression = `${expression} AS ${aliasEscaped}`;\n }\n\n return expression;\n }\n\n /**\n * Parse SQL query back to QueryBuilderData (basic implementation)\n */\n private async fromSql(sql: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>> {\n const result: Partial<AXPQueryBuilderData> = {\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n\n // Basic SELECT parsing\n const selectMatch = sql.match(/SELECT\\s+(.+?)\\s+FROM/i);\n if (selectMatch) {\n const columnsStr = selectMatch[1].trim();\n if (columnsStr !== '*') {\n result.columns = columnsStr\n .split(',')\n .map(col => col.trim().replace(/[`\"]/g, ''));\n }\n }\n\n // Basic ORDER BY parsing\n const orderByMatch = sql.match(/ORDER\\s+BY\\s+(.+?)(?:\\s+LIMIT|$)/i);\n if (orderByMatch) {\n const orderByStr = orderByMatch[1].trim();\n result.sort = orderByStr.split(',').map(sortStr => {\n const parts = sortStr.trim().split(/\\s+/);\n const field = parts[0].replace(/[`\"]/g, '');\n const dir = parts[1]?.toLowerCase() === 'desc' ? 'desc' : 'asc';\n return { field, dir } as AXPQuerySortRule;\n });\n }\n\n // Basic GROUP BY parsing\n const groupByMatch = sql.match(/GROUP\\s+BY\\s+(.+?)(?:\\s+ORDER\\s+BY|\\s+HAVING|$)/i);\n if (groupByMatch) {\n const groupByStr = groupByMatch[1].trim();\n result.groupBy = groupByStr\n .split(',')\n .map(col => col.trim().replace(/[`\"]/g, ''));\n }\n\n return result;\n }\n\n //#endregion\n\n //#region ---- Private: MongoDB Conversion ----\n\n /**\n * Convert QueryBuilderData to MongoDB aggregation pipeline\n */\n private async toMongoDb(queryData: AXPQueryBuilderData): Promise<string> {\n const pipeline: any[] = [];\n\n // $match stage (WHERE clause)\n if (queryData.where && queryData.where.filters && queryData.where.filters.length > 0) {\n const matchStage = await this.convertWhereToMongoDb(queryData.where);\n if (matchStage && Object.keys(matchStage).length > 0) {\n pipeline.push({ $match: matchStage });\n }\n }\n\n // $group stage (GROUP BY + aggregates)\n if (queryData.groupBy.length > 0 || queryData.aggregates.length > 0) {\n const groupStage: any = { _id: null };\n\n // Add GROUP BY fields to _id\n if (queryData.groupBy.length > 0) {\n if (queryData.groupBy.length === 1) {\n groupStage._id = `$${queryData.groupBy[0]}`;\n } else {\n groupStage._id = {};\n for (const field of queryData.groupBy) {\n groupStage._id[field] = `$${field}`;\n }\n }\n }\n\n // Add aggregate functions\n for (const agg of queryData.aggregates) {\n const alias = agg.alias || `${agg.function}_${agg.field || 'all'}`;\n const funcName = `$${agg.function}`;\n \n if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n // Handle nested aggregates\n const nestedExpr: any = {};\n for (const nested of agg.nestedAggregates) {\n nestedExpr[nested.function] = nested.field ? `$${nested.field}` : null;\n }\n groupStage[alias] = nestedExpr;\n } else {\n const fieldExpr = agg.field ? `$${agg.field}` : null;\n if (agg.distinct) {\n groupStage[alias] = { $addToSet: fieldExpr };\n } else {\n groupStage[alias] = { [funcName]: fieldExpr || 1 };\n }\n }\n }\n\n pipeline.push({ $group: groupStage });\n }\n\n // $project stage (SELECT columns)\n if (queryData.columns.length > 0 || queryData.aggregates.length > 0) {\n const projectStage: any = {};\n \n // Add regular columns\n for (const col of queryData.columns) {\n projectStage[col] = 1;\n }\n\n // Add aggregate results (already in group stage output)\n for (const agg of queryData.aggregates) {\n const alias = agg.alias || `${agg.function}_${agg.field || 'all'}`;\n projectStage[alias] = 1;\n }\n\n pipeline.push({ $project: projectStage });\n }\n\n // $sort stage (ORDER BY)\n if (queryData.sort.length > 0) {\n const sortStage: any = {};\n for (const sort of queryData.sort) {\n sortStage[sort.field] = sort.dir === 'desc' ? -1 : 1;\n }\n pipeline.push({ $sort: sortStage });\n }\n\n return JSON.stringify(pipeline, null, 2);\n }\n\n /**\n * Convert WHERE clause to MongoDB $match expression\n */\n private async convertWhereToMongoDb(filter: AXPFilterDefinition): Promise<any> {\n if (!filter.filters || filter.filters.length === 0) {\n return {};\n }\n\n const conditions: any[] = [];\n\n for (const f of filter.filters) {\n if (f.filters && f.filters.length > 0) {\n // It's a group\n const groupCondition = await this.convertWhereToMongoDb(f as AXPFilterDefinition);\n if (Object.keys(groupCondition).length > 0) {\n conditions.push(groupCondition);\n }\n } else {\n // It's a condition\n if (!f.field || f.value === undefined || f.value === null || f.value === '') {\n continue;\n }\n\n const operator: string = f.operator?.type || 'equal';\n const field = f.field;\n let mongoCondition: any = {};\n\n switch (operator) {\n case 'equal':\n mongoCondition[field] = f.value;\n break;\n case 'notEqual':\n mongoCondition[field] = { $ne: f.value };\n break;\n case 'lt':\n mongoCondition[field] = { $lt: f.value };\n break;\n case 'lte':\n mongoCondition[field] = { $lte: f.value };\n break;\n case 'gt':\n mongoCondition[field] = { $gt: f.value };\n break;\n case 'gte':\n mongoCondition[field] = { $gte: f.value };\n break;\n case 'contains':\n case 'startsWith':\n case 'endsWith':\n const regexPattern = operator === 'startsWith' \n ? `^${f.value}`\n : operator === 'endsWith'\n ? `${f.value}$`\n : f.value;\n mongoCondition[field] = { $regex: regexPattern, $options: 'i' };\n break;\n case 'in':\n mongoCondition[field] = { $in: Array.isArray(f.value) ? f.value : [f.value] };\n break;\n case 'isNull':\n mongoCondition[field] = null;\n break;\n case 'isEmpty':\n mongoCondition[field] = { $in: [null, ''] };\n break;\n default:\n mongoCondition[field] = f.value;\n }\n\n if (f.operator?.negative) {\n mongoCondition[field] = { $not: mongoCondition[field] };\n }\n\n conditions.push(mongoCondition);\n }\n }\n\n if (conditions.length === 0) {\n return {};\n }\n\n if (conditions.length === 1) {\n return conditions[0];\n }\n\n // Combine with AND/OR logic\n const logic = filter.logic || 'and';\n return logic === 'or' ? { $or: conditions } : { $and: conditions };\n }\n\n /**\n * Parse MongoDB aggregation pipeline back to QueryBuilderData\n */\n private async fromMongoDb(query: string): Promise<Partial<AXPQueryBuilderData>> {\n const result: Partial<AXPQueryBuilderData> = {\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n\n try {\n const pipeline = JSON.parse(query);\n if (!Array.isArray(pipeline)) {\n return result;\n }\n\n for (const stage of pipeline) {\n if (stage.$match) {\n // Parse $match to WHERE clause (simplified)\n // This would need more complex parsing for production\n }\n if (stage.$group) {\n // Parse $group to GROUP BY and aggregates (simplified)\n if (stage.$group._id && typeof stage.$group._id === 'object') {\n result.groupBy = Object.keys(stage.$group._id);\n }\n }\n if (stage.$project) {\n // Parse $project to columns (simplified)\n result.columns = Object.keys(stage.$project).filter(k => stage.$project[k] === 1);\n }\n if (stage.$sort) {\n // Parse $sort to ORDER BY\n result.sort = Object.keys(stage.$sort).map(field => ({\n field,\n dir: stage.$sort[field] === -1 ? 'desc' : 'asc',\n })) as AXPQuerySortRule[];\n }\n }\n } catch {\n // Return empty result on parse error\n }\n\n return result;\n }\n\n //#endregion\n}\n\n/**\n * Default Database Type Provider Registration\n */\nexport const AXP_DEFAULT_DATABASE_TYPE_PROVIDER = {\n provide: AXP_DATABASE_TYPE_PROVIDER,\n useClass: AXMDefaultDatabaseTypeProvider,\n multi: true,\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMColumnFilterSelectorWidget } from './entities/data-source/column-filter-selector';\nimport { AXPQueryBuilderWidget } from './features/query-builder-widget';\n\n//#endregion\n\n//#region ---- Data Management Widgets Provider ----\n\nconst WIDGETS = [AXPQueryBuilderWidget, AXMColumnFilterSelectorWidget];\n\n@Injectable()\nexport class AXMDataManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","export const META_DATA_SELECTOR_FIELD = 'metaDataList';\nexport const META_DATA_FORM_FIELD = 'metaDataForm';","import { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { AXPQueryService } from '@acorex/platform/runtime';\nimport { AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex/platform/layout/entity';\nimport { get } from 'lodash-es';\nimport { META_DATA_SELECTOR_FIELD } from './config';\nimport { AXMMetaDataBuilderValue } from './meta-data-builder';\n\n/**\n * Metadata Evaluator Scope Provider\n * \n * Provides expression evaluation capabilities for metadata operations:\n * - Get category IDs from context/expressions\n * - Retrieve metadata by category IDs\n * - Access category metadata inheritance\n * - Filter metadata definitions by group name\n */\nexport class AXMMetadataEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n\n private readonly queryService = inject(AXPQueryService);\n private readonly entityDefinitionRegistryService = inject(AXPEntityDefinitionRegistryService);\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope('metadata', {\n\n /**\n * Get metadata definitions from category with inheritance\n * @param entityName - Full entity name (Module.Entity)\n * @param categoryIds - Category ID(s)\n * @param groupName - Optional group name to filter results\n * @param sourceEntity - Optional source entity name to get overrides from (Module.Entity)\n * @param contextValue - Optional entity ID or record to get overrides from\n * @param categoryEntity - Optional explicit category entity key (e.g. 'AssetManagement.ManualAssetCategory')\n * @returns Groups structure preserving the original group organization with merged overrides\n */\n fromCategory: async (\n entityName: string,\n categoryIds: string | string[],\n groupName?: string,\n sourceEntity?: string,\n contextValue?: any,\n categoryEntity?: string,\n ) => {\n const ids = Array.isArray(categoryIds) ? categoryIds : [categoryIds];\n const categoryId = ids[0];\n if (!categoryId) {\n return [];\n }\n const result = await this.queryService.fetch('DataManagement:Metadata:GetCategoryInheritance', {\n entityName,\n categoryId: categoryId,\n categoryEntity: categoryEntity || undefined,\n });\n\n // Result is already in groups structure from the query\n if (!result || result.length === 0) {\n return [];\n }\n\n // Filter by group name if specified\n let groups = result;\n if (groupName) {\n groups = result.filter((group: any) => group.name === groupName);\n }\n\n // Get overrides from source entity if provided\n let overrides: AXMMetaDataBuilderValue | undefined;\n if (sourceEntity && contextValue) {\n try {\n const [moduleName, entityName] = sourceEntity.split('.');\n const entityDefinition = await this.entityDefinitionRegistryService.resolve(moduleName, entityName);\n\n if (entityDefinition) {\n // const dataAccessor = runInInjectionContext(\n // this.injector,\n // () => {\n // const entityService = inject(AXPEntityService);\n // return entityService.withEntity(sourceEntity).data<any, any>();\n // }\n // );\n const dataAccessor = this.entityService.withEntity(sourceEntity).data<any, any>();\n const record = await dataAccessor.byKey(contextValue);\n overrides = get(record, META_DATA_SELECTOR_FIELD) as AXMMetaDataBuilderValue | undefined;\n }\n } catch (error) {\n console.warn('Failed to fetch overrides from source entity:', error);\n }\n }\n\n // Merge overrides into groups if available\n if (overrides && overrides.groups && Array.isArray(overrides.groups)) {\n groups = this.mergeInterfaceOverrides(groups, overrides.groups);\n }\n\n // Return groups structure preserving organization\n return groups.map((group: any) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order,\n fields: (group.fields || []).map((field: any) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n defaultValue: field.defaultValue,\n order: field.order,\n })),\n }));\n },\n\n /**\n * Get metadata definitions from related entity\n * @param sourceEntity - Source entity name\n * @param contextValue - Entity ID or record\n * @returns Groups structure preserving the original group organization (not flattened)\n */\n fromEntity: async (sourceEntity: string, contextValue: any) => {\n if (!contextValue) {\n return [];\n }\n const [moduleName, entityName] = sourceEntity.split('.');\n const entityDefinition = await this.entityDefinitionRegistryService.resolve(moduleName, entityName);\n\n if (!entityDefinition) {\n return [];\n }\n\n const dataAccessor = this.entityService.withEntity(sourceEntity).data<any, any>();\n const record = await dataAccessor.byKey(contextValue);\n\n const metaData = get(record, META_DATA_SELECTOR_FIELD) as AXMMetaDataBuilderValue | undefined;\n if (!metaData || !metaData.groups || !Array.isArray(metaData.groups)) {\n return [];\n }\n\n // Return groups structure preserving organization (not flattened)\n // This allows meta-data-form to render each group as a separate card\n return metaData.groups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order,\n fields: (group.fields || []).map((field) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n order: field.order,\n })),\n }));\n },\n\n /**\n * Filter metadata definitions by group name from metaDataList field\n * @param metaDataListValue - Value from metaDataList field (AXMMetaDataBuilderValue)\n * @param groupName - Group name to filter by\n * @returns Array of metadata field definitions for the specified group\n */\n fromGroup: (metaDataListValue: any, groupName: string) => {\n if (!metaDataListValue || !groupName) {\n return [];\n }\n\n // Handle the new structure (groups)\n const value = metaDataListValue as AXMMetaDataBuilderValue;\n if (value.groups && Array.isArray(value.groups)) {\n const group = value.groups.find((g) => g.name === groupName);\n if (group && group.fields) {\n // Return fields formatted for meta-data-form\n return group.fields.map((field) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n }));\n }\n }\n\n return [];\n }\n });\n }\n\n //#region ---- Private Helper Methods ----\n\n /**\n * Merge interface overrides from meta-data-builder into fetched groups\n * Matches fields by id or name and applies overridden interfaces\n */\n private mergeInterfaceOverrides(fetchedGroups: any[], overrideGroups: any[]): any[] {\n // Create a map of overrides by field id and name for quick lookup\n const overrideMap = new Map<string, { interface: string }>();\n\n overrideGroups.forEach((overrideGroup) => {\n (overrideGroup.fields || []).forEach((overrideField: any) => {\n if (overrideField.id) {\n overrideMap.set(overrideField.id, { interface: overrideField.interface });\n }\n if (overrideField.name) {\n overrideMap.set(overrideField.name, { interface: overrideField.interface });\n }\n });\n });\n\n // Merge overrides into fetched groups\n return fetchedGroups.map((group) => ({\n ...group,\n fields: (group.fields || []).map((field: any) => {\n // Try to find override by id first, then by name\n const override = overrideMap.get(field.id) || overrideMap.get(field.name);\n\n if (override && override.interface) {\n // Apply the overridden interface\n return {\n ...field,\n interface: override.interface,\n };\n }\n\n // No override found, return original field\n return field;\n }),\n }));\n }\n\n //#endregion\n}\n","import { AXPDataSourceDefinitionProviderService, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\n\nexport class AXMDataSourceEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly dataSourceDefinitionService = inject(AXPDataSourceDefinitionProviderService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope('dataSource', {\n /**\n * Load all items from a data source definition as an array\n * @param dataSourceName - Name of the data source definition\n * @returns Array of items from the data source\n */\n toArray: async (dataSourceName: string) => {\n if (!dataSourceName) {\n return [];\n }\n\n try {\n const dataSourceDefinition = await this.dataSourceDefinitionService.get(dataSourceName);\n if (!dataSourceDefinition) {\n return [];\n }\n\n const source = dataSourceDefinition.source();\n const dataSource = source instanceof Promise ? await source : source;\n\n if (!dataSource) {\n return [];\n }\n\n // Access the load function from the data source config\n // The load function is provided in the AXDataSource config\n const dataSourceAny = dataSource as any;\n if (dataSourceAny.config?.load) {\n const result = await dataSourceAny.config.load({ skip: 0, take: 10000 });\n return result.items || [];\n }\n\n return [];\n } catch (error) {\n console.error(`Error loading data source \"${dataSourceName}\":`, error);\n return [];\n }\n },\n });\n }\n}\n\n","export const AXMDataManagementFeatureKeys = {\n Queries: 'DataManagement:Feature:Queries',\n DataSources: 'DataManagement:Feature:DataSources',\n MetaDataDefinitions: 'DataManagement:Feature:MetaDataDefinitions',\n} as const;\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex/platform/core';\nimport { AXMDataManagementFeatureKeys } from './features.keys';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Data Management Feature Definition Provider.\n * Provides feature definitions for the Data Management module.\n */\nexport class AXPDataManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n // Queries feature\n context.addFeature(AXMDataManagementFeatureKeys.Queries, {\n title: '@data-management:features.queries.title',\n description: '@data-management:features.queries.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Data Sources feature\n context.addFeature(AXMDataManagementFeatureKeys.DataSources, {\n title: '@data-management:features.data-sources.title',\n description: '@data-management:features.data-sources.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // MetaData Definitions feature\n context.addFeature(AXMDataManagementFeatureKeys.MetaDataDefinitions, {\n title: '@data-management:features.metadata-definitions.title',\n description: '@data-management:features.metadata-definitions.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n\n","export const AXMPermissionsKeys = {\n DataManagement: {\n Query: {\n Management: 'DataManagement:Permission:Query.Management',\n },\n DataSource: {\n Management: 'DataManagement:Permission:DataSource.Management',\n },\n MetaDataDefinition: {\n Management: 'DataManagement:Permission:MetaDataDefinition.Management',\n },\n Equipment: {\n Management: 'DataManagement:Permission:Equipment.Management',\n },\n Tag: {\n Management: 'DataManagement:Permission:Tag.Management',\n },\n },\n};\n\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n private readonly translateService: AXTranslationService;\n\n constructor(private injector: Injector) {\n this.translateService = this.injector.get(AXTranslationService);\n }\n\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXMPermissionsKeys.DataManagement;\n\n // Module translations\n const moduleTitle = await this.translateService.translateAsync('@data-management:module.title');\n const moduleDescription = await this.translateService.translateAsync('@data-management:module.description');\n\n // Query permissions\n const transQuery = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:queries.permissions.queries.${key}`);\n\n // Data Source permissions\n const transDataSource = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:data-sources.permissions.data-sources.${key}`);\n\n // MetaData Definition permissions\n const transMetaData = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:metadata-definitions.permissions.metadata-definitions.${key}`);\n\n // Tag permissions\n const transTag = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:tags.permissions.tags.${key}`);\n\n // Equipment permissions\n const transEquipment = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:equipments.permissions.equipments.${key}`);\n\n context\n .addGroup(RootConfig.module.name, moduleTitle, moduleDescription)\n //\n .addPermission(keys.Query.Management, await transQuery('actions.manage.title'), await transQuery('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.DataSource.Management, await transDataSource('actions.manage.title'), await transDataSource('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.MetaDataDefinition.Management, await transMetaData('actions.manage.title'), await transMetaData('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.Equipment.Management, await transEquipment('actions.manage.title'), await transEquipment('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.Tag.Management, await transTag('actions.manage.title'), await transTag('actions.manage.description'))\n .endPermission()\n //\n .endGroup();\n }\n}\n","export const AXPDataManagementMenuKeys = {\n Root: 'DataManagement:Menu',\n Queries: 'DataManagement:Menu:Queries',\n DataSources: 'DataManagement:Menu:DataSources',\n MetaDataDefinitions: 'DataManagement:Menu:MetaDataDefinitions',\n Tags: 'DataManagement:Menu:Tags',\n} as const;\n\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPDataManagementMenuKeys } from './menu.keys';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { AXMDataManagementFeatureKeys } from './features.keys';\nimport { AXPCommonMenuKeys } from '@acorex/modules/common';\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 // Data Definitions group under Configuration/Data and Content (with divider before)\n context.find(AXPCommonMenuKeys.DataAndContent).addItems([\n { name: `${AXPDataManagementMenuKeys.Root}:divider`, text: '', type: 'break', priority: 5 },\n {\n name: AXPDataManagementMenuKeys.Queries,\n text: '@data-management:queries.menus.queries.title',\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.query.name),\n icon: RootConfig.entities.query.icon,\n priority: 10,\n policy: {\n features: [module.name],\n },\n },\n {\n name: AXPDataManagementMenuKeys.DataSources,\n text: '@data-management:data-sources.menus.data-sources.title',\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.dataSource.name),\n icon: RootConfig.entities.dataSource.icon,\n priority: 11,\n policy: {\n features: [module.name, AXMDataManagementFeatureKeys.DataSources],\n permissions: [AXMPermissionsKeys.DataManagement.DataSource.Management],\n },\n },\n {\n name: AXPDataManagementMenuKeys.MetaDataDefinitions,\n text: '@data-management:metadata-definitions.menus.metadata-definitions.title',\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.metaDataDefinition.name),\n icon: RootConfig.entities.metaDataDefinition.icon,\n priority: 12,\n policy: {\n features: [module.name, AXMDataManagementFeatureKeys.MetaDataDefinitions],\n permissions: [AXMPermissionsKeys.DataManagement.MetaDataDefinition.Management],\n },\n },\n {\n name: AXPDataManagementMenuKeys.Tags,\n text: '@general:terms.common.tags',\n icon: RootConfig.entities.tag.icon,\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.tag.name),\n priority: 13,\n policy: {\n features: [module.name],\n permissions: [AXMPermissionsKeys.DataManagement.Tag.Management],\n },\n },\n ]);\n }\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n private injector = inject(Injector);\n\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n case RootConfig.entities.query.name:\n return (await import('./entities/query/query.entity')).queryFactory(this.injector);\n case RootConfig.entities.dataSource.name:\n return (await import('./entities/data-source/data-source.entity')).dataSourceEntityFactory(this.injector);\n case RootConfig.entities.metaDataDefinition.name:\n return (await import('./entities/meta-data-definition/meta-data-definition.entity')).metaDataDefinitionFactory(this.injector);\n case RootConfig.entities.tag.name:\n return (await import('./entities/tag/tag.entity')).factory(this.injector);\n }\n }\n return null;\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const m = RootConfig.module.name;\n return Promise.resolve(\n Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m }))\n );\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDefinition, AXPDataSourceDefinitionProvider } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\n\n/**\n * Provides common choice-option datasources (yes/no variants, rating scales, gender, agreement, frequency, etc.)\n * for use across forms, questionnaires, surveys, and other modules.\n */\nexport class AXMChoiceOptionsDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n\n //#region ---- Yes/No Options ----\n\n private yesNoOptions: AXPDataSourceDefinition = {\n name: 'yes-no-options',\n title: '@questionnaire:datasources.yes-no-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.yes-no-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.yes-no-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.yes-no-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-options.columns.value.title' },\n samples: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },\n ],\n total: 2,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Yes / No / Maybe ----\n\n private yesNoMaybeOptions: AXPDataSourceDefinition = {\n name: 'yes-no-maybe-options',\n title: '@questionnaire:datasources.yes-no-maybe-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.yes-no-maybe-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.yes-no-maybe-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.yes-no-maybe-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-maybe-options.columns.value.title' },\n samples: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-maybe-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-maybe-options.samples.no' },\n { value: 'maybe', title: '@questionnaire:datasources.yes-no-maybe-options.samples.maybe' },\n ],\n source: () => {\n const items = [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-maybe-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-maybe-options.samples.no' },\n { value: 'maybe', title: '@questionnaire:datasources.yes-no-maybe-options.samples.maybe' },\n ];\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Yes / No / N/A ----\n\n private yesNoNaOptions: AXPDataSourceDefinition = {\n name: 'yes-no-na-options',\n title: '@questionnaire:datasources.yes-no-na-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.yes-no-na-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.yes-no-na-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.yes-no-na-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-na-options.columns.value.title' },\n samples: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-na-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-na-options.samples.no' },\n { value: 'not-applicable', title: '@questionnaire:datasources.yes-no-na-options.samples.not-applicable' },\n ],\n source: () => {\n const items = [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-na-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-na-options.samples.no' },\n { value: 'not-applicable', title: '@questionnaire:datasources.yes-no-na-options.samples.not-applicable' },\n ];\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Rating Scale Options ----\n\n private ratingScaleOptions: AXPDataSourceDefinition = {\n name: 'rating-scale-options',\n title: '@questionnaire:datasources.rating-scale-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.rating-scale-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'number',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.rating-scale-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'description',\n title: '@questionnaire:datasources.rating-scale-options.columns.description.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.rating-scale-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.rating-scale-options.columns.value.title' },\n samples: [\n { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },\n { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },\n { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },\n { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },\n { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },\n { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },\n { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },\n { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },\n { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },\n { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },\n { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },\n { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },\n { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Rating 1–10 Options ----\n\n private rating1to10Options: AXPDataSourceDefinition = {\n name: 'rating-1-10-options',\n title: '@questionnaire:datasources.rating-1-10-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.rating-1-10-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'number',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.rating-1-10-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.rating-1-10-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.rating-1-10-options.columns.value.title' },\n samples: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.rating-1-10-options.samples.${n}` as const,\n })),\n source: () => {\n const items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.rating-1-10-options.samples.${n}` as const,\n }));\n return new AXDataSource({\n pageSize: 20,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- NPS (0–10) Options ----\n\n private npsScaleOptions: AXPDataSourceDefinition = {\n name: 'nps-scale-options',\n title: '@questionnaire:datasources.nps-scale-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.nps-scale-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'number',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.nps-scale-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.nps-scale-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.nps-scale-options.columns.value.title' },\n samples: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.nps-scale-options.samples.${n}` as const,\n })),\n source: () => {\n const items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.nps-scale-options.samples.${n}` as const,\n }));\n return new AXDataSource({\n pageSize: 20,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Agreement Scale Options ----\n\n private agreementScaleOptions: AXPDataSourceDefinition = {\n name: 'agreement-scale-options',\n title: '@questionnaire:datasources.agreement-scale-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.agreement-scale-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.agreement-scale-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.agreement-scale-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.agreement-scale-options.columns.value.title' },\n samples: [\n { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },\n { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },\n { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },\n { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },\n { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },\n { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },\n { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },\n { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },\n { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },\n { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },\n { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },\n { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },\n { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Frequency Options ----\n\n private frequencyOptions: AXPDataSourceDefinition = {\n name: 'frequency-options',\n title: '@questionnaire:datasources.frequency-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.frequency-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.frequency-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.frequency-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.frequency-options.columns.value.title' },\n samples: [\n { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },\n { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },\n { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },\n { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },\n { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },\n { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },\n { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },\n { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },\n { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },\n { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },\n { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },\n { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },\n { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Satisfaction Options ----\n\n private satisfactionOptions: AXPDataSourceDefinition = {\n name: 'satisfaction-options',\n title: '@questionnaire:datasources.satisfaction-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.satisfaction-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.satisfaction-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.satisfaction-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.satisfaction-options.columns.value.title' },\n samples: [\n { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },\n { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },\n { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },\n { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },\n { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },\n { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },\n { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },\n { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },\n { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },\n { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },\n { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },\n { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },\n { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Priority Options ----\n\n private priorityOptions: AXPDataSourceDefinition = {\n name: 'priority-options',\n title: '@questionnaire:datasources.priority-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.priority-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.priority-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.priority-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.priority-options.columns.value.title' },\n samples: [\n { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },\n { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },\n { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },\n { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },\n { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },\n { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },\n { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },\n ],\n total: 4,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },\n { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },\n { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },\n { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Gender Options ----\n\n private genderOptions: AXPDataSourceDefinition = {\n name: 'gender-options',\n title: '@questionnaire:datasources.gender-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.gender-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.gender-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.gender-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.gender-options.columns.value.title' },\n samples: [\n { value: 'female', title: '@questionnaire:datasources.gender-options.samples.female' },\n { value: 'male', title: '@questionnaire:datasources.gender-options.samples.male' },\n { value: 'non-binary', title: '@questionnaire:datasources.gender-options.samples.non-binary' },\n { value: 'prefer-not-to-say', title: '@questionnaire:datasources.gender-options.samples.prefer-not-to-say' },\n { value: 'other', title: '@questionnaire:datasources.gender-options.samples.other' },\n ],\n source: () => {\n const items = [\n { value: 'female', title: '@questionnaire:datasources.gender-options.samples.female' },\n { value: 'male', title: '@questionnaire:datasources.gender-options.samples.male' },\n { value: 'non-binary', title: '@questionnaire:datasources.gender-options.samples.non-binary' },\n { value: 'prefer-not-to-say', title: '@questionnaire:datasources.gender-options.samples.prefer-not-to-say' },\n { value: 'other', title: '@questionnaire:datasources.gender-options.samples.other' },\n ];\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Availability Options ----\n\n private availabilityOptions: AXPDataSourceDefinition = {\n name: 'availability-options',\n title: '@data-management:datasources.availability-options.title',\n columns: [\n {\n name: 'value',\n title: '@data-management:datasources.availability-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@data-management:datasources.availability-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@data-management:datasources.availability-options.columns.title.title' },\n valueField: { name: 'value', title: '@data-management:datasources.availability-options.columns.value.title' },\n samples: [\n { value: '24-7', title: '@data-management:datasources.availability-options.samples.24-7' },\n { value: 'business-hours', title: '@data-management:datasources.availability-options.samples.business-hours' },\n { value: 'weekdays', title: '@data-management:datasources.availability-options.samples.weekdays' },\n { value: 'weekends', title: '@data-management:datasources.availability-options.samples.weekends' },\n { value: 'limited-hours', title: '@data-management:datasources.availability-options.samples.limited-hours' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: '24-7', title: '@data-management:datasources.availability-options.samples.24-7' },\n { value: 'business-hours', title: '@data-management:datasources.availability-options.samples.business-hours' },\n { value: 'weekdays', title: '@data-management:datasources.availability-options.samples.weekdays' },\n { value: 'weekends', title: '@data-management:datasources.availability-options.samples.weekends' },\n { value: 'limited-hours', title: '@data-management:datasources.availability-options.samples.limited-hours' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: '24-7', title: '@data-management:datasources.availability-options.samples.24-7' },\n { value: 'business-hours', title: '@data-management:datasources.availability-options.samples.business-hours' },\n { value: 'weekdays', title: '@data-management:datasources.availability-options.samples.weekdays' },\n { value: 'weekends', title: '@data-management:datasources.availability-options.samples.weekends' },\n { value: 'limited-hours', title: '@data-management:datasources.availability-options.samples.limited-hours' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n async items(): Promise<AXPDataSourceDefinition[]> {\n return [\n this.yesNoOptions,\n this.yesNoMaybeOptions,\n this.yesNoNaOptions,\n this.ratingScaleOptions,\n this.rating1to10Options,\n this.npsScaleOptions,\n this.agreementScaleOptions,\n this.frequencyOptions,\n this.satisfactionOptions,\n this.priorityOptions,\n this.genderOptions,\n this.availabilityOptions,\n ];\n }\n}\n","import { applyDataSourceQuery, AXDataSource } from \"@acorex/cdk/common\";\nimport { applyFilterArray, applySortArray, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceDefinitionProviderService, AXPFilterDefinition } from \"@acorex/platform/core\";\nimport { AXPWidgetsCatalog } from \"@acorex/platform/layout/widget-core\";\n\nexport class AXMDataSourceListDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n\n\n private get parent(): AXPDataSourceDefinitionProviderService {\n return (this as any)['__parent__'] as AXPDataSourceDefinitionProviderService;\n }\n\n items(): Promise<AXPDataSourceDefinition[]> {\n return Promise.resolve([\n {\n name: 'dataSources',\n title: 'DataSources',\n visible: false,\n source: () => {\n return new AXDataSource({\n key: 'name',\n load: async (query) => {\n try {\n let items = (await this.parent.items()).filter((item) => !item.visible);\n if (query.filter) {\n items = applyFilterArray(items, [query.filter]);\n }\n items = applySortArray(items, query.sort ?? { field: 'title', dir: 'asc' });\n return {\n items: items.map((item) => this.mapDataSource(item)),\n total: items.length,\n };\n } catch (e) {\n throw e;\n }\n },\n byKey: async (key: unknown) => {\n const item = await this.parent.get(key as string);\n return this.mapDataSource(item!);\n },\n pageSize: 1000,\n });\n },\n columns: [\n {\n name: 'name',\n title: 'Name',\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n {\n name: 'title',\n title: `Title`,\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n ],\n filters: [\n {\n field: 'title',\n title: 'Title',\n operator: {\n type: 'equal',\n },\n widget: {\n type: AXPWidgetsCatalog.text,\n },\n filterType: {\n advance: true,\n inline: true,\n },\n } as AXPFilterDefinition,\n ],\n textField: {\n name: 'title',\n title: 'Title',\n },\n valueField: {\n name: 'name',\n title: 'Name',\n },\n },\n ]);\n }\n\n private mapDataSource(dataSource: AXPDataSourceDefinition) {\n return {\n name: dataSource.name,\n title: dataSource.title,\n columns: dataSource.columns,\n filters: dataSource.filters,\n valueField: dataSource.valueField,\n textField: dataSource.textField,\n }\n }\n} ","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDataManagementQueryEntityModel, AXPQueryExecutionResult } from './query.types';\n\nexport abstract class AXMQueryService extends AXMEntityCrudServiceImpl<\n string,\n AXMDataManagementQueryEntityModel\n> {\n\n abstract execute(name: string): Promise<AXPQueryExecutionResult>;\n\n}\n\n@Injectable()\nexport class AXMQueryServiceImpl extends AXMQueryService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.query.name}`);\n }\n\n override async execute(name: string): Promise<AXPQueryExecutionResult> {\n throw new Error('Query execution is not implemented');\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityAction, AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDataSourceService } from '../data-source';\nimport { AXMQueryService } from './query.service';\nimport { AXPDataSourceDefinitionProviderService, AXPSystemActionType } from '@acorex/platform/core';\nimport { unset } from 'lodash-es';\n\nexport async function queryFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMQueryService);\n const dataSourceProviderService = injector.get(AXPDataSourceDefinitionProviderService);\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.query.name,\n title: RootConfig.entities.query.title,\n icon: RootConfig.entities.query.icon,\n formats: {\n individual: RootConfig.entities.query.title,\n plural: RootConfig.entities.query.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'category' },\n ],\n relatedEntities: [],\n\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}:queries.entities.query.groups.basic-info.title`,\n },\n {\n id: 'query',\n title: `@${i18n}:queries.entities.query.groups.query.title`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'dataSource',\n title: `@${i18n}:queries.entities.query.fields.dataSource.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n load: async () => {\n const items = await dataSourceProviderService.items();\n return { total: items.length, items: items };\n },\n byKey: async (key: unknown) => {\n return await dataSourceProviderService.get(key as string);\n },\n pageSize: 1000,\n }),\n multiple: false,\n expose: [\n { source: 'name', target: 'dataSource.name' },\n { source: 'title', target: 'dataSource.title' },\n ],\n },\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ \n var selectedDataSource = context.eval('dataSource');\n if (selectedDataSource) {\n // Pass the full datasource definition to query builder\n context.set('dataSourceDefinition', selectedDataSource);\n }\n }}`,\n },\n ],\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'query',\n title: `@${i18n}:queries.entities.query.fields.query.title`,\n groupId: 'query',\n schema: {\n dataType: 'object',\n interface: {\n type: AXPWidgetsList.Editors.QueryBuilder,\n options: {\n dataSource: '{{ context.eval(\"dataSourceDefinition\") || context.eval(\"dataSource\") }}',\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'dataSource' },\n { name: 'query' },\n ],\n commands: {\n create: {\n execute: async (data: any) => {\n unset(data, 'dataSourceDefinition.source');\n unset(data, 'dataSource.source'); \n\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n unset(data, 'dataSourceDefinition.source');\n unset(data, 'dataSource.source');\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'query',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'query',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'query',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'query',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'query',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'query',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n ],\n actions: [\n ...entityMasterRecordActions(),\n {\n title: `@${i18n}:metadata-definitions.components.query.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.query.name}:Execute`,\n options: {\n queryId: '{{ context.eval(\"id\") }}',\n queryName: '{{ context.eval(\"name\") }}',\n queryTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n },\n list: {\n actions: [...entityMasterCrudActions({ \n create : false,\n }),\n {\n title: '@general:actions.create.title',\n command: {\n name : 'create-entity',\n options : {\n layout : {\n size : 'lg'\n }\n }\n },\n priority: 'primary',\n type: AXPSystemActionType.Create,\n scope: AXPEntityCommandScope.TypeLevel,\n }\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import type { AXPCategoryListItem } from '@acorex/platform/core';\nimport { AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXPEntityModel } from '@acorex/platform/layout/entity';\nimport { AXMDataSourceEntityModel } from '../data-source';\n\n//#region ---- Query Builder Types ----\n\n/**\n * Query output type\n * Defines the expected structure of the query result\n */\nexport type AXPQueryOutputType = 'value' | 'table' | 'object';\n\n/**\n * Sort rule for query builder\n */\nexport interface AXPQuerySortRule {\n field: string;\n dir: 'asc' | 'desc';\n}\n\n/**\n * Aggregate operation in query\n * Represents an aggregate function applied to a field\n * Supports nested aggregates (e.g., CONCAT(MIN(field1), MAX(field2)))\n */\nexport interface AXPAggregateOperation {\n /**\n * Field name to aggregate (optional if nestedAggregates is provided)\n */\n field?: string;\n\n /**\n * Aggregate function name\n */\n function: string;\n\n /**\n * Output alias/name for the aggregated result\n */\n alias?: string;\n\n /**\n * Whether to use DISTINCT modifier\n */\n distinct?: boolean;\n\n /**\n * Nested aggregate operations (for functions like CONCAT that can contain other aggregates)\n * Example: CONCAT(MIN(price), MAX(price)) would have:\n * - function: 'concat'\n * - nestedAggregates: [\n * { function: 'min', field: 'price' },\n * { function: 'max', field: 'price' }\n * ]\n */\n nestedAggregates?: AXPAggregateOperation[];\n}\n\n/**\n * Complete query builder data model\n * Includes all query components: dataSource, columns, where, sort, groupBy, aggregates, and raw query\n */\nexport interface AXPQueryBuilderData {\n /**\n * Data source name (optional, can be set from context)\n */\n dataSource?: string;\n\n /**\n * Selected column names (array of column keys)\n */\n columns: string[];\n\n /**\n * WHERE clause (filter definition with groups and conditions)\n */\n where: AXPFilterDefinition;\n\n /**\n * Sort rules (array of field + direction)\n */\n sort: AXPQuerySortRule[];\n\n /**\n * Group by columns (array of column keys)\n */\n groupBy: string[];\n\n /**\n * Aggregate operations (array of field + function + alias)\n */\n aggregates: AXPAggregateOperation[];\n\n /**\n * Raw SQL/query string (optional, used when user wants to write raw query)\n */\n rawQuery?: string;\n\n /**\n * Query language/dialect for raw query (e.g., 'mysql', 'postgresql', 'mongodb')\n */\n queryLanguage?: string;\n\n /**\n * Expected output type for the query result\n * - 'value': Single value result (e.g., COUNT, SUM, AVG)\n * - 'table': Table result with items array and total\n * - 'object': Custom object structure\n */\n outputType?: AXPQueryOutputType;\n}\n\n//#endregion\n\n//#region ---- Query Execution Result Types ----\n\n/**\n * Query execution result\n * Can be:\n * - A single value (for aggregate queries like SUM, COUNT, etc.)\n * - A table with items and total (for regular queries)\n * - An object with custom structure\n */\nexport type AXPQueryExecutionResult =\n | {\n /**\n * Table result with items array\n */\n items: Record<string, unknown>[];\n total: number;\n metadata?: Record<string, unknown>;\n }\n | {\n /**\n * Single aggregate value result\n */\n value: unknown;\n metadata?: Record<string, unknown>;\n }\n | Record<string, unknown>\n | unknown[];\n\n//#endregion\n\n//#region ---- Entity Types ----\n\nexport interface AXMDataManagementQueryEntityModel extends AXPEntityModel<string> {\n name: string;\n title: string;\n dataSource?: AXMDataSourceEntityModel;\n query?: AXPQueryBuilderData;\n categoryIds?: string[];\n categories?: AXPCategoryListItem[];\n}\n\n// Alias for easier import in mock files\nexport type AXMQueryEntityModel = AXMDataManagementQueryEntityModel;\n\n//#endregion","import { inject } from '@angular/core';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Column Definition Widget ----\n\nexport const AXM_COLUMN_DEF_WIDGET = [\n {\n type: 'grid-layout',\n mode: 'view',\n options: {\n direction: 'horizontal',\n },\n children: [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'text-editor',\n mode: 'edit',\n path: 'name',\n options: {\n placeholder: 'Column Name',\n required: true,\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'text-editor',\n mode: 'edit',\n path: 'title',\n options: {\n placeholder: 'Display Title',\n required: true,\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 3 },\n mode: 'view',\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'type',\n options: {\n placeholder: 'Widget Type',\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n load: async () => {\n const service = inject(AXPWidgetRegistryService);\n const data = service.all().filter((c) => c.type.startsWith('editor'));\n return {\n items: data,\n total: data.length,\n };\n },\n byKey: async (key) => {\n const service = inject(AXPWidgetRegistryService);\n const data = service.all();\n return data.find((c) => c.name == key);\n },\n pageSize: 1000,\n }),\n direction: 'horizontal',\n multiple: false,\n required: true,\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 1 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isValueField',\n options: {\n tooltip: 'Value Field (only one can be selected)',\n label: 'Value',\n },\n triggers: [\n {\n event: \"{{ events.context('columns.isValueField') }}\",\n action: `{{ context.set('columns.isValueField', context.eval('columns.isValueField')[0]); }}`,\n },\n ],\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 1 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isTextField',\n options: {\n tooltip: 'Text Field (multiple allowed)',\n label: 'Text',\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 1 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isRequired',\n options: {\n label: 'Required',\n tooltip: 'Required field',\n },\n },\n ],\n },\n ],\n },\n];\n\n//#endregion ","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDataSourceEntityModel } from './data-source.types';\n\nexport abstract class AXMDataSourceService<T = string> extends AXMEntityCrudServiceImpl<T, AXMDataSourceEntityModel<T>> {}\n\n@Injectable()\nexport class AXMDataSourceServiceImpl extends AXMEntityCrudServiceImpl<string, AXMDataSourceEntityModel> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dataSource.name}`);\n }\n}\n","import { AXPEntityModel } from '@acorex/platform/layout/entity';\n\n//#region ---- Output Types ----\n\nexport enum AXMDataSourceOutputType {\n Table = 'table',\n SingleObject = 'single_object',\n Value = 'value'\n}\n\nexport interface AXMDataSourceOutputTypeOption {\n name: AXMDataSourceOutputType;\n title: string;\n}\n\n//#endregion\n\n//#region ---- Source Types ----\n\nexport enum AXMDataSourceType {\n Static = 'static',\n Query = 'query',\n // ExternalApi = 'external_api' // TODO: Will be implemented later\n}\n\nexport interface AXMDataSourceTypeOption {\n name: AXMDataSourceType;\n title: string;\n}\n\n//#endregion\n\n//#region ---- Filter Definition ----\n\nexport interface AXMDataSourceFilter {\n columnName: string;\n defaultValue: any;\n isSystemFilter: boolean; // User can enable/disable in report\n isRequired: boolean; // Must be present in report\n}\n\n//#endregion\n\n//#region ---- Main Entity Model ----\n\nexport interface AXMDataSourceEntityModel<T = string> extends AXPEntityModel<T> {\n\n name: string,\n title: string;\n categoryIds?: string[];\n sourceStatic: any[];\n sourceEntity: T;\n sourceType: AXMDataSourceTypeOption;\n outputType: AXMDataSourceOutputTypeOption;\n filters?: AXMDataSourceFilter[];\n}\n\n//#endregion\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\n createQueryView,\n} from '@acorex/platform/common';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { AXPDataSourceDefinitionProviderService } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXM_COLUMN_DEF_WIDGET } from './column-def.widget';\nimport { AXMDataSourceService } from './data-source.service';\nimport { AXMDataSourceOutputType } from './data-source.types';\n\nexport async function dataSourceEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMDataSourceService);\n const i18n = RootConfig.config.i18n;\n const translationService = injector.get(AXTranslationService);\n\n const dataSourceDefinitionService = injector.get(AXPDataSourceDefinitionProviderService);\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dataSource.name,\n title: RootConfig.entities.dataSource.title,\n formats: {\n individual: RootConfig.entities.dataSource.title,\n plural: RootConfig.entities.dataSource.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'category' },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'dataSource',\n title: RootConfig.entities.dataSource.title,\n },\n {\n id: 'columns',\n title: `@${RootConfig.config.i18n}:columns`,\n },\n {\n id: 'filters',\n title: `@${RootConfig.config.i18n}:filters`,\n },\n {\n id: 'samples',\n title: `@${RootConfig.config.i18n}:samples`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'columns',\n title: `@${i18n}:columns`,\n groupId: 'columns',\n schema: {\n defaultValue: [\n {\n name: 'name',\n title: 'Name',\n type: 'text-editor',\n },\n {\n name: 'title',\n title: 'Title',\n type: 'text-editor',\n },\n ],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n children: AXM_COLUMN_DEF_WIDGET as any,\n triggers: [\n {\n event: \"{{ events.context('sourceEntity') }}\",\n action: `{{ widget.setValue(context.eval('sourceEntity')?.columns); }}`,\n },\n {\n event: \"{{ events.context('columns') }}\",\n action: `{{ console.log(context.eval('columns.*.isTextField')); }}`,\n },\n ],\n },\n },\n },\n {\n name: 'filters',\n title: `@${i18n}:filters`,\n groupId: 'filters',\n schema: {\n defaultValue: {\n id: 'root',\n type: 'group',\n logic: 'and',\n filters: []\n },\n dataType: 'object',\n interface: {\n type: AXPWidgetsList.Editors.QueryBuilder,\n options: {\n availableColumns: '{{ context.eval(\"columns\") || [] }}',\n },\n },\n },\n },\n {\n name: 'samples',\n title: `@${i18n}:samples`,\n groupId: 'samples',\n schema: {\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.table,\n options: {\n columns: '{{context.eval(\"columns\"); }}',\n defaultRowCount: 2,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'sourceType',\n title: `@${i18n}:sourceType`,\n groupId: 'dataSource',\n schema: {\n defaultValue: {\n name: 'static',\n title: 'Static',\n },\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: [\n // TODO: External API temporarily disabled for upgrade\n // {\n // name: 'external_api',\n // title: 'External Api',\n // },\n {\n name: 'query',\n title: 'Query',\n },\n {\n name: 'static',\n title: 'Static',\n },\n ],\n multiple: false,\n },\n triggers: [\n {\n event: \"{{ events.context('sourceType') }}\",\n action: `{{context.set('columns' , []); context.set('sourceEntity' , null); if(context.eval('sourceType')?.name == 'static') { context.set('columns', [ { name: 'name',title: 'Name',type: { title: 'Text', name: 'text-editor', },},{name: 'title',title: 'Title',type: {title: 'Text',name: 'text-editor',},}, ] );} }}`,\n },\n ],\n },\n },\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'outputType',\n title: `@${i18n}:outputType`,\n groupId: 'dataSource',\n schema: {\n defaultValue: {\n name: AXMDataSourceOutputType.Table,\n title: 'Table',\n },\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: [\n {\n name: AXMDataSourceOutputType.Table,\n title: 'Table (List of Records)',\n },\n {\n name: AXMDataSourceOutputType.SingleObject,\n title: 'Single Object',\n },\n {\n name: AXMDataSourceOutputType.Value,\n title: 'Value (Count/Number)',\n },\n ],\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n title: `@${i18n}:sourceStatic`,\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.table,\n options: {\n visibility: '{{context.eval(\"sourceType\")?.name == \"static\" }}',\n columns: '{{context.eval(\"columns\")}}',\n defaultRowCount: 2,\n },\n },\n },\n validations: [\n // Validation removed: field is now auto-derived from columns flags\n ],\n },\n {\n name: 'sourceEntity',\n title: `@${i18n}:sourceEntity`,\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n visibility: '{{context.eval(\"sourceType\")?.name == \"query\" }}',\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n key: 'name',\n load: async (e) => {\n const entities = await dataSourceDefinitionService.items();\n\n // Map each entity to a promise that performs the translation\n const translatedEntities = await Promise.all(\n entities.map(async (entity) => ({\n ...entity,\n title: await translationService.translateAsync(entity.title),\n })),\n );\n return {\n total: translatedEntities.length,\n items: translatedEntities,\n };\n },\n pageSize: 1000,\n }),\n },\n triggers: [\n {\n event: \"{{ events.context('sourceEntity') }}\",\n action: `{{ \n var selectedDataSource = context.eval('sourceEntity');\n if (selectedDataSource) {\n context.set('samples', selectedDataSource.samples);\n context.set('columns', selectedDataSource.columns || []);\n // Reset filters when data source changes\n context.set('filters', {\n id: 'root',\n type: 'group',\n logic: 'and',\n filters: []\n });\n }\n }}`,\n },\n ],\n },\n },\n validations: [\n // Validation removed: field is now auto-derived from columns flags\n ],\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'sourceType' },\n { name: 'outputType' },\n ],\n commands: {\n create: {\n execute: async (data: any) => {\n if (data.sourceType.name == 'query') {\n data.sourceEntity = data.sourceEntity?.name;\n }\n // if (data.sourceType.name == 'static') {\n // data.sourceStatic = data.sourceStatic?.name;\n // }\n\n // derive textField & valueField from columns flags\n if (Array.isArray(data.columns)) {\n const txtColsArr = data.columns.filter((c: any) => c.isTextField).map((c: any) => c.name);\n const txtCols = txtColsArr.join(',');\n const valCol = data.columns.find((c: any) => c.isValueField);\n data.textField = txtCols;\n data.valueField = valCol ? valCol.name : null;\n }\n\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n // derive textField & valueField from columns flags\n if (Array.isArray(data.columns)) {\n const txtColsArr = data.columns.filter((c: any) => c.isTextField).map((c: any) => c.name);\n const txtCols = txtColsArr.join(',');\n const valCol = data.columns.find((c: any) => c.isValueField);\n data.textField = txtCols;\n data.valueField = valCol ? valCol.name : null;\n }\n\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'dataSource',\n },\n {\n id: 'columns',\n },\n {\n id: 'filters',\n },\n {\n id: 'samples',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'samples',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 11,\n },\n },\n },\n },\n {\n name: 'sourceType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'sourceEntity',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'outputType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 6,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'dataSource',\n },\n {\n id: 'columns',\n },\n {\n id: 'filters',\n },\n {\n id: 'samples',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'sourceType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'sourceEntity',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 4,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 4,\n },\n },\n },\n },\n {\n name: 'outputType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 6,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'dataSource',\n },\n {\n id: 'columns',\n },\n {\n id: 'filters',\n },\n {\n id: 'samples',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'sourceType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'sourceEntity',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'outputType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 6,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 7,\n },\n },\n },\n },\n {\n name: 'samples',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 10,\n },\n },\n },\n },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),\n createQueryView('static', `@${i18n}:static`, true, {\n conditions: [\n {\n name: 'sourceType.name',\n operator: {\n type: 'equal',\n },\n value: 'static',\n },\n ],\n }),\n createQueryView('query', `@${i18n}:query`, true, {\n conditions: [\n {\n name: 'sourceType.name',\n operator: {\n type: 'equal',\n },\n value: 'query',\n },\n ],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","\n//#region ---- Filter Definition Widget ----\n\nexport const AXM_FILTER_DEF_WIDGET = [\n {\n type: 'grid-row-layout',\n mode: 'view',\n children: [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 6 },\n children: [\n {\n type: 'column-filter-selector-editor',\n mode: 'edit',\n path: 'filter',\n options: {\n columns: '{{context.eval(\"columns\")}}',\n placeholder: 'Select Column and Set Filter Value',\n },\n },\n ],\n triggers: [\n {\n event : '{{ events.context(\"filters.*\") }}',\n action : '{{ console.log(context.eval(\"filters\")) }}',\n }\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 2 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isSystemFilter',\n options: {\n label: 'System',\n tooltip: 'User can enable/disable in report',\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 2 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isRequired',\n options: {\n label: 'Required',\n tooltip: 'Must be present in report',\n },\n },\n ],\n },\n ],\n },\n];\n\n//#endregion ","import { AXPEntity, AXPEntityAction, AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY } from '@acorex/platform/layout/builder';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nexport async function metaDataDefinitionFactory(injector: Injector): Promise<AXPEntity | null> {\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.metaDataDefinition.name,\n title: RootConfig.entities.metaDataDefinition.title,\n icon: RootConfig.entities.metaDataDefinition.icon,\n formats: {\n individual: RootConfig.entities.metaDataDefinition.title,\n plural: RootConfig.entities.metaDataDefinition.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'category' },\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n ],\n groups: [\n {\n id: 'basic-info',\n title: '@general:terms.interface.basic-info',\n },\n {\n id: 'presentation',\n title: '@data-management:metadata-definitions.entities.metadata-definition.groups.presentation',\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n }\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n {\n rule: 'variable-name',\n },\n ],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n }\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n\n ],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n }\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LargeTextBox,\n },\n },\n },\n {\n name: 'interface',\n title: `@general:terms.common.interface`,\n groupId: 'presentation',\n schema: {\n dataType: 'object',\n interface: {\n type: 'widget-field-configurator',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'description' },\n { name: 'interface' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'presentation',\n },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'interface', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'presentation' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'interface', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'presentation' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'interface', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions(),\n {\n title: '@data-management:metadata-definitions.entities.metadata-definition.actions.preview.title',\n command: {\n name: AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY,\n options: {\n interface: \"{{ context.eval('interface') }}\",\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-eye',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMMetaDataDefinitionEntityModel } from './meta-data-definition.types';\n\nexport abstract class AXMMetaDataDefinitionService<T = string> extends AXMEntityCrudServiceImpl<\n T,\n AXMMetaDataDefinitionEntityModel<T>\n> {}\n\n@Injectable()\nexport class AXMPMetaDataDefinitionServiceImpl extends AXMMetaDataDefinitionService<string> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.metaDataDefinition.name}`);\n }\n}\n\n\n","import { AXPEntity, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { entityMasterCrudActions, entityMasterDeleteAction } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsList } from '@acorex/modules/common';\n\n//#region ---- Tag Entity Factory ----\n\nexport async function factory(injector: Injector): Promise<AXPEntity | null> {\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tag.name,\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n {\n name: 'color',\n options: {\n column: {\n enabled: true,\n visible: true,\n }\n }\n }\n ],\n title: '@general:terms.common.tag',\n formats: {\n individual: '@general:terms.common.tag',\n plural: '@general:terms.common.tags',\n searchResult: { title: '{{ title }}', description: RootConfig.module.title },\n },\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: '@general:terms.interface.basic-info' },\n ],\n properties: [\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.largeText } },\n },\n {\n name: 'scope',\n title: '@general:terms.common.scope',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'system', text: 'System' },\n { value: 'tenant', text: 'Tenant' },\n { value: 'user', text: 'User' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n ],\n columns: [\n { name: 'title' },\n { name: 'description' },\n { name: 'scope' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'scope', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'scope', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'scope', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n actions: [entityMasterDeleteAction()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n\n","import { NgModule } from '@angular/core';\n\n//#region ---- Tag Entity Module ----\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [],\n})\nexport class AXMTagEntityModule { }\n\n//#endregion\n\n","import { Injectable } from '@angular/core';\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '../../const';\n\n//#region ---- Tag Entity Service ----\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMTagEntityService extends AXMEntityCrudServiceImpl<any, any> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.tag.name}`);\n }\n}\n\n//#endregion\n\n","//#region ---- Tag Entity Types ----\n\n/**\n * Tag entity model\n */\nexport interface AXMTag {\n id: string;\n text: string;\n color: string;\n icon?: string;\n description?: string;\n scope: 'system' | 'tenant' | 'user';\n isReadonly?: boolean;\n createdBy?: string;\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n//#endregion\n\n","import { NgModule } from '@angular/core';\nimport { AXMQueryService, AXMQueryServiceImpl } from './query.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMQueryService,\n useClass: AXMQueryServiceImpl,\n },\n ],\n})\nexport class AXMQueryEntityModule { }\n","import { NgModule } from '@angular/core';\nimport { AXMDataSourceService, AXMDataSourceServiceImpl } from './data-source.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMDataSourceService,\n useClass: AXMDataSourceServiceImpl,\n },\n ],\n})\nexport class AXMDataSourceEntityModule { }\n","import { NgModule } from '@angular/core';\nimport { AXMMetaDataDefinitionService, AXMPMetaDataDefinitionServiceImpl } from './meta-data-definition.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMMetaDataDefinitionService,\n useClass: AXMPMetaDataDefinitionServiceImpl,\n },\n ],\n})\nexport class AXMMetaDataDefinitionEntityModule { }\n","// Entity Services\nexport * from './query';\nexport * from './data-source';\nexport * from './meta-data-definition';\nexport * from './tag';\n\n// Entity Modules\nexport * from './query/query.module';\nexport * from './data-source/data-source.module';\nexport * from './meta-data-definition/meta-data-definition.module';\nexport * from './tag/tag.module';\n\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport const AXPMetaDataFormWidget: AXPWidgetConfig<AXPMetaDataFormWidgetConfigType> = {\n name: 'meta-data-form-editor',\n title: '@data-management:metadata-definitions.components.meta-data-form.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: '@data-management:metadata-definitions.components.meta-data-form.description',\n icon: 'fa-light fa-list-check',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./meta-data-form-edit.component').then((c) => c.AXPMetaDataFormWidgetEditComponent),\n },\n edit: {\n component: () => import('./meta-data-form-edit.component').then((c) => c.AXPMetaDataFormWidgetEditComponent),\n },\n print: {\n component: () => import('./meta-data-form-edit.component').then((c) => c.AXPMetaDataFormWidgetEditComponent),\n },\n },\n};\n\nexport type AXPMetaDataFormWidgetConfigType = {\n type: 'editor';\n metadataDefinitions: any[];\n layoutLook?: 'normal' | 'compact' | 'borderless';\n layoutDirection?: 'vertical' | 'horizontal' | 'grid';\n groupByCategory?: boolean;\n showCategoryHeaders?: boolean;\n};\n","import { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutRendererComponent,\n} from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { AXMMetaDataDefinitionEntityModel } from '../../../entities/meta-data-definition';\n\n@Component({\n selector: 'axp-meta-data-form-widget-edit',\n template: `\n @if (hasDefinitions()) {\n <axp-layout-renderer\n [layout]=\"formDefinition()\"\n [context]=\"getValue()\"\n [look]=\"'container'\"\n (contextChange)=\"onContextChange($event)\"\n (validityChange)=\"onValidityChange($event)\"\n >\n </axp-layout-renderer>\n } @else {\n <axp-state-message\n icon=\"fa-light fa-clipboard-list\"\n [title]=\"'@data-management:metadata-definitions.components.meta-data-selector.empty-states.no-metadata-definitions.title'\"\n [description]=\"'@data-management:metadata-definitions.components.meta-data-selector.empty-states.no-metadata-definitions.description'\"\n >\n </axp-state-message>\n }\n `,\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPLayoutRendererComponent, AXFormModule, AXLabelModule, AXPWidgetCoreModule, AXPStateMessageComponent],\n})\nexport class AXPMetaDataFormWidgetEditComponent extends AXPValueWidgetComponent {\n //#region ---- Inputs ----\n\n /**\n * Groups structure from meta-data-selector or evaluated expression\n */\n groups = computed<AXPDynamicFormGroupDefinition[]>(() => {\n const options = this.options();\n const groupsOption = options['groups'];\n // Handle evaluated expression result (array of groups) or direct groups array\n if (Array.isArray(groupsOption) && groupsOption.length > 0) {\n return groupsOption;\n }\n return [];\n });\n\n #effect = effect(() => {\n this.initializeFormDefinition();\n });\n\n /**\n * Check if there are any valid metadata definitions available\n */\n hasDefinitions = computed<boolean>(() => {\n const groups = this.groups();\n if (groups.length === 0) {\n return false;\n }\n return groups.some((group) => {\n const fields = (group.parameters || (group as any).fields || []) as AXPDynamicFormFieldDefinition[];\n return fields.length > 0 && fields.some((field: any) => field != null);\n });\n });\n\n //#endregion\n\n //#region ---- Outputs ----\n\n /**\n * Emitted when form context changes\n */\n contextChange = output<any>();\n\n /**\n * Emitted when form validity changes\n */\n validityChange = output<boolean>();\n\n //#endregion\n\n //#region ---- Properties ----\n\n private layoutRenderer = viewChild(AXPLayoutRendererComponent);\n\n /**\n * Form definition signal that only updates when structure actually changes\n */\n protected formDefinition = signal<AXPDynamicFormDefinition>({ groups: [] });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle context change from dynamic form\n */\n protected onContextChange(context: any): void {\n this.contextChange.emit(context);\n this.setValue(context);\n }\n\n /**\n * Handle validity change from dynamic form\n */\n protected onValidityChange(isValid: boolean): void {\n this.validityChange.emit(isValid);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Initialize form definition based on current inputs\n */\n private initializeFormDefinition(): void {\n const groups = this.groups();\n if (groups.length > 0) {\n const newFormDefinition = this.convertGroupsToFormDefinition(groups);\n this.formDefinition.set(newFormDefinition);\n }\n }\n\n /**\n * Convert groups structure from meta-data-selector to form definition\n * Each metadata group becomes a separate form group with visual separation (card look)\n */\n private convertGroupsToFormDefinition(groups: any[]): AXPDynamicFormDefinition {\n const formGroups: AXPDynamicFormGroupDefinition[] = [];\n\n groups.forEach((group) => {\n // Support both: group.parameters (form-definition) or group.fields (meta-data-selector)\n const parameters = group.parameters;\n const fields = group.fields || [];\n const validFields = fields.filter((field: any) => field != null);\n\n if (parameters && parameters.length > 0) {\n formGroups.push({\n name: this.sanitizeGroupName(group.name || 'default'),\n title: group.title || group.name,\n description: group.description,\n look: groups.length > 1 ? 'group' : 'container',\n parameters,\n });\n } else if (validFields.length > 0) {\n const params: AXPDynamicFormFieldDefinition[] = validFields.map((field: any) =>\n this.convertMetadataToFieldDefinition(field),\n );\n formGroups.push({\n name: this.sanitizeGroupName(group.name || 'default'),\n title: group.title || group.name,\n description: group.description,\n look: groups.length > 1 ? 'group' : 'container',\n parameters: params,\n });\n }\n });\n\n return { groups: formGroups };\n }\n\n /**\n * Convert single metadata definition to field definition\n */\n private convertMetadataToFieldDefinition(metadata: AXMMetaDataDefinitionEntityModel): AXPDynamicFormFieldDefinition {\n // Handle null/undefined metadata\n if (!metadata) {\n console.warn('Undefined metadata definition encountered');\n return {\n path: 'undefined',\n title: 'Undefined Field',\n description: 'This field has undefined metadata',\n widget: {\n type: 'text-editor',\n path: 'undefined',\n options: {\n defaultValue: '',\n validations: [],\n },\n },\n };\n }\n\n const interfaceConfig = this.parseInterfaceConfig(metadata.interface);\n\n // Handle defaultValue: support both direct property and configuration.defaultValue\n // (meta-data-selector uses configuration.defaultValue, other sources may use defaultValue directly)\n const defaultValue = (metadata as any).defaultValue ?? (metadata as any).configuration?.defaultValue;\n\n // Handle description: support both direct property and from configuration\n const description = (metadata as any).description ?? (metadata as any).configuration?.description;\n\n const widget: AXPWidgetNode = {\n type: interfaceConfig.type || 'text-editor',\n path: metadata.name || 'unnamed',\n options: {\n ...interfaceConfig.options,\n defaultValue: defaultValue,\n validations: this.parseValidations(metadata.interface),\n },\n };\n if (interfaceConfig.triggers?.length) {\n widget.triggers = interfaceConfig.triggers;\n }\n const mode = (metadata as { mode?: 'view' | 'edit' }).mode;\n return {\n path: metadata.name || 'unnamed',\n title: metadata.title || 'Untitled Field',\n description: description,\n ...(mode != null && { mode }),\n widget,\n };\n }\n\n /**\n * Parse interface configuration from metadata\n */\n private parseInterfaceConfig(interfaceValue: string | any): any {\n if (typeof interfaceValue === 'string') {\n try {\n return JSON.parse(interfaceValue || '{}');\n } catch (error) {\n console.warn('Failed to parse interface config:', interfaceValue, error);\n return {};\n }\n }\n return interfaceValue || {};\n }\n\n /**\n * Parse validations from interface configuration\n */\n private parseValidations(interfaceValue: string | any): any[] {\n const config = this.parseInterfaceConfig(interfaceValue);\n return config.options?.validations || [];\n }\n\n /**\n * Sanitize group name for use as identifier\n */\n private sanitizeGroupName(name: string): string {\n return name.toLowerCase().replace(/[^a-z0-9]/g, '-');\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Get the layout renderer component instance\n */\n public getLayoutRenderer(): AXPLayoutRendererComponent | undefined {\n return this.layoutRenderer();\n }\n\n /**\n * Validate the form\n */\n public async validate(): Promise<boolean> {\n const renderer = this.layoutRenderer();\n if (renderer) {\n const validation = await renderer.validate();\n return validation.result;\n }\n return false;\n }\n\n /**\n * Get current form context\n */\n public getContext(): any {\n const renderer = this.layoutRenderer();\n return renderer ? renderer.getContext() : {};\n }\n\n /**\n * Update form context programmatically\n */\n public updateContext(context: any): void {\n const renderer = this.layoutRenderer();\n if (renderer) {\n renderer.updateContext(context);\n }\n }\n\n //#endregion\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPDynamicFormGroupDefinition, AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPEntityService, AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { Injectable, inject } from '@angular/core';\nimport { META_DATA_FORM_FIELD } from '../config';\n\nexport interface ShowMetaDataFormPopupInput {\n entity: string; // e.g., 'DataManagement.Document'\n id: string; // Entity record ID\n field?: string; // Meta data form field name (default: META_DATA_FORM_FIELD)\n title?: string; // Dialog title\n path: string; // Path field name for metadata detection\n}\n\n/** Result of resolveGroups; dialogTitle is optional fallback when input.title is not set. */\nexport interface ResolveGroupsResult {\n /** Expression string (evaluated at runtime) or groups array */\n groups: string | AXPDynamicFormGroupDefinition[];\n dialogTitle?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ShowMetaDataFormPopupCommand implements AXPCommand<ShowMetaDataFormPopupInput, any> {\n protected readonly layoutBuilder = inject(AXPLayoutBuilderService);\n protected readonly translationService = inject(AXTranslationService);\n protected readonly entityService = inject(AXPEntityService);\n protected readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n\n async execute(input: ShowMetaDataFormPopupInput | any): Promise<AXPExecuteCommandResult<any>> {\n try {\n // Extract evaluated options from __context__ (private/controlled data)\n // The __context__.options contains evaluated expressions from entity actions\n const contextOptions = (input as any).__context__?.options;\n\n // Merge root-level input with evaluated options from __context__\n // Root-level takes precedence if both exist\n const evaluatedInput: ShowMetaDataFormPopupInput = {\n ...contextOptions,\n ...input,\n // Ensure we use evaluated options from __context__ if available\n ...(contextOptions ? contextOptions : {}),\n };\n\n const { entity, id, field = META_DATA_FORM_FIELD, title, path } = evaluatedInput;\n\n if (!entity || !id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n // Ensure id is a string\n if (typeof id !== 'string' && id != null) {\n const stringId = String(id);\n if (stringId) {\n (evaluatedInput as any).id = stringId;\n }\n }\n\n if (!evaluatedInput.id || typeof evaluatedInput.id !== 'string') {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const finalId = evaluatedInput.id;\n\n // Get current entity record (override findRecord to use custom data sources)\n const currentRecord = await this.findRecord(entity, finalId, evaluatedInput);\n\n if (!currentRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n // Resolve groups (override resolveGroups to load from custom APIs)\n const { groups: resolvedGroups, dialogTitle: resolvedTitle } = await this.resolveGroups(\n evaluatedInput,\n currentRecord\n );\n\n // Get current meta data form value\n const currentMetaDataValue = (currentRecord as any)[field] || {};\n\n // Build dialog title\n const dialogTitle =\n title ||\n resolvedTitle ||\n (await this.translationService.translateAsync(\n '@data-management:metadata-definitions.components.meta-data-form.title'\n ));\n\n // Open dialog with meta-data-form-editor widget\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPExecuteCommandResult<any>>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({\n ...currentRecord,\n [field]: currentMetaDataValue,\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px');\n\n // Add meta-data-form-editor widget with groups (expression or array)\n flex.formField('', (fieldBuilder) => {\n fieldBuilder\n .path(field)\n .setShowLabel(false)\n .customWidget('meta-data-form-editor', {\n groups: resolvedGroups,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n\n if (!context || action === 'cancel') {\n return { success: false };\n }\n\n const updateData = {\n [field]: context[field],\n };\n\n const updated = await this.updateRecord(entity, finalId, updateData);\n\n return {\n success: true,\n data: updated,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n });\n })\n .show();\n\n return result;\n } catch (error) {\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : 'Failed to show meta data form popup',\n },\n };\n }\n }\n\n //#region ---- Overridable Methods ----\n\n /**\n * Loads a record by entity and id. Override to use custom data sources or key handling.\n * @param input - Optional; overrides can use input.data or other fields to return custom record.\n */\n protected findRecord(\n entity: string,\n id: string,\n input?: ShowMetaDataFormPopupInput\n ): Promise<Record<string, unknown> | null> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.byKey(id) as Promise<Record<string, unknown> | null>;\n }\n\n /**\n * Resolves groups for the meta-data-form-editor.\n * Override to load groups from custom APIs instead of entity metadata.\n * @returns Expression string (evaluated at runtime) or groups array; dialogTitle is optional fallback.\n */\n protected async resolveGroups(\n input: ShowMetaDataFormPopupInput,\n currentRecord: Record<string, unknown>\n ): Promise<ResolveGroupsResult> {\n const { entity, field = META_DATA_FORM_FIELD, path } = input;\n const [moduleName, entityName] = entity.split('.');\n\n const entityDef = await this.entityRegistry.resolve(moduleName, entityName);\n const metaDataFormExt = (entityDef as any).extensions?.metaDataForm?.[field];\n\n if (!metaDataFormExt) {\n throw new Error(\n await this.translationService.translateAsync(\n '@data-management:metadata-definitions.messages.meta-data-form-not-configured'\n )\n );\n }\n\n const props = entityDef.properties || [];\n const pathProperty = props.find((p: any) => p.name === path);\n const targetEntity = pathProperty?.schema?.interface?.options?.['entity'];\n\n if (!targetEntity) {\n throw new Error(\n await this.translationService.translateAsync(\n '@data-management:metadata-definitions.messages.invalid-path-field'\n )\n );\n }\n\n let metadataExpression: string;\n if (targetEntity.endsWith('Category')) {\n metadataExpression = `{{ metadata.fromCategory(\"${entity}\", context.eval('${path}')) }}`;\n } else {\n metadataExpression = `{{ metadata.fromEntity(\"${targetEntity}\", context.eval('${path}')) }}`;\n }\n\n return {\n groups: metadataExpression,\n dialogTitle: metaDataFormExt.title,\n };\n }\n\n /**\n * Persists meta-data form changes. Override to use custom persistence or validation.\n */\n protected updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>\n ): Promise<Record<string, unknown>> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.update(\n id,\n data\n ) as unknown as Promise<Record<string, unknown>>;\n }\n\n //#endregion\n}\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport const AXPMetaDataBuilderWidget: AXPWidgetConfig<AXPMetaDataBuilderWidgetConfigType> = {\n name: 'meta-data-builder-editor',\n title: '@data-management:metadata-definitions.components.meta-data-builder.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: '@data-management:metadata-definitions.components.meta-data-builder.description',\n icon: 'fa-light fa-list-check',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n components: {\n view: {\n component: () => import('./meta-data-builder-view.component').then((c) => c.AXPMetaDataBuilderWidgetViewComponent),\n },\n edit: {\n component: () => import('./meta-data-builder-edit.component').then((c) => c.AXPMetaDataBuilderWidgetEditComponent),\n },\n print: {\n component: () => import('./meta-data-builder-edit.component').then((c) => c.AXPMetaDataBuilderWidgetEditComponent),\n },\n },\n};\n\nexport type AXPMetaDataBuilderWidgetConfigType = {\n type: 'editor';\n};\n","//#region ---- Meta-Data Builder Field / Group Types ----\n\nimport { AXPOptionsData, type AXPMultiLanguageString } from '@acorex/platform/core';\n\n/** Localized or plain string as stored / edited in the builder */\nexport type AXMMetaDataLocalizedString = string | AXPMultiLanguageString;\n\n/** Single metadata field within a group */\nexport interface AXMMetaDataBuilderField {\n id: string;\n name: string;\n title: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n interface: string;\n configuration?: {\n isRequired?: boolean;\n placeholder?: string;\n [key: string]: unknown;\n };\n status: 'active' | 'deleted' | 'temporary';\n order: number;\n isNewlyAdded?: boolean;\n}\n\n/** Group of metadata fields */\nexport interface AXMMetaDataBuilderGroup {\n id: string;\n name: string;\n title?: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n order: number;\n fields: AXMMetaDataBuilderField[];\n isNewlyAdded?: boolean;\n}\n\n/** Designer state (internal) */\nexport interface AXMMetaDataBuilderState {\n groups: AXMMetaDataBuilderGroup[];\n mode: 'designer' | 'preview';\n selectedFieldId?: string;\n selectedGroupId?: string;\n}\n\n/** Value persisted on the entity */\nexport interface AXMMetaDataBuilderValue {\n groups: Array<{\n name: string;\n title?: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n order: number;\n fields: Array<{\n id: string;\n name: string;\n title: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n interface: string;\n configuration?: AXPOptionsData;\n order: number;\n }>;\n }>;\n}\n\n//#endregion\n\n//#region ---- Utility Functions ----\n\nexport function convertValueToState(value: unknown): AXMMetaDataBuilderState {\n if (!value) {\n return {\n groups: [createDefaultGroup()],\n mode: 'designer',\n };\n }\n\n if (Array.isArray(value)) {\n return {\n groups: [\n {\n id: 'group-default',\n name: 'default',\n title: 'Default Section',\n description: undefined,\n order: 0,\n fields: value.map((item: any, index: number) => ({\n id: item.id || `field-${index}`,\n name: item.name,\n title: item.title,\n description: item.description,\n interface: item.interface,\n configuration: item.configuration,\n status: item.status || 'active',\n order: item.order ?? index,\n isNewlyAdded: item.isNewlyAdded,\n })),\n },\n ],\n mode: 'designer',\n };\n }\n\n const v = value as { groups?: unknown[] };\n if (v.groups && Array.isArray(v.groups)) {\n const groups = v.groups.map((group: any, groupIndex: number) => ({\n id: group.id || `group-${group.name}`,\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order ?? groupIndex,\n fields: (group.fields || []).map((field: any, fieldIndex: number) => ({\n id: field.id || `field-${fieldIndex}`,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n status: field.status || 'active',\n order: field.order ?? fieldIndex,\n isNewlyAdded: field.isNewlyAdded,\n })),\n isNewlyAdded: group.isNewlyAdded,\n }));\n\n const finalGroups = groups.length > 0 ? groups : [createDefaultGroup()];\n\n return {\n groups: finalGroups,\n mode: 'designer',\n };\n }\n\n return {\n groups: [createDefaultGroup()],\n mode: 'designer',\n };\n}\n\nexport function convertStateToValue(state: AXMMetaDataBuilderState): AXMMetaDataBuilderValue {\n return {\n groups: state.groups.map((group) => {\n const activeFields = group.fields.filter((field) => field.status !== 'deleted');\n return {\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order,\n fields: activeFields.map((field) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n order: field.order,\n })),\n };\n }),\n };\n}\n\nexport function createDefaultGroup(): AXMMetaDataBuilderGroup {\n return {\n id: 'group-default',\n name: 'default',\n title: 'Default Section',\n description: undefined,\n order: 0,\n fields: [],\n isNewlyAdded: true,\n };\n}\n\n//#endregion\n","import type {\n AXPBuilderItem,\n AXPBuilderSection,\n AXPBuilderValue,\n} from '@acorex/platform/layout/components';\nimport type {\n AXMMetaDataBuilderField,\n AXMMetaDataBuilderGroup,\n AXMMetaDataBuilderValue,\n AXMMetaDataLocalizedString,\n} from './meta-data-builder.types';\nimport { convertValueToState } from './meta-data-builder.types';\nimport type { AXPMultiLanguageString } from '@acorex/platform/core';\n\nfunction asLocalizedFieldValue(v: unknown): AXMMetaDataLocalizedString | undefined {\n if (v == null) return undefined;\n if (typeof v === 'object' && !Array.isArray(v)) {\n return v as AXPMultiLanguageString;\n }\n if (typeof v === 'string') return v;\n return String(v);\n}\n\nfunction fieldStateToItem(f: AXMMetaDataBuilderField, index: number): AXPBuilderItem {\n return {\n id: f.id,\n order: f.order ?? index,\n name: f.name,\n title: f.title,\n description: f.description,\n interface: f.interface,\n configuration: f.configuration,\n status: f.status,\n isNewlyAdded: f.isNewlyAdded,\n } as AXPBuilderItem;\n}\n\nfunction groupStateToSection(g: AXMMetaDataBuilderGroup): AXPBuilderSection {\n const activeFields = g.fields.filter((f) => f.status !== 'deleted');\n const key = String(g.name ?? g.id ?? '');\n return {\n id: key,\n order: g.order,\n name: key,\n title: g.title ?? '',\n description: g.description ?? '',\n tags: [],\n isVisible: true,\n items: activeFields.map((f, i) => fieldStateToItem(f, i)),\n } as AXPBuilderSection;\n}\n\nexport function metaDataValueToBuilderValue(val: AXMMetaDataBuilderValue | null | undefined): AXPBuilderValue {\n const state = convertValueToState(val ?? null);\n return {\n sections: state.groups.map((g) => groupStateToSection(g)),\n };\n}\n\nfunction itemToFieldValue(it: AXPBuilderItem, idx: number) {\n const iface = it['interface'];\n const interfaceStr =\n typeof iface === 'string' ? iface : iface != null ? JSON.stringify(iface) : JSON.stringify({ type: 'text-editor' });\n const title = asLocalizedFieldValue(it['title']) ?? '';\n const description = asLocalizedFieldValue(it['description']);\n return {\n id: it.id,\n name: String(it['name'] ?? ''),\n title,\n ...(description !== undefined ? { description } : {}),\n interface: interfaceStr,\n configuration: it['configuration'] as AXMMetaDataBuilderValue['groups'][number]['fields'][number]['configuration'],\n order: it.order ?? idx,\n };\n}\n\nexport function builderValueToMetaDataValue(v: AXPBuilderValue): AXMMetaDataBuilderValue {\n return {\n groups: v.sections.map((s) => ({\n name: String(s['name'] ?? s['sectionItemId'] ?? ''),\n ...(() => {\n const t = asLocalizedFieldValue(s['title']);\n const d = asLocalizedFieldValue(s['description']);\n return {\n ...(t !== undefined ? { title: t } : {}),\n ...(d !== undefined ? { description: d } : {}),\n };\n })(),\n order: s.order,\n fields: s.items.map((it, idx) => itemToFieldValue(it, idx)),\n })),\n };\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPEntityProperty, AXPEntityTableColumn } from '@acorex/platform/common';\nimport {\n AXPCategoryTreeDataSource,\n AXPDataSelectorService,\n AXPWidgetPropertyViewerService,\n type AXPBuilderItem,\n type AXPBuilderItemViewModel,\n type AXPBuilderValue,\n AXPStandardSectionItemsBuilderComponent,\n type AXPStandardSectionItemsBuilderConfig,\n} from '@acorex/platform/layout/components';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n} from '@acorex/platform/layout/builder';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPWidgetNode, AXPWidgetProperty, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPContextStore, AXPDataGenerator, isEffectivelyEmptyLocalizedValue } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { RootConfig } from '../../../const';\nimport { AXMMetaDataDefinitionService } from '../../../entities/meta-data-definition/meta-data-definition.service';\nimport { builderValueToMetaDataValue, metaDataValueToBuilderValue } from './meta-data-builder-mapping';\nimport type { AXMMetaDataBuilderValue } from './meta-data-builder.types';\n\n/**\n * Meta-data builder: groups/fields editing via {@link AXPStandardSectionItemsBuilder}.\n */\n@Component({\n selector: 'axp-meta-data-builder-groups',\n templateUrl: './meta-data-builder-groups.component.html',\n styleUrl: './meta-data-builder-groups.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStandardSectionItemsBuilderComponent,\n ],\n})\nexport class AXPMetaDataBuilderGroupsComponent {\n readonly value = input<AXMMetaDataBuilderValue | null | undefined>(null);\n readonly options = input<Record<string, unknown>>({});\n readonly contextPath = input<string | undefined>(undefined);\n\n readonly valueChange = output<AXMMetaDataBuilderValue>();\n\n private readonly standardRef = viewChild(AXPStandardSectionItemsBuilderComponent);\n\n private readonly dataSelectorService = inject(AXPDataSelectorService);\n private readonly metaDataService = inject(AXMMetaDataDefinitionService);\n private readonly entityResolver = inject(AXPEntityDefinitionRegistryService);\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly widgetPropertyViewerService = inject(AXPWidgetPropertyViewerService);\n private readonly contextStore = inject(AXPContextStore, { optional: true });\n\n protected readonly builderValue = signal<AXPBuilderValue>({ sections: [] });\n\n protected readonly standardConfig = computed<AXPStandardSectionItemsBuilderConfig>(() => ({\n mapItemToView: (item, _s) => this.mapItemToView(item),\n promptAddItems: (sid, v) => this.promptAddItems(sid, v),\n promptEditItem: (item, sid, v) => this.promptEditItem(item, sid, v),\n isDefaultSection: (section) =>\n String(section['name'] ?? section['id'] ?? '') === 'default' &&\n isEffectivelyEmptyLocalizedValue(section['title']),\n minSectionCount: 1,\n }));\n\n protected hideHeaderActions = computed<boolean>(() => (this.options()['hideHeaderActions'] as boolean) === true);\n protected readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) === true);\n\n protected previewGroups = computed(() => {\n const meta = builderValueToMetaDataValue(this.builderValue());\n return meta.groups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n fields: group.fields.map((f) => ({\n name: f.name,\n title: f.title,\n description: f.description,\n interface: f.interface,\n configuration: f.configuration,\n defaultValue: f.configuration?.['defaultValue'],\n })),\n }));\n });\n\n protected previewFormDefinition = computed<AXPDynamicFormDefinition>(() => {\n const groups = this.previewGroups();\n const formGroups: AXPDynamicFormGroupDefinition[] = [];\n groups.forEach((group) => {\n const fields = group.fields || [];\n const validFields = fields.filter((f: unknown) => f != null);\n if (validFields.length > 0) {\n formGroups.push({\n name: this.sanitizeGroupName(group.name || 'default'),\n title: group.title ?? group.name,\n description: group.description,\n look: groups.length > 1 ? 'group' : 'container',\n parameters: validFields.map((field: unknown) => this.convertFieldToFormDefinition(field as Record<string, unknown>)),\n });\n }\n });\n return { groups: formGroups };\n });\n\n protected isPreviewDisabled = computed<boolean>(() => {\n const meta = builderValueToMetaDataValue(this.builderValue());\n if (meta.groups.length === 0) return true;\n return !meta.groups.some((g) => g.fields.length > 0);\n });\n\n #syncValueToBuilder = effect(() => {\n const val = this.value();\n this.builderValue.set(metaDataValueToBuilderValue(val ?? null));\n });\n\n private syncBuilderToHost(): void {\n const out = builderValueToMetaDataValue(this.builderValue());\n this.valueChange.emit(out);\n const path = this.contextPath();\n const store = this.contextStore;\n if (path && store) store.update(path, out);\n }\n\n protected onBuilderValueChange(next: AXPBuilderValue): void {\n this.builderValue.set(next);\n this.syncBuilderToHost();\n }\n\n /** Page toolbar / header: open standardized add-section dialog. */\n async addSection(): Promise<void> {\n await this.standardRef()?.addSection();\n }\n\n private mapItemToView(item: AXPBuilderItem): AXPBuilderItemViewModel {\n const iface = String(item['interface'] ?? '');\n return {\n icon: 'fa-light fa-input-text',\n /** Fallback only; {@link AXPSectionItemsBuilderComponent} resolves raw ML on the item in the template. */\n title: '',\n name: String(item['name'] ?? ''),\n badges: [{ text: this.getWidgetTitle(iface), variant: 'neutral' }],\n };\n }\n\n private parseInterfaceConfig(interfaceValue: string | unknown): Record<string, unknown> {\n if (typeof interfaceValue === 'string') {\n try {\n return JSON.parse(interfaceValue || '{}') as Record<string, unknown>;\n } catch {\n return {};\n }\n }\n return (interfaceValue as Record<string, unknown>) || {};\n }\n\n private parseValidations(interfaceValue: string | unknown): unknown[] {\n const config = this.parseInterfaceConfig(interfaceValue);\n const opts = config?.['options'] as Record<string, unknown> | undefined;\n return (opts?.['validations'] as unknown[]) || [];\n }\n\n private sanitizeGroupName(name: string): string {\n return name.toLowerCase().replace(/[^a-z0-9]/g, '-');\n }\n\n private convertFieldToFormDefinition(field: Record<string, unknown>): AXPDynamicFormFieldDefinition {\n const interfaceConfig = this.parseInterfaceConfig(field['interface']);\n const defaultValue = field['defaultValue'] ?? (field['configuration'] as Record<string, unknown>)?.['defaultValue'];\n const cfg = field['configuration'] as Record<string, unknown> | undefined;\n const description = (field['description'] ?? cfg?.['description']) as AXPDynamicFormFieldDefinition['description'];\n const titleRaw = field['title'];\n const title: AXPDynamicFormFieldDefinition['title'] = !isEffectivelyEmptyLocalizedValue(titleRaw)\n ? (titleRaw as AXPDynamicFormFieldDefinition['title'])\n : 'Untitled Field';\n return {\n path: (field['name'] as string) || 'unnamed',\n title,\n description,\n widget: {\n type: (interfaceConfig?.['type'] as string) || 'text-editor',\n path: (field['name'] as string) || 'unnamed',\n options: {\n ...((interfaceConfig?.['options'] as Record<string, unknown>) ?? {}),\n defaultValue,\n validations: this.parseValidations(field['interface'] as string),\n },\n },\n };\n }\n\n private getWidgetTitle(interfaceValue: string): string {\n try {\n if (!interfaceValue) return 'Text';\n if (!interfaceValue.startsWith('{')) return interfaceValue;\n const parsed = JSON.parse(interfaceValue) as { type?: string };\n const widgetType = parsed?.type || 'text-editor';\n return (\n String(widgetType)\n .replace(/-/g, ' ')\n .replace(/editor/gi, '')\n .trim()\n .split(' ')\n .map((w: string) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ') || 'Text'\n );\n } catch {\n return 'Text';\n }\n }\n\n private async promptAddItems(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null> {\n const section = value.sections.find((s) => s.id === sectionId);\n if (!section) return null;\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const result = await this.metaDataService.query(e);\n return { items: result.items, total: result.total };\n },\n });\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.metaDataService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: { field: 'parentId', operator: { type: 'isEmpty' }, value: true },\n });\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.metaDataService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: { field: 'parentId', operator: { type: 'equal' }, value: parentId },\n });\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.metaDataService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n { field: 'title', operator: { type: 'contains' }, value: searchValue },\n { field: 'name', operator: { type: 'contains' }, value: searchValue },\n ],\n logic: 'or',\n },\n });\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n const entity = await this.entityResolver.resolve(RootConfig.module.name, RootConfig.entities.metaDataDefinition.name);\n if (!entity) throw new Error('Entity not found: ' + RootConfig.entities.metaDataDefinition.name);\n const columns =\n entity.columns\n ?.filter((col: AXPEntityTableColumn) => entity.properties?.some((p: AXPEntityProperty) => p.name === col.name))\n .map((col: AXPEntityTableColumn) => {\n const prop = entity.properties?.find((p: AXPEntityProperty) => p.name === col.name);\n return {\n name: col.name,\n title: prop?.title ?? '',\n visible: col.options?.visible !== false,\n widget: {\n type: col.showAs?.type ?? prop?.schema?.interface?.type ?? 'text-editor',\n options: col.showAs?.options ?? prop?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n const result = await this.dataSelectorService.openWithCategoryFilter(\n {\n title: '@data-management:metadata-definitions.components.meta-data-selector.select-items',\n dataSource,\n columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: '@general:terms.common.title' },\n { name: 'description', title: '@general:terms.common.description' },\n ],\n allowCreate: 'none',\n },\n {\n title: '@data-management:metadata-definitions.components.meta-data-selector.categories',\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n );\n if (!result?.items?.length) return null;\n const takenNames = this.collectItemNames(value);\n const baseOrder = section.items.length;\n return result.items.map((item: any, index: number) => {\n const uniqueName = this.generateUniqueItemName(String(item.name ?? ''), takenNames);\n if (uniqueName) takenNames.add(uniqueName);\n return {\n id: AXPDataGenerator.uuid(),\n order: baseOrder + index,\n name: uniqueName,\n title: item.title ?? '',\n description: item.description ?? '',\n interface: typeof item.interface === 'string' ? item.interface : JSON.stringify(item.interface ?? {}),\n configuration: { isRequired: false, placeholder: '' },\n status: 'active',\n isNewlyAdded: true,\n } as AXPBuilderItem;\n });\n } catch (error) {\n console.error('Error loading meta-data:', error);\n return null;\n }\n }\n\n private async promptEditItem(\n item: AXPBuilderItem,\n _sectionId: string,\n _value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n try {\n const ifaceRaw = item['interface'];\n const ifaceStr = typeof ifaceRaw === 'string' ? ifaceRaw : JSON.stringify(ifaceRaw ?? {});\n if (!ifaceStr.trim()) throw new Error('Field interface is empty');\n let currentWidget: AXPWidgetNode;\n try {\n currentWidget = JSON.parse(ifaceStr);\n } catch {\n throw new Error('Failed to parse field interface');\n }\n if (!currentWidget?.type) throw new Error('Invalid widget configuration');\n const editTitle =\n (await this.translationService.translateAsync('@general:actions.configure.title')) || 'Configure';\n\n const rawTitle = item['title'];\n const labelSeed =\n rawTitle !== undefined && rawTitle !== null && rawTitle !== '' ? rawTitle : (item['name'] ?? '');\n const rawDesc = item['description'];\n const descSeed = rawDesc !== undefined && rawDesc !== null ? rawDesc : undefined;\n const seededWidget: AXPWidgetNode = {\n ...cloneDeep(currentWidget),\n name: String(item['name'] ?? ''),\n options: {\n ...(cloneDeep(currentWidget.options) ?? {}),\n label: labelSeed,\n ...(descSeed !== undefined ? { description: descSeed } : {}),\n },\n };\n\n const duplicateNameMessage =\n (await this.translationService.translateAsync(\n '@data-management:metadata-definitions.components.meta-data-selector.basic-info.name-duplicate',\n )) || 'A field with this name already exists.';\n const overrideProperties = this.buildFieldOverrideProperties(item, duplicateNameMessage);\n\n const result = await this.widgetPropertyViewerService\n .create()\n .dialog((d) => {\n d.setMode('advanced');\n d.setTitle(editTitle).setWidget(seededWidget);\n d.setExclude(['name']);\n d.setCustom({ properties: overrideProperties });\n })\n .show();\n\n if (!result?.values) return null;\n\n const incomingOpts = (result.values.options ?? {}) as Record<string, unknown>;\n const descKeyPresent = Object.prototype.hasOwnProperty.call(incomingOpts, 'description');\n const descriptionAfter = descKeyPresent ? incomingOpts['description'] : undefined;\n const mergedOptions = {\n ...(currentWidget.options ?? {}),\n ...incomingOpts,\n } as Record<string, unknown>;\n delete mergedOptions['description'];\n const updatedWidget: AXPWidgetNode = {\n ...currentWidget,\n ...result.values,\n options: mergedOptions,\n };\n const overriddenName =\n typeof result.values?.name === 'string' && result.values.name.trim()\n ? result.values.name.trim()\n : String(item['name'] ?? '');\n const labelAfter = result.values?.options?.label;\n const overriddenTitle =\n labelAfter !== undefined &&\n labelAfter !== null &&\n !isEffectivelyEmptyLocalizedValue(labelAfter)\n ? labelAfter\n : (item['title'] ?? '');\n\n return {\n ...item,\n name: overriddenName,\n title: overriddenTitle,\n ...(descKeyPresent ? { description: descriptionAfter } : {}),\n interface: JSON.stringify(updatedWidget),\n };\n } catch (error) {\n console.error('Error editing field:', error);\n await this.dialogService.alert(\n (await this.translationService.translateAsync('@general:messages.error.title')) || 'Error',\n error instanceof Error ? error.message : 'Failed to edit field interface',\n 'danger',\n );\n return null;\n }\n }\n\n private buildFieldOverrideProperties(currentItem: AXPBuilderItem, duplicateNameMessage: string) {\n const basicGroup = {\n name: 'basic-info',\n order: -1,\n title: '@data-management:metadata-definitions.components.meta-data-selector.basic-info.title',\n };\n const siblingNames = this.collectItemNames(this.builderValue(), String(currentItem.id));\n const nameProperty: AXPWidgetProperty = {\n name: 'fieldName',\n title: '@general:terms.common.name',\n group: basicGroup,\n order: 0,\n schema: {\n dataType: 'string',\n interface: { name: 'name', path: 'name', type: AXPWidgetsCatalog.text },\n },\n validations: [\n { rule: 'required' },\n { rule: 'variable-name' },\n {\n rule: 'callback',\n options: {\n message: duplicateNameMessage,\n validate: (val: unknown) => {\n const name = typeof val === 'string' ? val.trim() : '';\n if (!name) return { result: true };\n return { result: !siblingNames.has(name), message: duplicateNameMessage };\n },\n },\n },\n ],\n visible: true,\n };\n const titleProperty: AXPWidgetProperty = {\n name: 'fieldTitle',\n title: '@general:terms.common.title',\n group: basicGroup,\n order: 1,\n schema: {\n dataType: 'string',\n interface: { name: 'label', path: 'options.label', type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n visible: true,\n };\n const descriptionProperty: AXPWidgetProperty = {\n name: 'fieldDescription',\n title: '@general:terms.common.description',\n group: basicGroup,\n order: 2,\n schema: {\n dataType: 'string',\n interface: { name: 'description', path: 'options.description', type: AXPWidgetsCatalog.largeText },\n },\n visible: true,\n };\n return [\n { property: nameProperty, tab: { name: 'general' }, group: basicGroup },\n { property: titleProperty, tab: { name: 'general' }, group: basicGroup },\n { property: descriptionProperty, tab: { name: 'general' }, group: basicGroup },\n ];\n }\n\n private collectItemNames(value: AXPBuilderValue, excludeItemId?: string): Set<string> {\n const names = new Set<string>();\n for (const s of value.sections) {\n for (const it of s.items) {\n if (excludeItemId != null && it.id === excludeItemId) continue;\n const n = it['name'];\n if (typeof n === 'string' && n) names.add(n);\n }\n }\n return names;\n }\n\n private generateUniqueItemName(baseName: string, taken: Set<string>): string {\n if (!baseName) return baseName;\n if (!taken.has(baseName)) return baseName;\n let i = 1;\n while (taken.has(`${baseName}${i}`)) i++;\n return `${baseName}${i}`;\n }\n\n async handlePreviewClick(): Promise<void> {\n if (this.isPreviewDisabled()) return;\n try {\n const previewTitle = await this.translationService.translateAsync(\n '@data-management:metadata-definitions.actions.preview.title',\n );\n const formDef = this.previewFormDefinition();\n if (!formDef.groups?.length) {\n const ref = await this.layoutBuilder\n .create()\n .dialog((d) => {\n d.setTitle(previewTitle).setSize('md').setCloseButton(true).setContext({});\n d.setActions((a) => a.cancel('@general:actions.close.title'));\n })\n .show();\n ref.close();\n return;\n }\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(previewTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext(builderValueToMetaDataValue(this.builderValue()) || {})\n .content((lb) => lb.dynamicForm(formDef))\n .setActions((a) => a.cancel('@general:actions.close.title'));\n })\n .show();\n await dialogRef.action();\n dialogRef.close();\n } catch (error) {\n console.error('Error opening preview:', error);\n await this.dialogService.alert(\n (await this.translationService.translateAsync('@general:messages.error.title')) || 'Error',\n error instanceof Error ? error.message : 'Failed to open preview',\n 'danger',\n );\n }\n }\n}\n","<div class=\"axp-meta-data-builder-groups\" *translate=\"let t\">\n @if (!readonly() && !hideHeaderActions()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button class=\"ax-sm\"\n [text]=\"'@data-management:metadata-definitions.actions.add-group.title' | translate | async\" [color]=\"'primary'\"\n (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n\n <ax-button class=\"ax-sm\" [color]=\"'success'\" [disabled]=\"isPreviewDisabled()\"\n [text]=\"'@data-management:metadata-definitions.actions.preview.title' | translate | async\"\n (onClick)=\"handlePreviewClick()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"ax-block ax-min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n","import { AXPPageStatus, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core';\nimport { AXPMetaDataBuilderGroupsComponent } from './meta-data-builder-groups.component';\nimport type { AXMMetaDataBuilderValue } from './meta-data-builder.types';\n\n@Component({\n selector: 'axp-meta-data-builder-widget-edit',\n templateUrl: './meta-data-builder-edit.component.html',\n styleUrl: './meta-data-builder-edit.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPMetaDataBuilderGroupsComponent],\n})\nexport class AXPMetaDataBuilderWidgetEditComponent extends AXPValueWidgetComponent<AXMMetaDataBuilderValue> {\n private readonly currentValue = signal<AXMMetaDataBuilderValue | null>(null);\n\n protected valueForGroups = computed(() => this.getValue() ?? null);\n protected optionsForGroups = computed(() => this.options() ?? {});\n\n #submitEffect = effect(() => {\n if (this.layoutService.status() === AXPPageStatus.Submitting) {\n const val = this.currentValue();\n this.setValue(val ?? this.getValue() ?? { groups: [] });\n }\n });\n\n protected onValueChange(value: AXMMetaDataBuilderValue): void {\n this.currentValue.set(value);\n this.setValue(value);\n }\n}\n","<div class=\"axp-meta-data-builder-widget-edit\">\n <axp-meta-data-builder-groups\n [value]=\"valueForGroups()\"\n [options]=\"optionsForGroups()\"\n (valueChange)=\"onValueChange($event)\">\n </axp-meta-data-builder-groups>\n</div>\n","import { AXPEntityCommandScope } from '@acorex/platform/common';\nimport {\n actionExists,\n AXPEntityActionPlugin,\n resolveEntityPluginDetailPageOrder,\n} from '@acorex/platform/layout/entity';\nimport { META_DATA_FORM_FIELD, META_DATA_SELECTOR_FIELD } from '../config';\nimport { AXMMetaDataBuilderValue } from './meta-data-builder.types';\n\n/** Component key used when display is 'page'. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const META_DATA_BUILDER_PAGE_COMPONENT_KEY = 'entity-meta-data-builder-page';\n\n/** Display configuration for section (builder shown inline in entity views) */\nexport type MetaDataBuilderSectionConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/** Display configuration for popup (action opens builder in dialog) */\nexport type MetaDataBuilderPopupConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/** Display configuration for page (builder shown as entity tab with toolbar actions) */\nexport type MetaDataBuilderPageConfig = {\n enabled?: boolean;\n title?: string;\n icon?: string;\n order?: number;\n};\n\n/** Flexible display configuration object for the meta-data-builder */\nexport type MetaDataBuilderDisplayConfig = {\n section?: MetaDataBuilderSectionConfig;\n popup?: MetaDataBuilderPopupConfig;\n page?: MetaDataBuilderPageConfig;\n};\n\n/** Display option - where to show the meta-data-builder: section, popup, page, or both */\nexport type MetaDataBuilderDisplay = MetaDataBuilderDisplayConfig | 'section' | 'popup' | 'page' | 'both';\n\nfunction normalizeBuilderDisplayConfig(\n display: MetaDataBuilderDisplay | undefined,\n defaultTitle: string\n): MetaDataBuilderDisplayConfig {\n if (!display) return { section: { enabled: true } };\n if (typeof display === 'object') return display;\n switch (display) {\n case 'section':\n return { section: { enabled: true, title: defaultTitle }, popup: { enabled: false }, page: { enabled: false } };\n case 'popup':\n return { section: { enabled: false }, popup: { enabled: true, title: defaultTitle }, page: { enabled: false } };\n case 'page':\n return { section: { enabled: false }, popup: { enabled: false }, page: { enabled: true, title: defaultTitle } };\n case 'both':\n return { section: { enabled: true, title: defaultTitle }, popup: { enabled: true, title: defaultTitle }, page: { enabled: false } };\n default:\n return { section: { enabled: true } };\n }\n}\n\nexport type MetaDataBuilderPluginOptions = {\n /** Field and group title */\n title?: string;\n /** How to display the meta-data-builder: section (inline), popup (button opens dialog), page (entity tab with toolbar actions), or both */\n display?: MetaDataBuilderDisplay;\n /** If true, each metadata group becomes a separate entity section (TODO) */\n renderGroupsAsSections?: boolean;\n};\n\n/**\n * meta-data-builder plugin\n *\n * Dynamic behavior:\n * - Creates a single property for metadata builder configuration\n * - Dynamically generates entity groups and meta-data-form widgets based on configured groups\n * - Reads group configuration at runtime from the field value\n */\nexport const metaDataBuilderPlugin: AXPEntityActionPlugin = {\n name: 'meta-data-builder',\n order: 60,\n apply: (ctx, options?: MetaDataBuilderPluginOptions) => {\n const opts = options ?? {};\n const field = META_DATA_SELECTOR_FIELD;\n\n // Try to get title from various sources in priority order:\n // 1. Direct options.title\n // 2. meta-data-form plugin configuration (from plugins array - current entity or base entity)\n // 3. meta-data-form extension (if plugin has already run - current entity or base entity)\n // 4. category plugin metaData.title (if enabled via category plugin)\n // 5. Default title\n\n let metaDataFormTitle: string | undefined;\n let metaDataFormExtTitle: { title?: string } | undefined;\n let categoryMetaDataTitle: string | undefined;\n\n // Check current entity's plugins and extensions\n const plugins = (ctx.entity as any).plugins as Array<{ name: string; options?: any }> | undefined;\n const metaDataFormPlugin = plugins?.find((p) => p.name === 'meta-data-form');\n metaDataFormTitle = metaDataFormPlugin?.options?.title;\n\n const metaDataFormExt = (ctx.entity as any).extensions?.metaDataForm;\n metaDataFormExtTitle = metaDataFormExt\n ? Object.values(metaDataFormExt).find((ext: any) => ext?.title) as { title?: string } | undefined\n : undefined;\n\n const categoryExt = (ctx.entity as any).extensions?.category;\n categoryMetaDataTitle = categoryExt?.metaData?.title;\n\n // If running on a category entity (name ends with \"Category\"), check the base entity\n if (ctx.entity.name.endsWith('Category') && !metaDataFormTitle && !metaDataFormExtTitle) {\n const baseEntityName = ctx.entity.name.replace('Category', '');\n try {\n // Try to access the entity registry to get base entity\n // Note: This requires the registry to be available, which might not always be the case\n // For now, we'll rely on the category extension which should have the title\n // But we can also check if there's a way to access base entity plugins\n } catch (error) {\n // Silently fail - we'll use other sources\n }\n }\n\n // Priority: 1. options.title, 2. meta-data-form plugin title, 3. meta-data-form extension title, 4. category metaData.title, 5. default\n const displayTitle =\n (opts.title && opts.title.trim().length > 0)\n ? opts.title\n : (metaDataFormTitle && metaDataFormTitle.trim().length > 0)\n ? metaDataFormTitle\n : (metaDataFormExtTitle?.title && metaDataFormExtTitle.title.trim().length > 0)\n ? metaDataFormExtTitle.title\n : (categoryMetaDataTitle && categoryMetaDataTitle.trim().length > 0)\n ? categoryMetaDataTitle\n : '@data-management:metadata-definitions.actions.configure-meta-data.title';\n\n const displayConfig = normalizeBuilderDisplayConfig(opts.display, displayTitle);\n const sectionConfig = displayConfig.section ?? {};\n const popupConfig = displayConfig.popup ?? {};\n const pageConfig = displayConfig.page ?? {};\n const showSection = sectionConfig.enabled !== false;\n const showPopup = popupConfig.enabled === true;\n const showPage = pageConfig.enabled === true;\n const popupTitle = popupConfig.title ?? displayTitle;\n const pageTitle = pageConfig.title ?? displayTitle;\n const pageIcon = pageConfig.icon ?? 'fa-light fa-list-check';\n //#region ---- Step 1: Create Meta-Data Builder Property ----\n\n // Ensure group and section for the builder configuration itself\n const selectorSectionId = `meta-data-config`;\n const selectorGroupId = `meta-data-config`;\n const existingGroups = ctx.groups.list() ?? [];\n\n if (!existingGroups.some((g: any) => g.id === selectorGroupId)) {\n ctx.groups.add({ id: selectorGroupId, title: displayTitle } as any);\n }\n\n // Ensure property exists (using meta-data-builder-editor interface)\n const props = ctx.properties.list();\n if (!props.some((p: any) => p.name === field)) {\n ctx.properties.add({\n name: field,\n title: displayTitle,\n groupId: selectorGroupId,\n schema: {\n dataType: 'object',\n interface: {\n type: 'meta-data-builder-editor',\n },\n },\n } as any);\n }\n\n // Add builder to single/create/modify views only when section display is enabled\n const selectorColSpan = 12;\n if (showSection) {\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === selectorSectionId)) {\n next.sections.push({\n id: selectorSectionId,\n title: sectionConfig.title ?? displayTitle,\n order: sectionConfig.order ?? 200,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: selectorColSpan, order: 9 } },\n },\n });\n }\n return next;\n });\n\n ctx.interfaces.master.create.update((create) => {\n const next: any = create ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === selectorSectionId)) {\n next.sections.push({\n id: selectorSectionId,\n title: sectionConfig.title ?? displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: selectorColSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n\n ctx.interfaces.master.modify.update((modify) => {\n const next: any = modify ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === selectorSectionId)) {\n next.sections.push({\n id: selectorSectionId,\n title: sectionConfig.title ?? displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: selectorColSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n }\n\n if (showPage) {\n ctx.entity.pages ??= [];\n const pageExists = (ctx.entity.pages as any[]).some(\n (p: any) => p.componentKey === META_DATA_BUILDER_PAGE_COMPONENT_KEY && p.field === field,\n );\n const layoutOrder = resolveEntityPluginDetailPageOrder(\n { relatedEntities: ctx.entity.relatedEntities, pages: ctx.entity.pages as any[] },\n 'meta-data-builder',\n {\n componentKey: META_DATA_BUILDER_PAGE_COMPONENT_KEY,\n field,\n skipPage: pageExists\n ? { componentKey: META_DATA_BUILDER_PAGE_COMPONENT_KEY, field }\n : undefined,\n },\n );\n const page = {\n componentKey: META_DATA_BUILDER_PAGE_COMPONENT_KEY,\n field,\n title: pageTitle,\n icon: pageIcon,\n layout: { order: layoutOrder },\n };\n if (!pageExists) {\n (ctx.entity.pages as any[]).push(page);\n } else {\n const pages = ctx.entity.pages as any[];\n const index = pages.findIndex(\n (p) => p.componentKey === META_DATA_BUILDER_PAGE_COMPONENT_KEY && p.field === field,\n );\n if (index >= 0) {\n pages[index] = { ...pages[index], ...page };\n }\n }\n }\n\n //#endregion\n\n //#region ---- Step 2: Dynamic Group Generation Middleware ----\n\n // Add metadata middleware to dynamically generate groups at runtime\n // This middleware reads the metaDataList field value and creates\n // entity groups + meta-data-form widgets for each configured group\n\n const metadataMiddleware = {\n name: 'metadata-dynamic-groups',\n order: 100,\n apply: (entityCtx: any) => {\n // Get the metadata selector value from context\n const metaDataValue = entityCtx.data?.[field] as AXMMetaDataBuilderValue | undefined;\n\n if (!metaDataValue?.groups || metaDataValue.groups.length === 0) {\n return; // No groups configured, skip\n }\n\n // TODO: Implement renderGroupsAsSections option\n // If opts.renderGroupsAsSections === true:\n // - Create separate entity sections for each metadata group\n // - Each section gets its own meta-data-form widget with only that group's fields\n // If opts.renderGroupsAsSections === false (default):\n // - Create single section with all groups (current behavior)\n // - Single meta-data-form widget receives all groups, renders them as cards\n\n // Current implementation: renderGroupsAsSections = false (default)\n // Create a single section and single meta-data-form widget for all groups\n const sectionId = 'metadata-section';\n const formFieldName = META_DATA_FORM_FIELD;\n const groupId = 'metadata-group';\n\n // Ensure entity group exists\n if (!entityCtx.groups.list().some((g: any) => g.id === groupId)) {\n entityCtx.groups.add({\n id: groupId,\n title: displayTitle,\n } as any);\n }\n\n // Ensure meta-data-form property exists with all groups\n // Always update the property to ensure groups are passed correctly\n const existingProp = entityCtx.properties.list().find((p: any) => p.name === formFieldName);\n const groupsData = metaDataValue.groups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n fields: group.fields,\n }));\n\n if (!existingProp) {\n entityCtx.properties.add({\n name: formFieldName,\n title: displayTitle,\n groupId: groupId,\n schema: {\n dataType: 'object',\n interface: {\n type: 'meta-data-form-editor',\n options: {\n // Pass all groups so the form can render them as separate groups\n groups: groupsData,\n },\n },\n },\n } as any);\n } else {\n // Update existing property to ensure groups are set\n if (existingProp.schema?.interface?.options) {\n existingProp.schema.interface.options.groups = groupsData;\n }\n }\n\n // Add to single view - single section\n entityCtx.interfaces.master.single.update((single: any) => {\n const next: any = single ?? { title: entityCtx.entity.title, sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: displayTitle,\n order: 300,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === formFieldName)) {\n next.properties.push({\n name: formFieldName,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 0 } },\n },\n });\n }\n return next;\n });\n\n // Add to create view - single section\n entityCtx.interfaces.master.create.update((create: any) => {\n const next: any = create ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === formFieldName)) {\n next.properties.push({\n name: formFieldName,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 10 } },\n },\n });\n }\n return next;\n });\n\n // Add to modify view - single section\n entityCtx.interfaces.master.modify.update((modify: any) => {\n const next: any = modify ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === formFieldName)) {\n next.properties.push({\n name: formFieldName,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 10 } },\n },\n });\n }\n return next;\n });\n },\n };\n\n // Register the middleware (if middleware system exists)\n // Note: This is conceptual - actual implementation depends on platform capabilities\n // (ctx as any).middleware?.add?.(metadataMiddleware);\n\n //#endregion\n\n //#region ---- Step 3: Popup actions (when display is popup or both) ----\n\n if (showPopup) {\n const actionName = `show-meta-data-builder-popup-${field}`;\n const commandName = 'show-meta-data-builder-popup';\n\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [], actions: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n\n ctx.interfaces.master.list.update((list) => {\n const next: any = list ?? { actions: [], views: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n }\n\n //#endregion\n\n //#region ---- Step 4: Extension Metadata ----\n\n // Stamp normalized config for middleware\n (ctx.entity as any).extensions ??= {};\n (ctx.entity as any).extensions.metaDataBuilder ??= {};\n (ctx.entity as any).extensions.metaDataBuilder[field] = {\n title: displayTitle,\n display: displayConfig,\n };\n\n //#endregion\n },\n};\n","import { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject, Injectable } from '@angular/core';\n\n//#region ---- Meta-Data Builder Record Service ----\n\n/**\n * Contract for loading and persisting the record that holds the meta-data builder field.\n */\nexport abstract class AXMMetaDataBuilderRecordService {\n abstract findRecord(entity: string, id: string): Promise<Record<string, unknown> | null>;\n\n abstract updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>>;\n}\n\n@Injectable()\nexport class AXMDefaultMetaDataBuilderRecordService extends AXMMetaDataBuilderRecordService {\n private readonly entityService = inject(AXPEntityService);\n\n override findRecord(entity: string, id: string): Promise<Record<string, unknown> | null> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.byKey(id) as Promise<Record<string, unknown> | null>;\n }\n\n override updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.update(id, data) as unknown as Promise<Record<string, unknown>>;\n }\n}\n\n//#endregion\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'axp-meta-data-builder-widget-view',\n template: `<span>{{ display }}</span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorModule],\n})\nexport class AXPMetaDataBuilderWidgetViewComponent extends AXPValueWidgetComponent<unknown> {\n get display(): string {\n const val = this.getValue();\n return Array.isArray(val) ? val.map((v: { title?: string; text?: string }) => v.title || v.text).join(', ') : '';\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { META_DATA_SELECTOR_FIELD } from '../config';\nimport { AXMMetaDataBuilderRecordService } from './meta-data-builder-record.service';\n\nexport interface ShowMetaDataBuilderPopupInput {\n entity: string;\n id: string;\n /** Selector field name (default: META_DATA_SELECTOR_FIELD) */\n field?: string;\n title?: string;\n}\n\n/**\n * Opens the meta-data-builder (configuration UI for groups/fields) in a popup.\n * Used when meta-data-builder plugin has display: 'popup' or 'both'.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ShowMetaDataBuilderPopupCommand\n implements AXPCommand<ShowMetaDataBuilderPopupInput, any> {\n protected readonly layoutBuilder = inject(AXPLayoutBuilderService);\n protected readonly translationService = inject(AXTranslationService);\n protected readonly recordService = inject(AXMMetaDataBuilderRecordService);\n\n async execute(\n input: ShowMetaDataBuilderPopupInput | any\n ): Promise<AXPExecuteCommandResult<any>> {\n try {\n const contextOptions = (input as any).__context__?.options;\n const evaluatedInput: ShowMetaDataBuilderPopupInput = {\n ...contextOptions,\n ...input,\n ...(contextOptions ? contextOptions : {}),\n };\n\n const {\n entity,\n id,\n field = META_DATA_SELECTOR_FIELD,\n title,\n } = evaluatedInput;\n\n if (!entity || !id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.invalid-data'\n ),\n },\n };\n }\n\n const finalId = typeof id === 'string' ? id : String(id);\n if (!finalId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.invalid-data'\n ),\n },\n };\n }\n\n const currentRecord = await this.findRecord(entity, finalId);\n\n if (!currentRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.not-found'\n ),\n },\n };\n }\n\n const currentSelectorValue = (currentRecord as any)[field] ?? { groups: [] };\n\n const dialogTitle =\n title ??\n (await this.translationService.translateAsync(\n '@data-management:metadata-definitions.actions.configure-meta-data.title'\n ));\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPExecuteCommandResult<any>>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({\n ...currentRecord,\n [field]: currentSelectorValue,\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px');\n flex.formField('', (fieldBuilder) => {\n fieldBuilder\n .path(field)\n .setShowLabel(false)\n .customWidget('meta-data-builder-editor', {});\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { success: false };\n }\n const updateData = { [field]: context[field] };\n const updated = await this.updateRecord(entity, finalId, updateData);\n return {\n success: true,\n data: updated,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.updated'\n ),\n },\n };\n });\n })\n .show();\n\n return result;\n } catch (error) {\n return {\n success: false,\n message: {\n text:\n error instanceof Error\n ? error.message\n : 'Failed to show meta data builder popup',\n },\n };\n }\n }\n\n //#region ---- Overridable Methods ----\n\n /**\n * Loads a record by entity and id. Delegates to {@link AXMMetaDataBuilderRecordService}.\n * Override in a subclass to use custom logic instead of the injected service.\n */\n protected findRecord(\n entity: string,\n id: string,\n ): Promise<Record<string, unknown> | null> {\n return this.recordService.findRecord(entity, id);\n }\n\n /**\n * Persists meta-data changes. Delegates to {@link AXMMetaDataBuilderRecordService}.\n * Override in a subclass to use custom logic instead of the injected service.\n */\n protected updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n return this.recordService.updateRecord(entity, id, data);\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPMetaDataBuilderWidget } from './meta-data-builder';\nimport { AXPMetaDataFormWidget } from './meta-data-form';\n\n//#endregion\n\n//#region ---- Meta Data Widgets Provider ----\n\nconst WIDGETS = [AXPMetaDataBuilderWidget, AXPMetaDataFormWidget];\n\n@Injectable()\nexport class AXMMetaDataWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","import { AXPEntityCommandScope } from '@acorex/platform/common';\nimport { actionExists, AXPEntityActionPlugin } from '@acorex/platform/layout/entity';\nimport { META_DATA_FORM_FIELD } from '../config';\n\n/**\n * Display configuration for section\n */\nexport type MetaDataFormSectionConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/**\n * Display configuration for popup\n */\nexport type MetaDataFormPopupConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/**\n * Flexible display configuration object\n */\nexport type MetaDataFormDisplayConfig = {\n section?: MetaDataFormSectionConfig;\n popup?: MetaDataFormPopupConfig;\n};\n\n/**\n * Display option - supports both simple string format and flexible object format\n */\nexport type MetaDataFormDisplay = MetaDataFormDisplayConfig | 'section' | 'popup' | 'both';\n\nexport type MetaDataFormPluginOptions = {\n // property name to hold meta data form, e.g., default is 'metaDataForm'\n field?: string;\n // path: string (field name - plugin will auto-detect category vs relationship lookup)\n path: string;\n // how to display the form - flexible configuration or simple string format\n display?: MetaDataFormDisplay;\n};\n\n/**\n * Normalizes display option to object format\n * Converts simple string format ('section' | 'popup' | 'both') to object format\n */\nfunction normalizeDisplayConfig(\n display: MetaDataFormDisplay | undefined,\n defaultTitle: string,\n): MetaDataFormDisplayConfig {\n // If not provided, default to section enabled\n if (!display) {\n return { section: { enabled: true } };\n }\n\n // If already an object, return as-is\n if (typeof display === 'object') {\n return display;\n }\n\n // Convert string format to object format\n switch (display) {\n case 'section':\n return {\n section: {\n enabled: true,\n title: defaultTitle,\n },\n popup: {\n enabled: false,\n },\n };\n case 'popup':\n return {\n section: {\n enabled: false,\n },\n popup: {\n enabled: true,\n title: defaultTitle,\n },\n };\n case 'both':\n return {\n section: {\n enabled: true,\n title: defaultTitle,\n },\n popup: {\n enabled: true,\n title: defaultTitle,\n },\n };\n default:\n // Fallback to section enabled\n return { section: { enabled: true } };\n }\n}\n\n/**\n * meta-data-form plugin\n * Notes:\n * - Always ensures a 'meta-data-form' group and single-view section\n * - Always ensures the property exists if missing\n * - Uses provided configuration options; others are fixed\n * - Requires path option (field name) to auto-detect metadata source\n * - Only applies if path field is a lookup-editor with valid entity option\n * - Auto-detects category lookup vs relationship lookup based on field definition\n * - field defaults to 'metaDataForm', title defaults to 'Meta Data Form'\n * - Silently ignores if path field is not properly configured\n */\nexport const metaDataFormPlugin: AXPEntityActionPlugin = {\n name: 'meta-data-form',\n order: 60,\n apply: (ctx, options?: MetaDataFormPluginOptions) => {\n if (!options?.path || options.path.trim().length === 0) {\n throw new Error('meta-data-form plugin requires a path option (field name) to auto-detect metadata source');\n }\n\n const field = options.field ?? META_DATA_FORM_FIELD;\n const defaultTitle = '@data-management:metadata-definitions.components.meta-data-form.title';\n\n // Normalize display configuration (convert string format to object format if needed)\n const displayConfig = normalizeDisplayConfig(options.display, defaultTitle);\n // Handle both 'section' and 'sections' for backward compatibility\n const sectionConfig = (displayConfig as any).section ?? (displayConfig as any).sections ?? {};\n const popupConfig = displayConfig.popup ?? {};\n\n // Determine if section and popup should be shown\n // Default: section enabled if not explicitly disabled, popup disabled if not explicitly enabled\n const showSection = sectionConfig.enabled !== false; // Default true\n const showPopup = popupConfig.enabled === true; // Default false\n\n // Get titles (use display config titles or fallback to default)\n const sectionTitle = sectionConfig.title ?? defaultTitle;\n const popupTitle = popupConfig.title ?? defaultTitle;\n // Use section title for group/property title, fallback to default\n const groupTitle = sectionTitle;\n\n // Smart detection: analyze the path field to determine metadata source\n const props = ctx.properties.list();\n const pathProperty = props.find((p: any) => p.name === options.path);\n\n // Only apply plugin if path field is a lookup-editor with valid entity\n //|| pathProperty.schema.interface.type !== 'lookup-editor'\n if (!pathProperty?.schema?.interface?.type) {\n return; // Ignore - path field is not a lookup-editor\n }\n\n const targetEntity = pathProperty.schema.interface.options?.['entity'];\n if (!targetEntity) {\n return; // Ignore - path field doesn't have valid entity option\n }\n\n let metadataExpression: string;\n\n if (targetEntity.endsWith('Category')) {\n // Scenario 1: Category lookup - use fromCategory\n metadataExpression = `{{ metadata.fromCategory(\"${ctx.entity.module}.${ctx.entity.name}\", context.eval('${options.path}')) }}`;\n } else {\n // Scenario 2: Relationship lookup - use fromEntity\n metadataExpression = `{{ metadata.fromEntity(\"${targetEntity}\", context.eval('${options.path}')) }}`;\n }\n\n // Ensure group and section ids (unique per field)\n const sectionId = `meta-data-form-${field}`;\n const groupIdForProperty = `meta-data-form-${field}`;\n const existingGroups = ctx.groups.list() ?? [];\n if (!existingGroups.some((g: any) => g.id === groupIdForProperty)) {\n ctx.groups.add({ id: groupIdForProperty, title: groupTitle } as any);\n }\n\n // Ensure property exists (using meta-data-form-editor interface)\n if (!props.some((p: any) => p.name === field)) {\n ctx.properties.add({\n name: field,\n title: groupTitle,\n groupId: groupIdForProperty,\n schema: {\n dataType: 'string',\n interface: {\n type: 'meta-data-form-editor',\n options: {\n groups: metadataExpression,\n },\n },\n },\n } as any);\n }\n\n // Ensure column exists\n // const cols = ctx.columns.list() ?? [];\n // if (!cols?.some((c: any) => c.name === field)) {\n // ctx.columns.add({ name: field } as any);\n // }\n\n // Display configuration is already parsed above\n\n // Ensure single view section and property layout exists (only if showSection is true)\n const sectionOrder = 9;\n const colSpan = 12;\n if (showSection) {\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: sectionTitle,\n order: sectionConfig.order ?? 200,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan, order: sectionOrder } },\n },\n });\n }\n return next;\n });\n\n // Ensure create view includes the section and property layout\n ctx.interfaces.master.create.update((create) => {\n const next: any = create ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: sectionTitle,\n order: sectionConfig.order,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n\n // Ensure update view includes the section and property layout\n ctx.interfaces.master.modify.update((modify) => {\n const next: any = modify ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: sectionTitle,\n order: sectionConfig.order,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n }\n\n // Add popup actions to entity views (only if showPopup is true)\n // Only apply to single and list views\n if (showPopup) {\n const actionName = `show-meta-data-form-popup-${field}`;\n const commandName = 'show-meta-data-form-popup';\n\n // Add action to single view\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [], actions: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field: field,\n path: options.path,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n\n // Add action to list view\n ctx.interfaces.master.list.update((list) => {\n const next: any = list ?? { actions: [], views: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field: field,\n path: options.path,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n }\n\n // Stamp normalized config for middleware\n (ctx.entity as any).extensions ??= {};\n (ctx.entity as any).extensions.metaDataForm ??= {};\n (ctx.entity as any).extensions.metaDataForm[field] = {\n title: groupTitle,\n path: options.path,\n display: displayConfig,\n };\n },\n};\n","import { NgModule } from '@angular/core';\nimport {\n AXMMetaDataBuilderRecordService,\n AXMDefaultMetaDataBuilderRecordService,\n} from './meta-data-builder/meta-data-builder-record.service';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex/platform/layout/widget-core';\nimport { AXP_ENTITY_ACTION_PLUGIN } from '@acorex/platform/layout/entity';\nimport { AXMMetaDataWidgetsProvider } from './widget-definition.provider';\nimport { metaDataBuilderPlugin } from './meta-data-builder';\nimport { metaDataFormPlugin } from './meta-data-form/meta-data-form.plugin';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: metaDataBuilderPlugin },\n { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: metaDataFormPlugin },\n {\n provide: AXMMetaDataBuilderRecordService,\n useClass: AXMDefaultMetaDataBuilderRecordService,\n },\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXMMetaDataWidgetsProvider, multi: true },\n ],\n})\nexport class AXMMetaDataFeatureModule {}","import { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPMultiLanguageStringResolverService,\n type AXPActionMenuItem,\n type AXPMultiLanguageString,\n} from '@acorex/platform/core';\nimport { AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY } from '@acorex/platform/layout/builder';\nimport { AXPItemConfiguratorComponent, type ItemConfiguratorListItem } from '@acorex/platform/layout/components';\nimport { AXPWidgetRegistryService, type AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { cloneDeep } from 'lodash-es';\n\nimport { AXMMetaDataDefinitionEntityModel } from '../../../../entities/meta-data-definition';\nimport { AXMMetaDataDefinitionService } from '../../../../entities/meta-data-definition/meta-data-definition.service';\nimport { AXPMetaDataFormWidget } from '../../meta-data-form/meta-data-form.config';\n\n//#region ---- Helpers ----\n\nfunction parseInterfaceToWidgetNode(\n raw: AXMMetaDataDefinitionEntityModel['interface'],\n): AXPWidgetNode | null {\n if (raw == null) {\n return null;\n }\n if (typeof raw === 'function') {\n return null;\n }\n if (typeof raw === 'string') {\n const t = raw.trim();\n if (!t) {\n return null;\n }\n try {\n const parsed = JSON.parse(t) as unknown;\n if (parsed && typeof parsed === 'object' && parsed !== null && 'type' in parsed) {\n return parsed as AXPWidgetNode;\n }\n } catch {\n return { type: t, options: {} };\n }\n return { type: t, options: {} };\n }\n if (typeof raw === 'object' && raw !== null && 'type' in raw) {\n return cloneDeep(raw as AXPWidgetNode);\n }\n return null;\n}\n\nfunction iconForInterfaceWidget(\n registry: AXPWidgetRegistryService,\n interfaceValue: AXMMetaDataDefinitionEntityModel['interface'],\n): string {\n const node = parseInterfaceToWidgetNode(interfaceValue);\n const type = node?.type?.trim();\n if (type) {\n const cfg = registry.getOptional(type);\n if (cfg?.icon) {\n return cfg.icon;\n }\n }\n return AXPMetaDataFormWidget.icon ?? 'fa-light fa-list-check';\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Select a meta-data definition (entity record) and preview its interface widget, mirroring\n * {@link AXPWidgetFieldConfiguratorComponent} but backed by {@link AXMMetaDataDefinitionService}.\n */\n@Component({\n selector: 'axm-meta-data-configurator',\n standalone: true,\n template: `\n <axp-item-configurator\n [(selectedItemId)]=\"definitionId\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [items]=\"configuratorItems()\"\n [headerActions]=\"previewHeaderActions()\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ax-flex ax-flex-col',\n '[attr.readonly]': 'readonly() ? \"\" : null',\n },\n styles: [\n `\n :host([readonly]) {\n pointer-events: none;\n opacity: 0.7;\n }\n `,\n ],\n imports: [AXPItemConfiguratorComponent],\n})\nexport class AXMetaDataConfiguratorComponent {\n //#region ---- Inputs ----\n\n /** When set, uses this list instead of loading from {@link AXMMetaDataDefinitionService}. */\n items = input<AXMMetaDataDefinitionEntityModel[] | undefined>(undefined);\n\n label = input<string>('@data-management:metadata-definitions.components.meta-data-configurator.label');\n\n /** Selected meta-data definition id (entity id). */\n definitionId = model<string>('');\n\n /** Optional preview field name override; defaults to the selected definition's `name`. */\n fieldName = input<string | undefined>(undefined);\n\n /** Optional preview field title override; defaults to the selected definition's `title`. */\n fieldTitle = input<AXPMultiLanguageString | undefined>(undefined);\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly metaDataDefinitionService = inject(AXMMetaDataDefinitionService);\n private readonly translation = inject(AXTranslationService);\n private readonly mlResolver = inject(AXPMultiLanguageStringResolverService);\n private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n\n /** Recomputes list labels when the active locale changes. */\n private readonly activeLocale = toSignal(this.mlResolver.currentLocale$, {\n initialValue: this.translation.getActiveLang(),\n });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly loadedItems = signal<AXMMetaDataDefinitionEntityModel[]>([]);\n private readonly fetchOnce = signal(false);\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected definitions = computed<AXMMetaDataDefinitionEntityModel[]>(() => {\n const override = this.items();\n if (override !== undefined) {\n return override;\n }\n return this.loadedItems();\n });\n\n protected configuratorItems = computed<ItemConfiguratorListItem[]>(() => {\n this.activeLocale();\n const list: ItemConfiguratorListItem[] = [];\n for (const d of this.definitions()) {\n const id = d?.id != null ? String(d.id) : '';\n if (!id) {\n continue;\n }\n let label = this.mlResolver.resolve(d.title as AXPMultiLanguageString);\n if (!label.trim()) {\n label =\n typeof d.name === 'string'\n ? d.name\n : this.mlResolver.resolve(d.name as AXPMultiLanguageString);\n }\n label = label.trim() || id;\n const descRaw = d.description;\n let description: string | undefined;\n if (descRaw != null && descRaw !== '') {\n const text = this.mlResolver.resolve(descRaw as AXPMultiLanguageString).trim();\n if (text) {\n description = text;\n }\n }\n list.push({\n id,\n title: label,\n icon: iconForInterfaceWidget(this.widgetRegistry, d.interface),\n ...(description != null ? { description } : {}),\n });\n }\n return list.sort((a, b) => a.title.localeCompare(b.title));\n });\n\n protected selectedDefinition = computed<AXMMetaDataDefinitionEntityModel | null>(() => {\n const id = this.definitionId();\n if (!id) {\n return null;\n }\n return this.definitions().find((d) => String(d.id) === id) ?? null;\n });\n\n protected previewHeaderActions = computed<AXPActionMenuItem[]>(() => {\n const def = this.selectedDefinition();\n const widget = def ? parseInterfaceToWidgetNode(def.interface) : null;\n const hasWidget = !!widget?.type;\n const fieldName = this.fieldName() ?? def?.name ?? 'Field';\n const fieldTitle = this.fieldTitle() ?? def?.title ?? '';\n return [\n {\n name: 'preview-meta-data-definition-interface',\n title: '@general:actions.preview.title',\n icon: 'fa-solid fa-eye',\n iconOnly: true,\n disabled: this.readonly() || !hasWidget,\n command: {\n name: AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY,\n options: {\n widget: cloneDeep(widget ?? { type: '', options: {} }),\n fieldName,\n fieldTitle,\n },\n },\n },\n ];\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n const override = this.items();\n if (override !== undefined) {\n return;\n }\n if (untracked(() => this.fetchOnce())) {\n return;\n }\n untracked(() => this.fetchOnce.set(true));\n void (async () => {\n try {\n const result = await this.metaDataDefinitionService.query({ skip: 0, take: 2000 });\n this.loadedItems.set(result.items ?? []);\n } catch {\n this.loadedItems.set([]);\n }\n })();\n });\n\n effect(() => {\n const id = this.definitionId();\n const defs = this.definitions();\n if (!id || defs.some((d) => String(d.id) === id)) {\n return;\n }\n void (async () => {\n try {\n const one = await this.metaDataDefinitionService.getOne(id);\n untracked(() => {\n this.loadedItems.update((cur) => {\n if (cur.some((d) => String(d.id) === String(one.id))) {\n return cur;\n }\n return [...cur, one];\n });\n });\n } catch {\n /* keep current list */\n }\n })();\n });\n }\n\n //#endregion\n}\n","\n//#region ---- System Tag Provider ----\n\nimport { AXPTagProvider, AXPTag } from \"@acorex/platform/core\";\n\n/**\n * Default system tag provider\n * Provides readonly system-level tags\n */\nexport class AXPSystemTagProvider extends AXPTagProvider {\n name = 'system';\n\n /**\n * Provide default system tags\n */\n async provide(): Promise<AXPTag[]> {\n return [\n {\n id: 'system-important',\n title: 'Important',\n color: '#F44336', // Red - Material Design\n scope: 'system',\n description: 'Marks items as important',\n },\n {\n id: 'system-urgent',\n title: 'Urgent',\n color: '#FF9800', // Orange - Material Design\n scope: 'system',\n description: 'Marks items as urgent',\n },\n {\n id: 'system-todo',\n title: 'To Do',\n color: '#2196F3', // Blue - Material Design\n scope: 'system',\n description: 'Items pending action',\n },\n {\n id: 'system-in-progress',\n title: 'In Progress',\n color: '#03A9F4', // Light Blue - Material Design\n scope: 'system',\n description: 'Currently being worked on',\n },\n {\n id: 'system-completed',\n title: 'Completed',\n color: '#4CAF50', // Green - Material Design\n scope: 'system',\n description: 'Finished items',\n },\n {\n id: 'system-blocked',\n title: 'Blocked',\n color: '#FF5722', // Deep Orange - Material Design\n scope: 'system',\n description: 'Items that are blocked',\n },\n {\n id: 'system-review',\n title: 'Review',\n color: '#FFC107', // Amber - Material Design\n scope: 'system',\n description: 'Items pending review',\n },\n {\n id: 'system-bug',\n title: 'Bug',\n color: '#E91E63', // Pink - Material Design\n scope: 'system',\n description: 'Bug reports',\n },\n {\n id: 'system-feature',\n title: 'Feature',\n color: '#009688', // Teal - Material Design\n scope: 'system',\n description: 'New feature requests',\n },\n {\n id: 'system-documentation',\n title: 'Documentation',\n color: '#00BCD4', // Cyan - Material Design\n scope: 'system',\n description: 'Documentation related',\n },\n ];\n }\n\n // System tags are readonly - no create/update/delete\n}\n\n//#endregion\n\n","import {\n AXPEntityActionPlugin,\n cloneLayoutArrays,\n ensureLayoutPropertyView,\n ensureLayoutSection,\n ensureListActions,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsList } from '@acorex/modules/common';\n\n//#region ---- Types ----\n\nexport interface AXPTagPluginOptions {\n propertyName?: string; // default: tags\n placeholder?: string; // default: '@general:widgets.tag-editor.placeholder'\n hasClearButton?: boolean; // default: true\n allowDuplicate?: boolean; // default: false\n showInList?: boolean; // default: false\n}\n\n//#endregion\n\n//#region ---- Plugin Definition ----\n\nexport const tagsPlugin: AXPEntityActionPlugin = {\n name: 'tags',\n order: 80,\n apply: (ctx, options?: AXPTagPluginOptions) => {\n ensureListActions(ctx);\n\n const propertyName = options?.propertyName?.trim()?.length ? options.propertyName : 'tags';\n const placeholder = options?.placeholder ?? '@general:widgets.tag-editor.placeholder';\n const hasClearButton = options?.hasClearButton ?? true;\n const allowDuplicate = options?.allowDuplicate ?? false;\n const showInList = options?.showInList ?? false;\n\n const groupId = 'classification';\n const groups = ctx.groups.list() ?? [];\n if (!groups.some((g: any) => g.id === groupId)) {\n ctx.groups.add({ id: groupId, title: '@general:terms.interface.classification', icon: 'fa-solid fa-tag' });\n }\n\n const props = ctx.properties.list();\n if (!props.some((p: any) => p.name === propertyName)) {\n ctx.properties.add({\n name: propertyName,\n title: '@general:terms.common.tags',\n groupId,\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TagEditor,\n options: {\n placeholder,\n hasClearButton,\n allowDuplicate,\n },\n },\n },\n validations: [],\n options: {\n sort: { enabled: false },\n filter: {\n advance: { enabled: true },\n inline: { enabled: true },\n },\n },\n } as any);\n }\n\n // Add tags to columns for list view\n const columns = ctx.columns.list() ?? [];\n if (!columns.some((c: any) => c.name === propertyName)) {\n ctx.columns.add({\n name: propertyName,\n title: '@general:terms.common.tags',\n width: 200,\n sortable: false,\n filterable: true,\n visible: showInList,\n } as any);\n }\n\n const applyLayoutPatch = (layout: any) => {\n const next = cloneLayoutArrays(layout);\n ensureLayoutSection(next, { id: groupId, order: 150 } as any);\n ensureLayoutPropertyView(next, {\n name: propertyName,\n layout: { positions: { lg: { colSpan: 6, order: 24 } } },\n } as any);\n return next;\n };\n\n ctx.interfaces.master.create.update((create) => applyLayoutPatch(create ?? { sections: [], properties: [] }));\n ctx.interfaces.master.modify.update((modify) => applyLayoutPatch(modify ?? { sections: [], properties: [] }));\n ctx.interfaces.master.single.update((single) => applyLayoutPatch(single ?? { title: ctx.entity.title, sections: [], properties: [] }));\n },\n};\n\n//#endregion\n\n","\n//#region ---- System Tag Provider ----\n\nimport { AXPTagProvider, AXPTag } from \"@acorex/platform/core\";\nimport { AXMTagEntityService } from \"../../entities\";\nimport { inject } from \"@angular/core\";\n\n/**\n * Default system tag provider\n * Provides readonly system-level tags\n */\nexport class AXPUserTagProvider extends AXPTagProvider {\n name = 'user';\n\n private tagService = inject(AXMTagEntityService);\n\n /**\n * Provide default system tags\n */\n async provide(): Promise<AXPTag[]> {\n const tags = await this.tagService.query();\n return tags.items.map((tag) => ({\n id: tag.id,\n title: tag.title,\n color: tag.color,\n scope: tag.scope,\n description: tag.description,\n }));\n }\n\n}\n\n//#endregion\n\n","import { NgModule } from '@angular/core';\nimport { AXP_TAG_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_ACTION_PLUGIN } from '@acorex/platform/layout/entity';\nimport { tagsPlugin } from './tags.plugin';\nimport { AXPSystemTagProvider } from './tag-system.provider';\nimport { AXPUserTagProvider } from './tag-user.provider';\n\n//#region ---- Module ----\n\n@NgModule({\n providers: [\n { provide: AXP_ENTITY_ACTION_PLUGIN, useValue: tagsPlugin, multi: true },\n { provide: AXP_TAG_PROVIDER, useClass: AXPSystemTagProvider, multi: true },\n { provide: AXP_TAG_PROVIDER, useClass: AXPUserTagProvider, multi: true },\n ],\n})\nexport class AXMTagsFeatureModule { }\n\n//#endregion\n\n","import { NgModule } from \"@angular/core\";\nimport {\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n AXP_FEATURE_DEFINITION_PROVIDER,\n AXP_DATASOURCE_DEFINITION_PROVIDER,\n provideLazyProvider,\n} from '@acorex/platform/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex/platform/layout/components';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { DataManagementManifest } from './manifest';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXMDataManagementWidgetsProvider } from './widget-definition.provider';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXMMetadataEvaluatorScopeProvider } from './features/meta-data/metadata-evaluator-scope.provider';\nimport { AXMDataSourceEvaluatorScopeProvider } from './features/shared/data-source-evaluator-scope.provider';\nimport { AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER } from './features/query-builder/aggregate/default-aggregate-function.provider';\nimport { AXP_DEFAULT_AGGREGATE_CATEGORY_PROVIDER } from './features/query-builder/aggregate/default-aggregate-category.provider';\nimport { AXP_DEFAULT_DATABASE_TYPE_PROVIDER } from './features/query-builder/database-type/default-database-type.provider';\nimport { RootConfig } from './const';\nimport { AXPDataManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXMChoiceOptionsDataSourceDefinition } from './features/shared/choice-options.datasource';\nimport { AXMDataSourceListDataSourceDefinition } from './features/shared/datasources-list.datasource';\n\n// Entity Modules\nimport {\n AXMQueryEntityModule,\n AXMDataSourceEntityModule,\n AXMMetaDataDefinitionEntityModule,\n AXMTagEntityModule,\n} from './entities';\n\nimport { AXMMetaDataFeatureModule } from \"./features\";\nimport { AXMTagsFeatureModule } from \"./features/tags\";\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n // Entity Modules\n AXMQueryEntityModule,\n AXMDataSourceEntityModule,\n //\n AXMMetaDataDefinitionEntityModule,\n AXMMetaDataFeatureModule,\n //\n AXMTagEntityModule,\n AXMTagsFeatureModule\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMMetadataEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMDataSourceEvaluatorScopeProvider,\n multi: true,\n },\n // Aggregate Function Provider - Default provider for built-in aggregate functions\n AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER,\n // Aggregate Category Provider - Default provider for aggregate categories\n AXP_DEFAULT_AGGREGATE_CATEGORY_PROVIDER,\n // Database Type Provider - Default provider for database types (MySQL, PostgreSQL, etc.)\n AXP_DEFAULT_DATABASE_TYPE_PROVIDER,\n // Execute Query Command\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.query.name}:Execute`,\n command: () => import('./features/query-builder/commands/execute-query.command').then((c) => c.ExecuteQueryCommand),\n },\n {\n key: 'show-meta-data-form-popup',\n command: () => import('./features/meta-data/meta-data-form/show-meta-data-form-popup.command').then((c) => c.ShowMetaDataFormPopupCommand),\n },\n {\n key: 'show-meta-data-builder-popup',\n command: () =>\n import('./features/meta-data/meta-data-builder/show-meta-data-builder-popup.command').then(\n (c) => c.ShowMetaDataBuilderPopupCommand\n ),\n },\n ]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: DataManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPDataManagementFeatureDefinitionProvider,\n multi: true,\n },\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 provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_DATASOURCE_DEFINITION_PROVIDER,\n useClass: AXMDataSourceListDataSourceDefinition,\n multi: true,\n },\n {\n provide: AXP_DATASOURCE_DEFINITION_PROVIDER,\n useClass: AXMChoiceOptionsDataSourceDefinition,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMDataManagementWidgetsProvider,\n multi: true,\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/meta-data/meta-data-builder/meta-data-builder-page').then(\n (m) => m.AXMMetaDataBuilderPageComponentProvider\n ),\n ),\n ]\n})\nexport class AXMDataManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i1","i6","i5","i7","i8","i9","i10","WIDGETS"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-modules-data-management.mjs","sources":["../../../../libs/modules/data-management/src/lib/const.ts","../../../../libs/modules/data-management/src/lib/manifest.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget.config.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-edit.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-view.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-column.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-filter.component.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-filter-selector/column-filter-selector-widget-print.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/query-builder-widget.config.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/condition/query-builder-condition.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/condition/query-builder-condition.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/where/where-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/where/where-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/columns/columns-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/columns/columns-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/sort/sort-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/sort/sort-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/group-by/group-by-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/group-by/group-by-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-function.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-category.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-function.service.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/aggregate-functions.registry.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/default-aggregate-function.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/aggregate/default-aggregate-category.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/database-type.provider.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/database-type/database-type.service.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/raw-query/raw-query-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/raw-query/raw-query-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/output/output-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/output/output-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder/query-builder.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/query-builder.component.html","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-edit/query-builder-widget-edit.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-view/query-builder-widget-view.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-column/query-builder-widget-column.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder-widget/widget-designer/query-builder-widget-designer.component.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/query-builder.types.ts","../../../../libs/modules/data-management/src/lib/features/query-builder/database-type/default-database-type.provider.ts","../../../../libs/modules/data-management/src/lib/widget-definition.provider.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/config.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/metadata-evaluator-scope.provider.ts","../../../../libs/modules/data-management/src/lib/features/shared/data-source-evaluator-scope.provider.ts","../../../../libs/modules/data-management/src/lib/features.keys.ts","../../../../libs/modules/data-management/src/lib/feature-definition.provider.ts","../../../../libs/modules/data-management/src/lib/permission.keys.ts","../../../../libs/modules/data-management/src/lib/permission-definition.provider.ts","../../../../libs/modules/data-management/src/lib/menu.keys.ts","../../../../libs/modules/data-management/src/lib/menu.provider.ts","../../../../libs/modules/data-management/src/lib/entity.provider.ts","../../../../libs/modules/data-management/src/lib/features/shared/choice-options.datasource.ts","../../../../libs/modules/data-management/src/lib/features/shared/datasources-list.datasource.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.service.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.entity.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.types.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/column-def.widget.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.service.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.types.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.entity.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/filter-def.widget.ts","../../../../libs/modules/data-management/src/lib/entities/meta-data-definition/meta-data-definition.entity.ts","../../../../libs/modules/data-management/src/lib/entities/meta-data-definition/meta-data-definition.service.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.entity.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.module.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.service.ts","../../../../libs/modules/data-management/src/lib/entities/tag/tag.types.ts","../../../../libs/modules/data-management/src/lib/entities/query/query.module.ts","../../../../libs/modules/data-management/src/lib/entities/data-source/data-source.module.ts","../../../../libs/modules/data-management/src/lib/entities/meta-data-definition/meta-data-definition.module.ts","../../../../libs/modules/data-management/src/lib/entities/index.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/meta-data-form.config.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/meta-data-form-edit.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/show-meta-data-form-popup.command.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder.config.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder.types.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-mapping.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-groups.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-groups.component.html","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-edit.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-edit.component.html","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder.plugin.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-record.service.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/meta-data-builder-view.component.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-builder/show-meta-data-builder-popup.command.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/widget-definition.provider.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data-form/meta-data-form.plugin.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/meta-data.module.ts","../../../../libs/modules/data-management/src/lib/features/meta-data/components/meta-data-configurator/meta-data-configurator.component.ts","../../../../libs/modules/data-management/src/lib/features/tags/tag-system.provider.ts","../../../../libs/modules/data-management/src/lib/features/tags/tags.plugin.ts","../../../../libs/modules/data-management/src/lib/features/tags/tag-user.provider.ts","../../../../libs/modules/data-management/src/lib/features/tags/tags.module.ts","../../../../libs/modules/data-management/src/lib/data-management.module.ts","../../../../libs/modules/data-management/src/acorex-modules-data-management.ts"],"sourcesContent":["const config = {\n i18n: 'data-management',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'data-management',\n name: 'DataManagement',\n title: '@data-management:module.title',\n icon: 'fa-regular fa-database',\n },\n entities: {\n query: {\n name: 'Query',\n title: '@data-management:queries.entities.query.title',\n titlePlural: '@data-management:queries.entities.query.plural',\n icon: 'fa-regular fa-nfc-magnifying-glass',\n },\n queryCategory: {\n name: 'QueryCategory',\n title: '@data-management:queries.terms.category',\n titlePlural: '@data-management:queries.terms.categories',\n icon: 'fa-regular fa-layer-group',\n },\n dataSource: {\n name: 'DataSource',\n title: '@data-management:data-sources.entities.data-source.title',\n titlePlural: '@data-management:data-sources.entities.data-source.plural',\n icon: 'fa-regular fa-database',\n },\n dataSourceCategory: {\n name: 'DataSourceCategory',\n title: '@data-management:data-sources.terms.category',\n titlePlural: '@data-management:data-sources.terms.categories',\n icon: 'fa-regular fa-layer-group',\n },\n metaDataDefinition: {\n name: 'MetaDataDefinition',\n title: '@data-management:metadata-definitions.entities.metadata-definition.title',\n titlePlural: '@data-management:metadata-definitions.entities.metadata-definition.plural',\n icon: 'fa-light fa-server',\n },\n tag: {\n name: 'Tag',\n source: 'DataManagement.Tag',\n title: '@general:terms.common.tag',\n icon: 'fa-light fa-tags',\n },\n equipmentCategory: {\n name: 'EquipmentCategory',\n title: '@data-management:equipments.entities.equipment-category.title',\n titlePlural: '@data-management:equipments.entities.equipment-category.plural',\n icon: 'fa-light fa-folder-tree',\n },\n equipment: {\n name: 'Equipment',\n source: 'DataManagement.Equipment',\n title: '@data-management:equipments.entities.equipment.title',\n titlePlural: '@data-management:equipments.entities.equipment.plural',\n icon: 'fa-light fa-plug',\n },\n },\n};\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex/platform/core';\nimport { RootConfig } from './const';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Data Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const DataManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n required : true,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport interface AXMColumnFilterSelectorWidgetConfigType {\n columns?: Array<{\n name: string;\n title: string;\n type: string;\n }>;\n}\n\nexport const AXMColumnFilterSelectorWidget: AXPWidgetConfig<AXMColumnFilterSelectorWidgetConfigType> = {\n name: 'column-filter-selector-editor',\n title: 'Column Filter Selector',\n icon: 'fa-light fa-filter',\n description: 'Selects a column and configures its filter value',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n type: 'editor',\n defaultFilterWidgetName: 'string-filter',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./column-filter-selector-widget-view.component').then((c) => c.AXMColumnFilterSelectorWidgetViewComponent),\n },\n edit: {\n component: () => import('./column-filter-selector-widget-edit.component').then((c) => c.AXMColumnFilterSelectorWidgetEditComponent),\n },\n filter: {\n component: () => import('./column-filter-selector-widget-filter.component').then((c) => c.AXMColumnFilterSelectorWidgetFilterComponent),\n },\n column: {\n component: () => import('./column-filter-selector-widget-column.component').then((c) => c.AXMColumnFilterSelectorWidgetColumnComponent),\n },\n print: {\n component: () => import('./column-filter-selector-widget-print.component').then((c) => c.AXMColumnFilterSelectorWidgetPrintComponent),\n },\n designer: {\n component: () => import('./column-filter-selector-widget-edit.component').then((c) => c.AXMColumnFilterSelectorWidgetEditComponent),\n },\n },\n}; ","import { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\n\n\n\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPContextChangeEvent } from '@acorex/platform/core';\n\nexport interface ColumnFilterValue {\n columnName?: string;\n value?: any;\n}\n\n@Component({\n selector: 'axm-column-filter-selector-widget-edit',\n template: `\n <div class=\"ax-flex ax-gap-4 ax-w-full ax-items-center\">\n <axp-widgets-container \n [context]=\"getValue()\"\n (onContextChanged)=\"handleWidgetValueChange($event)\">\n <ax-select-box\n [placeholder]=\"'Select Column'\"\n [dataSource]=\"columnsDataSource()\"\n [valueField]=\"'name'\"\n [textField]=\"'title'\"\n [ngModel]=\"getValue().columnName\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"handleColumnChange($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n\n\n @if (filterWidgetNode()) {\n \n <ng-container \n axp-widget-renderer \n [node]=\"filterWidgetNode()!\" \n [mode]=\"'edit'\">\n </ng-container>\n } \n </axp-widgets-container>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n FormsModule,\n AXSelectBoxModule,\n AXDecoratorModule,\n AXPWidgetCoreModule\n],\n})\nexport class AXMColumnFilterSelectorWidgetEditComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n\n //#region ---- Properties ----\n\n protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n protected columns = computed(() => this.options()['columns'] as Array<{ name: string; title: string; type: string }> || []);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected columnsDataSource = computed(() => {\n return new AXDataSource({\n load: async () => {\n const items = this.columns();\n return {\n items: items,\n total: items.length,\n };\n },\n pageSize: 100,\n });\n });\n\n protected selectedColumn = computed(() => {\n const columnName = this.getValue()?.columnName;\n if (!columnName) return null;\n return this.columns().find(col => col.name === columnName);\n });\n\n protected filterWidgetNode = computed<AXPWidgetNode | null>(() => {\n const column = this.selectedColumn();\n if (!column) return null;\n\n const widgetType = this.getWidgetTypeForColumn(column.type);\n return {\n type: widgetType,\n defaultValue: this.getValue()?.value,\n path: 'value',\n name: 'value',\n options: {\n placeholder: `Enter ${column.title}`,\n disabled: this.disabled()\n }\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n //Update parent value when selections change\n #effect = effect(() => {\n const columnName = this.getValue()?.columnName;\n const value = this.getValue()?.value;\n\n console.log(columnName, value);\n\n this.setValue({\n columnName: columnName || undefined,\n value: value\n });\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleColumnChange(event: any) {\n this.setValue({\n columnName: event.value,\n value: undefined\n });\n }\n\n protected handleWidgetValueChange(event: AXPContextChangeEvent) {\n this.setValue({\n columnName: this.getValue()?.columnName,\n value: event.data.value\n });\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n protected getWidgetTypeForColumn(columnType: string): string {\n // Map column types to appropriate widget types\n //TODO default value need object \n let type = columnType;\n if (typeof columnType === 'object' && columnType !== null && 'name' in columnType) {\n type = columnType['name'];\n }\n switch (type) {\n case 'text-editor':\n case 'large-text-editor':\n case 'string':\n return 'string-filter';\n\n case 'number-editor':\n case 'number':\n return 'number-filter';\n\n case 'date-time-editor':\n case 'datetime':\n case 'date':\n return 'datetime-filter';\n\n case 'select-editor':\n case 'select':\n return 'select-filter';\n\n case 'checkbox-editor':\n case 'toggle-editor':\n case 'boolean':\n return 'boolean-filter';\n\n case 'color-editor':\n return 'color-filter';\n\n default:\n return 'text-editor'; // Default fallback\n }\n }\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget-edit';\n }\n\n //#endregion\n} ","import { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-view',\n template: `\n <div class=\"__content\">\n @if (currentValue()) {\n <div class=\"__filter-display\">\n <span class=\"__column-name\">{{ currentValue().columnName }}</span>\n <span class=\"__separator\">:</span>\n <span class=\"__filter-value\">{{ displayValue() }}</span>\n </div>\n } @else {\n <axp-state-message icon=\"fa-light fa-filter\" [title]=\"'@data-management:metadata-definitions.components.column-filter-selector.empty-states.no-filter-selected.title'\"\n [description]=\"'@data-management:metadata-definitions.components.column-filter-selector.empty-states.no-filter-selected.description'\">\n </axp-state-message>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPStateMessageComponent],\n})\nexport class AXMColumnFilterSelectorWidgetViewComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n\n //#region ---- Computed Properties ----\n\n protected currentValue = computed(() => this.getValue());\n\n protected displayValue = computed(() => {\n const value = this.currentValue()?.value;\n if (value === null || value === undefined) {\n return '';\n }\n return ` ${value.operation.type} ${value.value}`;\n });\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-column',\n template: `\n @if (currentValue().columnName) {\n <span class=\"__column-filter\">{{ currentValue().columnName }}: {{ displayValue() }}</span>\n } @else {\n <span class=\"__empty\">-</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AXMColumnFilterSelectorWidgetColumnComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n \n //#region ---- Computed Properties ----\n \n protected currentValue = computed(() => this.getValue());\n \n protected displayValue = computed(() => {\n const value = this.currentValue()?.value;\n if (value === null || value === undefined) {\n return '';\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n if (typeof value === 'string' && value.length > 20) {\n return value.substring(0, 20) + '...';\n }\n return String(value);\n });\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-filter',\n template: `\n <ax-text-box\n [placeholder]=\"'Filter by column name...'\"\n [ngModel]=\"getValue().columnName\"\n (onValueChanged)=\"handleValueChange($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-text-box>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, AXTextBoxModule, AXDecoratorModule],\n})\nexport class AXMColumnFilterSelectorWidgetFilterComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n \n //#region ---- Event Handlers ----\n \n protected handleValueChange(event: any) {\n const currentValue = this.getValue() || {};\n this.setValue({\n ...currentValue,\n columnName: event.value\n });\n }\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { ColumnFilterValue } from './column-filter-selector-widget-edit.component';\n\n@Component({\n selector: 'axm-column-filter-selector-widget-print',\n template: `\n @if (currentValue().columnName) {\n <div class=\"__print-content\">\n <strong>{{ currentValue().columnName }}:</strong> {{ displayValue() }}\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AXMColumnFilterSelectorWidgetPrintComponent extends AXPValueWidgetComponent<ColumnFilterValue> {\n \n //#region ---- Computed Properties ----\n \n protected currentValue = computed(() => this.getValue());\n \n protected displayValue = computed(() => {\n const value = this.currentValue()?.value;\n if (value === null || value === undefined) {\n return 'No value';\n }\n if (typeof value === 'boolean') {\n return value ? 'Yes' : 'No';\n }\n return String(value);\n });\n\n //#endregion\n\n //#region ---- Host Binding ----\n\n @HostBinding('class')\n private get __hostClass(): string {\n return 'axm-column-filter-selector-widget';\n }\n\n //#endregion\n} ","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport const AXPQueryBuilderWidget: AXPWidgetConfig<AXPQueryBuilderWidgetConfigType> = {\n name: 'query-builder-editor',\n title: 'Query Builder',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: 'Visual query builder for creating dynamic queries',\n icon: 'fa-light fa-filter',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_LABEL_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n designer: {\n component: () => import('./widget-designer/query-builder-widget-designer.component').then((c) => c.AXPQueryBuilderWidgetDesignerComponent),\n },\n view: {\n component: () => import('./widget-view/query-builder-widget-view.component').then((c) => c.AXPQueryBuilderWidgetViewComponent),\n },\n edit: {\n component: () => import('./widget-edit/query-builder-widget-edit.component').then((c) => c.AXPQueryBuilderWidgetEditComponent),\n },\n print: {\n component: () => import('./widget-view/query-builder-widget-view.component').then((c) => c.AXPQueryBuilderWidgetViewComponent),\n },\n column: {\n component: () => import('./widget-column/query-builder-widget-column.component').then((c) => c.AXPQueryBuilderWidgetColumnComponent),\n },\n filter: {\n component: () => import('./widget-edit/query-builder-widget-edit.component').then((c) => c.AXPQueryBuilderWidgetEditComponent),\n },\n },\n};\n\nexport type AXPQueryBuilderWidgetConfigType = {\n type: 'editor';\n}; ","import { Component, Input, Output, EventEmitter, signal, ChangeDetectionStrategy, OnInit, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXPFilterClause, AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDataSourceOperator, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXLabelModule } from '@acorex/components/label';\n\n//#region ---- Interfaces ----\n\n/**\n * Selected field data emitted when condition changes\n */\nexport type SelectedField = {\n id: string;\n field: string;\n operator: AXDataSourceOperator['type'];\n value: any;\n /**\n * When true, this condition should be filled by user as a parameter (isParametric).\n */\n isParametric: boolean;\n}\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-condition',\n templateUrl: './query-builder-condition.component.html',\n styleUrls: ['./query-builder-condition.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXButtonModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXPWidgetCoreModule,\n AXTranslationModule\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPQueryBuilderConditionComponent implements OnInit {\n\n //#region ---- Inputs / Outputs ----\n\n @Input() item!: AXPFilterClause;\n @Input() filterDefinitions: AXPFilterDefinition[] = [];\n @Input() onResolveWidget?: (fieldId: string) => string;\n\n @Output() itemChange = new EventEmitter<SelectedField>();\n @Output() removeItem = new EventEmitter<string>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected selectedField = signal<SelectedField | null>(null);\n\n /**\n * Widget node for rendering the default filter widget\n * The type is resolved from filterDefinition using widget registry\n */\n protected filterNode = signal<AXPWidgetNode>({\n name: 'filter',\n path: 'filter',\n type: 'string-filter',\n mode: 'edit',\n options: {}\n });\n\n /**\n * Context data for the filter widget\n * Contains the filter value and operator\n */\n protected context = signal<Record<string, any>>({\n filter: {\n value: undefined,\n operation: {\n type: 'equal'\n }\n }\n });\n\n /**\n * Available filter definitions formatted for select-box\n */\n protected readonly availableFields = computed(() => {\n return this.filterDefinitions.map(def => ({\n value: def.field,\n text: def.title,\n definition: def\n }));\n });\n\n /**\n * Current filter definition for the selected field\n */\n protected readonly currentFilterDefinition = computed(() => {\n const fieldId = this.selectedField()?.field;\n if (!fieldId) return undefined;\n return this.filterDefinitions.find(def => def.field === fieldId);\n });\n\n /**\n * Selected field value for ngModel binding (always returns string)\n */\n protected readonly selectedFieldValue = computed(() => {\n return this.selectedField()?.field || '';\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n ngOnInit(): void {\n // Initialize from item\n this.selectedField.set({\n field: this.item?.field ?? '',\n operator: this.item?.operator?.type ?? 'equal',\n value: this.item?.value ?? undefined,\n id: this.item?.id ?? '',\n isParametric: (this.item as any)?.isParametric ?? false,\n });\n\n // Initialize filter widget node\n this.updateFilterWidgetNode();\n\n // Initialize context\n this.updateContext();\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Update filter widget node based on selected field\n * Resolves the default filter widget type from filterDefinition\n */\n private updateFilterWidgetNode(): void {\n const fieldId = this.selectedField()?.field;\n if (!fieldId) {\n this.filterNode.set({\n name: 'filter',\n path: 'filter',\n type: 'string-filter',\n mode: 'edit',\n options: {}\n });\n return;\n }\n\n const filterDef = this.currentFilterDefinition();\n if (!filterDef) return;\n\n // Resolve widget type using the provided resolver or fallback\n let widgetType = 'string-filter';\n if (this.onResolveWidget) {\n widgetType = this.onResolveWidget(fieldId);\n } else if (filterDef.widget?.type) {\n widgetType = filterDef.widget.type;\n }\n\n // Update filter node with resolved widget type and options\n this.filterNode.set({\n name: 'filter',\n path: 'filter',\n type: widgetType,\n mode: 'edit',\n options: {\n ...filterDef.widget?.options,\n clearButton: true,\n hasClearButton: true,\n }\n });\n }\n\n /**\n * Update context data for the filter widget\n */\n private updateContext(): void {\n const selected = this.selectedField();\n this.context.set({\n filter: {\n value: selected?.value,\n operation: {\n type: selected?.operator || 'equal'\n }\n }\n });\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle field selection change\n * Updates the filter widget type based on the selected field's filterDefinition\n */\n onFieldChange(event: AXValueChangedEvent): void {\n const fieldId = event.value as string;\n const filterDef = this.filterDefinitions.find(def => def.field === fieldId);\n\n this.selectedField.update(prev => ({\n ...prev,\n field: fieldId,\n operator: filterDef?.operator?.type || 'equal',\n value: undefined, // Reset value when field changes\n isParametric: prev?.isParametric ?? false,\n } as any));\n\n // Update filter widget node for the new field\n this.updateFilterWidgetNode();\n \n // Reset context\n this.updateContext();\n\n // Emit change\n this.itemChange.emit(this.selectedField()!);\n }\n\n /**\n * Handle filter widget value change\n * The default filter widget emits context changes with filter.value and filter.operation\n */\n onContextChange(event: any): void {\n const filterData = event.data?.filter;\n if (!filterData) return;\n\n this.selectedField.update(prev => ({\n ...prev,\n operator: filterData.operation?.type || prev?.operator || 'equal',\n value: filterData.value,\n } as any));\n\n // Update context\n this.updateContext();\n\n // Emit change\n this.itemChange.emit(this.selectedField()!);\n }\n\n /**\n * Handle FillByUser (isParametric) checkbox change\n */\n onFillByUserChange(checked: boolean): void {\n this.selectedField.update(prev => ({\n ...prev,\n isParametric: checked,\n } as any));\n\n this.itemChange.emit(this.selectedField()!);\n }\n\n /**\n * Handle remove button click\n */\n onRemoveClick(): void {\n this.removeItem.emit(this.item.id);\n }\n\n //#endregion\n}\n\n","<div class=\"__condition-row\">\n <div class=\"__item-content\">\n <!-- Field Selector -->\n <div class=\"__field-selector\">\n <ax-select-box\n class=\"ax-sm\"\n [dataSource]=\"availableFields()\"\n [ngModel]=\"selectedFieldValue()\"\n (onValueChanged)=\"onFieldChange($event)\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.condition.select-field' | translate | async) || 'Select a field'\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n\n <!-- Default Filter Widget (Operator + Value) -->\n <div class=\"__operator-selector\">\n @if (selectedField()?.field && filterNode().type) {\n <axp-widgets-container \n class=\"__filter-widget-container\" \n [context]=\"context()\" \n (onContextChanged)=\"onContextChange($event)\">\n <ng-container \n axp-widget-renderer \n [node]=\"filterNode()\" \n [mode]=\"'edit'\">\n </ng-container>\n </axp-widgets-container>\n } @else {\n <div class=\"__filter-placeholder\">\n <span class=\"__placeholder-text\">{{ ('@data-management:metadata-definitions.components.query-builder.condition.select-field-first' | translate | async) || 'Select a field first' }}</span>\n </div>\n }\n </div>\n\n <!-- Fill By User (isParametric) -->\n <div class=\"__fill-by-user\">\n <ax-check-box\n class=\"ax-text-xs\"\n [ngModel]=\"selectedField()?.isParametric\"\n (ngModelChange)=\"onFillByUserChange($event)\"\n >\n <ax-label>\n {{ '@data-management:metadata-definitions.components.query-builder.condition.fill-by-user' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n </div>\n</div>\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDragDirective, AXDragHandleDirective, AXDropListDirective, AXDropListDroppedEvent, moveItemInArray } from '@acorex/cdk/drag-drop';\nimport { AXPFilterClause, AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator, AXFilterLogic } from '@acorex/cdk/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, PLATFORM_ID, afterNextRender, computed, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXPQueryBuilderConditionComponent, SelectedField } from '../condition/query-builder-condition.component';\n\n//#region ---- Types ----\n\n// Internal models are no longer needed; we use AXPFilterDefinition / AXPFilterClause directly\n\n//#endregion\n\n/**\n * Where Builder Component\n * \n * Handles WHERE clause building with groups (AND/OR) and conditions (field/operator/value).\n * This component is used as a child component within the full QueryBuilderComponent.\n * \n * Layout Architecture:\n * \n * Grid-Based Group Layout:\n * - Each group uses CSS Grid: `grid-template-columns: auto 1fr`\n * - Left column: connector line with AND/OR selector (fixed width: 3.5rem)\n * - Right column: conditions container (flexible width)\n * - Both columns stretch to same height via `align-items: stretch`\n * \n * Single Connector Line Per Group:\n * - ONE continuous vertical connector line per group (root and nested)\n * - Line spans full height of the group using `top: 0; bottom: 0` positioning\n * - Rendered using `border-left: 2px solid` for clean appearance\n * - The AND/OR selector chip is absolutely positioned in the center of this line\n * - Selector uses `left: 50%; top: 50%; transform: translate(-50%, -50%)` for perfect centering\n * - All conditions in the group visually attach to this single line on the right side\n * - Nested groups create their own connector line, indented appropriately\n * \n * Typography:\n * - Uses standard platform font sizes (ax-sm for buttons/selects)\n * - AND/OR chip: 0.8125rem (13px) font size for readability\n * - Condition rows: standard padding and spacing matching form controls\n * - No reduced font sizes - relies on spacing and subtle borders for visual lightness\n * \n * Empty Group State:\n * - Compact empty state with just an \"Add condition\" button\n * - No nested boxes or heavy borders\n * - Minimal height, aligned with group padding\n * \n * Visual Design:\n * - Subtle borders (1px) using platform border tokens\n * - Soft colors with light surface elevation\n * - Standard spacing throughout (gap-3, px-3, py-2.5)\n * - Consistent styling for root and nested groups (except root has no border/background)\n */\n@Component({\n selector: 'axp-where-builder',\n templateUrl: './where-builder.component.html',\n styleUrl: './where-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXDragDirective,\n AXDragHandleDirective,\n AXDropListDirective,\n AXPQueryBuilderConditionComponent,\n AXTranslationModule,\n ],\n})\nexport class AXPWhereBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n\n private readonly isBrowser = isPlatformBrowser(this.platformId);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current query builder value (root group with conditions/groups)\n */\n value = input<AXPFilterDefinition>({\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n });\n\n /**\n * Available filter definitions from entity/context\n * Each filterDefinition contains field metadata and widget configuration\n */\n filterDefinitions = input<AXPFilterDefinition[]>([]);\n\n /**\n * Emitted when query structure changes\n * Parent components can consume this to build queries\n */\n valueChange = output<AXPFilterDefinition>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected queryData = signal<AXPFilterDefinition>({\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n });\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n protected readonly logicalOperatorsItems = [\n { value: 'and', text: 'And' },\n { value: 'or', text: 'Or' }\n ];\n\n protected readonly logicalOperators = new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: this.logicalOperatorsItems,\n total: this.logicalOperatorsItems.length,\n });\n },\n byKey: (id: unknown) => {\n const item = this.logicalOperatorsItems.find((c) => c.value?.toString() === id?.toString());\n return Promise.resolve(item);\n },\n pageSize: 10,\n key: 'value',\n });\n\n /**\n * Computed filter definitions for field selector\n * Maps filterDefinitions to a format suitable for select-box\n */\n protected readonly availableFilterDefinitions = computed(() => {\n return this.filterDefinitions().map(def => ({\n value: def.field,\n text: def.title,\n definition: def\n }));\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Initialize from input value\n const initialValue = this.value();\n this.queryData.set(this.normalizeOrder(initialValue));\n \n // Track last emitted value to prevent circular updates\n let lastEmittedValue: AXPFilterDefinition | null = null;\n \n effect(() => {\n const val = this.value();\n \n if (val) {\n const currentData = untracked(() => this.queryData());\n const currentValueStr = JSON.stringify(currentData);\n const incomingValueStr = JSON.stringify(val);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n \n // Only update if:\n // 1. The incoming value is different from current state\n // 2. AND it's not the value we just emitted (prevent circular updates)\n if (incomingValueStr !== currentValueStr && incomingValueStr !== lastEmittedStr) {\n console.log('[QueryBuilder] Syncing external value change to queryData');\n this.queryData.set(this.normalizeOrder(val));\n }\n }\n });\n\n effect(() => {\n const defs = this.filterDefinitions();\n });\n\n effect(() => {\n const data = this.queryData();\n const filters = data.filters ?? [];\n });\n\n effect(() => {\n const defs = this.filterDefinitions();\n });\n\n // Update connector line bounds after each render.\n afterNextRender(() => {\n this.initConnectorAutoLayout();\n });\n\n effect(() => {\n // Any structural change can affect connector layout (especially nested groups).\n this.queryData();\n this.scheduleConnectorLayoutUpdate();\n });\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n //#region ---- Connector Auto Layout ----\n\n private connectorLayoutRafId: number | null = null;\n private connectorResizeObserver: ResizeObserver | null = null;\n\n /**\n * Initialize a ResizeObserver to keep connector line bounds synced with the DOM.\n * This is browser-only and safely skipped during SSR.\n */\n private initConnectorAutoLayout(): void {\n if (!this.isBrowser) return;\n\n // ResizeObserver may not exist in very old environments.\n const RO = (globalThis as any).ResizeObserver as (typeof ResizeObserver | undefined);\n if (!RO) {\n this.scheduleConnectorLayoutUpdate();\n return;\n }\n\n this.connectorResizeObserver = new RO(() => this.scheduleConnectorLayoutUpdate());\n this.connectorResizeObserver.observe(this.elementRef.nativeElement);\n\n this.destroyRef.onDestroy(() => {\n this.connectorResizeObserver?.disconnect();\n this.connectorResizeObserver = null;\n if (this.connectorLayoutRafId !== null) {\n cancelAnimationFrame(this.connectorLayoutRafId);\n this.connectorLayoutRafId = null;\n }\n });\n\n this.scheduleConnectorLayoutUpdate();\n }\n\n private scheduleConnectorLayoutUpdate(): void {\n if (!this.isBrowser) return;\n if (this.connectorLayoutRafId !== null) return;\n\n this.connectorLayoutRafId = requestAnimationFrame(() => {\n this.connectorLayoutRafId = null;\n this.updateConnectorCssVars();\n });\n }\n\n /**\n * Sets CSS variables on each group element so the vertical connector line\n * starts/ends exactly at the center of the first/last rendered row.\n *\n * This fixes cases where an item grows vertically (nested groups), which\n * cannot be handled accurately by fixed CSS insets.\n */\n private updateConnectorCssVars(): void {\n const root = this.elementRef.nativeElement;\n const groups = Array.from(root.querySelectorAll<HTMLElement>('.__group'));\n\n for (const groupEl of groups) {\n const connectorEl = groupEl.querySelector<HTMLElement>('.__group-wrapper > .__group-connector');\n const conditionsEl = groupEl.querySelector<HTMLElement>('.__group-wrapper > .__conditions-container');\n if (!connectorEl || !conditionsEl) continue;\n\n const rows = Array.from(\n conditionsEl.querySelectorAll<HTMLElement>(':scope > .__condition-item, :scope > .__group-empty'),\n );\n\n // For 0 or 1 item, connectors are disabled by design.\n if (rows.length < 2) {\n groupEl.style.removeProperty('--qb-connector-top');\n groupEl.style.removeProperty('--qb-connector-bottom');\n continue;\n }\n\n const connectorRect = connectorEl.getBoundingClientRect();\n const firstRect = rows[0].getBoundingClientRect();\n const lastRect = rows[rows.length - 1].getBoundingClientRect();\n\n const firstCenterY = firstRect.top + firstRect.height / 2;\n const lastCenterY = lastRect.top + lastRect.height / 2;\n\n const topInset = Math.max(0, firstCenterY - connectorRect.top);\n const bottomInset = Math.max(0, connectorRect.bottom - lastCenterY);\n\n groupEl.style.setProperty('--qb-connector-top', `${topInset}px`);\n groupEl.style.setProperty('--qb-connector-bottom', `${bottomInset}px`);\n }\n }\n\n //#endregion\n\n private generateId(): string {\n return Math.random().toString(36).substr(2, 9);\n }\n\n private updateValue(): void {\n const currentData = this.queryData();\n this.valueChange.emit(currentData);\n // Note: We don't track lastEmittedValue here because the parent component\n // will handle the value update and may pass it back, which we'll ignore\n // in the effect due to the comparison logic\n }\n\n /**\n * Normalize order property for all items in the query structure\n * Ensures all items have order property and filters are sorted by order\n */\n private normalizeOrder(data: AXPFilterDefinition): AXPFilterDefinition {\n const normalizeFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n // First, ensure all items have order\n const withOrder = filters.map((filter, index) => {\n const normalized = {\n ...filter,\n order: filter.order ?? index\n };\n\n if (normalized.filters && normalized.filters.length) {\n return {\n ...normalized,\n filters: normalizeFilters(normalized.filters)\n };\n }\n\n return normalized;\n });\n\n // Sort by order\n return withOrder.sort((a, b) => a.order - b.order);\n };\n\n return {\n ...data,\n order: data.order ?? 0,\n filters: normalizeFilters(data.filters || [])\n };\n }\n\n /**\n * Get sorted filters for a group (used in template)\n * Ensures filters are sorted by order property\n */\n protected getSortedFilters(filters: AXPFilterClause[]): AXPFilterClause[] {\n return [...filters].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n }\n\n private findGroupById(id: string, node: AXPFilterClause = this.queryData()): AXPFilterClause | null {\n if (node.id === id && Array.isArray(node.filters)) {\n return node;\n }\n\n if (node.filters) {\n for (const child of node.filters) {\n const found = this.findGroupById(id, child);\n if (found) {\n return found;\n }\n }\n }\n\n return null;\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Add a new condition (rule) to the root group\n * All conditions must be inside a group, so this adds to the root group\n */\n addCondition(): void {\n const rootId = this.queryData().id ?? 'root';\n this.addConditionToGroup(rootId);\n }\n\n /**\n * Add a new nested group to the root group\n * All groups must be inside the root group\n */\n addGroup(): void {\n const rootId = this.queryData().id ?? 'root';\n this.addGroupToGroup(rootId);\n }\n\n /**\n * Add a new condition to a specific group\n */\n addConditionToGroup(groupId: string): void {\n this.queryData.update(data => {\n // Find target group to get current filters count for order\n const findGroup = (node: AXPFilterClause): AXPFilterClause | null => {\n if (node.id === groupId && Array.isArray(node.filters)) {\n return node;\n }\n if (node.filters) {\n for (const child of node.filters) {\n const found = findGroup(child);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n\n const targetGroup = data.id === groupId ? data : findGroup(data);\n const currentOrder = targetGroup && targetGroup.filters ? targetGroup.filters.length : 0;\n\n const newCondition: AXPFilterDefinition = {\n id: this.generateId(),\n field: '',\n value: undefined,\n operator: { type: 'equal' },\n order: currentOrder,\n title: '',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n };\n\n // If adding to root group, update root group directly\n if (data.id === groupId) {\n return {\n ...data,\n filters: [...(data.filters ?? []), newCondition]\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateNode = (node: AXPFilterClause): AXPFilterClause => {\n if (node.id === groupId && Array.isArray(node.filters)) {\n return {\n ...node,\n filters: [...node.filters, newCondition],\n };\n }\n\n if (node.filters) {\n return {\n ...node,\n filters: node.filters.map(updateNode),\n };\n }\n\n return node;\n };\n\n return {\n ...data,\n filters: (updateNode(data).filters ?? [])\n };\n });\n this.updateValue();\n }\n\n /**\n * Get filter definition by field ID\n * Used to resolve widget type and metadata for a condition\n */\n getFilterDefinition(fieldId: string): AXPFilterDefinition | undefined {\n return this.filterDefinitions().find(def => def.field === fieldId);\n }\n\n /**\n * Resolve default filter widget type for a field\n * Uses widget registry to get the defaultFilterWidgetName from the field's widget config\n */\n resolveDefaultFilterWidget(fieldId: string): string {\n const filterDef = this.getFilterDefinition(fieldId);\n if (!filterDef) {\n return 'string-filter'; // Default fallback\n }\n\n try {\n // Resolve the widget config from registry\n const widgetConfig = this.widgetRegistry.resolve(filterDef.widget.type);\n // Use defaultFilterWidgetName if available, otherwise use the widget type\n return widgetConfig?.defaultFilterWidgetName || filterDef.widget.type || 'string-filter';\n } catch {\n // If widget not found in registry, use the widget type from filterDefinition\n return filterDef.widget.type || 'string-filter';\n }\n }\n\n /**\n * Convert QueryBuilderData to AXPFilterClause format\n * \n * This method transforms the internal query builder structure to the platform's filter clause format\n * that can be consumed by data sources and query services.\n * \n * Conversion Logic:\n * - Conditions (rules) are converted to AXDataSourceFilterOption with field, operator, and value\n * - Groups are converted to nested filter structures with logic (AND/OR) and filters array\n * - Empty conditions (no field or value) are skipped\n * - Single-item groups are flattened (no nested structure needed)\n * \n * @returns AXPFilterClause compatible with AXDataSourceFilterOption structure\n * \n * Example output:\n * {\n * logic: 'and',\n * filters: [\n * { field: 'name', operator: { type: 'contains' }, value: 'John' },\n * {\n * logic: 'or',\n * filters: [\n * { field: 'age', operator: { type: 'gt' }, value: 18 },\n * { field: 'status', operator: { type: 'equal' }, value: 'active' }\n * ]\n * }\n * ]\n * }\n */\n toFilterClause(): AXPFilterClause {\n const data = this.queryData();\n \n const convertItem = (item: AXPFilterClause): AXDataSourceFilterOption | null => {\n const isGroup = Array.isArray(item.filters) && item.filters.length > 0;\n\n if (!isGroup) {\n // Treat as condition\n if (!item.field || item.value === undefined || item.value === null || item.value === '') {\n return null;\n }\n\n return {\n field: item.field,\n operator: item.operator,\n value: item.value,\n };\n }\n\n // Convert group\n const groupFilters = (item.filters ?? [])\n .map(convertItem)\n .filter((f): f is AXDataSourceFilterOption => f !== null);\n\n if (groupFilters.length === 0) {\n return null;\n }\n\n // If group has only one filter, return it directly (no need for nested structure)\n if (groupFilters.length === 1) {\n return groupFilters[0];\n }\n\n // Return nested filter structure\n // Note: Groups don't have a field or operator, only logic and filters\n return {\n logic: item.logic,\n filters: groupFilters,\n } as AXDataSourceFilterOption;\n };\n\n const filters = (data.filters ?? [])\n .map(convertItem)\n .filter((f): f is AXDataSourceFilterOption => f !== null);\n\n return {\n logic: data.logic,\n filters: filters,\n };\n }\n\n addGroupToGroup(parentGroupId: string): void {\n this.queryData.update(data => {\n // Find target group to get current filters count for order\n const findGroup = (node: AXPFilterClause): AXPFilterClause | null => {\n if (node.id === parentGroupId && Array.isArray(node.filters)) {\n return node;\n }\n if (node.filters) {\n for (const child of node.filters) {\n const found = findGroup(child);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n\n const targetGroup = data.id === parentGroupId ? data : findGroup(data);\n const currentOrder = targetGroup && targetGroup.filters ? targetGroup.filters.length : 0;\n\n const newGroup: AXPFilterDefinition = {\n id: this.generateId(),\n logic: 'and',\n filters: [],\n order: currentOrder,\n title: 'Group',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n };\n\n // If adding to root group, update root group directly\n if (data.id === parentGroupId) {\n return {\n ...data,\n filters: [...(data.filters ?? []), newGroup]\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateNode = (node: AXPFilterClause): AXPFilterClause => {\n if (node.id === parentGroupId && Array.isArray(node.filters)) {\n return {\n ...node,\n filters: [...node.filters, newGroup],\n };\n }\n\n if (node.filters) {\n return {\n ...node,\n filters: node.filters.map(updateNode),\n };\n }\n\n return node;\n };\n\n return {\n ...data,\n filters: (updateNode(data).filters ?? [])\n };\n });\n this.updateValue();\n }\n\n removeItem(id: string): void {\n this.queryData.update(data => {\n const removeFromFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters\n .filter(filter => filter.id !== id)\n .map(filter => ({\n ...filter,\n filters: filter.filters ? removeFromFilters(filter.filters) : filter.filters,\n }));\n };\n\n return {\n ...data,\n filters: removeFromFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n updateCondition(condition: SelectedField): void {\n this.queryData.update(data => {\n const updateFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters.map(filter => {\n if (filter.id === condition.id) {\n const def = this.getFilterDefinition(condition.field);\n const current = filter as AXPFilterDefinition;\n return {\n ...filter,\n field: condition.field,\n operator: { type: condition.operator },\n value: condition.value,\n title: def?.title ?? current.title ?? '',\n widget: def?.widget ?? current.widget,\n filterType: def?.filterType ?? current.filterType,\n isParametric: condition.isParametric ?? current.isParametric,\n };\n }\n if (filter.filters) {\n return {\n ...filter,\n filters: updateFilters(filter.filters)\n };\n }\n return filter;\n });\n };\n return {\n ...data,\n filters: updateFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n updateRootLogicalOperator(operator: AXFilterLogic): void {\n this.queryData.update(data => ({\n ...data,\n logic: operator\n }));\n this.updateValue();\n }\n\n updateGroupLogicalOperator(groupId: string, operator: AXFilterLogic): void {\n this.queryData.update(data => {\n // If updating root group, update root group directly\n if (data.id === groupId) {\n return {\n ...data,\n logic: operator\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters.map(filter => {\n if (filter.id === groupId && filter.filters) {\n return { ...filter, logic: operator };\n } else if (filter.filters) {\n return {\n ...filter,\n filters: updateFilters(filter.filters)\n };\n }\n return filter;\n });\n };\n\n return {\n ...data,\n filters: updateFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n clearAll(): void {\n this.queryData.update(data => ({\n ...data,\n filters: []\n }));\n this.updateValue();\n }\n\n getTotalItemsCount(): number {\n const countFilters = (filters: AXPFilterClause[]): number => {\n return filters.reduce((count, filter) => {\n if (!filter.filters || filter.filters.length === 0) {\n // condition\n return count + 1;\n }\n\n // group\n return count + 1 + countFilters(filter.filters);\n }, 0);\n };\n\n return countFilters(this.queryData().filters ?? []);\n }\n\n //#endregion\n\n //#region ---- Drag and Drop / Move Methods ----\n\n reorderRootItems(event: AXDropListDroppedEvent): void {\n this.queryData.update(data => {\n const filters = [...(data.filters ?? [])];\n moveItemInArray(filters, event.previousIndex, event.currentIndex);\n\n // Update order property for all items\n const updatedFilters = filters.map((filter, index) => ({\n ...filter,\n order: index\n }));\n\n return {\n ...data,\n filters: updatedFilters\n };\n });\n this.updateValue();\n }\n\n reorderGroupItems(groupId: string, previousIndex: number, currentIndex: number): void {\n this.queryData.update(data => {\n // If reordering root group items\n if (data.id === groupId) {\n const filters = [...(data.filters ?? [])];\n moveItemInArray(filters, previousIndex, currentIndex);\n\n // Update order property for all items\n const updatedFilters = filters.map((filter, index) => ({\n ...filter,\n order: index\n }));\n\n return {\n ...data,\n filters: updatedFilters\n };\n }\n\n // Otherwise, recursively find and update the target group\n const updateFilters = (filters: AXPFilterClause[]): AXPFilterClause[] => {\n return filters.map(filter => {\n if (filter.id === groupId && filter.filters) {\n const groupFilters = [...filter.filters];\n moveItemInArray(groupFilters, previousIndex, currentIndex);\n\n // Update order property for all items in the group\n const updatedGroupFilters = groupFilters.map((item, index) => ({\n ...item,\n order: index\n }));\n\n return {\n ...filter,\n filters: updatedGroupFilters\n };\n } else if (filter.filters) {\n return {\n ...filter,\n filters: updateFilters(filter.filters)\n };\n }\n return filter;\n });\n };\n\n return {\n ...data,\n filters: updateFilters(data.filters ?? [])\n };\n });\n this.updateValue();\n }\n\n reorderGroupItemsEvent(groupId: string, event: AXDropListDroppedEvent): void {\n this.reorderGroupItems(groupId, event.previousIndex, event.currentIndex);\n }\n\n moveItemUp(index: number, parentId: string): void {\n if (index === 0) return;\n\n if (parentId === 'root') {\n // Create a fake event for root items\n const fakeEvent: AXDropListDroppedEvent = {\n previousIndex: index,\n currentIndex: index - 1,\n item: null as any,\n container: null as any,\n previousContainer: null as any,\n nativeEvent: null as any,\n sender: null as any\n };\n this.reorderRootItems(fakeEvent);\n } else {\n this.reorderGroupItems(parentId, index, index - 1);\n }\n }\n\n moveItemDown(index: number, parentId: string): void {\n if (parentId === 'root') {\n const rootFiltersLength = this.queryData().filters?.length ?? 0;\n if (index === rootFiltersLength - 1) return;\n // Create a fake event for root items\n const fakeEvent: AXDropListDroppedEvent = {\n previousIndex: index,\n currentIndex: index + 1,\n item: null as any,\n container: null as any,\n previousContainer: null as any,\n nativeEvent: null as any,\n sender: null as any\n };\n this.reorderRootItems(fakeEvent);\n } else {\n const group = this.findGroupById(parentId);\n if (!group || !group.filters || index === group.filters.length - 1) return;\n this.reorderGroupItems(parentId, index, index + 1);\n }\n }\n\n //#endregion\n}\n\n","<div class=\"axp-where-builder\">\n <div class=\"__content\">\n <!-- Root Group - Render directly to ensure reactivity -->\n <div class=\"__group __root-group\" [class.__connectors-enabled]=\"(queryData().filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"queryData().logic\"\n textField=\"text\" valueField=\"value\"\n (onValueChanged)=\"updateGroupLogicalOperator(queryData().id!, $event.value)\" [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList\n (dropListDropped)=\"reorderGroupItemsEvent(queryData().id!, $event)\">\n @if ((queryData().filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(queryData().filters || []); track item.id; let i = $index; let first = $first;\n let last = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (queryData().filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (queryData().filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: queryData().logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n\n<!-- Group Template -->\n<ng-template #groupTemplate let-group=\"group\" let-parentLogic=\"parentLogic\" let-isRoot=\"isRoot\">\n <div class=\"__group\" [class.__root-group]=\"isRoot\" [class.__connectors-enabled]=\"(group.filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"group.logic\"\n textField=\"text\" valueField=\"value\" (onValueChanged)=\"updateGroupLogicalOperator(group.id, $event.value)\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList (dropListDropped)=\"reorderGroupItemsEvent(group.id, $event)\">\n @if ((group.filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(group.filters || []); track item.id; let i = $index; let first = $first; let last\n = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (group.filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (group.filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: group.logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((group.filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n</ng-template>","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n\n/**\n * Columns Builder Component\n * \n * Handles column selection for query builder.\n * Provides multi-select interface with select all/clear all functionality.\n */\n@Component({\n selector: 'axp-columns-builder',\n templateUrl: './columns-builder.component.html',\n styleUrl: './columns-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPColumnsBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Selected column names\n */\n value = input<string[]>([]);\n\n /**\n * Emitted when selection changes\n */\n valueChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Columns data source for multi-select\n */\n protected readonly columnsDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n definition: col,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name, definition: col } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handle columns selection change\n */\n protected onColumnsChange(selectedColumns: string[]): void {\n this.valueChange.emit(selectedColumns || []);\n }\n\n /**\n * Select all columns\n */\n protected selectAll(): void {\n const allColumnNames = this.columns().map(col => col.name);\n this.valueChange.emit(allColumnNames);\n }\n\n /**\n * Clear all columns\n */\n protected clearAll(): void {\n this.valueChange.emit([]);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-columns-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.columns.title' | translate | async) || 'Select Columns' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onColumnsChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.columns.placeholder' | translate | async) || 'Select columns to include in the query'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPQuerySortRule } from '../query-builder.types';\n\n/**\n * Sort Builder Component\n * \n * Handles sort rules for query builder.\n * Allows adding/removing sort rules with field and direction selection.\n */\n@Component({\n selector: 'axp-sort-builder',\n templateUrl: './sort-builder.component.html',\n styleUrl: './sort-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPSortBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Current sort rules\n */\n value = input<AXPQuerySortRule[]>([]);\n\n /**\n * Emitted when sort rules change\n */\n valueChange = output<AXPQuerySortRule[]>();\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Sort field data source (from columns)\n */\n protected readonly sortFieldDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n /**\n * Sort direction options\n */\n protected readonly sortDirectionItems = [\n { value: 'asc', text: 'ASC' },\n { value: 'desc', text: 'DESC' },\n ];\n\n protected readonly sortDirectionDataSource = new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: this.sortDirectionItems,\n total: this.sortDirectionItems.length,\n });\n },\n byKey: (key: unknown) => {\n const item = this.sortDirectionItems.find(c => c.value?.toString() === key?.toString());\n return Promise.resolve(item);\n },\n pageSize: 10,\n key: 'value',\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Add a new sort rule\n */\n protected addSortRule(): void {\n const currentRules = this.value();\n const newRule: AXPQuerySortRule = {\n field: '',\n dir: 'asc',\n };\n const newRules = [...currentRules, newRule];\n this.valueChange.emit(newRules);\n }\n\n /**\n * Remove a sort rule\n */\n protected removeSortRule(index: number): void {\n const currentRules = this.value();\n const newRules = currentRules.filter((_, i) => i !== index);\n this.valueChange.emit(newRules);\n }\n\n /**\n * Update a sort rule field\n */\n protected updateSortRuleField(index: number, field: string): void {\n const currentRules = this.value();\n const updatedRules: AXPQuerySortRule[] = currentRules.map((rule, i) => \n i === index ? { ...rule, field } : rule\n );\n this.valueChange.emit(updatedRules);\n }\n\n /**\n * Update a sort rule direction\n */\n protected updateSortRuleDirection(index: number, dir: string): void {\n const currentRules = this.value();\n // Ensure dir is 'asc' or 'desc'\n const validDir: 'asc' | 'desc' = (dir === 'asc' || dir === 'desc') ? dir : 'asc';\n const updatedRules: AXPQuerySortRule[] = currentRules.map((rule, i) => \n i === index ? { ...rule, dir: validDir } : rule\n );\n this.valueChange.emit(updatedRules);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-sort-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.title' | translate | async) || 'Sort Rules' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-sort-rule.title' | translate | async) || 'Add Sort Rule'\"\n (onClick)=\"addSortRule()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.empty-state' | translate | async) || 'No sort rules defined. Click \\'Add Sort Rule\\' to add sorting.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__sort-rules\">\n @for (rule of value(); track $index; let i = $index) {\n <div class=\"__sort-rule\">\n <ax-select-box\n class=\"__sort-field\"\n [dataSource]=\"sortFieldDataSource()\"\n [ngModel]=\"rule.field\"\n (ngModelChange)=\"updateSortRuleField(i, $event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.sort.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-select-box\n class=\"__sort-direction\"\n [dataSource]=\"sortDirectionDataSource\"\n [ngModel]=\"rule.dir\"\n (ngModelChange)=\"updateSortRuleDirection(i, $event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeSortRule(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n\n/**\n * Group By Builder Component\n * \n * Handles group by column selection for query builder.\n * Provides multi-select interface with select all/clear all functionality.\n */\n@Component({\n selector: 'axp-group-by-builder',\n templateUrl: './group-by-builder.component.html',\n styleUrl: './group-by-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPGroupByBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Selected column names for group by\n */\n value = input<string[]>([]);\n\n /**\n * Emitted when selection changes\n */\n valueChange = output<string[]>();\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Group By columns data source (same as columns)\n */\n protected readonly groupByDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n definition: col,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name, definition: col } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handle group by selection change\n */\n protected onGroupByChange(selectedColumns: string[]): void {\n this.valueChange.emit(selectedColumns || []);\n }\n\n /**\n * Select all columns\n */\n protected selectAll(): void {\n const allColumnNames = this.columns().map(col => col.name);\n this.valueChange.emit(allColumnNames);\n }\n\n /**\n * Clear all columns\n */\n protected clearAll(): void {\n this.valueChange.emit([]);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-group-by-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.group-by.title' | translate | async) || 'Group By' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"groupByDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onGroupByChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.group-by.placeholder' | translate | async) || 'Select columns to group by'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPAggregateFunctionDefinition, AXPDatabaseType, AXPAggregateCategory } from '../query-builder.types';\n\n// Re-export types for convenience\nexport type { AXPAggregateFunctionDefinition, AXPDatabaseType, AXPAggregateCategory } from '../query-builder.types';\n\n/**\n * Aggregate Function Provider Token\n * Can be a provider instance or a Promise that resolves to a provider\n */\nexport type AXPAggregateFunctionProviderToken =\n | AXPAggregateFunctionProvider\n | Promise<AXPAggregateFunctionProvider>;\n\n/**\n * Injection token for aggregate function providers\n * Multiple providers can be registered to extend aggregate function definitions\n */\nexport const AXP_AGGREGATE_FUNCTION_PROVIDER = new InjectionToken<AXPAggregateFunctionProviderToken[]>(\n 'AXP_AGGREGATE_FUNCTION_PROVIDER',\n {\n factory: () => [],\n }\n);\n\n/**\n * Aggregate Function Provider Interface\n * \n * Allows modules to provide custom aggregate functions that extend\n * the default set of aggregate functions available in the query builder.\n * \n * Example usage:\n * ```typescript\n * @Injectable()\n * export class MyCustomAggregateProvider implements AXPAggregateFunctionProvider {\n * async getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]> {\n * return [\n * {\n * name: 'custom_avg',\n * title: 'CUSTOM_AVG',\n * description: 'Custom average function',\n * category: 'statistical',\n * supportedDatabases: ['mysql'],\n * requiresField: true,\n * supportsDistinct: true,\n * }\n * ];\n * }\n * }\n * ```\n */\nexport interface AXPAggregateFunctionProvider {\n /**\n * Get list of aggregate functions\n * \n * @param databaseType - Optional database type filter. If provided, only functions\n * supported by this database type should be returned.\n * If undefined, return all functions.\n * @returns Promise that resolves to array of aggregate function definitions\n */\n getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]>;\n\n /**\n * Get a single aggregate function by name\n * \n * @param name - Function name/identifier (e.g., 'sum', 'avg', 'count')\n * @returns Promise that resolves to function definition or undefined if not found\n */\n getByName(name: string): Promise<AXPAggregateFunctionDefinition | undefined>;\n\n /**\n * Get all unique categories available from this provider\n * \n * @returns Promise that resolves to array of category names\n */\n getCategories(): Promise<AXPAggregateCategory[]>;\n\n /**\n * Get maximum nesting depth for nested aggregates\n * \n * @returns Maximum allowed nesting depth (default: 3)\n */\n getMaxNestingDepth(): number;\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPAggregateCategory } from '../query-builder.types';\n\n//#region ---- Aggregate Category Provider Types ----\n\n/**\n * Aggregate category definition.\n * Used by providers to describe available aggregate categories.\n */\nexport interface AXPAggregateCategoryDefinition {\n /**\n * Unique category name (e.g., 'statistical', 'string', 'date', or any custom value)\n */\n name: AXPAggregateCategory;\n\n /**\n * Display title for UI\n */\n title: string;\n\n /**\n * Optional description for tooltips or help text\n */\n description?: string;\n\n /**\n * Optional order index for sorting in UI\n */\n order?: number;\n}\n\n/**\n * Aggregate Category Provider Token\n * Can be a provider instance or a Promise that resolves to a provider.\n */\nexport type AXPAggregateCategoryProviderToken =\n | AXPAggregateCategoryProvider\n | Promise<AXPAggregateCategoryProvider>;\n\n/**\n * Injection token for aggregate category providers.\n * Multiple providers can be registered to extend category definitions.\n */\nexport const AXP_AGGREGATE_CATEGORY_PROVIDER = new InjectionToken<AXPAggregateCategoryProviderToken[]>(\n 'AXP_AGGREGATE_CATEGORY_PROVIDER',\n {\n factory: () => [],\n },\n);\n\n/**\n * Aggregate Category Provider Interface\n *\n * Allows modules to provide custom aggregate categories that are used\n * by the query builder UI for filtering aggregate functions.\n */\nexport interface AXPAggregateCategoryProvider {\n /**\n * Get list of aggregate categories.\n */\n getList(): Promise<AXPAggregateCategoryDefinition[]>;\n\n /**\n * Get a single category by name.\n */\n getByName(name: AXPAggregateCategory): Promise<AXPAggregateCategoryDefinition | undefined>;\n}\n\n//#endregion\n\n\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXPAggregateFunctionProvider,\n AXP_AGGREGATE_FUNCTION_PROVIDER,\n} from './aggregate-function.provider';\nimport { AXPAggregateFunctionDefinition, AXPDatabaseType, AXPAggregateCategory } from '../query-builder.types';\nimport { AXPAggregateCategoryProvider, AXP_AGGREGATE_CATEGORY_PROVIDER } from './aggregate-category.provider';\n\n//#endregion\n\n/**\n * Aggregate Function Service\n * \n * Aggregates functions from all registered providers and provides a unified API\n * for accessing aggregate function definitions.\n * \n * Performance optimizations:\n * 1. Aggressive caching prevents duplicate API calls\n * 2. Single pending request per resource prevents race conditions\n * 3. Lazy loading - only loads data when needed\n * 4. Merges results from all providers\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPAggregateFunctionService {\n //#region ---- Providers & Caches ----\n\n private readonly providers = inject(AXP_AGGREGATE_FUNCTION_PROVIDER, { optional: true }) || [];\n private readonly categoryProviders =\n (inject<AXPAggregateCategoryProvider[] | null>(AXP_AGGREGATE_CATEGORY_PROVIDER, {\n optional: true,\n }) as AXPAggregateCategoryProvider[] | null) || [];\n\n //#endregion\n\n //#region ---- Cache Storage ----\n\n /** Cache for all functions by database type - O(1) lookup */\n private functionsByDatabaseType = new Map<AXPDatabaseType | undefined, AXPAggregateFunctionDefinition[]>();\n\n /** Cache for functions by name - O(1) lookup */\n private functionsByName = new Map<string, AXPAggregateFunctionDefinition>();\n\n /** Cache for categories */\n private categoriesCache: AXPAggregateCategory[] | null = null;\n\n /** Pending API requests to prevent duplicate calls */\n private pendingFunctionsRequests = new Map<AXPDatabaseType | undefined, Promise<AXPAggregateFunctionDefinition[]>>();\n private pendingFunctionRequests = new Map<string, Promise<AXPAggregateFunctionDefinition | undefined>>();\n private pendingCategoriesRequest: Promise<AXPAggregateCategory[]> | null = null;\n\n //#endregion\n\n //#region ---- Public API: Functions ----\n\n /**\n * Get all aggregate functions with optional database type filter\n * \n * Optimization: Returns cached result immediately if available,\n * preventing unnecessary API calls\n * \n * @param databaseType - Optional database type filter\n * @returns Array of aggregate function definitions\n */\n async getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]> {\n // ✅ Fast path: Return cached result\n if (this.functionsByDatabaseType.has(databaseType)) {\n return this.functionsByDatabaseType.get(databaseType)!;\n }\n\n // ✅ Prevent duplicate requests: Return pending promise\n if (this.pendingFunctionsRequests.has(databaseType)) {\n return this.pendingFunctionsRequests.get(databaseType)!;\n }\n\n // ✅ Create single request and cache it\n const requestPromise = this.loadFunctionsFromProviders(databaseType);\n this.pendingFunctionsRequests.set(databaseType, requestPromise);\n\n return requestPromise;\n }\n\n /**\n * Get single function by name with O(1) lookup\n * \n * Optimization: Uses Map for instant retrieval, falls back to\n * searching cache, then providers if not found\n */\n async getByName(name: string): Promise<AXPAggregateFunctionDefinition | undefined> {\n // ✅ Fast path: O(1) lookup in cache\n if (this.functionsByName.has(name)) {\n return this.functionsByName.get(name);\n }\n\n // ✅ Prevent duplicate requests\n if (this.pendingFunctionRequests.has(name)) {\n return this.pendingFunctionRequests.get(name)!;\n }\n\n // ✅ Load from providers\n const requestPromise = this.loadFunctionFromProviders(name);\n this.pendingFunctionRequests.set(name, requestPromise);\n\n return requestPromise;\n }\n\n /**\n * Get all unique categories from all providers\n * \n * @returns Array of category names\n */\n async getCategories(): Promise<AXPAggregateCategory[]> {\n // ✅ Fast path: Return cached result\n if (this.categoriesCache !== null) {\n return this.categoriesCache;\n }\n\n // ✅ Prevent duplicate requests\n if (this.pendingCategoriesRequest) {\n return this.pendingCategoriesRequest;\n }\n\n // ✅ Load from providers\n this.pendingCategoriesRequest = this.loadCategoriesFromProviders();\n const result = await this.pendingCategoriesRequest;\n this.pendingCategoriesRequest = null;\n return result;\n }\n\n /**\n * Get maximum nesting depth for nested aggregates\n * Returns the minimum depth from all providers (most restrictive)\n * \n * @returns Maximum allowed nesting depth\n */\n getMaxNestingDepth(): number {\n const resolvedProviders = this.providers;\n let minDepth = Infinity;\n\n for (const provider of resolvedProviders) {\n // Handle both direct providers and promises\n if (provider && typeof provider === 'object' && 'then' in provider) {\n // Skip promises - we can't resolve them synchronously\n continue;\n }\n \n if (provider && typeof (provider as any).getMaxNestingDepth === 'function') {\n try {\n const depth = (provider as any).getMaxNestingDepth();\n if (typeof depth === 'number' && depth < minDepth) {\n minDepth = depth;\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n // Default to 3 if no provider specifies a depth\n return minDepth === Infinity ? 3 : minDepth;\n }\n\n //#endregion\n\n //#region ---- Private: Data Loading ----\n\n /**\n * Load functions from all providers and merge results\n * \n * Optimization: Merges results from all providers, removes duplicates by name\n */\n private async loadFunctionsFromProviders(\n databaseType?: AXPDatabaseType,\n ): Promise<AXPAggregateFunctionDefinition[]> {\n try {\n const resolvedProviders = await Promise.allSettled(this.providers);\n const allFunctions: AXPAggregateFunctionDefinition[] = [];\n const seenNames = new Set<string>();\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getFunctions === 'function') {\n try {\n const functions = await p.value.getFunctions(databaseType);\n if (Array.isArray(functions)) {\n // Merge functions, avoiding duplicates by name\n for (const func of functions) {\n if (!seenNames.has(func.name)) {\n seenNames.add(func.name);\n allFunctions.push(func);\n }\n }\n }\n } catch {\n // Continue on error - try other providers\n }\n }\n }\n\n // ✅ Cache results for fast subsequent access\n this.functionsByDatabaseType.set(databaseType, allFunctions);\n allFunctions.forEach(func => this.functionsByName.set(func.name, func));\n\n return allFunctions;\n } finally {\n this.pendingFunctionsRequests.delete(databaseType);\n }\n }\n\n /**\n * Load single function from providers\n */\n private async loadFunctionFromProviders(name: string): Promise<AXPAggregateFunctionDefinition | undefined> {\n try {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n // Try providers first\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getByName === 'function') {\n try {\n const result = await p.value.getByName(name);\n if (result) {\n this.functionsByName.set(name, result);\n return result;\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n // Fallback: Search in cached functions\n for (const functions of this.functionsByDatabaseType.values()) {\n const found = functions.find(func => func.name === name);\n if (found) {\n this.functionsByName.set(name, found);\n return found;\n }\n }\n\n return undefined;\n } finally {\n this.pendingFunctionRequests.delete(name);\n }\n }\n\n /**\n * Load categories from all providers and merge unique values\n */\n private async loadCategoriesFromProviders(): Promise<AXPAggregateCategory[]> {\n const allCategories = new Set<AXPAggregateCategory>();\n\n // Prefer dedicated category providers if available\n if (this.categoryProviders.length > 0) {\n const resolvedCategoryProviders = await Promise.allSettled(this.categoryProviders);\n\n for (const p of resolvedCategoryProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getList === 'function') {\n try {\n const categories = await p.value.getList();\n if (Array.isArray(categories)) {\n categories.forEach(cat => allCategories.add(cat.name));\n }\n } catch {\n // Continue on error\n }\n }\n }\n }\n\n // Backward compatibility: fall back to aggregate function providers\n if (allCategories.size === 0) {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getCategories === 'function') {\n try {\n const categories = await p.value.getCategories();\n if (Array.isArray(categories)) {\n categories.forEach(cat => allCategories.add(cat));\n }\n } catch {\n // Continue on error\n }\n }\n }\n }\n\n const result = Array.from(allCategories);\n this.categoriesCache = result;\n return result;\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n /**\n * Clear all caches\n */\n clearAllCache(): void {\n this.functionsByDatabaseType.clear();\n this.functionsByName.clear();\n this.categoriesCache = null;\n this.pendingFunctionsRequests.clear();\n this.pendingFunctionRequests.clear();\n this.pendingCategoriesRequest = null;\n }\n\n /**\n * Clear functions cache only\n */\n clearFunctionsCache(): void {\n this.functionsByDatabaseType.clear();\n this.functionsByName.clear();\n this.pendingFunctionsRequests.clear();\n this.pendingFunctionRequests.clear();\n }\n\n /**\n * Clear categories cache only\n */\n clearCategoriesCache(): void {\n this.categoriesCache = null;\n this.pendingCategoriesRequest = null;\n }\n\n //#endregion\n}\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDataFieldDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXPAggregateOperation, AXPAggregateCategory, AXPDatabaseType, AXPAggregateFunctionDefinition } from '../query-builder.types';\nimport { AXPAggregateFunctionService } from './aggregate-function.service';\nimport { inject } from '@angular/core';\n\n/**\n * Aggregate Builder Component\n * \n * Handles aggregate function selection and configuration for query builder.\n * Provides filtering by category and database type, and allows adding/removing aggregate operations.\n */\n@Component({\n selector: 'axp-aggregate-builder',\n templateUrl: './aggregate-builder.component.html',\n styleUrl: './aggregate-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n AXTextBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n AXCheckBoxModule,\n AXTranslationModule,\n ],\n})\nexport class AXPAggregateBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly aggregateFunctionService = inject(AXPAggregateFunctionService);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Available columns from datasource definition\n */\n columns = input<AXPDataSourceDataFieldDefinition[]>([]);\n\n /**\n * Current aggregate operations\n */\n value = input<AXPAggregateOperation[]>([]);\n\n /**\n * Database type for filtering functions (optional)\n * If provided, only functions supported by this database will be shown\n */\n databaseType = input<AXPDatabaseType | undefined>(undefined);\n\n /**\n * Emitted when aggregate operations change\n */\n valueChange = output<AXPAggregateOperation[]>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected selectedCategory = signal<AXPAggregateCategory | 'all'>('all');\n protected searchText = signal<string>('');\n protected showAddForm = signal<boolean>(false);\n protected newAggregate = signal<Partial<AXPAggregateOperation>>({\n field: '',\n function: '',\n alias: '',\n distinct: false,\n nestedAggregates: [],\n });\n protected availableFunctionsList = signal<AXPAggregateFunctionDefinition[]>([]);\n protected availableCategoriesList = signal<AXPAggregateCategory[]>([]);\n protected editingNestedIndex = signal<{ parentIndex: number; nestedIndex: number } | null>(null);\n protected maxNestingDepth = signal<number>(3);\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Load functions and categories on initialization\n this.loadFunctions();\n this.loadCategories();\n this.loadMaxNestingDepth();\n }\n\n /**\n * Load max nesting depth from service\n */\n private loadMaxNestingDepth(): void {\n const depth = this.aggregateFunctionService.getMaxNestingDepth();\n this.maxNestingDepth.set(depth);\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Available aggregate functions filtered by category, database, and search\n */\n protected readonly availableFunctions = computed(() => {\n const category = this.selectedCategory();\n const database = this.databaseType();\n const search = this.searchText();\n const allFunctions = this.availableFunctionsList();\n\n let filtered = allFunctions;\n\n if (category !== 'all') {\n filtered = filtered.filter(f => f.category === category);\n }\n\n if (database) {\n filtered = filtered.filter(f =>\n f.supportedDatabases.includes('all') ||\n f.supportedDatabases.includes(database) ||\n (database === 'sql' && f.supportedDatabases.some((db: AXPDatabaseType) => ['sql', 'mysql', 'postgresql'].includes(db))) ||\n (database === 'nosql' && f.supportedDatabases.some((db: AXPDatabaseType) => ['nosql', 'mongodb'].includes(db)))\n );\n }\n\n if (search) {\n const searchLower = search.toLowerCase();\n filtered = filtered.filter(\n f =>\n f.name.toLowerCase().includes(searchLower) ||\n f.title.toLowerCase().includes(searchLower) ||\n f.description?.toLowerCase().includes(searchLower)\n );\n }\n\n return filtered;\n });\n\n /**\n * Available categories\n */\n protected readonly categories = computed(() => {\n const allCategories = this.availableCategoriesList();\n return [\n { value: 'all', text: 'All Categories' },\n ...allCategories.map(cat => ({\n value: cat,\n text: this.getCategoryTitle(cat),\n })),\n ];\n });\n\n /**\n * Categories data source for filter dropdown\n */\n protected readonly categoriesDataSource = computed(() => {\n const cats = this.categories();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cats,\n total: cats.length,\n });\n },\n byKey: (key: unknown) => {\n const cat = cats.find(c => c.value === key);\n return Promise.resolve(cat || null);\n },\n pageSize: 100,\n key: 'value',\n });\n });\n\n /**\n * Columns data source for field selection\n */\n protected readonly columnsDataSource = computed(() => {\n const cols = this.columns();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: cols.map(col => ({\n value: col.name,\n text: col.title || col.name,\n })),\n total: cols.length,\n });\n },\n byKey: (key: unknown) => {\n const col = cols.find(c => c.name === key);\n return Promise.resolve(col ? { value: col.name, text: col.title || col.name } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n /**\n * Functions data source for function selection\n */\n protected readonly functionsDataSource = computed(() => {\n const funcs = this.availableFunctions();\n return new AXDataSource({\n load: () => {\n return Promise.resolve({\n items: funcs.map(f => ({\n value: f.name,\n text: `${f.title} - ${f.description || f.name}`,\n definition: f,\n })),\n total: funcs.length,\n });\n },\n byKey: (key: unknown) => {\n const func = funcs.find(f => f.name === key);\n return Promise.resolve(func ? {\n value: func.name,\n text: `${func.title} - ${func.description || func.name}`,\n definition: func,\n } : null);\n },\n pageSize: 1000,\n key: 'value',\n });\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Add a new aggregate operation\n */\n protected addAggregate(): void {\n const newAgg = this.newAggregate();\n \n // Function is required\n if (!newAgg.function) {\n return;\n }\n\n const funcDef = this.availableFunctionsList().find(f => f.name === newAgg.function);\n if (!funcDef) {\n return;\n }\n\n // Check field requirement:\n // - If function requires field AND doesn't support nested, field is mandatory\n // - If function doesn't require field (e.g., COUNT(*)), field is optional\n // - If function supports nested (e.g., CONCAT), field is optional (can use nestedAggregates)\n if (funcDef.requiresField && !funcDef.supportsNested && !newAgg.field) {\n return;\n }\n\n const currentAggregates = this.value();\n const newOperation: AXPAggregateOperation = {\n field: newAgg.field || undefined,\n function: newAgg.function,\n alias: newAgg.alias || undefined,\n distinct: funcDef.supportsDistinct ? (newAgg.distinct || false) : undefined,\n // TODO: Add nestedAggregates support in UI\n nestedAggregates: funcDef.supportsNested ? (newAgg.nestedAggregates || []) : undefined,\n };\n\n this.valueChange.emit([...currentAggregates, newOperation]);\n this.resetNewAggregate();\n }\n\n /**\n * Remove an aggregate operation\n */\n protected removeAggregate(index: number): void {\n const currentAggregates = this.value();\n const newAggregates = currentAggregates.filter((_, i) => i !== index);\n this.valueChange.emit(newAggregates);\n }\n\n /**\n * Update an aggregate operation\n */\n protected updateAggregate(index: number, updates: Partial<AXPAggregateOperation>): void {\n const currentAggregates = this.value();\n const updatedAggregates = [...currentAggregates];\n updatedAggregates[index] = { ...updatedAggregates[index], ...updates };\n this.valueChange.emit(updatedAggregates);\n }\n\n /**\n * Load functions from service\n */\n private async loadFunctions(): Promise<void> {\n const database = this.databaseType();\n const functions = await this.aggregateFunctionService.getFunctions(database);\n this.availableFunctionsList.set(functions);\n }\n\n /**\n * Load categories from service\n */\n private async loadCategories(): Promise<void> {\n const categories = await this.aggregateFunctionService.getCategories();\n this.availableCategoriesList.set(categories);\n }\n\n /**\n * Get function definition for display (synchronous, uses cache)\n */\n protected getFunctionDefinition(functionName: string): AXPAggregateFunctionDefinition | undefined {\n return this.availableFunctionsList().find(f => f.name === functionName);\n }\n\n /**\n * Check if function requires field\n * Note: Functions that support nested aggregates don't require a field (they can use nestedAggregates instead)\n */\n protected functionRequiresField(functionName: string): boolean {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n if (!funcDef) {\n return true;\n }\n // If function supports nested aggregates, field is optional\n if (funcDef.supportsNested) {\n return false;\n }\n return funcDef.requiresField ?? true;\n }\n\n /**\n * Check if function supports distinct\n */\n protected functionSupportsDistinct(functionName: string): boolean {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n return funcDef?.supportsDistinct ?? false;\n }\n\n /**\n * Get category title for display\n */\n protected getCategoryTitle(category: AXPAggregateCategory | 'all'): string {\n const titles: Record<AXPAggregateCategory | 'all', string> = {\n all: 'All Categories',\n statistical: 'Statistical',\n mathematical: 'Mathematical',\n string: 'String',\n date: 'Date',\n custom: 'Custom',\n };\n return titles[category] || category;\n }\n\n /**\n * Toggle add form visibility\n */\n protected toggleAddForm(): void {\n this.showAddForm.update(v => !v);\n if (!this.showAddForm()) {\n this.resetNewAggregate();\n }\n }\n\n /**\n * Reset new aggregate form\n */\n protected resetNewAggregate(): void {\n this.newAggregate.set({\n field: '',\n function: '',\n alias: '',\n distinct: false,\n nestedAggregates: [],\n });\n this.showAddForm.set(false);\n this.editingNestedIndex.set(null);\n }\n\n /**\n * Handle function selection change\n */\n protected onFunctionChange(functionName: string): void {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n if (funcDef && !funcDef.requiresField) {\n // For functions like COUNT(*), clear the field\n this.newAggregate.update(agg => ({ ...agg, function: functionName, field: '' }));\n } else {\n this.newAggregate.update(agg => ({ ...agg, function: functionName }));\n }\n }\n\n /**\n * Handle field selection change\n */\n protected onFieldChange(field: string): void {\n this.newAggregate.update(agg => ({ ...agg, field }));\n }\n\n /**\n * Handle alias change\n */\n protected onAliasChange(alias: string): void {\n this.newAggregate.update(agg => ({ ...agg, alias: alias || undefined }));\n }\n\n /**\n * Handle distinct change\n */\n protected onDistinctChange(distinct: boolean): void {\n this.newAggregate.update(agg => ({ ...agg, distinct }));\n }\n\n /**\n * Check if function supports nested aggregates\n */\n protected functionSupportsNested(functionName: string): boolean {\n const funcDef = this.availableFunctionsList().find(f => f.name === functionName);\n return funcDef?.supportsNested ?? false;\n }\n\n /**\n * Check if can add more nested aggregates (based on depth)\n */\n protected canAddNestedAggregate(parentIndex: number, currentDepth: number = 0): boolean {\n return currentDepth < this.maxNestingDepth();\n }\n\n /**\n * Get current nesting depth for an aggregate operation\n */\n protected getNestingDepth(agg: AXPAggregateOperation, currentDepth: number = 0): number {\n if (!agg.nestedAggregates || agg.nestedAggregates.length === 0) {\n return currentDepth;\n }\n let maxDepth = currentDepth;\n for (const nested of agg.nestedAggregates) {\n const depth = this.getNestingDepth(nested, currentDepth + 1);\n if (depth > maxDepth) {\n maxDepth = depth;\n }\n }\n return maxDepth;\n }\n\n /**\n * Add nested aggregate to an existing aggregate operation\n */\n protected addNestedAggregate(parentIndex: number): void {\n const currentAggregates = this.value();\n const parent = currentAggregates[parentIndex];\n if (!parent) {\n return;\n }\n\n const funcDef = this.availableFunctionsList().find(f => f.name === parent.function);\n if (!funcDef?.supportsNested) {\n return;\n }\n\n const currentDepth = this.getNestingDepth(parent);\n if (currentDepth >= this.maxNestingDepth()) {\n return;\n }\n\n const updatedAggregates = [...currentAggregates];\n const nestedAggregates = parent.nestedAggregates || [];\n updatedAggregates[parentIndex] = {\n ...parent,\n nestedAggregates: [\n ...nestedAggregates,\n {\n function: '',\n field: '',\n },\n ],\n };\n\n this.valueChange.emit(updatedAggregates);\n this.editingNestedIndex.set({ parentIndex, nestedIndex: nestedAggregates.length });\n }\n\n /**\n * Remove nested aggregate from an aggregate operation\n */\n protected removeNestedAggregate(parentIndex: number, nestedIndex: number): void {\n const currentAggregates = this.value();\n const parent = currentAggregates[parentIndex];\n if (!parent || !parent.nestedAggregates) {\n return;\n }\n\n const updatedAggregates = [...currentAggregates];\n const nestedAggregates = [...parent.nestedAggregates];\n nestedAggregates.splice(nestedIndex, 1);\n\n updatedAggregates[parentIndex] = {\n ...parent,\n nestedAggregates: nestedAggregates.length > 0 ? nestedAggregates : undefined,\n };\n\n this.valueChange.emit(updatedAggregates);\n }\n\n /**\n * Update nested aggregate\n */\n protected updateNestedAggregate(\n parentIndex: number,\n nestedIndex: number,\n updates: Partial<AXPAggregateOperation>\n ): void {\n const currentAggregates = this.value();\n const parent = currentAggregates[parentIndex];\n if (!parent || !parent.nestedAggregates) {\n return;\n }\n\n const updatedAggregates = [...currentAggregates];\n const nestedAggregates = [...parent.nestedAggregates];\n nestedAggregates[nestedIndex] = { ...nestedAggregates[nestedIndex], ...updates };\n\n updatedAggregates[parentIndex] = {\n ...parent,\n nestedAggregates,\n };\n\n this.valueChange.emit(updatedAggregates);\n }\n\n /**\n * Add nested aggregate to new aggregate form\n */\n protected addNestedToNewAggregate(): void {\n const newAgg = this.newAggregate();\n if (!newAgg.function) {\n return;\n }\n\n const funcDef = this.availableFunctionsList().find(f => f.name === newAgg.function);\n if (!funcDef?.supportsNested) {\n return;\n }\n\n const nestedAggregates = newAgg.nestedAggregates || [];\n const currentDepth = nestedAggregates.length > 0 ? 1 : 0; // Simple depth check for new aggregate\n \n if (currentDepth >= this.maxNestingDepth()) {\n return;\n }\n\n this.newAggregate.update(agg => ({\n ...agg,\n nestedAggregates: [...(agg.nestedAggregates || []), { function: '', field: '' }],\n }));\n }\n\n /**\n * Remove nested aggregate from new aggregate form\n */\n protected removeNestedFromNewAggregate(nestedIndex: number): void {\n this.newAggregate.update(agg => {\n const nestedAggregates = [...(agg.nestedAggregates || [])];\n nestedAggregates.splice(nestedIndex, 1);\n return {\n ...agg,\n nestedAggregates: nestedAggregates.length > 0 ? nestedAggregates : [],\n };\n });\n }\n\n /**\n * Update nested aggregate in new aggregate form\n */\n protected updateNestedInNewAggregate(nestedIndex: number, updates: Partial<AXPAggregateOperation>): void {\n this.newAggregate.update(agg => {\n const nestedAggregates = [...(agg.nestedAggregates || [])];\n nestedAggregates[nestedIndex] = { ...nestedAggregates[nestedIndex], ...updates };\n return {\n ...agg,\n nestedAggregates,\n };\n });\n }\n\n //#endregion\n}\n\n","<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-select-box\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-select-box>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { AXPAggregateFunctionDefinition, AXPAggregateCategory, AXPDatabaseType } from '../query-builder.types';\n\n/**\n * Standard Aggregate Functions Registry\n * \n * Provides a comprehensive list of aggregate functions with their properties,\n * categories, and database support information.\n * \n * Based on SQL standard (ISO/IEC 9075) and common NoSQL implementations.\n */\nexport class AXPAggregateFunctionsRegistry {\n private static readonly functions: AXPAggregateFunctionDefinition[] = [\n //#region ---- Statistical Functions ----\n\n {\n name: 'sum',\n title: 'SUM',\n description: 'Calculates the sum of numeric values',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: true,\n },\n {\n name: 'avg',\n title: 'AVG',\n description: 'Calculates the average of numeric values',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: true,\n },\n {\n name: 'count',\n title: 'COUNT',\n description: 'Counts the number of rows or non-null values',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: false, // COUNT(*) doesn't require a field\n supportsDistinct: true,\n },\n {\n name: 'min',\n title: 'MIN',\n description: 'Finds the minimum value',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'max',\n title: 'MAX',\n description: 'Finds the maximum value',\n category: 'statistical',\n supportedDatabases: ['all'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'stddev',\n title: 'STDDEV',\n description: 'Calculates the standard deviation',\n category: 'statistical',\n supportedDatabases: ['sql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'variance',\n title: 'VARIANCE',\n description: 'Calculates the variance',\n category: 'statistical',\n supportedDatabases: ['sql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n\n //#region ---- String Functions ----\n\n {\n name: 'concat',\n title: 'CONCAT',\n description: 'Concatenates multiple string values. Supports nested aggregates (e.g., CONCAT(MIN(field1), MAX(field2)))',\n category: 'string',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: false, // Can use nested aggregates instead\n supportsDistinct: false,\n supportsNested: true, // CONCAT can contain other aggregates\n },\n {\n name: 'group_concat',\n title: 'GROUP_CONCAT',\n description: 'Concatenates values from multiple rows into a single string',\n category: 'string',\n supportedDatabases: ['mysql'],\n requiresField: true,\n supportsDistinct: true,\n },\n {\n name: 'string_agg',\n title: 'STRING_AGG',\n description: 'Concatenates values from multiple rows (PostgreSQL)',\n category: 'string',\n supportedDatabases: ['postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n\n //#region ---- Date Functions ----\n\n {\n name: 'year',\n title: 'YEAR',\n description: 'Extracts the year from a date',\n category: 'date',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'month',\n title: 'MONTH',\n description: 'Extracts the month from a date',\n category: 'date',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'day',\n title: 'DAY',\n description: 'Extracts the day from a date',\n category: 'date',\n supportedDatabases: ['sql', 'mysql', 'postgresql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n\n //#region ---- MongoDB Specific Functions ----\n\n {\n name: 'first',\n title: 'FIRST',\n description: 'Returns the first value in a group (MongoDB $first)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'last',\n title: 'LAST',\n description: 'Returns the last value in a group (MongoDB $last)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'push',\n title: 'PUSH',\n description: 'Creates an array of values (MongoDB $push)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n {\n name: 'addToSet',\n title: 'ADD_TO_SET',\n description: 'Creates an array of unique values (MongoDB $addToSet)',\n category: 'statistical',\n supportedDatabases: ['mongodb', 'nosql'],\n requiresField: true,\n supportsDistinct: false,\n },\n\n //#endregion\n ];\n\n /**\n * Get all aggregate functions\n */\n static getAll(): AXPAggregateFunctionDefinition[] {\n return [...this.functions];\n }\n\n /**\n * Get functions by category\n */\n static getByCategory(category: AXPAggregateCategory): AXPAggregateFunctionDefinition[] {\n return this.functions.filter(f => f.category === category);\n }\n\n /**\n * Get functions by database support\n */\n static getByDatabase(database: AXPDatabaseType): AXPAggregateFunctionDefinition[] {\n return this.functions.filter(f => \n f.supportedDatabases.includes('all') || \n f.supportedDatabases.includes(database) ||\n (database === 'sql' && f.supportedDatabases.some(db => ['sql', 'mysql', 'postgresql'].includes(db))) ||\n (database === 'nosql' && f.supportedDatabases.some(db => ['nosql', 'mongodb'].includes(db)))\n );\n }\n\n /**\n * Get functions filtered by category and/or database\n */\n static getFiltered(options: {\n category?: AXPAggregateCategory;\n database?: AXPDatabaseType;\n search?: string;\n }): AXPAggregateFunctionDefinition[] {\n let result = this.functions;\n\n if (options.category) {\n result = result.filter(f => f.category === options.category);\n }\n\n if (options.database) {\n result = result.filter(f => \n f.supportedDatabases.includes('all') || \n f.supportedDatabases.includes(options.database!) ||\n (options.database === 'sql' && f.supportedDatabases.some(db => ['sql', 'mysql', 'postgresql'].includes(db))) ||\n (options.database === 'nosql' && f.supportedDatabases.some(db => ['nosql', 'mongodb'].includes(db)))\n );\n }\n\n if (options.search) {\n const searchLower = options.search.toLowerCase();\n result = result.filter(f => \n f.name.toLowerCase().includes(searchLower) ||\n f.title.toLowerCase().includes(searchLower) ||\n f.description?.toLowerCase().includes(searchLower)\n );\n }\n\n return result;\n }\n\n /**\n * Get function by name\n */\n static getByName(name: string): AXPAggregateFunctionDefinition | undefined {\n return this.functions.find(f => f.name === name);\n }\n\n /**\n * Get all categories\n */\n static getCategories(): AXPAggregateCategory[] {\n return ['statistical', 'mathematical', 'string', 'date', 'custom'];\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport {\n AXPAggregateFunctionProvider,\n AXPAggregateFunctionDefinition,\n AXPDatabaseType,\n AXPAggregateCategory,\n AXP_AGGREGATE_FUNCTION_PROVIDER,\n} from './aggregate-function.provider';\nimport { AXPAggregateFunctionsRegistry } from './aggregate-functions.registry';\n\n/**\n * Default Aggregate Function Provider\n * \n * Provides the standard set of aggregate functions defined in the registry.\n * This is the default provider that includes all built-in aggregate functions\n * (SUM, AVG, COUNT, MIN, MAX, CONCAT, etc.).\n * \n * This provider is automatically registered and provides the base set of\n * aggregate functions. Additional providers can be registered to extend\n * this functionality.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDefaultAggregateFunctionProvider implements AXPAggregateFunctionProvider {\n /**\n * Get list of aggregate functions\n * \n * @param databaseType - Optional database type filter\n * @returns Promise that resolves to array of aggregate function definitions\n */\n async getFunctions(databaseType?: AXPDatabaseType): Promise<AXPAggregateFunctionDefinition[]> {\n const allFunctions = AXPAggregateFunctionsRegistry.getAll();\n\n // If no database type filter, return all functions\n if (!databaseType || databaseType === 'all') {\n return allFunctions;\n }\n\n // Filter by database type\n return allFunctions.filter(func => func.supportedDatabases.includes(databaseType));\n }\n\n /**\n * Get a single aggregate function by name\n * \n * @param name - Function name/identifier\n * @returns Promise that resolves to function definition or undefined\n */\n async getByName(name: string): Promise<AXPAggregateFunctionDefinition | undefined> {\n return AXPAggregateFunctionsRegistry.getByName(name);\n }\n\n /**\n * Get all unique categories available\n * \n * @returns Promise that resolves to array of category names\n */\n async getCategories(): Promise<AXPAggregateCategory[]> {\n return AXPAggregateFunctionsRegistry.getCategories();\n }\n\n getMaxNestingDepth(): number {\n return 3; // Default: allow up to 3 levels of nesting\n }\n}\n\n/**\n * Default Aggregate Function Provider Registration\n * \n * This constant can be used in module providers to register the default provider:\n * \n * ```typescript\n * @NgModule({\n * providers: [\n * AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER,\n * ],\n * })\n * ```\n */\nexport const AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER = {\n provide: AXP_AGGREGATE_FUNCTION_PROVIDER,\n useClass: AXMDefaultAggregateFunctionProvider,\n multi: true,\n};\n\n","import { Injectable } from '@angular/core';\nimport { AXPAggregateCategory } from '../query-builder.types';\nimport {\n AXPAggregateCategoryDefinition,\n AXPAggregateCategoryProvider,\n AXP_AGGREGATE_CATEGORY_PROVIDER,\n} from './aggregate-category.provider';\nimport { AXPAggregateFunctionsRegistry } from './aggregate-functions.registry';\n\n//#region ---- Default Aggregate Category Provider ----\n\n/**\n * Default Aggregate Category Provider\n *\n * Provides the standard set of aggregate categories used by the built‑in\n * aggregate functions. Other modules can extend or override these categories\n * by registering additional providers for `AXP_AGGREGATE_CATEGORY_PROVIDER`.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDefaultAggregateCategoryProvider implements AXPAggregateCategoryProvider {\n //#region ---- Cached Categories ----\n\n private readonly categories: AXPAggregateCategoryDefinition[] = AXPAggregateFunctionsRegistry\n .getCategories()\n .map((name, index) => ({\n name,\n title: this.getTitle(name),\n description: this.getDescription(name),\n order: index,\n }));\n\n //#endregion\n\n //#region ---- Public API ----\n\n async getList(): Promise<AXPAggregateCategoryDefinition[]> {\n return this.categories;\n }\n\n async getByName(name: AXPAggregateCategory): Promise<AXPAggregateCategoryDefinition | undefined> {\n return this.categories.find(cat => cat.name === name);\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private getTitle(name: AXPAggregateCategory): string {\n switch (name) {\n case 'statistical':\n return 'Statistical';\n case 'mathematical':\n return 'Mathematical';\n case 'string':\n return 'String';\n case 'date':\n return 'Date';\n case 'custom':\n return 'Custom';\n default:\n // Fallback: use raw name\n return name;\n }\n }\n\n private getDescription(name: AXPAggregateCategory): string | undefined {\n switch (name) {\n case 'statistical':\n return 'Standard statistical aggregate functions';\n case 'mathematical':\n return 'Mathematical and numeric aggregate functions';\n case 'string':\n return 'String and text aggregate functions';\n case 'date':\n return 'Date and time aggregate functions';\n case 'custom':\n return 'Custom or extension aggregate functions';\n default:\n return undefined;\n }\n }\n\n //#endregion\n}\n\n//#region ---- Default Provider Registration ----\n\nexport const AXP_DEFAULT_AGGREGATE_CATEGORY_PROVIDER = {\n provide: AXP_AGGREGATE_CATEGORY_PROVIDER,\n useClass: AXMDefaultAggregateCategoryProvider,\n multi: true,\n};\n\n//#endregion\n\n\n","import { InjectionToken } from '@angular/core';\nimport { AXPQueryBuilderData } from './query-builder.types';\n\n/**\n * Database Type Definition\n * Defines a database type with its properties and capabilities\n */\nexport interface AXPDatabaseTypeDefinition {\n /**\n * Unique identifier for the database type (e.g., 'mysql', 'postgresql', 'mongodb')\n */\n name: string;\n\n /**\n * Display title (e.g., 'MySQL', 'PostgreSQL', 'MongoDB')\n */\n title: string;\n\n /**\n * Description of the database type\n */\n description: string;\n\n /**\n * SQL identifier escape character (e.g., '`' for MySQL, '\"' for PostgreSQL)\n */\n identifierQuote: string;\n\n /**\n * Whether this database supports SQL syntax\n */\n supportsSql: boolean;\n\n /**\n * Whether this database is NoSQL\n */\n isNoSql: boolean;\n}\n\n/**\n * Database Type Provider Token\n */\nexport type AXPDatabaseTypeProviderToken =\n | AXPDatabaseTypeProvider\n | Promise<AXPDatabaseTypeProvider>;\n\n/**\n * Injection token for database type providers\n */\nexport const AXP_DATABASE_TYPE_PROVIDER = new InjectionToken<AXPDatabaseTypeProviderToken[]>(\n 'AXP_DATABASE_TYPE_PROVIDER',\n {\n factory: () => [],\n }\n);\n\n/**\n * Database Type Provider Interface\n * \n * Allows modules to provide custom database types and their conversion/validation logic.\n */\nexport interface AXPDatabaseTypeProvider {\n /**\n * Get list of all database types\n */\n getTypes(): Promise<AXPDatabaseTypeDefinition[]>;\n\n /**\n * Get a single database type by name\n */\n getByName(name: string): Promise<AXPDatabaseTypeDefinition | undefined>;\n\n /**\n * Escape SQL identifier for the given database type\n */\n escapeIdentifier(identifier: string, databaseType: string): string;\n\n /**\n * Escape SQL value for the given database type\n */\n escapeValue(value: unknown, databaseType: string): string;\n\n /**\n * Convert operator type to SQL operator for the given database type\n */\n convertOperatorToSql(operatorType: string, databaseType: string): string;\n\n /**\n * Validate SQL query syntax for the given database type\n */\n validateQuery(sql: string, databaseType: string): { valid: boolean; error?: string };\n\n /**\n * Convert QueryBuilderData model to query string (SQL or JSON for NoSQL)\n * \n * @param queryData - The structured query builder data model\n * @param databaseType - Target database type\n * @returns Promise that resolves to query string (SQL for SQL databases, JSON string for MongoDB)\n */\n toQuery(queryData: AXPQueryBuilderData, databaseType: string): Promise<string>;\n\n /**\n * Parse query string (SQL or JSON) back to QueryBuilderData model\n * \n * @param query - The query string (SQL or JSON)\n * @param databaseType - Source database type\n * @returns Promise that resolves to partial QueryBuilderData model\n */\n fromQuery(query: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>>;\n}\n\n","//#region ---- Imports ----\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n AXPDatabaseTypeProvider,\n AXPDatabaseTypeDefinition,\n AXP_DATABASE_TYPE_PROVIDER,\n} from '../database-type.provider';\nimport { AXPQueryBuilderData } from '../query-builder.types';\n\n//#endregion\n\n/**\n * Database Type Service\n * \n * Aggregates database types from all registered providers and provides a unified API\n * for accessing database type definitions and conversion/validation logic.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPDatabaseTypeService {\n //#region ---- Providers & Caches ----\n\n private readonly providers = inject(AXP_DATABASE_TYPE_PROVIDER, { optional: true }) || [];\n\n //#endregion\n\n //#region ---- Cache Storage ----\n\n /** Cache for all database types */\n private typesCache: AXPDatabaseTypeDefinition[] | null = null;\n\n /** Cache for types by name */\n private typesByName = new Map<string, AXPDatabaseTypeDefinition>();\n\n /** Pending requests */\n private pendingTypesRequest: Promise<AXPDatabaseTypeDefinition[]> | null = null;\n private pendingTypeRequests = new Map<string, Promise<AXPDatabaseTypeDefinition | undefined>>();\n\n //#endregion\n\n //#region ---- Public API: Types ----\n\n /**\n * Get all database types\n */\n async getTypes(): Promise<AXPDatabaseTypeDefinition[]> {\n if (this.typesCache !== null) {\n return this.typesCache;\n }\n\n if (this.pendingTypesRequest) {\n return this.pendingTypesRequest;\n }\n\n this.pendingTypesRequest = this.loadTypesFromProviders();\n const result = await this.pendingTypesRequest;\n this.pendingTypesRequest = null;\n return result;\n }\n\n /**\n * Get single database type by name\n */\n async getByName(name: string): Promise<AXPDatabaseTypeDefinition | undefined> {\n if (this.typesByName.has(name)) {\n return this.typesByName.get(name);\n }\n\n if (this.pendingTypeRequests.has(name)) {\n return this.pendingTypeRequests.get(name)!;\n }\n\n const requestPromise = this.loadTypeFromProviders(name);\n this.pendingTypeRequests.set(name, requestPromise);\n\n return requestPromise;\n }\n\n //#endregion\n\n //#region ---- Public API: Conversion & Validation ----\n\n /**\n * Escape SQL identifier for the given database type\n */\n async escapeIdentifier(identifier: string, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.escapeIdentifier === 'function') {\n try {\n return p.value.escapeIdentifier(identifier, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: no escaping\n return identifier;\n }\n\n /**\n * Escape SQL value for the given database type\n */\n async escapeValue(value: unknown, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.escapeValue === 'function') {\n try {\n return p.value.escapeValue(value, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: basic escaping\n if (value === null || value === undefined) {\n return 'NULL';\n }\n if (typeof value === 'string') {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n return String(value);\n }\n\n /**\n * Convert operator type to SQL operator\n */\n async convertOperatorToSql(operatorType: string, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.convertOperatorToSql === 'function') {\n try {\n return p.value.convertOperatorToSql(operatorType, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: default operator\n return '=';\n }\n\n /**\n * Validate SQL query syntax\n */\n async validateQuery(sql: string, databaseType: string): Promise<{ valid: boolean; error?: string }> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.validateQuery === 'function') {\n try {\n return p.value.validateQuery(sql, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: basic validation\n if (!sql || !sql.trim()) {\n return { valid: false, error: 'Query is empty' };\n }\n return { valid: true };\n }\n\n /**\n * Convert QueryBuilderData model to query string (SQL or JSON for NoSQL)\n * \n * @param queryData - The structured query builder data model\n * @param databaseType - Target database type\n * @returns Promise that resolves to query string\n */\n async toQuery(queryData: AXPQueryBuilderData, databaseType: string): Promise<string> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.toQuery === 'function') {\n try {\n return await p.value.toQuery(queryData, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n throw new Error(`No provider found that supports toQuery for database type: ${databaseType}`);\n }\n\n /**\n * Parse query string (SQL or JSON) back to QueryBuilderData model\n * \n * @param query - The query string (SQL or JSON)\n * @param databaseType - Source database type\n * @returns Promise that resolves to partial QueryBuilderData model\n */\n async fromQuery(query: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.fromQuery === 'function') {\n try {\n return await p.value.fromQuery(query, databaseType);\n } catch {\n // Continue to next provider\n }\n }\n }\n\n // Fallback: return empty structure\n return {\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n }\n\n //#endregion\n\n //#region ---- Private: Data Loading ----\n\n private async loadTypesFromProviders(): Promise<AXPDatabaseTypeDefinition[]> {\n const resolvedProviders = await Promise.allSettled(this.providers);\n const allTypes: AXPDatabaseTypeDefinition[] = [];\n const seenNames = new Set<string>();\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getTypes === 'function') {\n try {\n const types = await p.value.getTypes();\n if (Array.isArray(types)) {\n for (const type of types) {\n if (!seenNames.has(type.name)) {\n seenNames.add(type.name);\n allTypes.push(type);\n }\n }\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n this.typesCache = allTypes;\n allTypes.forEach(type => this.typesByName.set(type.name, type));\n\n return allTypes;\n }\n\n private async loadTypeFromProviders(name: string): Promise<AXPDatabaseTypeDefinition | undefined> {\n try {\n const resolvedProviders = await Promise.allSettled(this.providers);\n\n for (const p of resolvedProviders) {\n if (p.status === 'fulfilled' && p.value && typeof p.value.getByName === 'function') {\n try {\n const result = await p.value.getByName(name);\n if (result) {\n this.typesByName.set(name, result);\n return result;\n }\n } catch {\n // Continue on error\n }\n }\n }\n\n // Fallback: search in cache\n if (this.typesCache) {\n const found = this.typesCache.find(t => t.name === name);\n if (found) {\n this.typesByName.set(name, found);\n return found;\n }\n }\n\n return undefined;\n } finally {\n this.pendingTypeRequests.delete(name);\n }\n }\n\n //#endregion\n\n //#region ---- Cache Management ----\n\n clearCache(): void {\n this.typesCache = null;\n this.typesByName.clear();\n this.pendingTypesRequest = null;\n this.pendingTypeRequests.clear();\n }\n\n //#endregion\n}\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPDatabaseTypeService } from '../database-type/database-type.service';\nimport { AXPDatabaseTypeDefinition } from '../database-type.provider';\n\n/**\n * Raw Query Builder Component\n * \n * Provides a text area for writing raw SQL/queries with:\n * - Query language selector (MySQL, PostgreSQL, MongoDB, etc.)\n * - Syntax validation with error highlighting\n * - Two-way sync with structured query builder\n */\n@Component({\n selector: 'axp-raw-query-builder',\n templateUrl: './raw-query-builder.component.html',\n styleUrl: './raw-query-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXSelectBoxModule,\n AXTextAreaModule,\n AXLabelModule,\n AXDecoratorModule,\n AXTranslationModule,\n ],\n})\nexport class AXPRawQueryBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly databaseTypeService = inject(AXPDatabaseTypeService);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current raw query string\n */\n value = input<string>('');\n\n /**\n * Current query language (database type name)\n */\n queryLanguage = input<string>('mysql');\n\n /**\n * Emitted when raw query changes\n */\n valueChange = output<string>();\n\n /**\n * Emitted when query language changes\n */\n queryLanguageChange = output<string>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected rawQuery = signal<string>('');\n protected selectedLanguage = signal<string>('mysql');\n protected validationError = signal<string | null>(null);\n protected isValid = computed(() => !this.validationError());\n protected databaseTypes = signal<Array<{ value: string; text: string }>>([]);\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Available query languages (loaded from database type service)\n */\n protected queryLanguageDataSource = signal<AXDataSource<{ value: string; text: string } | null>>(\n new AXDataSource<{ value: string; text: string } | null>({\n load: () => Promise.resolve({ items: [], total: 0 }),\n byKey: () => Promise.resolve(null),\n pageSize: 100,\n key: 'value',\n })\n );\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Load database types\n this.loadDatabaseTypes();\n\n // Initialize from inputs\n this.rawQuery.set(this.value());\n this.selectedLanguage.set(this.queryLanguage());\n\n // Sync with external value changes\n effect(() => {\n const val = this.value();\n if (val !== this.rawQuery()) {\n this.rawQuery.set(val);\n this.validateQuery(val).catch(() => {\n // Ignore validation errors in effect\n });\n }\n });\n\n effect(() => {\n const lang = this.queryLanguage();\n if (lang !== this.selectedLanguage()) {\n this.selectedLanguage.set(lang);\n // Re-validate query with new language\n this.validateQuery(this.rawQuery()).catch(() => {\n // Ignore validation errors\n });\n }\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Handle raw query text change\n */\n protected onQueryChange(query: string): void {\n this.rawQuery.set(query);\n this.validateQuery(query).catch(() => {\n // Ignore validation errors\n });\n this.valueChange.emit(query);\n }\n\n /**\n * Load database types from service\n */\n private async loadDatabaseTypes(): Promise<void> {\n const types = await this.databaseTypeService.getTypes();\n const typeItems = types.map((t: AXPDatabaseTypeDefinition) => ({\n value: t.name,\n text: t.title,\n }));\n this.databaseTypes.set(typeItems);\n \n // Update data source\n this.queryLanguageDataSource.set(\n new AXDataSource<{ value: string; text: string } | null>({\n load: () => {\n return Promise.resolve({\n items: typeItems,\n total: typeItems.length,\n });\n },\n byKey: (key: unknown) => {\n const lang = typeItems.find(l => l.value === key);\n return Promise.resolve(lang || null);\n },\n pageSize: 100,\n key: 'value',\n })\n );\n }\n\n /**\n * Handle query language change\n */\n protected onLanguageChange(language: string): void {\n this.selectedLanguage.set(language);\n this.queryLanguageChange.emit(language);\n }\n\n /**\n * Validate SQL query syntax using database type service\n */\n protected async validateQuery(query: string): Promise<void> {\n if (!query || query.trim().length === 0) {\n this.validationError.set(null);\n return;\n }\n\n const databaseType = this.selectedLanguage();\n const result = await this.databaseTypeService.validateQuery(query, databaseType);\n\n if (result.valid) {\n this.validationError.set(null);\n } else {\n this.validationError.set(result.error || 'Invalid query syntax');\n }\n }\n\n /**\n * Format/beautify the query\n */\n protected formatQuery(): void {\n const query = this.rawQuery();\n if (!query) {\n return;\n }\n\n // Basic formatting: normalize whitespace\n let formatted = query\n .replace(/\\s+/g, ' ') // Replace multiple spaces with single space\n .replace(/\\s*,\\s*/g, ', ') // Normalize comma spacing\n .replace(/\\s*\\(\\s*/g, ' (') // Normalize opening parentheses\n .replace(/\\s*\\)\\s*/g, ') ') // Normalize closing parentheses\n .trim();\n\n // Add line breaks for major SQL keywords\n const keywords = ['SELECT', 'FROM', 'WHERE', 'GROUP BY', 'ORDER BY', 'HAVING', 'LIMIT'];\n for (const keyword of keywords) {\n const regex = new RegExp(`\\\\s+${keyword}\\\\s+`, 'gi');\n formatted = formatted.replace(regex, `\\n${keyword} `);\n }\n\n this.rawQuery.set(formatted);\n this.onQueryChange(formatted);\n }\n\n /**\n * Clear the query\n */\n protected clearQuery(): void {\n this.rawQuery.set('');\n this.validationError.set(null);\n this.valueChange.emit('');\n }\n\n //#endregion\n}\n\n","<div class=\"axp-raw-query-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.title' | translate | async) || 'Raw Query' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.format-query.title' | translate | async) || 'Format'\"\n (onClick)=\"formatQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-code\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'danger'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear.title' | translate | async) || 'Clear'\"\n (onClick)=\"clearQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Query Language Selector -->\n <div class=\"__language-selector\">\n <ax-select-box\n class=\"__language-filter\"\n [dataSource]=\"queryLanguageDataSource()\"\n [ngModel]=\"selectedLanguage()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.language-placeholder' | translate | async) || 'Select query language'\">\n </ax-select-box>\n </div>\n\n <!-- Query Editor -->\n <div class=\"__query-editor\">\n <ax-text-area\n class=\"__query-textarea\"\n [ngModel]=\"rawQuery()\"\n (ngModelChange)=\"onQueryChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.placeholder' | translate | async) || 'Enter your raw SQL query here...'\"\n [rows]=\"15\"\n [class.__error]=\"!isValid()\">\n </ax-text-area>\n \n @if (!isValid() && validationError()) {\n <div class=\"__validation-error\">\n <ax-label class=\"__error-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"ax-text-danger-500\"></ax-icon>\n {{ validationError() }}\n </ax-label>\n </div>\n }\n </div>\n\n <!-- Help Text -->\n <div class=\"__help-text\">\n <ax-label class=\"__help-label\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.help-text' | translate | async) || 'Write your query in ' + selectedLanguage().toUpperCase() + ' syntax. Changes here will sync with the structured query builder.' }}\n </ax-label>\n </div>\n</div>\n\n","import { ChangeDetectionStrategy, Component, effect, input, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPQueryOutputType } from '../../../entities/query/query.types';\n\n//#region ---- Types ----\n\n//#endregion\n\n/**\n * Output Builder Component\n * \n * Allows users to select the expected output type for the query result:\n * - value: Single value result (e.g., COUNT, SUM, AVG)\n * - table: Table result with items array and total\n * - object: Custom object structure\n */\n@Component({\n selector: 'axp-output-builder',\n templateUrl: './output-builder.component.html',\n styleUrl: './output-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXLabelModule,\n AXTranslationModule,\n ],\n})\nexport class AXPOutputBuilderComponent {\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current output type value\n */\n value = input<AXPQueryOutputType | undefined>(undefined);\n\n /**\n * Emitted when output type changes\n */\n valueChange = output<AXPQueryOutputType>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n /**\n * Internal value for ngModel binding\n */\n protected readonly internalValue = signal<AXPQueryOutputType>('table');\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Available output types\n */\n protected readonly outputTypes = [\n {\n value: 'value' as AXPQueryOutputType,\n text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.value.title',\n description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.value.description',\n },\n {\n value: 'table' as AXPQueryOutputType,\n text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.table.title',\n description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.table.description',\n },\n {\n value: 'object' as AXPQueryOutputType,\n text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.object.title',\n description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.object.description',\n },\n ];\n\n //#endregion\n\n //#region ---- Lifecycle Hooks ----\n\n constructor() {\n // Sync input value to internal signal\n effect(() => {\n const inputValue = this.value();\n if (inputValue !== undefined && inputValue !== this.internalValue()) {\n this.internalValue.set(inputValue);\n }\n });\n\n // Initialize with default if no value provided\n if (!this.value()) {\n this.internalValue.set('table');\n } else {\n this.internalValue.set(this.value()!);\n }\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle output type selection change\n */\n protected onOutputTypeChange(value: AXPQueryOutputType): void {\n this.internalValue.set(value);\n this.valueChange.emit(value);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-output-builder\">\n <div class=\"__section\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.title' | translate | async) || 'Output Type' }}\n </ax-label>\n <ax-label class=\"__section-description\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.description' | translate | async) || 'Select the expected structure of the query result' }}\n </ax-label>\n </div>\n\n <div class=\"__content\">\n <ax-select-box\n [ngModel]=\"internalValue()\"\n (ngModelChange)=\"onOutputTypeChange($event)\"\n [dataSource]=\"outputTypes\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.output.placeholder' | translate | async) || 'Select output type'\">\n </ax-select-box>\n </div>\n</div>\n\n","import { AXTabsModule } from '@acorex/components/tabs';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPDataSourceDefinition } from '@acorex/platform/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, output, signal, untracked } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXPWhereBuilderComponent } from './where/where-builder.component';\nimport { AXPColumnsBuilderComponent } from './columns/columns-builder.component';\nimport { AXPSortBuilderComponent } from './sort/sort-builder.component';\nimport { AXPGroupByBuilderComponent } from './group-by/group-by-builder.component';\nimport { AXPAggregateBuilderComponent } from './aggregate';\nimport { AXPRawQueryBuilderComponent } from './raw-query/raw-query-builder.component';\nimport { AXPOutputBuilderComponent } from './output';\nimport { AXPQueryBuilderData } from './query-builder.types';\nimport { AXPQueryOutputType } from '../../entities/query/query.types';\nimport { AXPDatabaseTypeService } from './database-type/database-type.service';\nimport { inject } from '@angular/core';\n\n//#region ---- Types ----\n\n//#endregion\n\n/**\n * Full Query Builder Component\n * \n * Provides a complete query builder interface with:\n * - Columns: Multi-select from datasource columns\n * - Where: WHERE clause builder (groups + conditions)\n * - Sort: Sort rules with field and direction\n * - Group By: Multi-select from datasource columns\n * \n * Receives AXPDataSourceDefinition as input and distributes data to child components.\n */\n@Component({\n selector: 'axp-query-builder',\n templateUrl: './query-builder.component.html',\n styleUrl: './query-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTabsModule,\n AXLabelModule,\n AXDecoratorModule,\n AXPWhereBuilderComponent,\n AXPColumnsBuilderComponent,\n AXPSortBuilderComponent,\n AXPGroupByBuilderComponent,\n AXPAggregateBuilderComponent,\n AXPRawQueryBuilderComponent,\n AXPOutputBuilderComponent,\n AXTranslationModule,\n ],\n})\nexport class AXPQueryBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n private readonly databaseTypeService = inject(AXPDatabaseTypeService);\n\n //#endregion\n\n //#region ---- Inputs / Outputs ----\n\n /**\n * Current query builder value\n */\n value = input<AXPQueryBuilderData>({\n dataSource: undefined,\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n });\n\n /**\n * Datasource definition containing columns and filters\n */\n dataSourceDefinition = input<AXPDataSourceDefinition | undefined>(undefined);\n\n /**\n * Emitted when query structure changes\n */\n valueChange = output<AXPQueryBuilderData>();\n\n //#endregion\n\n //#region ---- Signals ----\n\n protected queryData = signal<AXPQueryBuilderData>({\n dataSource: undefined,\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n rawQuery: undefined,\n queryLanguage: 'mysql',\n });\n\n protected activeTab = signal<number>(0);\n protected isRawMode = signal<boolean>(false);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n /**\n * Extract columns from datasource definition\n */\n protected readonly columns = computed(() => {\n const def = this.dataSourceDefinition();\n return def?.columns || [];\n });\n\n /**\n * Extract filter definitions from datasource definition\n */\n protected readonly filterDefinitions = computed(() => {\n const def = this.dataSourceDefinition();\n return def?.filters || [];\n });\n\n /**\n * Validation warnings/errors for query builder\n */\n protected readonly validationWarnings = computed(() => {\n const data = this.queryData();\n const warnings: string[] = [];\n\n // Check aggregate functions usage\n const hasAggregates = data.aggregates && data.aggregates.length > 0;\n const hasGroupBy = data.groupBy && data.groupBy.length > 0;\n\n // Warning: Aggregate functions are typically used with GROUP BY\n if (hasAggregates && !hasGroupBy) {\n warnings.push('@data-management:metadata-definitions.components.query-builder.validation.aggregate-without-group-by');\n }\n\n // Warning: GROUP BY without aggregates might be unnecessary\n if (hasGroupBy && !hasAggregates) {\n warnings.push('@data-management:metadata-definitions.components.query-builder.validation.group-by-without-aggregate');\n }\n\n // Warning: If aggregates are used, columns in SELECT should be either in GROUP BY or be aggregates\n if (hasAggregates && data.columns.length > 0 && !hasGroupBy) {\n warnings.push('@data-management:metadata-definitions.components.query-builder.validation.aggregate-columns-warning');\n }\n\n return warnings;\n });\n\n //#endregion\n\n //#region ---- Lifecycle Methods ----\n\n constructor() {\n // Initialize from input value\n const initialValue = this.value();\n this.queryData.set({\n ...initialValue,\n rawQuery: initialValue.rawQuery || '',\n queryLanguage: initialValue.queryLanguage || 'mysql',\n });\n\n // Sync with external value changes\n effect(() => {\n const val = this.value();\n if (val) {\n // Only update if not in raw mode to avoid circular updates\n if (!this.isRawMode()) {\n this.queryData.set({\n ...val,\n rawQuery: val.rawQuery || '',\n queryLanguage: val.queryLanguage || 'mysql',\n });\n }\n }\n });\n\n // Track last generated SQL to prevent infinite loops\n let lastGeneratedSql = '';\n\n // Watch for tab changes to sync raw query\n effect(() => {\n const tab = this.activeTab();\n \n // When switching to RAW tab, generate SQL from structured query\n if (tab === 6) {\n const data = untracked(() => this.queryData());\n const isRaw = untracked(() => this.isRawMode());\n \n // Always regenerate SQL when switching to RAW tab (unless in raw mode)\n if (!isRaw) {\n this.databaseTypeService.toQuery(data, data.queryLanguage || 'mysql').then(sql => {\n if (sql !== lastGeneratedSql) {\n lastGeneratedSql = sql;\n untracked(() => {\n this.queryData.update(d => ({ ...d, rawQuery: sql }));\n });\n }\n });\n }\n }\n \n // When switching away from RAW tab, reset raw mode flag\n if (tab !== 6) {\n const isRaw = untracked(() => this.isRawMode());\n if (isRaw) {\n untracked(() => {\n this.isRawMode.set(false);\n });\n }\n }\n });\n\n // Watch for structured query changes to auto-update RAW query (when not in raw mode)\n // Use computed to track only structured parts (exclude rawQuery to avoid circular updates)\n const structuredQuery = computed(() => {\n const data = this.queryData();\n return {\n dataSource: data.dataSource,\n columns: data.columns,\n where: data.where,\n sort: data.sort,\n groupBy: data.groupBy,\n aggregates: data.aggregates,\n queryLanguage: data.queryLanguage || 'mysql',\n };\n });\n\n effect(() => {\n const structured = structuredQuery();\n const isRaw = untracked(() => this.isRawMode());\n const currentLanguage = untracked(() => this.queryData().queryLanguage || 'mysql');\n \n // Only auto-update RAW query if not in raw mode (user hasn't manually edited RAW)\n if (!isRaw) {\n this.databaseTypeService.toQuery(structured, structured.queryLanguage).then(query => {\n // Only update if different to avoid infinite loops\n if (query !== lastGeneratedSql) {\n lastGeneratedSql = query;\n untracked(() => {\n const currentData = this.queryData();\n if (query !== currentData.rawQuery) {\n this.queryData.update(d => ({ ...d, rawQuery: query }));\n }\n });\n }\n });\n }\n });\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Update columns selection\n */\n protected onColumnsChange(selectedColumns: string[]): void {\n this.queryData.update(data => ({\n ...data,\n columns: selectedColumns || [],\n }));\n this.updateValue();\n }\n\n /**\n * Update WHERE clause\n */\n protected onWhereChange(where: AXPQueryBuilderData['where']): void {\n this.queryData.update(data => ({\n ...data,\n where,\n }));\n this.updateValue();\n }\n\n /**\n * Update sort rules\n */\n protected onSortChange(sort: AXPQueryBuilderData['sort']): void {\n this.queryData.update(data => ({\n ...data,\n sort,\n }));\n this.updateValue();\n }\n\n /**\n * Update group by selection\n */\n protected onGroupByChange(selectedColumns: string[]): void {\n this.queryData.update(data => ({\n ...data,\n groupBy: selectedColumns || [],\n }));\n this.updateValue();\n }\n\n /**\n * Update aggregate operations\n */\n protected onAggregatesChange(aggregates: AXPQueryBuilderData['aggregates']): void {\n this.queryData.update(data => ({\n ...data,\n aggregates: aggregates || [],\n }));\n this.updateValue();\n }\n\n /**\n * Update raw query\n */\n protected onRawQueryChange(rawQuery: string): void {\n this.isRawMode.set(true);\n this.queryData.update(data => ({\n ...data,\n rawQuery,\n }));\n this.updateValue();\n }\n\n /**\n * Update query language\n */\n protected async onQueryLanguageChange(language: string): Promise<void> {\n // Update query language\n this.queryData.update(data => ({\n ...data,\n queryLanguage: language,\n }));\n\n // Regenerate query with new language\n const data = this.queryData();\n const query = await this.databaseTypeService.toQuery(data, language);\n this.queryData.update(d => ({ ...d, rawQuery: query }));\n \n this.updateValue();\n }\n\n /**\n * Update output type\n */\n protected onOutputTypeChange(outputType: AXPQueryOutputType): void {\n this.queryData.update(data => ({\n ...data,\n outputType: outputType,\n }));\n this.updateValue();\n }\n\n /**\n * Generate SQL from structured query\n */\n protected async generateSqlFromStructured(): Promise<void> {\n const data = this.queryData();\n const sql = await this.databaseTypeService.toQuery(data, data.queryLanguage || 'mysql');\n this.queryData.update(d => ({ ...d, rawQuery: sql }));\n this.isRawMode.set(false);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private updateValue(): void {\n const currentData = this.queryData();\n this.valueChange.emit(currentData);\n }\n\n //#endregion\n}\n\n","<div class=\"axp-query-builder\">\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"activeTab.set($event.index)\">\n <!-- Columns Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.columns.title' | translate | async) || 'Columns'\">\n </ax-tab-item>\n\n <!-- Where Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.where.title' | translate | async) || 'Where'\">\n </ax-tab-item>\n\n <!-- Sort Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.sort.title' | translate | async) || 'Sort'\">\n </ax-tab-item>\n\n <!-- Group By Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.group-by.title' | translate | async) || 'Group By'\">\n </ax-tab-item>\n\n <!-- Aggregate Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.aggregate.title' | translate | async) || 'Aggregate'\">\n </ax-tab-item>\n\n <!-- Output Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.output.title' | translate | async) || 'Output'\">\n </ax-tab-item>\n\n <!-- Raw Query Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.raw.title' | translate | async) || 'Raw Query'\">\n </ax-tab-item>\n </ax-tabs>\n\n <!-- Validation Warnings -->\n @if (validationWarnings().length > 0) {\n <div class=\"__validation-warnings\">\n @for (warning of validationWarnings(); track $index) {\n <div class=\"__warning-item\">\n <ax-label class=\"__warning-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"ax-text-warning-500\"></ax-icon>\n {{ (warning | translate | async) || warning }}\n </ax-label>\n </div>\n }\n </div>\n }\n\n <div class=\"__content\">\n <!-- Columns Section -->\n @if (activeTab() === 0) {\n <axp-columns-builder\n [columns]=\"columns()\"\n [value]=\"queryData().columns\"\n (valueChange)=\"onColumnsChange($event)\">\n </axp-columns-builder>\n }\n\n <!-- Where Section -->\n @if (activeTab() === 1) {\n <axp-where-builder\n [value]=\"queryData().where\"\n [filterDefinitions]=\"filterDefinitions()\"\n (valueChange)=\"onWhereChange($event)\">\n </axp-where-builder>\n }\n\n <!-- Sort Section -->\n @if (activeTab() === 2) {\n <axp-sort-builder\n [columns]=\"columns()\"\n [value]=\"queryData().sort\"\n (valueChange)=\"onSortChange($event)\">\n </axp-sort-builder>\n }\n\n <!-- Group By Section -->\n @if (activeTab() === 3) {\n <axp-group-by-builder\n [columns]=\"columns()\"\n [value]=\"queryData().groupBy\"\n (valueChange)=\"onGroupByChange($event)\">\n </axp-group-by-builder>\n }\n\n <!-- Aggregate Section -->\n @if (activeTab() === 4) {\n <axp-aggregate-builder\n [columns]=\"columns()\"\n [value]=\"queryData().aggregates\"\n (valueChange)=\"onAggregatesChange($event)\">\n </axp-aggregate-builder>\n }\n\n <!-- Output Section -->\n @if (activeTab() === 5) {\n <axp-output-builder\n [value]=\"queryData().outputType\"\n (valueChange)=\"onOutputTypeChange($event)\">\n </axp-output-builder>\n }\n\n <!-- Raw Query Section -->\n @if (activeTab() === 6) {\n <axp-raw-query-builder\n [value]=\"queryData().rawQuery || ''\"\n [queryLanguage]=\"queryData().queryLanguage || 'mysql'\"\n (valueChange)=\"onRawQueryChange($event)\"\n (queryLanguageChange)=\"onQueryLanguageChange($event)\">\n </axp-raw-query-builder>\n }\n </div>\n</div>\n","import { AXPDataSourceDefinition } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport { AXPQueryBuilderComponent } from '../../query-builder/query-builder.component';\nimport { AXPQueryBuilderData } from '../../query-builder/query-builder.types';\n\n//#region ---- Types ----\n\n// Uses AXPQueryBuilderData as root query data type\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-widget-edit',\n template: `\n <axp-query-builder\n [value]=\"getValue() || defaultQueryData\"\n [dataSourceDefinition]=\"dataSourceDefinition()\"\n (valueChange)=\"onValueChange($event)\">\n </axp-query-builder>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AXPQueryBuilderComponent\n],\n})\nexport class AXPQueryBuilderWidgetEditComponent extends AXPValueWidgetComponent<AXPQueryBuilderData> {\n //#region ---- Constants ----\n\n /**\n * Default empty query data structure\n */\n protected readonly defaultQueryData: AXPQueryBuilderData = {\n dataSource: undefined,\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n\n //#endregion\n\n //#region ---- Data Sources ----\n\n /**\n * Get datasource definition from options (passed from entity context)\n * The entity passes the selected datasource definition via context\n */\n protected readonly dataSourceDefinition = computed<AXPDataSourceDefinition | undefined>(() => {\n const options = this.options();\n \n // Try to get datasource definition from options\n // It can come as 'dataSource' (single) or 'dataSources' (array, take first)\n const dataSource = options['dataSource'] || options['dataSources']?.[0];\n \n if (dataSource && typeof dataSource === 'object') {\n // Check if it has the structure of AXPDataSourceDefinition\n if (dataSource.columns && Array.isArray(dataSource.columns)) {\n return dataSource as AXPDataSourceDefinition;\n }\n }\n\n return undefined;\n });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle value change from query builder\n */\n onValueChange(data: AXPQueryBuilderData): void {\n this.setValue(data);\n }\n\n //#endregion\n}\n\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPFilterClause } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Types ----\n\n// Uses AXPFilterClause as node type and AXPFilterDefinition (root) as value type\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-widget-view',\n template: `\n <div class=\"__query-builder-view\">\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__query-display\">\n <div class=\"__root-group\">\n <div class=\"__group-header\">\n <span class=\"__group-title\">Query ({{ queryData().logic }})</span>\n </div>\n <div class=\"__group-content\">\n @for (item of (queryData().filters || []); track item.id; let i = $index) {\n <div class=\"__query-item\">\n <!-- Logical Operator -->\n @if (i > 0) {\n <div class=\"__item-connector\">\n <span class=\"__operator-badge\">{{ queryData().logic }}</span>\n </div>\n }\n \n <!-- Render Item -->\n @if (item.filters === undefined) {\n <ng-container [ngTemplateOutlet]=\"conditionTemplate\" [ngTemplateOutletContext]=\"{condition: item}\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\" [ngTemplateOutletContext]=\"{group: item}\"></ng-container>\n }\n </div>\n }\n </div>\n </div>\n </div>\n \n <div class=\"__summary\">\n <small class=\"__count\">{{ getTotalItemsCount() }} item(s) total</small>\n </div>\n } @else {\n <axp-state-message icon=\"fa-light fa-filter\" [title]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.title'\"\n [description]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.description'\">\n </axp-state-message>\n }\n </div>\n\n <!-- Templates -->\n <ng-template #conditionTemplate let-condition=\"condition\">\n <div class=\"__condition-display\">\n <span class=\"__field\">{{ condition.field }}</span>\n <span class=\"__operator\">{{ condition.operator.type }}</span>\n <span class=\"__value\">{{ condition.value }}</span>\n </div>\n </ng-template>\n\n <ng-template #groupTemplate let-group=\"group\">\n <div class=\"__group-display\">\n <div class=\"__group-header\">\n <span class=\"__group-title\">Group ({{ group.logic }}) - {{ group.filters?.length ?? 0 }} items</span>\n </div>\n <div class=\"__group-content\">\n @for (item of (group.filters || []); track item.id; let i = $index) {\n <div class=\"__query-item\">\n <!-- Logical Operator -->\n @if (i > 0) {\n <div class=\"__item-connector\">\n <span class=\"__operator-badge\">{{ group.logic }}</span>\n </div>\n }\n \n <!-- Render Item -->\n @if (item.filters === undefined) {\n <ng-container [ngTemplateOutlet]=\"conditionTemplate\" [ngTemplateOutletContext]=\"{condition: item}\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\" [ngTemplateOutletContext]=\"{group: item}\"></ng-container>\n }\n </div>\n }\n </div>\n </div>\n </ng-template>\n `,\n styleUrl: './query-builder-widget-view.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXPStateMessageComponent],\n})\nexport class AXPQueryBuilderWidgetViewComponent extends AXPValueWidgetComponent<AXPFilterClause> {\n\n //#region ---- Computed Properties ----\n\n protected queryData = computed(() => this.getValue() as AXPFilterClause);\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n getTotalItemsCount(): number {\n const countFilters = (filters: AXPFilterClause[] | undefined): number => {\n if (!filters) return 0;\n return filters.reduce((count, filter) => {\n if (filter.filters === undefined) {\n return count + 1;\n } else {\n return count + 1 + countFilters(filter.filters);\n }\n }, 0);\n };\n\n const data = this.queryData();\n return data?.filters ? countFilters(data.filters) : 0;\n }\n\n //#endregion\n}\n\n","\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPFilterClause } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Types ----\n\n// Uses AXPFilterClause as node type and AXPFilterDefinition (root) as value type\n\n//#endregion\n\n@Component({\n selector: 'axp-query-builder-widget-column',\n template: `\n <div class=\"__query-builder-column\">\n @if ((queryData().filters?.length ?? 0) > 0) {\n <span class=\"__summary\">{{ getTotalItemsCount() }} item(s)</span>\n } @else {\n <axp-state-message icon=\"fa-light fa-filter\" [title]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.title'\"\n [description]=\"'@data-management:metadata-definitions.components.query-builder.empty-states.no-conditions.description'\">\n </axp-state-message>\n }\n </div>\n `,\n styles: [`\n .__query-builder-column {\n @apply ax-text-sm;\n \n .__summary {\n @apply ax-text-blue-600 ax-font-medium;\n }\n \n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPStateMessageComponent],\n})\nexport class AXPQueryBuilderWidgetColumnComponent extends AXPValueWidgetComponent<AXPFilterClause> {\n\n //#region ---- Computed Properties ----\n\n protected queryData = computed(() => this.getValue() as AXPFilterClause);\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n getTotalItemsCount(): number {\n const countFilters = (filters: AXPFilterClause[] | undefined): number => {\n if (!filters) return 0;\n return filters.reduce((count, filter) => {\n if (filter.filters === undefined) {\n return count + 1;\n } else {\n return count + 1 + countFilters(filter.filters);\n }\n }, 0);\n };\n\n const data = this.queryData();\n return data?.filters ? countFilters(data.filters) : 0;\n }\n\n //#endregion\n}\n\n","\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\n@Component({\n selector: 'axp-query-builder-widget-designer',\n template: `\n <div class=\"__query-builder-designer\">\n <div class=\"__preview\">\n <div class=\"__icon\">\n <i class=\"fa-light fa-filter\"></i>\n </div>\n <div class=\"__content\">\n <h4 class=\"__title\">Query Builder</h4>\n <p class=\"__description\">Visual query builder for creating dynamic queries</p>\n </div>\n </div>\n </div>\n `,\n styles: [`\n .__query-builder-designer {\n @apply ax-w-full ax-border-2 ax-border-dashed ax-border-gray-300 ax-rounded-lg ax-p-4;\n \n .__preview {\n @apply ax-flex ax-items-center ax-gap-3;\n \n .__icon {\n @apply ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-bg-blue-100 ax-rounded-lg;\n \n i {\n @apply ax-text-blue-600 ax-text-lg;\n }\n }\n \n .__content {\n .__title {\n @apply ax-text-sm ax-font-semibold ax-text-gray-800 ax-mb-1;\n }\n \n .__description {\n @apply ax-text-xs ax-text-gray-500;\n }\n }\n }\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AXPQueryBuilderWidgetDesignerComponent extends AXPValueWidgetComponent<any> {}\n\n","//#region ---- Re-exports from Entity Types ----\n\n// Re-export query builder types from entity types\nexport type {\n AXPQuerySortRule,\n AXPAggregateOperation,\n AXPQueryBuilderData,\n} from '../../entities/query/query.types';\n\n//#endregion\n\n//#region ---- Query Builder Types ----\n\n/**\n * Aggregate function category\n * Logical category name coming from aggregate providers\n * (e.g., 'statistical', 'string', 'date', 'custom', or any custom category)\n */\nexport type AXPAggregateCategory = string;\n\n/**\n * Database type support\n * Logical database type name coming from providers\n * (e.g., 'mysql', 'postgresql', 'mongodb', 'sql', 'nosql', or any custom type)\n */\nexport type AXPDatabaseType = string;\n\n/**\n * Aggregate function definition\n * Defines an aggregate function with its properties and database support\n */\nexport interface AXPAggregateFunctionDefinition {\n /**\n * Function name/identifier (e.g., 'sum', 'avg', 'count')\n */\n name: string;\n\n /**\n * Display title\n */\n title: string;\n\n /**\n * Description of what the function does\n */\n description?: string;\n\n /**\n * Category for grouping functions\n */\n category: AXPAggregateCategory;\n\n /**\n * Database types that support this function\n * If 'all' is included, the function is universally supported\n */\n supportedDatabases: AXPDatabaseType[];\n\n /**\n * Whether this function requires a field parameter\n * Some functions like COUNT(*) don't require a field\n */\n requiresField: boolean;\n\n /**\n * Whether this function supports DISTINCT modifier\n */\n supportsDistinct?: boolean;\n\n /**\n * Whether this function supports nested aggregates\n * Functions like CONCAT can contain other aggregate functions as parameters\n * Example: CONCAT(MIN(field1), MAX(field2))\n */\n supportsNested?: boolean;\n}\n\n//#endregion\n\n\n","import { Injectable } from '@angular/core';\nimport {\n AXPDatabaseTypeProvider,\n AXPDatabaseTypeDefinition,\n AXP_DATABASE_TYPE_PROVIDER,\n} from '../database-type.provider';\nimport { AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXPQueryBuilderData, AXPQuerySortRule, AXPAggregateOperation } from '../query-builder.types';\n\n/**\n * Default Database Type Provider\n * \n * Provides standard database types (MySQL, PostgreSQL, SQL Server, MongoDB) with\n * their conversion and validation logic.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMDefaultDatabaseTypeProvider implements AXPDatabaseTypeProvider {\n private readonly types: AXPDatabaseTypeDefinition[] = [\n {\n name: 'mysql',\n title: 'MySQL',\n description: 'MySQL database server',\n identifierQuote: '`',\n supportsSql: true,\n isNoSql: false,\n },\n {\n name: 'postgresql',\n title: 'PostgreSQL',\n description: 'PostgreSQL database server',\n identifierQuote: '\"',\n supportsSql: true,\n isNoSql: false,\n },\n {\n name: 'sqlserver',\n title: 'SQL Server',\n description: 'Microsoft SQL Server',\n identifierQuote: '\"',\n supportsSql: true,\n isNoSql: false,\n },\n {\n name: 'mongodb',\n title: 'MongoDB',\n description: 'MongoDB NoSQL database',\n identifierQuote: '',\n supportsSql: false,\n isNoSql: true,\n },\n {\n name: 'sqlite',\n title: 'SQLite',\n description: 'SQLite embedded database',\n identifierQuote: '\"',\n supportsSql: true,\n isNoSql: false,\n },\n ];\n\n async getTypes(): Promise<AXPDatabaseTypeDefinition[]> {\n return [...this.types];\n }\n\n async getByName(name: string): Promise<AXPDatabaseTypeDefinition | undefined> {\n return this.types.find(t => t.name === name);\n }\n\n escapeIdentifier(identifier: string, databaseType: string): string {\n const typeDef = this.types.find(t => t.name === databaseType);\n if (!typeDef || !typeDef.identifierQuote) {\n return identifier;\n }\n return `${typeDef.identifierQuote}${identifier}${typeDef.identifierQuote}`;\n }\n\n escapeValue(value: unknown, databaseType: string): string {\n if (value === null || value === undefined) {\n return 'NULL';\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n\n if (typeof value === 'string') {\n // Escape single quotes\n const escaped = value.replace(/'/g, \"''\");\n return `'${escaped}'`;\n }\n\n if (Array.isArray(value)) {\n return value.map(v => this.escapeValue(v, databaseType)).join(', ');\n }\n\n // For objects, convert to JSON string\n return `'${JSON.stringify(value).replace(/'/g, \"''\")}'`;\n }\n\n convertOperatorToSql(operatorType: string, databaseType: string): string {\n const operatorMap: Record<string, string> = {\n equal: '=',\n notEqual: '!=',\n lt: '<',\n lte: '<=',\n gt: '>',\n gte: '>=',\n startsWith: 'LIKE',\n endsWith: 'LIKE',\n contains: 'LIKE',\n };\n\n return operatorMap[operatorType] || '=';\n }\n\n validateQuery(sql: string, databaseType: string): { valid: boolean; error?: string } {\n if (!sql || !sql.trim()) {\n return { valid: false, error: 'Query is empty' };\n }\n\n const typeDef = this.types.find(t => t.name === databaseType);\n if (!typeDef) {\n return { valid: false, error: `Unknown database type: ${databaseType}` };\n }\n\n // MongoDB validation (JSON array validation)\n if (databaseType === 'mongodb') {\n try {\n const parsed = JSON.parse(sql);\n if (!Array.isArray(parsed)) {\n return { valid: false, error: 'MongoDB query must be a JSON array (aggregation pipeline)' };\n }\n // Validate pipeline stages\n for (const stage of parsed) {\n if (typeof stage !== 'object' || stage === null) {\n return { valid: false, error: 'Each MongoDB pipeline stage must be an object' };\n }\n const stageKeys = Object.keys(stage);\n if (stageKeys.length === 0) {\n return { valid: false, error: 'MongoDB pipeline stage cannot be empty' };\n }\n }\n return { valid: true };\n } catch (e) {\n return { valid: false, error: `Invalid JSON: ${e instanceof Error ? e.message : 'Unknown error'}` };\n }\n }\n\n // Basic SQL syntax validation\n const trimmed = sql.trim();\n\n // Check for balanced parentheses\n let parenCount = 0;\n for (const char of trimmed) {\n if (char === '(') parenCount++;\n if (char === ')') parenCount--;\n if (parenCount < 0) {\n return { valid: false, error: 'Unbalanced parentheses' };\n }\n }\n if (parenCount !== 0) {\n return { valid: false, error: 'Unbalanced parentheses' };\n }\n\n // Check for balanced quotes (single quotes)\n let inSingleQuote = false;\n let inDoubleQuote = false;\n let inBacktick = false;\n for (let i = 0; i < trimmed.length; i++) {\n const char = trimmed[i];\n const prevChar = i > 0 ? trimmed[i - 1] : '';\n\n if (char === \"'\" && prevChar !== '\\\\' && !inDoubleQuote && !inBacktick) {\n inSingleQuote = !inSingleQuote;\n } else if (char === '\"' && prevChar !== '\\\\' && !inSingleQuote && !inBacktick) {\n inDoubleQuote = !inDoubleQuote;\n } else if (char === '`' && prevChar !== '\\\\' && !inSingleQuote && !inDoubleQuote) {\n inBacktick = !inBacktick;\n }\n }\n if (inSingleQuote || inDoubleQuote || inBacktick) {\n return { valid: false, error: 'Unclosed quotes' };\n }\n\n // Basic SQL keyword validation (for SQL databases)\n if (typeDef.supportsSql) {\n const upperSql = trimmed.toUpperCase();\n const hasSelect = upperSql.includes('SELECT');\n const hasFrom = upperSql.includes('FROM');\n\n if (!hasSelect && !hasFrom) {\n // Allow other SQL statements (INSERT, UPDATE, DELETE, etc.)\n const allowedStatements = ['INSERT', 'UPDATE', 'DELETE', 'CREATE', 'ALTER', 'DROP'];\n const hasAllowedStatement = allowedStatements.some(stmt => upperSql.startsWith(stmt));\n if (!hasAllowedStatement) {\n return { valid: false, error: 'Invalid SQL syntax: Missing SELECT or FROM clause' };\n }\n }\n }\n\n return { valid: true };\n }\n\n async toQuery(queryData: AXPQueryBuilderData, databaseType: string): Promise<string> {\n // Check if it's MongoDB\n if (databaseType === 'mongodb') {\n return this.toMongoDb(queryData);\n }\n\n // SQL databases\n return this.toSql(queryData, databaseType);\n }\n\n async fromQuery(query: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>> {\n // Check if it's MongoDB\n if (databaseType === 'mongodb') {\n return this.fromMongoDb(query);\n }\n\n // SQL databases\n return this.fromSql(query, databaseType);\n }\n\n //#region ---- Private: SQL Conversion ----\n\n /**\n * Convert QueryBuilderData to SQL query string\n */\n private async toSql(queryData: AXPQueryBuilderData, databaseType: string): Promise<string> {\n const parts: string[] = [];\n\n // Build SELECT clause with columns and aggregates\n const selectItems: string[] = [];\n\n // Add regular columns\n if (queryData.columns.length > 0) {\n const columnEscapes = queryData.columns.map(col => this.escapeIdentifier(col, databaseType));\n selectItems.push(...columnEscapes);\n }\n\n // Add aggregate functions\n if (queryData.aggregates.length > 0) {\n const aggregateItems = await Promise.all(\n queryData.aggregates.map(agg => this.convertAggregateToSql(agg, databaseType))\n );\n selectItems.push(...aggregateItems);\n }\n\n // SELECT clause\n if (selectItems.length > 0) {\n parts.push(`SELECT ${selectItems.join(', ')}`);\n } else {\n parts.push('SELECT *');\n }\n\n // FROM clause (if dataSource is provided)\n if (queryData.dataSource) {\n const escapedDataSource = this.escapeIdentifier(queryData.dataSource, databaseType);\n parts.push(`FROM ${escapedDataSource}`);\n } else {\n parts.push('FROM <table_name>');\n }\n\n // WHERE clause\n const whereClause = await this.convertWhereToSql(queryData.where, databaseType);\n if (whereClause) {\n parts.push(`WHERE ${whereClause}`);\n }\n\n // GROUP BY clause\n if (queryData.groupBy.length > 0) {\n const groupByEscapes = queryData.groupBy.map(col => this.escapeIdentifier(col, databaseType));\n const groupByColumns = groupByEscapes.join(', ');\n parts.push(`GROUP BY ${groupByColumns}`);\n }\n\n // ORDER BY clause\n if (queryData.sort.length > 0) {\n const orderByEscapes = queryData.sort.map(sort => {\n const escapedField = this.escapeIdentifier(sort.field, databaseType);\n return `${escapedField} ${sort.dir.toUpperCase()}`;\n });\n const orderByClauses = orderByEscapes.join(', ');\n parts.push(`ORDER BY ${orderByClauses}`);\n }\n\n return parts.join('\\n');\n }\n\n /**\n * Convert WHERE clause (AXPFilterDefinition) to SQL WHERE clause\n */\n private async convertWhereToSql(\n filter: AXPFilterDefinition,\n databaseType: string,\n ): Promise<string | null> {\n if (!filter.filters || filter.filters.length === 0) {\n return null;\n }\n\n const conditionPromises = filter.filters.map(f =>\n this.convertFilterItemToSql(f as AXPFilterDefinition, databaseType)\n );\n const conditions = (await Promise.all(conditionPromises)).filter(\n (c): c is string => c !== null\n );\n\n if (conditions.length === 0) {\n return null;\n }\n\n if (conditions.length === 1) {\n return conditions[0];\n }\n\n const logic = (filter.logic || 'and').toUpperCase();\n return `(${conditions.join(` ${logic} `)})`;\n }\n\n /**\n * Convert a single filter item (condition or group) to SQL condition\n */\n private async convertFilterItemToSql(\n filter: AXPFilterDefinition,\n databaseType: string,\n ): Promise<string | null> {\n // Check if it's a group (has filters array)\n if (filter.filters && filter.filters.length > 0) {\n return this.convertWhereToSql(filter, databaseType);\n }\n\n // It's a condition\n if (!filter.field || filter.value === undefined || filter.value === null || filter.value === '') {\n return null;\n }\n\n const field = this.escapeIdentifier(filter.field, databaseType);\n const operator = this.convertOperatorToSql(filter.operator?.type || 'equal', databaseType);\n const value = this.escapeValue(filter.value, databaseType);\n\n // Handle special operators\n if (filter.operator?.type === 'isNull') {\n return `${field} IS NULL`;\n }\n\n if (filter.operator?.type === 'isEmpty') {\n return `(${field} IS NULL OR ${field} = '')`;\n }\n\n if (filter.operator?.type === 'in' && Array.isArray(filter.value)) {\n const valueEscapes = filter.value.map(v => this.escapeValue(v, databaseType));\n const values = valueEscapes.join(', ');\n return `${field} IN (${values})`;\n }\n\n if (filter.operator?.negative) {\n return `NOT (${field} ${operator} ${value})`;\n }\n\n return `${field} ${operator} ${value}`;\n }\n\n /**\n * Convert aggregate operation to SQL expression\n */\n private async convertAggregateToSql(\n aggregate: AXPAggregateOperation,\n databaseType: string,\n ): Promise<string> {\n const funcName = aggregate.function.toUpperCase();\n let expression = '';\n\n // Handle nested aggregates (e.g., CONCAT(MIN(field1), MAX(field2)))\n if (aggregate.nestedAggregates && aggregate.nestedAggregates.length > 0) {\n const nestedExpressions = await Promise.all(\n aggregate.nestedAggregates.map(nested => this.convertAggregateToSql(nested, databaseType))\n );\n expression = `${funcName}(${nestedExpressions.join(', ')})`;\n } else {\n // Regular aggregate with field\n const fieldExpr = aggregate.field\n ? this.escapeIdentifier(aggregate.field, databaseType)\n : '*';\n \n const distinctModifier = aggregate.distinct ? 'DISTINCT ' : '';\n expression = `${funcName}(${distinctModifier}${fieldExpr})`;\n }\n\n // Add alias if provided\n if (aggregate.alias) {\n const aliasEscaped = this.escapeIdentifier(aggregate.alias, databaseType);\n expression = `${expression} AS ${aliasEscaped}`;\n }\n\n return expression;\n }\n\n /**\n * Parse SQL query back to QueryBuilderData (basic implementation)\n */\n private async fromSql(sql: string, databaseType: string): Promise<Partial<AXPQueryBuilderData>> {\n const result: Partial<AXPQueryBuilderData> = {\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n\n // Basic SELECT parsing\n const selectMatch = sql.match(/SELECT\\s+(.+?)\\s+FROM/i);\n if (selectMatch) {\n const columnsStr = selectMatch[1].trim();\n if (columnsStr !== '*') {\n result.columns = columnsStr\n .split(',')\n .map(col => col.trim().replace(/[`\"]/g, ''));\n }\n }\n\n // Basic ORDER BY parsing\n const orderByMatch = sql.match(/ORDER\\s+BY\\s+(.+?)(?:\\s+LIMIT|$)/i);\n if (orderByMatch) {\n const orderByStr = orderByMatch[1].trim();\n result.sort = orderByStr.split(',').map(sortStr => {\n const parts = sortStr.trim().split(/\\s+/);\n const field = parts[0].replace(/[`\"]/g, '');\n const dir = parts[1]?.toLowerCase() === 'desc' ? 'desc' : 'asc';\n return { field, dir } as AXPQuerySortRule;\n });\n }\n\n // Basic GROUP BY parsing\n const groupByMatch = sql.match(/GROUP\\s+BY\\s+(.+?)(?:\\s+ORDER\\s+BY|\\s+HAVING|$)/i);\n if (groupByMatch) {\n const groupByStr = groupByMatch[1].trim();\n result.groupBy = groupByStr\n .split(',')\n .map(col => col.trim().replace(/[`\"]/g, ''));\n }\n\n return result;\n }\n\n //#endregion\n\n //#region ---- Private: MongoDB Conversion ----\n\n /**\n * Convert QueryBuilderData to MongoDB aggregation pipeline\n */\n private async toMongoDb(queryData: AXPQueryBuilderData): Promise<string> {\n const pipeline: any[] = [];\n\n // $match stage (WHERE clause)\n if (queryData.where && queryData.where.filters && queryData.where.filters.length > 0) {\n const matchStage = await this.convertWhereToMongoDb(queryData.where);\n if (matchStage && Object.keys(matchStage).length > 0) {\n pipeline.push({ $match: matchStage });\n }\n }\n\n // $group stage (GROUP BY + aggregates)\n if (queryData.groupBy.length > 0 || queryData.aggregates.length > 0) {\n const groupStage: any = { _id: null };\n\n // Add GROUP BY fields to _id\n if (queryData.groupBy.length > 0) {\n if (queryData.groupBy.length === 1) {\n groupStage._id = `$${queryData.groupBy[0]}`;\n } else {\n groupStage._id = {};\n for (const field of queryData.groupBy) {\n groupStage._id[field] = `$${field}`;\n }\n }\n }\n\n // Add aggregate functions\n for (const agg of queryData.aggregates) {\n const alias = agg.alias || `${agg.function}_${agg.field || 'all'}`;\n const funcName = `$${agg.function}`;\n \n if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n // Handle nested aggregates\n const nestedExpr: any = {};\n for (const nested of agg.nestedAggregates) {\n nestedExpr[nested.function] = nested.field ? `$${nested.field}` : null;\n }\n groupStage[alias] = nestedExpr;\n } else {\n const fieldExpr = agg.field ? `$${agg.field}` : null;\n if (agg.distinct) {\n groupStage[alias] = { $addToSet: fieldExpr };\n } else {\n groupStage[alias] = { [funcName]: fieldExpr || 1 };\n }\n }\n }\n\n pipeline.push({ $group: groupStage });\n }\n\n // $project stage (SELECT columns)\n if (queryData.columns.length > 0 || queryData.aggregates.length > 0) {\n const projectStage: any = {};\n \n // Add regular columns\n for (const col of queryData.columns) {\n projectStage[col] = 1;\n }\n\n // Add aggregate results (already in group stage output)\n for (const agg of queryData.aggregates) {\n const alias = agg.alias || `${agg.function}_${agg.field || 'all'}`;\n projectStage[alias] = 1;\n }\n\n pipeline.push({ $project: projectStage });\n }\n\n // $sort stage (ORDER BY)\n if (queryData.sort.length > 0) {\n const sortStage: any = {};\n for (const sort of queryData.sort) {\n sortStage[sort.field] = sort.dir === 'desc' ? -1 : 1;\n }\n pipeline.push({ $sort: sortStage });\n }\n\n return JSON.stringify(pipeline, null, 2);\n }\n\n /**\n * Convert WHERE clause to MongoDB $match expression\n */\n private async convertWhereToMongoDb(filter: AXPFilterDefinition): Promise<any> {\n if (!filter.filters || filter.filters.length === 0) {\n return {};\n }\n\n const conditions: any[] = [];\n\n for (const f of filter.filters) {\n if (f.filters && f.filters.length > 0) {\n // It's a group\n const groupCondition = await this.convertWhereToMongoDb(f as AXPFilterDefinition);\n if (Object.keys(groupCondition).length > 0) {\n conditions.push(groupCondition);\n }\n } else {\n // It's a condition\n if (!f.field || f.value === undefined || f.value === null || f.value === '') {\n continue;\n }\n\n const operator: string = f.operator?.type || 'equal';\n const field = f.field;\n let mongoCondition: any = {};\n\n switch (operator) {\n case 'equal':\n mongoCondition[field] = f.value;\n break;\n case 'notEqual':\n mongoCondition[field] = { $ne: f.value };\n break;\n case 'lt':\n mongoCondition[field] = { $lt: f.value };\n break;\n case 'lte':\n mongoCondition[field] = { $lte: f.value };\n break;\n case 'gt':\n mongoCondition[field] = { $gt: f.value };\n break;\n case 'gte':\n mongoCondition[field] = { $gte: f.value };\n break;\n case 'contains':\n case 'startsWith':\n case 'endsWith':\n const regexPattern = operator === 'startsWith' \n ? `^${f.value}`\n : operator === 'endsWith'\n ? `${f.value}$`\n : f.value;\n mongoCondition[field] = { $regex: regexPattern, $options: 'i' };\n break;\n case 'in':\n mongoCondition[field] = { $in: Array.isArray(f.value) ? f.value : [f.value] };\n break;\n case 'isNull':\n mongoCondition[field] = null;\n break;\n case 'isEmpty':\n mongoCondition[field] = { $in: [null, ''] };\n break;\n default:\n mongoCondition[field] = f.value;\n }\n\n if (f.operator?.negative) {\n mongoCondition[field] = { $not: mongoCondition[field] };\n }\n\n conditions.push(mongoCondition);\n }\n }\n\n if (conditions.length === 0) {\n return {};\n }\n\n if (conditions.length === 1) {\n return conditions[0];\n }\n\n // Combine with AND/OR logic\n const logic = filter.logic || 'and';\n return logic === 'or' ? { $or: conditions } : { $and: conditions };\n }\n\n /**\n * Parse MongoDB aggregation pipeline back to QueryBuilderData\n */\n private async fromMongoDb(query: string): Promise<Partial<AXPQueryBuilderData>> {\n const result: Partial<AXPQueryBuilderData> = {\n columns: [],\n where: {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: {\n type: 'string-filter',\n options: {},\n },\n filterType: {\n advance: true,\n inline: true,\n },\n },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n\n try {\n const pipeline = JSON.parse(query);\n if (!Array.isArray(pipeline)) {\n return result;\n }\n\n for (const stage of pipeline) {\n if (stage.$match) {\n // Parse $match to WHERE clause (simplified)\n // This would need more complex parsing for production\n }\n if (stage.$group) {\n // Parse $group to GROUP BY and aggregates (simplified)\n if (stage.$group._id && typeof stage.$group._id === 'object') {\n result.groupBy = Object.keys(stage.$group._id);\n }\n }\n if (stage.$project) {\n // Parse $project to columns (simplified)\n result.columns = Object.keys(stage.$project).filter(k => stage.$project[k] === 1);\n }\n if (stage.$sort) {\n // Parse $sort to ORDER BY\n result.sort = Object.keys(stage.$sort).map(field => ({\n field,\n dir: stage.$sort[field] === -1 ? 'desc' : 'asc',\n })) as AXPQuerySortRule[];\n }\n }\n } catch {\n // Return empty result on parse error\n }\n\n return result;\n }\n\n //#endregion\n}\n\n/**\n * Default Database Type Provider Registration\n */\nexport const AXP_DEFAULT_DATABASE_TYPE_PROVIDER = {\n provide: AXP_DATABASE_TYPE_PROVIDER,\n useClass: AXMDefaultDatabaseTypeProvider,\n multi: true,\n};\n\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXMColumnFilterSelectorWidget } from './entities/data-source/column-filter-selector';\nimport { AXPQueryBuilderWidget } from './features/query-builder-widget';\n\n//#endregion\n\n//#region ---- Data Management Widgets Provider ----\n\nconst WIDGETS = [AXPQueryBuilderWidget, AXMColumnFilterSelectorWidget];\n\n@Injectable()\nexport class AXMDataManagementWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","export const META_DATA_SELECTOR_FIELD = 'metaDataList';\nexport const META_DATA_FORM_FIELD = 'metaDataForm';","import { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { AXPQueryService } from '@acorex/platform/runtime';\nimport { AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex/platform/layout/entity';\nimport { get } from 'lodash-es';\nimport { META_DATA_SELECTOR_FIELD } from './config';\nimport { AXMMetaDataBuilderValue } from './meta-data-builder';\n\n/**\n * Metadata Evaluator Scope Provider\n * \n * Provides expression evaluation capabilities for metadata operations:\n * - Get category IDs from context/expressions\n * - Retrieve metadata by category IDs\n * - Access category metadata inheritance\n * - Filter metadata definitions by group name\n */\nexport class AXMMetadataEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n\n private readonly queryService = inject(AXPQueryService);\n private readonly entityDefinitionRegistryService = inject(AXPEntityDefinitionRegistryService);\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope('metadata', {\n\n /**\n * Get metadata definitions from category with inheritance\n * @param entityName - Full entity name (Module.Entity)\n * @param categoryIds - Category ID(s)\n * @param groupName - Optional group name to filter results\n * @param sourceEntity - Optional source entity name to get overrides from (Module.Entity)\n * @param contextValue - Optional entity ID or record to get overrides from\n * @param categoryEntity - Optional explicit category entity key (e.g. 'AssetManagement.ManualAssetCategory')\n * @returns Groups structure preserving the original group organization with merged overrides\n */\n fromCategory: async (\n entityName: string,\n categoryIds: string | string[],\n groupName?: string,\n sourceEntity?: string,\n contextValue?: any,\n categoryEntity?: string,\n ) => {\n const ids = Array.isArray(categoryIds) ? categoryIds : [categoryIds];\n const categoryId = ids[0];\n if (!categoryId) {\n return [];\n }\n const result = await this.queryService.fetch('DataManagement:Metadata:GetCategoryInheritance', {\n entityName,\n categoryId: categoryId,\n categoryEntity: categoryEntity || undefined,\n });\n\n // Result is already in groups structure from the query\n if (!result || result.length === 0) {\n return [];\n }\n\n // Filter by group name if specified\n let groups = result;\n if (groupName) {\n groups = result.filter((group: any) => group.name === groupName);\n }\n\n // Get overrides from source entity if provided\n let overrides: AXMMetaDataBuilderValue | undefined;\n if (sourceEntity && contextValue) {\n try {\n const [moduleName, entityName] = sourceEntity.split('.');\n const entityDefinition = await this.entityDefinitionRegistryService.resolve(moduleName, entityName);\n\n if (entityDefinition) {\n // const dataAccessor = runInInjectionContext(\n // this.injector,\n // () => {\n // const entityService = inject(AXPEntityService);\n // return entityService.withEntity(sourceEntity).data<any, any>();\n // }\n // );\n const dataAccessor = this.entityService.withEntity(sourceEntity).data<any, any>();\n const record = await dataAccessor.byKey(contextValue);\n overrides = get(record, META_DATA_SELECTOR_FIELD) as AXMMetaDataBuilderValue | undefined;\n }\n } catch (error) {\n console.warn('Failed to fetch overrides from source entity:', error);\n }\n }\n\n // Merge overrides into groups if available\n if (overrides && overrides.groups && Array.isArray(overrides.groups)) {\n groups = this.mergeInterfaceOverrides(groups, overrides.groups);\n }\n\n // Return groups structure preserving organization\n return groups.map((group: any) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order,\n fields: (group.fields || []).map((field: any) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n defaultValue: field.defaultValue,\n order: field.order,\n })),\n }));\n },\n\n /**\n * Get metadata definitions from related entity\n * @param sourceEntity - Source entity name\n * @param contextValue - Entity ID or record\n * @returns Groups structure preserving the original group organization (not flattened)\n */\n fromEntity: async (sourceEntity: string, contextValue: any) => {\n if (!contextValue) {\n return [];\n }\n const [moduleName, entityName] = sourceEntity.split('.');\n const entityDefinition = await this.entityDefinitionRegistryService.resolve(moduleName, entityName);\n\n if (!entityDefinition) {\n return [];\n }\n\n const dataAccessor = this.entityService.withEntity(sourceEntity).data<any, any>();\n const record = await dataAccessor.byKey(contextValue);\n\n const metaData = get(record, META_DATA_SELECTOR_FIELD) as AXMMetaDataBuilderValue | undefined;\n if (!metaData || !metaData.groups || !Array.isArray(metaData.groups)) {\n return [];\n }\n\n // Return groups structure preserving organization (not flattened)\n // This allows meta-data-form to render each group as a separate card\n return metaData.groups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order,\n fields: (group.fields || []).map((field) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n order: field.order,\n })),\n }));\n },\n\n /**\n * Filter metadata definitions by group name from metaDataList field\n * @param metaDataListValue - Value from metaDataList field (AXMMetaDataBuilderValue)\n * @param groupName - Group name to filter by\n * @returns Array of metadata field definitions for the specified group\n */\n fromGroup: (metaDataListValue: any, groupName: string) => {\n if (!metaDataListValue || !groupName) {\n return [];\n }\n\n // Handle the new structure (groups)\n const value = metaDataListValue as AXMMetaDataBuilderValue;\n if (value.groups && Array.isArray(value.groups)) {\n const group = value.groups.find((g) => g.name === groupName);\n if (group && group.fields) {\n // Return fields formatted for meta-data-form\n return group.fields.map((field) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n }));\n }\n }\n\n return [];\n }\n });\n }\n\n //#region ---- Private Helper Methods ----\n\n /**\n * Merge interface overrides from meta-data-builder into fetched groups\n * Matches fields by id or name and applies overridden interfaces\n */\n private mergeInterfaceOverrides(fetchedGroups: any[], overrideGroups: any[]): any[] {\n // Create a map of overrides by field id and name for quick lookup\n const overrideMap = new Map<string, { interface: string }>();\n\n overrideGroups.forEach((overrideGroup) => {\n (overrideGroup.fields || []).forEach((overrideField: any) => {\n if (overrideField.id) {\n overrideMap.set(overrideField.id, { interface: overrideField.interface });\n }\n if (overrideField.name) {\n overrideMap.set(overrideField.name, { interface: overrideField.interface });\n }\n });\n });\n\n // Merge overrides into fetched groups\n return fetchedGroups.map((group) => ({\n ...group,\n fields: (group.fields || []).map((field: any) => {\n // Try to find override by id first, then by name\n const override = overrideMap.get(field.id) || overrideMap.get(field.name);\n\n if (override && override.interface) {\n // Apply the overridden interface\n return {\n ...field,\n interface: override.interface,\n };\n }\n\n // No override found, return original field\n return field;\n }),\n }));\n }\n\n //#endregion\n}\n","import { AXPDataSourceDefinitionProviderService, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\n\nexport class AXMDataSourceEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {\n private readonly dataSourceDefinitionService = inject(AXPDataSourceDefinitionProviderService);\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope('dataSource', {\n /**\n * Load all items from a data source definition as an array\n * @param dataSourceName - Name of the data source definition\n * @returns Array of items from the data source\n */\n toArray: async (dataSourceName: string) => {\n if (!dataSourceName) {\n return [];\n }\n\n try {\n const dataSourceDefinition = await this.dataSourceDefinitionService.get(dataSourceName);\n if (!dataSourceDefinition) {\n return [];\n }\n\n const source = dataSourceDefinition.source();\n const dataSource = source instanceof Promise ? await source : source;\n\n if (!dataSource) {\n return [];\n }\n\n // Access the load function from the data source config\n // The load function is provided in the AXDataSource config\n const dataSourceAny = dataSource as any;\n if (dataSourceAny.config?.load) {\n const result = await dataSourceAny.config.load({ skip: 0, take: 10000 });\n return result.items || [];\n }\n\n return [];\n } catch (error) {\n console.error(`Error loading data source \"${dataSourceName}\":`, error);\n return [];\n }\n },\n });\n }\n}\n\n","export const AXMDataManagementFeatureKeys = {\n Queries: 'DataManagement:Feature:Queries',\n DataSources: 'DataManagement:Feature:DataSources',\n MetaDataDefinitions: 'DataManagement:Feature:MetaDataDefinitions',\n} as const;\n\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex/platform/core';\nimport { AXMDataManagementFeatureKeys } from './features.keys';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Data Management Feature Definition Provider.\n * Provides feature definitions for the Data Management module.\n */\nexport class AXPDataManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n // Queries feature\n context.addFeature(AXMDataManagementFeatureKeys.Queries, {\n title: '@data-management:features.queries.title',\n description: '@data-management:features.queries.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // Data Sources feature\n context.addFeature(AXMDataManagementFeatureKeys.DataSources, {\n title: '@data-management:features.data-sources.title',\n description: '@data-management:features.data-sources.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // MetaData Definitions feature\n context.addFeature(AXMDataManagementFeatureKeys.MetaDataDefinitions, {\n title: '@data-management:features.metadata-definitions.title',\n description: '@data-management:features.metadata-definitions.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n\n//#endregion\n\n","export const AXMPermissionsKeys = {\n DataManagement: {\n Query: {\n Management: 'DataManagement:Permission:Query.Management',\n },\n DataSource: {\n Management: 'DataManagement:Permission:DataSource.Management',\n },\n MetaDataDefinition: {\n Management: 'DataManagement:Permission:MetaDataDefinition.Management',\n },\n Equipment: {\n Management: 'DataManagement:Permission:Equipment.Management',\n },\n Tag: {\n Management: 'DataManagement:Permission:Tag.Management',\n },\n },\n};\n\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n private readonly translateService: AXTranslationService;\n\n constructor(private injector: Injector) {\n this.translateService = this.injector.get(AXTranslationService);\n }\n\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXMPermissionsKeys.DataManagement;\n\n // Module translations\n const moduleTitle = await this.translateService.translateAsync('@data-management:module.title');\n const moduleDescription = await this.translateService.translateAsync('@data-management:module.description');\n\n // Query permissions\n const transQuery = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:queries.permissions.queries.${key}`);\n\n // Data Source permissions\n const transDataSource = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:data-sources.permissions.data-sources.${key}`);\n\n // MetaData Definition permissions\n const transMetaData = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:metadata-definitions.permissions.metadata-definitions.${key}`);\n\n // Tag permissions\n const transTag = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:tags.permissions.tags.${key}`);\n\n // Equipment permissions\n const transEquipment = async (key: string) =>\n await this.translateService.translateAsync(`@data-management:equipments.permissions.equipments.${key}`);\n\n context\n .addGroup(RootConfig.module.name, moduleTitle, moduleDescription)\n //\n .addPermission(keys.Query.Management, await transQuery('actions.manage.title'), await transQuery('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.DataSource.Management, await transDataSource('actions.manage.title'), await transDataSource('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.MetaDataDefinition.Management, await transMetaData('actions.manage.title'), await transMetaData('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.Equipment.Management, await transEquipment('actions.manage.title'), await transEquipment('actions.manage.description'))\n .endPermission()\n //\n .addPermission(keys.Tag.Management, await transTag('actions.manage.title'), await transTag('actions.manage.description'))\n .endPermission()\n //\n .endGroup();\n }\n}\n","export const AXPDataManagementMenuKeys = {\n Root: 'DataManagement:Menu',\n Queries: 'DataManagement:Menu:Queries',\n DataSources: 'DataManagement:Menu:DataSources',\n MetaDataDefinitions: 'DataManagement:Menu:MetaDataDefinitions',\n Tags: 'DataManagement:Menu:Tags',\n} as const;\n\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPDataManagementMenuKeys } from './menu.keys';\nimport { AXMPermissionsKeys } from './permission.keys';\nimport { AXMDataManagementFeatureKeys } from './features.keys';\nimport { AXPCommonMenuKeys } from '@acorex/modules/common';\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 // Data Definitions group under Configuration/Data and Content (with divider before)\n context.find(AXPCommonMenuKeys.DataAndContent).addItems([\n { name: `${AXPDataManagementMenuKeys.Root}:divider`, text: '', type: 'break', priority: 5 },\n {\n name: AXPDataManagementMenuKeys.Queries,\n text: '@data-management:queries.menus.queries.title',\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.query.name),\n icon: RootConfig.entities.query.icon,\n priority: 10,\n policy: {\n features: [module.name],\n },\n },\n {\n name: AXPDataManagementMenuKeys.DataSources,\n text: '@data-management:data-sources.menus.data-sources.title',\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.dataSource.name),\n icon: RootConfig.entities.dataSource.icon,\n priority: 11,\n policy: {\n features: [module.name, AXMDataManagementFeatureKeys.DataSources],\n permissions: [AXMPermissionsKeys.DataManagement.DataSource.Management],\n },\n },\n {\n name: AXPDataManagementMenuKeys.MetaDataDefinitions,\n text: '@data-management:metadata-definitions.menus.metadata-definitions.title',\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.metaDataDefinition.name),\n icon: RootConfig.entities.metaDataDefinition.icon,\n priority: 12,\n policy: {\n features: [module.name, AXMDataManagementFeatureKeys.MetaDataDefinitions],\n permissions: [AXMPermissionsKeys.DataManagement.MetaDataDefinition.Management],\n },\n },\n {\n name: AXPDataManagementMenuKeys.Tags,\n text: '@general:terms.common.tags',\n icon: RootConfig.entities.tag.icon,\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.tag.name),\n priority: 13,\n policy: {\n features: [module.name],\n permissions: [AXMPermissionsKeys.DataManagement.Tag.Management],\n },\n },\n ]);\n }\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n private injector = inject(Injector);\n\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n case RootConfig.entities.query.name:\n return (await import('./entities/query/query.entity')).queryFactory(this.injector);\n case RootConfig.entities.dataSource.name:\n return (await import('./entities/data-source/data-source.entity')).dataSourceEntityFactory(this.injector);\n case RootConfig.entities.metaDataDefinition.name:\n return (await import('./entities/meta-data-definition/meta-data-definition.entity')).metaDataDefinitionFactory(this.injector);\n case RootConfig.entities.tag.name:\n return (await import('./entities/tag/tag.entity')).factory(this.injector);\n }\n }\n return null;\n }\n\n async list(): Promise<{ name: string; module: string }[]> {\n const m = RootConfig.module.name;\n return Promise.resolve(\n Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m }))\n );\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDefinition, AXPDataSourceDefinitionProvider } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\n\n/**\n * Provides common choice-option datasources (yes/no variants, rating scales, gender, agreement, frequency, etc.)\n * for use across forms, questionnaires, surveys, and other modules.\n */\nexport class AXMChoiceOptionsDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n\n //#region ---- Yes/No Options ----\n\n private yesNoOptions: AXPDataSourceDefinition = {\n name: 'yes-no-options',\n title: '@questionnaire:datasources.yes-no-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.yes-no-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.yes-no-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.yes-no-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-options.columns.value.title' },\n samples: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },\n ],\n total: 2,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Yes / No / Maybe ----\n\n private yesNoMaybeOptions: AXPDataSourceDefinition = {\n name: 'yes-no-maybe-options',\n title: '@questionnaire:datasources.yes-no-maybe-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.yes-no-maybe-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.yes-no-maybe-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.yes-no-maybe-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-maybe-options.columns.value.title' },\n samples: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-maybe-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-maybe-options.samples.no' },\n { value: 'maybe', title: '@questionnaire:datasources.yes-no-maybe-options.samples.maybe' },\n ],\n source: () => {\n const items = [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-maybe-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-maybe-options.samples.no' },\n { value: 'maybe', title: '@questionnaire:datasources.yes-no-maybe-options.samples.maybe' },\n ];\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Yes / No / N/A ----\n\n private yesNoNaOptions: AXPDataSourceDefinition = {\n name: 'yes-no-na-options',\n title: '@questionnaire:datasources.yes-no-na-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.yes-no-na-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.yes-no-na-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.yes-no-na-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-na-options.columns.value.title' },\n samples: [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-na-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-na-options.samples.no' },\n { value: 'not-applicable', title: '@questionnaire:datasources.yes-no-na-options.samples.not-applicable' },\n ],\n source: () => {\n const items = [\n { value: 'yes', title: '@questionnaire:datasources.yes-no-na-options.samples.yes' },\n { value: 'no', title: '@questionnaire:datasources.yes-no-na-options.samples.no' },\n { value: 'not-applicable', title: '@questionnaire:datasources.yes-no-na-options.samples.not-applicable' },\n ];\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Rating Scale Options ----\n\n private ratingScaleOptions: AXPDataSourceDefinition = {\n name: 'rating-scale-options',\n title: '@questionnaire:datasources.rating-scale-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.rating-scale-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'number',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.rating-scale-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'description',\n title: '@questionnaire:datasources.rating-scale-options.columns.description.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.rating-scale-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.rating-scale-options.columns.value.title' },\n samples: [\n { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },\n { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },\n { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },\n { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },\n { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },\n { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },\n { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },\n { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },\n { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },\n { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },\n { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },\n { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },\n { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Rating 1–10 Options ----\n\n private rating1to10Options: AXPDataSourceDefinition = {\n name: 'rating-1-10-options',\n title: '@questionnaire:datasources.rating-1-10-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.rating-1-10-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'number',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.rating-1-10-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.rating-1-10-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.rating-1-10-options.columns.value.title' },\n samples: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.rating-1-10-options.samples.${n}` as const,\n })),\n source: () => {\n const items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.rating-1-10-options.samples.${n}` as const,\n }));\n return new AXDataSource({\n pageSize: 20,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- NPS (0–10) Options ----\n\n private npsScaleOptions: AXPDataSourceDefinition = {\n name: 'nps-scale-options',\n title: '@questionnaire:datasources.nps-scale-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.nps-scale-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'number',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.nps-scale-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.nps-scale-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.nps-scale-options.columns.value.title' },\n samples: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.nps-scale-options.samples.${n}` as const,\n })),\n source: () => {\n const items = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((n) => ({\n value: n,\n title: `@questionnaire:datasources.nps-scale-options.samples.${n}` as const,\n }));\n return new AXDataSource({\n pageSize: 20,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Agreement Scale Options ----\n\n private agreementScaleOptions: AXPDataSourceDefinition = {\n name: 'agreement-scale-options',\n title: '@questionnaire:datasources.agreement-scale-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.agreement-scale-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.agreement-scale-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.agreement-scale-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.agreement-scale-options.columns.value.title' },\n samples: [\n { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },\n { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },\n { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },\n { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },\n { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },\n { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },\n { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },\n { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },\n { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },\n { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },\n { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },\n { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },\n { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Frequency Options ----\n\n private frequencyOptions: AXPDataSourceDefinition = {\n name: 'frequency-options',\n title: '@questionnaire:datasources.frequency-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.frequency-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.frequency-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.frequency-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.frequency-options.columns.value.title' },\n samples: [\n { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },\n { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },\n { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },\n { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },\n { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },\n { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },\n { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },\n { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },\n { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },\n { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },\n { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },\n { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },\n { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Satisfaction Options ----\n\n private satisfactionOptions: AXPDataSourceDefinition = {\n name: 'satisfaction-options',\n title: '@questionnaire:datasources.satisfaction-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.satisfaction-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.satisfaction-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.satisfaction-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.satisfaction-options.columns.value.title' },\n samples: [\n { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },\n { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },\n { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },\n { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },\n { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },\n { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },\n { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },\n { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },\n { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },\n { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },\n { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },\n { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },\n { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Priority Options ----\n\n private priorityOptions: AXPDataSourceDefinition = {\n name: 'priority-options',\n title: '@questionnaire:datasources.priority-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.priority-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.priority-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.priority-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.priority-options.columns.value.title' },\n samples: [\n { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },\n { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },\n { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },\n { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },\n { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },\n { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },\n { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },\n ],\n total: 4,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },\n { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },\n { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },\n { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n //#region ---- Gender Options ----\n\n private genderOptions: AXPDataSourceDefinition = {\n name: 'gender-options',\n title: '@questionnaire:datasources.gender-options.title',\n columns: [\n {\n name: 'value',\n title: '@questionnaire:datasources.gender-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@questionnaire:datasources.gender-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@questionnaire:datasources.gender-options.columns.title.title' },\n valueField: { name: 'value', title: '@questionnaire:datasources.gender-options.columns.value.title' },\n samples: [\n { value: 'female', title: '@questionnaire:datasources.gender-options.samples.female' },\n { value: 'male', title: '@questionnaire:datasources.gender-options.samples.male' },\n { value: 'non-binary', title: '@questionnaire:datasources.gender-options.samples.non-binary' },\n { value: 'prefer-not-to-say', title: '@questionnaire:datasources.gender-options.samples.prefer-not-to-say' },\n { value: 'other', title: '@questionnaire:datasources.gender-options.samples.other' },\n ],\n source: () => {\n const items = [\n { value: 'female', title: '@questionnaire:datasources.gender-options.samples.female' },\n { value: 'male', title: '@questionnaire:datasources.gender-options.samples.male' },\n { value: 'non-binary', title: '@questionnaire:datasources.gender-options.samples.non-binary' },\n { value: 'prefer-not-to-say', title: '@questionnaire:datasources.gender-options.samples.prefer-not-to-say' },\n { value: 'other', title: '@questionnaire:datasources.gender-options.samples.other' },\n ];\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => ({ items, total: items.length }),\n byKey: async (key: unknown) => items.find((item) => item.value === key),\n });\n },\n };\n\n //#endregion\n\n //#region ---- Availability Options ----\n\n private availabilityOptions: AXPDataSourceDefinition = {\n name: 'availability-options',\n title: '@data-management:datasources.availability-options.title',\n columns: [\n {\n name: 'value',\n title: '@data-management:datasources.availability-options.columns.value.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n {\n name: 'title',\n title: '@data-management:datasources.availability-options.columns.title.title',\n type: AXPWidgetsCatalog.text,\n datatype: 'string',\n },\n ],\n filters: [],\n textField: { name: 'title', title: '@data-management:datasources.availability-options.columns.title.title' },\n valueField: { name: 'value', title: '@data-management:datasources.availability-options.columns.value.title' },\n samples: [\n { value: '24-7', title: '@data-management:datasources.availability-options.samples.24-7' },\n { value: 'business-hours', title: '@data-management:datasources.availability-options.samples.business-hours' },\n { value: 'weekdays', title: '@data-management:datasources.availability-options.samples.weekdays' },\n { value: 'weekends', title: '@data-management:datasources.availability-options.samples.weekends' },\n { value: 'limited-hours', title: '@data-management:datasources.availability-options.samples.limited-hours' },\n ],\n source: () => {\n return new AXDataSource({\n pageSize: 10,\n key: 'value',\n load: async () => {\n return {\n items: [\n { value: '24-7', title: '@data-management:datasources.availability-options.samples.24-7' },\n { value: 'business-hours', title: '@data-management:datasources.availability-options.samples.business-hours' },\n { value: 'weekdays', title: '@data-management:datasources.availability-options.samples.weekdays' },\n { value: 'weekends', title: '@data-management:datasources.availability-options.samples.weekends' },\n { value: 'limited-hours', title: '@data-management:datasources.availability-options.samples.limited-hours' },\n ],\n total: 5,\n };\n },\n byKey: async (key: unknown) => {\n const items = [\n { value: '24-7', title: '@data-management:datasources.availability-options.samples.24-7' },\n { value: 'business-hours', title: '@data-management:datasources.availability-options.samples.business-hours' },\n { value: 'weekdays', title: '@data-management:datasources.availability-options.samples.weekdays' },\n { value: 'weekends', title: '@data-management:datasources.availability-options.samples.weekends' },\n { value: 'limited-hours', title: '@data-management:datasources.availability-options.samples.limited-hours' },\n ];\n return items.find(item => item.value === key);\n },\n });\n },\n };\n\n //#endregion\n\n async items(): Promise<AXPDataSourceDefinition[]> {\n return [\n this.yesNoOptions,\n this.yesNoMaybeOptions,\n this.yesNoNaOptions,\n this.ratingScaleOptions,\n this.rating1to10Options,\n this.npsScaleOptions,\n this.agreementScaleOptions,\n this.frequencyOptions,\n this.satisfactionOptions,\n this.priorityOptions,\n this.genderOptions,\n this.availabilityOptions,\n ];\n }\n}\n","import { applyDataSourceQuery, AXDataSource } from \"@acorex/cdk/common\";\nimport { applyFilterArray, applySortArray, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceDefinitionProviderService, AXPFilterDefinition } from \"@acorex/platform/core\";\nimport { AXPWidgetsCatalog } from \"@acorex/platform/layout/widget-core\";\n\nexport class AXMDataSourceListDataSourceDefinition implements AXPDataSourceDefinitionProvider {\n\n\n private get parent(): AXPDataSourceDefinitionProviderService {\n return (this as any)['__parent__'] as AXPDataSourceDefinitionProviderService;\n }\n\n items(): Promise<AXPDataSourceDefinition[]> {\n return Promise.resolve([\n {\n name: 'dataSources',\n title: 'DataSources',\n visible: false,\n source: () => {\n return new AXDataSource({\n key: 'name',\n load: async (query) => {\n try {\n let items = (await this.parent.items()).filter((item) => !item.visible);\n if (query.filter) {\n items = applyFilterArray(items, [query.filter]);\n }\n items = applySortArray(items, query.sort ?? { field: 'title', dir: 'asc' });\n return {\n items: items.map((item) => this.mapDataSource(item)),\n total: items.length,\n };\n } catch (e) {\n throw e;\n }\n },\n byKey: async (key: unknown) => {\n const item = await this.parent.get(key as string);\n return this.mapDataSource(item!);\n },\n pageSize: 1000,\n });\n },\n columns: [\n {\n name: 'name',\n title: 'Name',\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n {\n name: 'title',\n title: `Title`,\n datatype: 'string',\n type: AXPWidgetsCatalog.text,\n },\n ],\n filters: [\n {\n field: 'title',\n title: 'Title',\n operator: {\n type: 'equal',\n },\n widget: {\n type: AXPWidgetsCatalog.text,\n },\n filterType: {\n advance: true,\n inline: true,\n },\n } as AXPFilterDefinition,\n ],\n textField: {\n name: 'title',\n title: 'Title',\n },\n valueField: {\n name: 'name',\n title: 'Name',\n },\n },\n ]);\n }\n\n private mapDataSource(dataSource: AXPDataSourceDefinition) {\n return {\n name: dataSource.name,\n title: dataSource.title,\n columns: dataSource.columns,\n filters: dataSource.filters,\n valueField: dataSource.valueField,\n textField: dataSource.textField,\n }\n }\n} ","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDataManagementQueryEntityModel, AXPQueryExecutionResult } from './query.types';\n\nexport abstract class AXMQueryService extends AXMEntityCrudServiceImpl<\n string,\n AXMDataManagementQueryEntityModel\n> {\n\n abstract execute(name: string): Promise<AXPQueryExecutionResult>;\n\n}\n\n@Injectable()\nexport class AXMQueryServiceImpl extends AXMQueryService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.query.name}`);\n }\n\n override async execute(name: string): Promise<AXPQueryExecutionResult> {\n throw new Error('Query execution is not implemented');\n }\n}\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntity, AXPEntityAction, AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDataSourceService } from '../data-source';\nimport { AXMQueryService } from './query.service';\nimport { AXPDataSourceDefinitionProviderService, AXPSystemActionType } from '@acorex/platform/core';\nimport { unset } from 'lodash-es';\n\nexport async function queryFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMQueryService);\n const dataSourceProviderService = injector.get(AXPDataSourceDefinitionProviderService);\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.query.name,\n title: RootConfig.entities.query.title,\n icon: RootConfig.entities.query.icon,\n formats: {\n individual: RootConfig.entities.query.title,\n plural: RootConfig.entities.query.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'category' },\n ],\n relatedEntities: [],\n\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}:queries.entities.query.groups.basic-info.title`,\n },\n {\n id: 'query',\n title: `@${i18n}:queries.entities.query.groups.query.title`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'dataSource',\n title: `@${i18n}:queries.entities.query.fields.dataSource.title`,\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n load: async () => {\n const items = await dataSourceProviderService.items();\n return { total: items.length, items: items };\n },\n byKey: async (key: unknown) => {\n return await dataSourceProviderService.get(key as string);\n },\n pageSize: 1000,\n }),\n multiple: false,\n expose: [\n { source: 'name', target: 'dataSource.name' },\n { source: 'title', target: 'dataSource.title' },\n ],\n },\n triggers: [\n {\n event: \"{{ events.context('dataSource') }}\",\n action: `{{ \n var selectedDataSource = context.eval('dataSource');\n if (selectedDataSource) {\n // Pass the full datasource definition to query builder\n context.set('dataSourceDefinition', selectedDataSource);\n }\n }}`,\n },\n ],\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'query',\n title: `@${i18n}:queries.entities.query.fields.query.title`,\n groupId: 'query',\n schema: {\n dataType: 'object',\n interface: {\n type: AXPWidgetsList.Editors.QueryBuilder,\n options: {\n dataSource: '{{ context.eval(\"dataSourceDefinition\") || context.eval(\"dataSource\") }}',\n },\n },\n },\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'dataSource' },\n { name: 'query' },\n ],\n commands: {\n create: {\n execute: async (data: any) => {\n unset(data, 'dataSourceDefinition.source');\n unset(data, 'dataSource.source'); \n\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n unset(data, 'dataSourceDefinition.source');\n unset(data, 'dataSource.source');\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'query',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'query',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'query',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'query',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'query',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'dataSource',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'query',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n ],\n actions: [\n ...entityMasterRecordActions(),\n {\n title: `@${i18n}:metadata-definitions.components.query.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.query.name}:Execute`,\n options: {\n queryId: '{{ context.eval(\"id\") }}',\n queryName: '{{ context.eval(\"name\") }}',\n queryTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n },\n list: {\n actions: [...entityMasterCrudActions({ \n create : false,\n }),\n {\n title: '@general:actions.create.title',\n command: {\n name : 'create-entity',\n options : {\n layout : {\n size : 'lg'\n }\n }\n },\n priority: 'primary',\n type: AXPSystemActionType.Create,\n scope: AXPEntityCommandScope.TypeLevel,\n }\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import type { AXPCategoryListItem } from '@acorex/platform/core';\nimport { AXPFilterDefinition } from '@acorex/platform/core';\nimport { AXPEntityModel } from '@acorex/platform/layout/entity';\nimport { AXMDataSourceEntityModel } from '../data-source';\n\n//#region ---- Query Builder Types ----\n\n/**\n * Query output type\n * Defines the expected structure of the query result\n */\nexport type AXPQueryOutputType = 'value' | 'table' | 'object';\n\n/**\n * Sort rule for query builder\n */\nexport interface AXPQuerySortRule {\n field: string;\n dir: 'asc' | 'desc';\n}\n\n/**\n * Aggregate operation in query\n * Represents an aggregate function applied to a field\n * Supports nested aggregates (e.g., CONCAT(MIN(field1), MAX(field2)))\n */\nexport interface AXPAggregateOperation {\n /**\n * Field name to aggregate (optional if nestedAggregates is provided)\n */\n field?: string;\n\n /**\n * Aggregate function name\n */\n function: string;\n\n /**\n * Output alias/name for the aggregated result\n */\n alias?: string;\n\n /**\n * Whether to use DISTINCT modifier\n */\n distinct?: boolean;\n\n /**\n * Nested aggregate operations (for functions like CONCAT that can contain other aggregates)\n * Example: CONCAT(MIN(price), MAX(price)) would have:\n * - function: 'concat'\n * - nestedAggregates: [\n * { function: 'min', field: 'price' },\n * { function: 'max', field: 'price' }\n * ]\n */\n nestedAggregates?: AXPAggregateOperation[];\n}\n\n/**\n * Complete query builder data model\n * Includes all query components: dataSource, columns, where, sort, groupBy, aggregates, and raw query\n */\nexport interface AXPQueryBuilderData {\n /**\n * Data source name (optional, can be set from context)\n */\n dataSource?: string;\n\n /**\n * Selected column names (array of column keys)\n */\n columns: string[];\n\n /**\n * WHERE clause (filter definition with groups and conditions)\n */\n where: AXPFilterDefinition;\n\n /**\n * Sort rules (array of field + direction)\n */\n sort: AXPQuerySortRule[];\n\n /**\n * Group by columns (array of column keys)\n */\n groupBy: string[];\n\n /**\n * Aggregate operations (array of field + function + alias)\n */\n aggregates: AXPAggregateOperation[];\n\n /**\n * Raw SQL/query string (optional, used when user wants to write raw query)\n */\n rawQuery?: string;\n\n /**\n * Query language/dialect for raw query (e.g., 'mysql', 'postgresql', 'mongodb')\n */\n queryLanguage?: string;\n\n /**\n * Expected output type for the query result\n * - 'value': Single value result (e.g., COUNT, SUM, AVG)\n * - 'table': Table result with items array and total\n * - 'object': Custom object structure\n */\n outputType?: AXPQueryOutputType;\n}\n\n//#endregion\n\n//#region ---- Query Execution Result Types ----\n\n/**\n * Query execution result\n * Can be:\n * - A single value (for aggregate queries like SUM, COUNT, etc.)\n * - A table with items and total (for regular queries)\n * - An object with custom structure\n */\nexport type AXPQueryExecutionResult =\n | {\n /**\n * Table result with items array\n */\n items: Record<string, unknown>[];\n total: number;\n metadata?: Record<string, unknown>;\n }\n | {\n /**\n * Single aggregate value result\n */\n value: unknown;\n metadata?: Record<string, unknown>;\n }\n | Record<string, unknown>\n | unknown[];\n\n//#endregion\n\n//#region ---- Entity Types ----\n\nexport interface AXMDataManagementQueryEntityModel extends AXPEntityModel<string> {\n name: string;\n title: string;\n dataSource?: AXMDataSourceEntityModel;\n query?: AXPQueryBuilderData;\n categoryIds?: string[];\n categories?: AXPCategoryListItem[];\n}\n\n// Alias for easier import in mock files\nexport type AXMQueryEntityModel = AXMDataManagementQueryEntityModel;\n\n//#endregion","import { inject } from '@angular/core';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\n\n//#region ---- Column Definition Widget ----\n\nexport const AXM_COLUMN_DEF_WIDGET = [\n {\n type: 'grid-layout',\n mode: 'view',\n options: {\n direction: 'horizontal',\n },\n children: [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'text-editor',\n mode: 'edit',\n path: 'name',\n options: {\n placeholder: 'Column Name',\n required: true,\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 3 },\n children: [\n {\n type: 'text-editor',\n mode: 'edit',\n path: 'title',\n options: {\n placeholder: 'Display Title',\n required: true,\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 3 },\n mode: 'view',\n children: [\n {\n type: 'select-editor',\n mode: 'edit',\n path: 'type',\n options: {\n placeholder: 'Widget Type',\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n load: async () => {\n const service = inject(AXPWidgetRegistryService);\n const data = service.all().filter((c) => c.type.startsWith('editor'));\n return {\n items: data,\n total: data.length,\n };\n },\n byKey: async (key) => {\n const service = inject(AXPWidgetRegistryService);\n const data = service.all();\n return data.find((c) => c.name == key);\n },\n pageSize: 1000,\n }),\n direction: 'horizontal',\n multiple: false,\n required: true,\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 1 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isValueField',\n options: {\n tooltip: 'Value Field (only one can be selected)',\n label: 'Value',\n },\n triggers: [\n {\n event: \"{{ events.context('columns.isValueField') }}\",\n action: `{{ context.set('columns.isValueField', context.eval('columns.isValueField')[0]); }}`,\n },\n ],\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 1 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isTextField',\n options: {\n tooltip: 'Text Field (multiple allowed)',\n label: 'Text',\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 1 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isRequired',\n options: {\n label: 'Required',\n tooltip: 'Required field',\n },\n },\n ],\n },\n ],\n },\n];\n\n//#endregion ","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDataSourceEntityModel } from './data-source.types';\n\nexport abstract class AXMDataSourceService<T = string> extends AXMEntityCrudServiceImpl<T, AXMDataSourceEntityModel<T>> {}\n\n@Injectable()\nexport class AXMDataSourceServiceImpl extends AXMEntityCrudServiceImpl<string, AXMDataSourceEntityModel> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dataSource.name}`);\n }\n}\n","import { AXPEntityModel } from '@acorex/platform/layout/entity';\n\n//#region ---- Output Types ----\n\nexport enum AXMDataSourceOutputType {\n Table = 'table',\n SingleObject = 'single_object',\n Value = 'value'\n}\n\nexport interface AXMDataSourceOutputTypeOption {\n name: AXMDataSourceOutputType;\n title: string;\n}\n\n//#endregion\n\n//#region ---- Source Types ----\n\nexport enum AXMDataSourceType {\n Static = 'static',\n Query = 'query',\n // ExternalApi = 'external_api' // TODO: Will be implemented later\n}\n\nexport interface AXMDataSourceTypeOption {\n name: AXMDataSourceType;\n title: string;\n}\n\n//#endregion\n\n//#region ---- Filter Definition ----\n\nexport interface AXMDataSourceFilter {\n columnName: string;\n defaultValue: any;\n isSystemFilter: boolean; // User can enable/disable in report\n isRequired: boolean; // Must be present in report\n}\n\n//#endregion\n\n//#region ---- Main Entity Model ----\n\nexport interface AXMDataSourceEntityModel<T = string> extends AXPEntityModel<T> {\n\n name: string,\n title: string;\n categoryIds?: string[];\n sourceStatic: any[];\n sourceEntity: T;\n sourceType: AXMDataSourceTypeOption;\n outputType: AXMDataSourceOutputTypeOption;\n filters?: AXMDataSourceFilter[];\n}\n\n//#endregion\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\n createQueryView,\n} from '@acorex/platform/common';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { AXPDataSourceDefinitionProviderService } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXM_COLUMN_DEF_WIDGET } from './column-def.widget';\nimport { AXMDataSourceService } from './data-source.service';\nimport { AXMDataSourceOutputType } from './data-source.types';\n\nexport async function dataSourceEntityFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMDataSourceService);\n const i18n = RootConfig.config.i18n;\n const translationService = injector.get(AXTranslationService);\n\n const dataSourceDefinitionService = injector.get(AXPDataSourceDefinitionProviderService);\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dataSource.name,\n title: RootConfig.entities.dataSource.title,\n formats: {\n individual: RootConfig.entities.dataSource.title,\n plural: RootConfig.entities.dataSource.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'category' },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'dataSource',\n title: RootConfig.entities.dataSource.title,\n },\n {\n id: 'columns',\n title: `@${RootConfig.config.i18n}:columns`,\n },\n {\n id: 'filters',\n title: `@${RootConfig.config.i18n}:filters`,\n },\n {\n id: 'samples',\n title: `@${RootConfig.config.i18n}:samples`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'columns',\n title: `@${i18n}:columns`,\n groupId: 'columns',\n schema: {\n defaultValue: [\n {\n name: 'name',\n title: 'Name',\n type: 'text-editor',\n },\n {\n name: 'title',\n title: 'Title',\n type: 'text-editor',\n },\n ],\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.repeaterLayout,\n children: AXM_COLUMN_DEF_WIDGET as any,\n triggers: [\n {\n event: \"{{ events.context('sourceEntity') }}\",\n action: `{{ widget.setValue(context.eval('sourceEntity')?.columns); }}`,\n },\n {\n event: \"{{ events.context('columns') }}\",\n action: `{{ console.log(context.eval('columns.*.isTextField')); }}`,\n },\n ],\n },\n },\n },\n {\n name: 'filters',\n title: `@${i18n}:filters`,\n groupId: 'filters',\n schema: {\n defaultValue: {\n id: 'root',\n type: 'group',\n logic: 'and',\n filters: []\n },\n dataType: 'object',\n interface: {\n type: AXPWidgetsList.Editors.QueryBuilder,\n options: {\n availableColumns: '{{ context.eval(\"columns\") || [] }}',\n },\n },\n },\n },\n {\n name: 'samples',\n title: `@${i18n}:samples`,\n groupId: 'samples',\n schema: {\n dataType: 'object',\n interface: {\n type: AXPWidgetsCatalog.table,\n options: {\n columns: '{{context.eval(\"columns\"); }}',\n defaultRowCount: 2,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'sourceType',\n title: `@${i18n}:sourceType`,\n groupId: 'dataSource',\n schema: {\n defaultValue: {\n name: 'static',\n title: 'Static',\n },\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: [\n // TODO: External API temporarily disabled for upgrade\n // {\n // name: 'external_api',\n // title: 'External Api',\n // },\n {\n name: 'query',\n title: 'Query',\n },\n {\n name: 'static',\n title: 'Static',\n },\n ],\n multiple: false,\n },\n triggers: [\n {\n event: \"{{ events.context('sourceType') }}\",\n action: `{{context.set('columns' , []); context.set('sourceEntity' , null); if(context.eval('sourceType')?.name == 'static') { context.set('columns', [ { name: 'name',title: 'Name',type: { title: 'Text', name: 'text-editor', },},{name: 'title',title: 'Title',type: {title: 'Text',name: 'text-editor',},}, ] );} }}`,\n },\n ],\n },\n },\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'outputType',\n title: `@${i18n}:outputType`,\n groupId: 'dataSource',\n schema: {\n defaultValue: {\n name: AXMDataSourceOutputType.Table,\n title: 'Table',\n },\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'name',\n textField: 'title',\n dataSource: [\n {\n name: AXMDataSourceOutputType.Table,\n title: 'Table (List of Records)',\n },\n {\n name: AXMDataSourceOutputType.SingleObject,\n title: 'Single Object',\n },\n {\n name: AXMDataSourceOutputType.Value,\n title: 'Value (Count/Number)',\n },\n ],\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n title: `@${i18n}:sourceStatic`,\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.table,\n options: {\n visibility: '{{context.eval(\"sourceType\")?.name == \"static\" }}',\n columns: '{{context.eval(\"columns\")}}',\n defaultRowCount: 2,\n },\n },\n },\n validations: [\n // Validation removed: field is now auto-derived from columns flags\n ],\n },\n {\n name: 'sourceEntity',\n title: `@${i18n}:sourceEntity`,\n groupId: 'dataSource',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n visibility: '{{context.eval(\"sourceType\")?.name == \"query\" }}',\n valueField: 'name',\n textField: 'title',\n dataSource: new AXDataSource({\n key: 'name',\n load: async (e) => {\n const entities = await dataSourceDefinitionService.items();\n\n // Map each entity to a promise that performs the translation\n const translatedEntities = await Promise.all(\n entities.map(async (entity) => ({\n ...entity,\n title: await translationService.translateAsync(entity.title),\n })),\n );\n return {\n total: translatedEntities.length,\n items: translatedEntities,\n };\n },\n pageSize: 1000,\n }),\n },\n triggers: [\n {\n event: \"{{ events.context('sourceEntity') }}\",\n action: `{{ \n var selectedDataSource = context.eval('sourceEntity');\n if (selectedDataSource) {\n context.set('samples', selectedDataSource.samples);\n context.set('columns', selectedDataSource.columns || []);\n // Reset filters when data source changes\n context.set('filters', {\n id: 'root',\n type: 'group',\n logic: 'and',\n filters: []\n });\n }\n }}`,\n },\n ],\n },\n },\n validations: [\n // Validation removed: field is now auto-derived from columns flags\n ],\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'sourceType' },\n { name: 'outputType' },\n ],\n commands: {\n create: {\n execute: async (data: any) => {\n if (data.sourceType.name == 'query') {\n data.sourceEntity = data.sourceEntity?.name;\n }\n // if (data.sourceType.name == 'static') {\n // data.sourceStatic = data.sourceStatic?.name;\n // }\n\n // derive textField & valueField from columns flags\n if (Array.isArray(data.columns)) {\n const txtColsArr = data.columns.filter((c: any) => c.isTextField).map((c: any) => c.name);\n const txtCols = txtColsArr.join(',');\n const valCol = data.columns.find((c: any) => c.isValueField);\n data.textField = txtCols;\n data.valueField = valCol ? valCol.name : null;\n }\n\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n // derive textField & valueField from columns flags\n if (Array.isArray(data.columns)) {\n const txtColsArr = data.columns.filter((c: any) => c.isTextField).map((c: any) => c.name);\n const txtCols = txtColsArr.join(',');\n const valCol = data.columns.find((c: any) => c.isValueField);\n data.textField = txtCols;\n data.valueField = valCol ? valCol.name : null;\n }\n\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'dataSource',\n },\n {\n id: 'columns',\n },\n {\n id: 'filters',\n },\n {\n id: 'samples',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'samples',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 11,\n },\n },\n },\n },\n {\n name: 'sourceType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'sourceEntity',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'outputType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 6,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'dataSource',\n },\n {\n id: 'columns',\n },\n {\n id: 'filters',\n },\n {\n id: 'samples',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 5,\n },\n },\n },\n },\n {\n name: 'sourceType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 3,\n },\n },\n },\n },\n {\n name: 'sourceEntity',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 4,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 4,\n },\n },\n },\n },\n {\n name: 'outputType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 6,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'dataSource',\n },\n {\n id: 'columns',\n },\n {\n id: 'filters',\n },\n {\n id: 'samples',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'columns',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n {\n name: 'sourceType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 4,\n },\n },\n },\n },\n {\n name: 'sourceEntity',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'sourceStatic',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 5,\n },\n },\n },\n },\n {\n name: 'outputType',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 6,\n },\n },\n },\n },\n {\n name: 'filters',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 7,\n },\n },\n },\n },\n {\n name: 'samples',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 10,\n },\n },\n },\n },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),\n createQueryView('static', `@${i18n}:static`, true, {\n conditions: [\n {\n name: 'sourceType.name',\n operator: {\n type: 'equal',\n },\n value: 'static',\n },\n ],\n }),\n createQueryView('query', `@${i18n}:query`, true, {\n conditions: [\n {\n name: 'sourceType.name',\n operator: {\n type: 'equal',\n },\n value: 'query',\n },\n ],\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","\n//#region ---- Filter Definition Widget ----\n\nexport const AXM_FILTER_DEF_WIDGET = [\n {\n type: 'grid-row-layout',\n mode: 'view',\n children: [\n {\n type: 'grid-item-layout',\n mode: 'view',\n options: { colSpan: 6 },\n children: [\n {\n type: 'column-filter-selector-editor',\n mode: 'edit',\n path: 'filter',\n options: {\n columns: '{{context.eval(\"columns\")}}',\n placeholder: 'Select Column and Set Filter Value',\n },\n },\n ],\n triggers: [\n {\n event : '{{ events.context(\"filters.*\") }}',\n action : '{{ console.log(context.eval(\"filters\")) }}',\n }\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 2 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isSystemFilter',\n options: {\n label: 'System',\n tooltip: 'User can enable/disable in report',\n },\n },\n ],\n },\n {\n type: 'grid-item-layout',\n options: { colSpan: 2 },\n mode: 'view',\n children: [\n {\n type: 'checkbox-editor',\n mode: 'edit',\n path: 'isRequired',\n options: {\n label: 'Required',\n tooltip: 'Must be present in report',\n },\n },\n ],\n },\n ],\n },\n];\n\n//#endregion ","import { AXPEntity, AXPEntityAction, AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY } from '@acorex/platform/layout/builder';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\n\nexport async function metaDataDefinitionFactory(injector: Injector): Promise<AXPEntity | null> {\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.metaDataDefinition.name,\n title: RootConfig.entities.metaDataDefinition.title,\n icon: RootConfig.entities.metaDataDefinition.icon,\n formats: {\n individual: RootConfig.entities.metaDataDefinition.title,\n plural: RootConfig.entities.metaDataDefinition.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'category' },\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n ],\n groups: [\n {\n id: 'basic-info',\n title: '@general:terms.interface.basic-info',\n },\n {\n id: 'presentation',\n title: '@data-management:metadata-definitions.entities.metadata-definition.groups.presentation',\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n }\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n {\n rule: 'variable-name',\n },\n ],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n }\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TextBox,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n\n ],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n }\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LargeTextBox,\n },\n },\n },\n {\n name: 'interface',\n title: `@general:terms.common.interface`,\n groupId: 'presentation',\n schema: {\n dataType: 'object',\n interface: {\n type: 'widget-field-configurator',\n options: {\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [\n { name: 'name' },\n { name: 'title' },\n { name: 'description' },\n { name: 'interface' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'presentation',\n },\n ],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'interface', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'presentation' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'interface', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }, { id: 'presentation' }],\n properties: [\n { name: 'name', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'interface', layout: { label: { visible: false }, positions: { lg: { colSpan: 12 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [\n ...entityMasterCrudActions(),\n {\n title: '@data-management:metadata-definitions.entities.metadata-definition.actions.preview.title',\n command: {\n name: AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY,\n options: {\n interface: \"{{ context.eval('interface') }}\",\n fieldName: \"{{ context.eval('name') }}\",\n fieldTitle: \"{{ context.eval('title') }}\",\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-eye',\n scope: AXPEntityCommandScope.Individual,\n } as AXPEntityAction,\n ],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMMetaDataDefinitionEntityModel } from './meta-data-definition.types';\n\nexport abstract class AXMMetaDataDefinitionService<T = string> extends AXMEntityCrudServiceImpl<\n T,\n AXMMetaDataDefinitionEntityModel<T>\n> {}\n\n@Injectable()\nexport class AXMPMetaDataDefinitionServiceImpl extends AXMMetaDataDefinitionService<string> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.metaDataDefinition.name}`);\n }\n}\n\n\n","import { AXPEntity, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { entityMasterCrudActions, entityMasterDeleteAction } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsList } from '@acorex/modules/common';\n\n//#region ---- Tag Entity Factory ----\n\nexport async function factory(injector: Injector): Promise<AXPEntity | null> {\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.tag.name,\n plugins: [\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n {\n name: 'color',\n options: {\n column: {\n enabled: true,\n visible: true,\n }\n }\n }\n ],\n title: '@general:terms.common.tag',\n formats: {\n individual: '@general:terms.common.tag',\n plural: '@general:terms.common.tags',\n searchResult: { title: '{{ title }}', description: RootConfig.module.title },\n },\n relatedEntities: [],\n groups: [\n { id: 'basic-info', title: '@general:terms.interface.basic-info' },\n ],\n properties: [\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.largeText } },\n },\n {\n name: 'scope',\n title: '@general:terms.common.scope',\n groupId: 'basic-info',\n options: {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.SelectBox,\n options: {\n valueField: 'value',\n textField: 'text',\n dataSource: [\n { value: 'system', text: 'System' },\n { value: 'tenant', text: 'Tenant' },\n { value: 'user', text: 'User' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n ],\n columns: [\n { name: 'title' },\n { name: 'description' },\n { name: 'scope' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'scope', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'scope', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [{ id: 'basic-info' }],\n properties: [\n { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },\n { name: 'scope', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },\n ],\n actions: [entityMasterDeleteAction()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n\n","import { NgModule } from '@angular/core';\n\n//#region ---- Tag Entity Module ----\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [],\n})\nexport class AXMTagEntityModule { }\n\n//#endregion\n\n","import { Injectable } from '@angular/core';\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '../../const';\n\n//#region ---- Tag Entity Service ----\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMTagEntityService extends AXMEntityCrudServiceImpl<any, any> {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.tag.name}`);\n }\n}\n\n//#endregion\n\n","//#region ---- Tag Entity Types ----\n\n/**\n * Tag entity model\n */\nexport interface AXMTag {\n id: string;\n text: string;\n color: string;\n icon?: string;\n description?: string;\n scope: 'system' | 'tenant' | 'user';\n isReadonly?: boolean;\n createdBy?: string;\n createdAt?: Date;\n updatedAt?: Date;\n}\n\n//#endregion\n\n","import { NgModule } from '@angular/core';\nimport { AXMQueryService, AXMQueryServiceImpl } from './query.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMQueryService,\n useClass: AXMQueryServiceImpl,\n },\n ],\n})\nexport class AXMQueryEntityModule { }\n","import { NgModule } from '@angular/core';\nimport { AXMDataSourceService, AXMDataSourceServiceImpl } from './data-source.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMDataSourceService,\n useClass: AXMDataSourceServiceImpl,\n },\n ],\n})\nexport class AXMDataSourceEntityModule { }\n","import { NgModule } from '@angular/core';\nimport { AXMMetaDataDefinitionService, AXMPMetaDataDefinitionServiceImpl } from './meta-data-definition.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMMetaDataDefinitionService,\n useClass: AXMPMetaDataDefinitionServiceImpl,\n },\n ],\n})\nexport class AXMMetaDataDefinitionEntityModule { }\n","// Entity Services\nexport * from './query';\nexport * from './data-source';\nexport * from './meta-data-definition';\nexport * from './tag';\n\n// Entity Modules\nexport * from './query/query.module';\nexport * from './data-source/data-source.module';\nexport * from './meta-data-definition/meta-data-definition.module';\nexport * from './tag/tag.module';\n\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport const AXPMetaDataFormWidget: AXPWidgetConfig<AXPMetaDataFormWidgetConfigType> = {\n name: 'meta-data-form-editor',\n title: '@data-management:metadata-definitions.components.meta-data-form.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: '@data-management:metadata-definitions.components.meta-data-form.description',\n icon: 'fa-light fa-list-check',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_READONLY_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./meta-data-form-edit.component').then((c) => c.AXPMetaDataFormWidgetEditComponent),\n },\n edit: {\n component: () => import('./meta-data-form-edit.component').then((c) => c.AXPMetaDataFormWidgetEditComponent),\n },\n print: {\n component: () => import('./meta-data-form-edit.component').then((c) => c.AXPMetaDataFormWidgetEditComponent),\n },\n },\n};\n\nexport type AXPMetaDataFormWidgetConfigType = {\n type: 'editor';\n metadataDefinitions: any[];\n layoutLook?: 'normal' | 'compact' | 'borderless';\n layoutDirection?: 'vertical' | 'horizontal' | 'grid';\n groupByCategory?: boolean;\n showCategoryHeaders?: boolean;\n};\n","import { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutRendererComponent,\n} from '@acorex/platform/layout/builder';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule, AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { AXMMetaDataDefinitionEntityModel } from '../../../entities/meta-data-definition';\n\n@Component({\n selector: 'axp-meta-data-form-widget-edit',\n template: `\n @if (hasDefinitions()) {\n <axp-layout-renderer\n [layout]=\"formDefinition()\"\n [context]=\"getValue()\"\n [look]=\"'container'\"\n (contextChange)=\"onContextChange($event)\"\n (validityChange)=\"onValidityChange($event)\"\n >\n </axp-layout-renderer>\n } @else {\n <axp-state-message\n icon=\"fa-light fa-clipboard-list\"\n [title]=\"'@data-management:metadata-definitions.components.meta-data-selector.empty-states.no-metadata-definitions.title'\"\n [description]=\"'@data-management:metadata-definitions.components.meta-data-selector.empty-states.no-metadata-definitions.description'\"\n >\n </axp-state-message>\n }\n `,\n styles: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPLayoutRendererComponent, AXFormModule, AXLabelModule, AXPWidgetCoreModule, AXPStateMessageComponent],\n})\nexport class AXPMetaDataFormWidgetEditComponent extends AXPValueWidgetComponent {\n //#region ---- Inputs ----\n\n /**\n * Groups structure from meta-data-selector or evaluated expression\n */\n groups = computed<AXPDynamicFormGroupDefinition[]>(() => {\n const options = this.options();\n const groupsOption = options['groups'];\n // Handle evaluated expression result (array of groups) or direct groups array\n if (Array.isArray(groupsOption) && groupsOption.length > 0) {\n return groupsOption;\n }\n return [];\n });\n\n #effect = effect(() => {\n this.initializeFormDefinition();\n });\n\n /**\n * Check if there are any valid metadata definitions available\n */\n hasDefinitions = computed<boolean>(() => {\n const groups = this.groups();\n if (groups.length === 0) {\n return false;\n }\n return groups.some((group) => {\n const fields = (group.parameters || (group as any).fields || []) as AXPDynamicFormFieldDefinition[];\n return fields.length > 0 && fields.some((field: any) => field != null);\n });\n });\n\n //#endregion\n\n //#region ---- Outputs ----\n\n /**\n * Emitted when form context changes\n */\n contextChange = output<any>();\n\n /**\n * Emitted when form validity changes\n */\n validityChange = output<boolean>();\n\n //#endregion\n\n //#region ---- Properties ----\n\n private layoutRenderer = viewChild(AXPLayoutRendererComponent);\n\n /**\n * Form definition signal that only updates when structure actually changes\n */\n protected formDefinition = signal<AXPDynamicFormDefinition>({ groups: [] });\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n /**\n * Handle context change from dynamic form\n */\n protected onContextChange(context: any): void {\n this.contextChange.emit(context);\n this.setValue(context);\n }\n\n /**\n * Handle validity change from dynamic form\n */\n protected onValidityChange(isValid: boolean): void {\n this.validityChange.emit(isValid);\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n /**\n * Initialize form definition based on current inputs\n */\n private initializeFormDefinition(): void {\n const groups = this.groups();\n if (groups.length > 0) {\n const newFormDefinition = this.convertGroupsToFormDefinition(groups);\n this.formDefinition.set(newFormDefinition);\n }\n }\n\n /**\n * Convert groups structure from meta-data-selector to form definition\n * Each metadata group becomes a separate form group with visual separation (card look)\n */\n private convertGroupsToFormDefinition(groups: any[]): AXPDynamicFormDefinition {\n const formGroups: AXPDynamicFormGroupDefinition[] = [];\n\n groups.forEach((group) => {\n // Support both: group.parameters (form-definition) or group.fields (meta-data-selector)\n const parameters = group.parameters;\n const fields = group.fields || [];\n const validFields = fields.filter((field: any) => field != null);\n\n if (parameters && parameters.length > 0) {\n formGroups.push({\n name: this.sanitizeGroupName(group.name || 'default'),\n title: group.title || group.name,\n description: group.description,\n look: groups.length > 1 ? 'group' : 'container',\n parameters,\n });\n } else if (validFields.length > 0) {\n const params: AXPDynamicFormFieldDefinition[] = validFields.map((field: any) =>\n this.convertMetadataToFieldDefinition(field),\n );\n formGroups.push({\n name: this.sanitizeGroupName(group.name || 'default'),\n title: group.title || group.name,\n description: group.description,\n look: groups.length > 1 ? 'group' : 'container',\n parameters: params,\n });\n }\n });\n\n return { groups: formGroups };\n }\n\n /**\n * Convert single metadata definition to field definition\n */\n private convertMetadataToFieldDefinition(metadata: AXMMetaDataDefinitionEntityModel): AXPDynamicFormFieldDefinition {\n // Handle null/undefined metadata\n if (!metadata) {\n console.warn('Undefined metadata definition encountered');\n return {\n path: 'undefined',\n title: 'Undefined Field',\n description: 'This field has undefined metadata',\n widget: {\n type: 'text-editor',\n path: 'undefined',\n options: {\n defaultValue: '',\n validations: [],\n },\n },\n };\n }\n\n const interfaceConfig = this.parseInterfaceConfig(metadata.interface);\n\n // Handle defaultValue: support both direct property and configuration.defaultValue\n // (meta-data-selector uses configuration.defaultValue, other sources may use defaultValue directly)\n const defaultValue = (metadata as any).defaultValue ?? (metadata as any).configuration?.defaultValue;\n\n // Handle description: support both direct property and from configuration\n const description = (metadata as any).description ?? (metadata as any).configuration?.description;\n\n const widget: AXPWidgetNode = {\n type: interfaceConfig.type || 'text-editor',\n path: metadata.name || 'unnamed',\n options: {\n ...interfaceConfig.options,\n defaultValue: defaultValue,\n validations: this.parseValidations(metadata.interface),\n },\n };\n if (interfaceConfig.triggers?.length) {\n widget.triggers = interfaceConfig.triggers;\n }\n const mode = (metadata as { mode?: 'view' | 'edit' }).mode;\n return {\n path: metadata.name || 'unnamed',\n title: metadata.title || 'Untitled Field',\n description: description,\n ...(mode != null && { mode }),\n widget,\n };\n }\n\n /**\n * Parse interface configuration from metadata\n */\n private parseInterfaceConfig(interfaceValue: string | any): any {\n if (typeof interfaceValue === 'string') {\n try {\n return JSON.parse(interfaceValue || '{}');\n } catch (error) {\n console.warn('Failed to parse interface config:', interfaceValue, error);\n return {};\n }\n }\n return interfaceValue || {};\n }\n\n /**\n * Parse validations from interface configuration\n */\n private parseValidations(interfaceValue: string | any): any[] {\n const config = this.parseInterfaceConfig(interfaceValue);\n return config.options?.validations || [];\n }\n\n /**\n * Sanitize group name for use as identifier\n */\n private sanitizeGroupName(name: string): string {\n return name.toLowerCase().replace(/[^a-z0-9]/g, '-');\n }\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n /**\n * Get the layout renderer component instance\n */\n public getLayoutRenderer(): AXPLayoutRendererComponent | undefined {\n return this.layoutRenderer();\n }\n\n /**\n * Validate the form\n */\n public async validate(): Promise<boolean> {\n const renderer = this.layoutRenderer();\n if (renderer) {\n const validation = await renderer.validate();\n return validation.result;\n }\n return false;\n }\n\n /**\n * Get current form context\n */\n public getContext(): any {\n const renderer = this.layoutRenderer();\n return renderer ? renderer.getContext() : {};\n }\n\n /**\n * Update form context programmatically\n */\n public updateContext(context: any): void {\n const renderer = this.layoutRenderer();\n if (renderer) {\n renderer.updateContext(context);\n }\n }\n\n //#endregion\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPDynamicFormGroupDefinition, AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPEntityService, AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { Injectable, inject } from '@angular/core';\nimport { META_DATA_FORM_FIELD } from '../config';\n\nexport interface ShowMetaDataFormPopupInput {\n entity: string; // e.g., 'DataManagement.Document'\n id: string; // Entity record ID\n field?: string; // Meta data form field name (default: META_DATA_FORM_FIELD)\n title?: string; // Dialog title\n path: string; // Path field name for metadata detection\n}\n\n/** Result of resolveGroups; dialogTitle is optional fallback when input.title is not set. */\nexport interface ResolveGroupsResult {\n /** Expression string (evaluated at runtime) or groups array */\n groups: string | AXPDynamicFormGroupDefinition[];\n dialogTitle?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ShowMetaDataFormPopupCommand implements AXPCommand<ShowMetaDataFormPopupInput, any> {\n protected readonly layoutBuilder = inject(AXPLayoutBuilderService);\n protected readonly translationService = inject(AXTranslationService);\n protected readonly entityService = inject(AXPEntityService);\n protected readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n\n async execute(input: ShowMetaDataFormPopupInput | any): Promise<AXPExecuteCommandResult<any>> {\n try {\n // Extract evaluated options from __context__ (private/controlled data)\n // The __context__.options contains evaluated expressions from entity actions\n const contextOptions = (input as any).__context__?.options;\n\n // Merge root-level input with evaluated options from __context__\n // Root-level takes precedence if both exist\n const evaluatedInput: ShowMetaDataFormPopupInput = {\n ...contextOptions,\n ...input,\n // Ensure we use evaluated options from __context__ if available\n ...(contextOptions ? contextOptions : {}),\n };\n\n const { entity, id, field = META_DATA_FORM_FIELD, title, path } = evaluatedInput;\n\n if (!entity || !id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n // Ensure id is a string\n if (typeof id !== 'string' && id != null) {\n const stringId = String(id);\n if (stringId) {\n (evaluatedInput as any).id = stringId;\n }\n }\n\n if (!evaluatedInput.id || typeof evaluatedInput.id !== 'string') {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const finalId = evaluatedInput.id;\n\n // Get current entity record (override findRecord to use custom data sources)\n const currentRecord = await this.findRecord(entity, finalId, evaluatedInput);\n\n if (!currentRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.not-found'),\n },\n };\n }\n\n // Resolve groups (override resolveGroups to load from custom APIs)\n const { groups: resolvedGroups, dialogTitle: resolvedTitle } = await this.resolveGroups(\n evaluatedInput,\n currentRecord\n );\n\n // Get current meta data form value\n const currentMetaDataValue = (currentRecord as any)[field] || {};\n\n // Build dialog title\n const dialogTitle =\n title ||\n resolvedTitle ||\n (await this.translationService.translateAsync(\n '@data-management:metadata-definitions.components.meta-data-form.title'\n ));\n\n // Open dialog with meta-data-form-editor widget\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPExecuteCommandResult<any>>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({\n ...currentRecord,\n [field]: currentMetaDataValue,\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px');\n\n // Add meta-data-form-editor widget with groups (expression or array)\n flex.formField('', (fieldBuilder) => {\n fieldBuilder\n .path(field)\n .setShowLabel(false)\n .customWidget('meta-data-form-editor', {\n groups: resolvedGroups,\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n\n if (!context || action === 'cancel') {\n return { success: false };\n }\n\n const updateData = {\n [field]: context[field],\n };\n\n const updated = await this.updateRecord(entity, finalId, updateData);\n\n return {\n success: true,\n data: updated,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.updated'),\n },\n };\n });\n })\n .show();\n\n return result;\n } catch (error) {\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : 'Failed to show meta data form popup',\n },\n };\n }\n }\n\n //#region ---- Overridable Methods ----\n\n /**\n * Loads a record by entity and id. Override to use custom data sources or key handling.\n * @param input - Optional; overrides can use input.data or other fields to return custom record.\n */\n protected findRecord(\n entity: string,\n id: string,\n input?: ShowMetaDataFormPopupInput\n ): Promise<Record<string, unknown> | null> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.byKey(id) as Promise<Record<string, unknown> | null>;\n }\n\n /**\n * Resolves groups for the meta-data-form-editor.\n * Override to load groups from custom APIs instead of entity metadata.\n * @returns Expression string (evaluated at runtime) or groups array; dialogTitle is optional fallback.\n */\n protected async resolveGroups(\n input: ShowMetaDataFormPopupInput,\n currentRecord: Record<string, unknown>\n ): Promise<ResolveGroupsResult> {\n const { entity, field = META_DATA_FORM_FIELD, path } = input;\n const [moduleName, entityName] = entity.split('.');\n\n const entityDef = await this.entityRegistry.resolve(moduleName, entityName);\n const metaDataFormExt = (entityDef as any).extensions?.metaDataForm?.[field];\n\n if (!metaDataFormExt) {\n throw new Error(\n await this.translationService.translateAsync(\n '@data-management:metadata-definitions.messages.meta-data-form-not-configured'\n )\n );\n }\n\n const props = entityDef.properties || [];\n const pathProperty = props.find((p: any) => p.name === path);\n const targetEntity = pathProperty?.schema?.interface?.options?.['entity'];\n\n if (!targetEntity) {\n throw new Error(\n await this.translationService.translateAsync(\n '@data-management:metadata-definitions.messages.invalid-path-field'\n )\n );\n }\n\n let metadataExpression: string;\n if (targetEntity.endsWith('Category')) {\n metadataExpression = `{{ metadata.fromCategory(\"${entity}\", context.eval('${path}')) }}`;\n } else {\n metadataExpression = `{{ metadata.fromEntity(\"${targetEntity}\", context.eval('${path}')) }}`;\n }\n\n return {\n groups: metadataExpression,\n dialogTitle: metaDataFormExt.title,\n };\n }\n\n /**\n * Persists meta-data form changes. Override to use custom persistence or validation.\n */\n protected updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>\n ): Promise<Record<string, unknown>> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.update(\n id,\n data\n ) as unknown as Promise<Record<string, unknown>>;\n }\n\n //#endregion\n}\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/layout/widgets';\n\nexport const AXPMetaDataBuilderWidget: AXPWidgetConfig<AXPMetaDataBuilderWidgetConfigType> = {\n name: 'meta-data-builder-editor',\n title: '@data-management:metadata-definitions.components.meta-data-builder.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: '@data-management:metadata-definitions.components.meta-data-builder.description',\n icon: 'fa-light fa-list-check',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n components: {\n view: {\n component: () => import('./meta-data-builder-view.component').then((c) => c.AXPMetaDataBuilderWidgetViewComponent),\n },\n edit: {\n component: () => import('./meta-data-builder-edit.component').then((c) => c.AXPMetaDataBuilderWidgetEditComponent),\n },\n print: {\n component: () => import('./meta-data-builder-edit.component').then((c) => c.AXPMetaDataBuilderWidgetEditComponent),\n },\n },\n};\n\nexport type AXPMetaDataBuilderWidgetConfigType = {\n type: 'editor';\n};\n","//#region ---- Meta-Data Builder Field / Group Types ----\n\nimport { AXPOptionsData, type AXPMultiLanguageString } from '@acorex/platform/core';\n\n/** Localized or plain string as stored / edited in the builder */\nexport type AXMMetaDataLocalizedString = string | AXPMultiLanguageString;\n\n/** Single metadata field within a group */\nexport interface AXMMetaDataBuilderField {\n id: string;\n name: string;\n title: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n interface: string;\n configuration?: {\n isRequired?: boolean;\n placeholder?: string;\n [key: string]: unknown;\n };\n status: 'active' | 'deleted' | 'temporary';\n order: number;\n isNewlyAdded?: boolean;\n}\n\n/** Group of metadata fields */\nexport interface AXMMetaDataBuilderGroup {\n id: string;\n name: string;\n title?: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n order: number;\n fields: AXMMetaDataBuilderField[];\n isNewlyAdded?: boolean;\n}\n\n/** Designer state (internal) */\nexport interface AXMMetaDataBuilderState {\n groups: AXMMetaDataBuilderGroup[];\n mode: 'designer' | 'preview';\n selectedFieldId?: string;\n selectedGroupId?: string;\n}\n\n/** Value persisted on the entity */\nexport interface AXMMetaDataBuilderValue {\n groups: Array<{\n name: string;\n title?: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n order: number;\n fields: Array<{\n id: string;\n name: string;\n title: AXMMetaDataLocalizedString;\n description?: AXMMetaDataLocalizedString;\n interface: string;\n configuration?: AXPOptionsData;\n order: number;\n }>;\n }>;\n}\n\n//#endregion\n\n//#region ---- Utility Functions ----\n\nexport function convertValueToState(value: unknown): AXMMetaDataBuilderState {\n if (!value) {\n return {\n groups: [createDefaultGroup()],\n mode: 'designer',\n };\n }\n\n if (Array.isArray(value)) {\n return {\n groups: [\n {\n id: 'group-default',\n name: 'default',\n title: 'Default Section',\n description: undefined,\n order: 0,\n fields: value.map((item: any, index: number) => ({\n id: item.id || `field-${index}`,\n name: item.name,\n title: item.title,\n description: item.description,\n interface: item.interface,\n configuration: item.configuration,\n status: item.status || 'active',\n order: item.order ?? index,\n isNewlyAdded: item.isNewlyAdded,\n })),\n },\n ],\n mode: 'designer',\n };\n }\n\n const v = value as { groups?: unknown[] };\n if (v.groups && Array.isArray(v.groups)) {\n const groups = v.groups.map((group: any, groupIndex: number) => ({\n id: group.id || `group-${group.name}`,\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order ?? groupIndex,\n fields: (group.fields || []).map((field: any, fieldIndex: number) => ({\n id: field.id || `field-${fieldIndex}`,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n status: field.status || 'active',\n order: field.order ?? fieldIndex,\n isNewlyAdded: field.isNewlyAdded,\n })),\n isNewlyAdded: group.isNewlyAdded,\n }));\n\n const finalGroups = groups.length > 0 ? groups : [createDefaultGroup()];\n\n return {\n groups: finalGroups,\n mode: 'designer',\n };\n }\n\n return {\n groups: [createDefaultGroup()],\n mode: 'designer',\n };\n}\n\nexport function convertStateToValue(state: AXMMetaDataBuilderState): AXMMetaDataBuilderValue {\n return {\n groups: state.groups.map((group) => {\n const activeFields = group.fields.filter((field) => field.status !== 'deleted');\n return {\n name: group.name,\n title: group.title,\n description: group.description,\n order: group.order,\n fields: activeFields.map((field) => ({\n id: field.id,\n name: field.name,\n title: field.title,\n description: field.description,\n interface: field.interface,\n configuration: field.configuration,\n order: field.order,\n })),\n };\n }),\n };\n}\n\nexport function createDefaultGroup(): AXMMetaDataBuilderGroup {\n return {\n id: 'group-default',\n name: 'default',\n title: 'Default Section',\n description: undefined,\n order: 0,\n fields: [],\n isNewlyAdded: true,\n };\n}\n\n//#endregion\n","import type {\n AXPBuilderItem,\n AXPBuilderSection,\n AXPBuilderValue,\n} from '@acorex/platform/layout/components';\nimport type {\n AXMMetaDataBuilderField,\n AXMMetaDataBuilderGroup,\n AXMMetaDataBuilderValue,\n AXMMetaDataLocalizedString,\n} from './meta-data-builder.types';\nimport { convertValueToState } from './meta-data-builder.types';\nimport type { AXPMultiLanguageString } from '@acorex/platform/core';\n\nfunction asLocalizedFieldValue(v: unknown): AXMMetaDataLocalizedString | undefined {\n if (v == null) return undefined;\n if (typeof v === 'object' && !Array.isArray(v)) {\n return v as AXPMultiLanguageString;\n }\n if (typeof v === 'string') return v;\n return String(v);\n}\n\nfunction fieldStateToItem(f: AXMMetaDataBuilderField, index: number): AXPBuilderItem {\n return {\n id: f.id,\n order: f.order ?? index,\n name: f.name,\n title: f.title,\n description: f.description,\n interface: f.interface,\n configuration: f.configuration,\n status: f.status,\n isNewlyAdded: f.isNewlyAdded,\n } as AXPBuilderItem;\n}\n\nfunction groupStateToSection(g: AXMMetaDataBuilderGroup): AXPBuilderSection {\n const activeFields = g.fields.filter((f) => f.status !== 'deleted');\n const key = String(g.name ?? g.id ?? '');\n return {\n id: key,\n order: g.order,\n name: key,\n title: g.title ?? '',\n description: g.description ?? '',\n tags: [],\n isVisible: true,\n items: activeFields.map((f, i) => fieldStateToItem(f, i)),\n } as AXPBuilderSection;\n}\n\nexport function metaDataValueToBuilderValue(val: AXMMetaDataBuilderValue | null | undefined): AXPBuilderValue {\n const state = convertValueToState(val ?? null);\n return {\n sections: state.groups.map((g) => groupStateToSection(g)),\n };\n}\n\nfunction itemToFieldValue(it: AXPBuilderItem, idx: number) {\n const iface = it['interface'];\n const interfaceStr =\n typeof iface === 'string' ? iface : iface != null ? JSON.stringify(iface) : JSON.stringify({ type: 'text-editor' });\n const title = asLocalizedFieldValue(it['title']) ?? '';\n const description = asLocalizedFieldValue(it['description']);\n return {\n id: it.id,\n name: String(it['name'] ?? ''),\n title,\n ...(description !== undefined ? { description } : {}),\n interface: interfaceStr,\n configuration: it['configuration'] as AXMMetaDataBuilderValue['groups'][number]['fields'][number]['configuration'],\n order: it.order ?? idx,\n };\n}\n\nexport function builderValueToMetaDataValue(v: AXPBuilderValue): AXMMetaDataBuilderValue {\n return {\n groups: v.sections.map((s) => ({\n name: String(s['name'] ?? s['sectionItemId'] ?? ''),\n ...(() => {\n const t = asLocalizedFieldValue(s['title']);\n const d = asLocalizedFieldValue(s['description']);\n return {\n ...(t !== undefined ? { title: t } : {}),\n ...(d !== undefined ? { description: d } : {}),\n };\n })(),\n order: s.order,\n fields: s.items.map((it, idx) => itemToFieldValue(it, idx)),\n })),\n };\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXPEntityProperty, AXPEntityTableColumn } from '@acorex/platform/common';\nimport {\n AXPCategoryTreeDataSource,\n AXPDataSelectorService,\n AXPWidgetPropertyViewerService,\n type AXPBuilderItem,\n type AXPBuilderItemViewModel,\n type AXPBuilderValue,\n AXPStandardSectionItemsBuilderComponent,\n type AXPStandardSectionItemsBuilderConfig,\n} from '@acorex/platform/layout/components';\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n} from '@acorex/platform/layout/builder';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPWidgetNode, AXPWidgetProperty, AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { AXPContextStore, AXPDataGenerator, isEffectivelyEmptyLocalizedValue } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { RootConfig } from '../../../const';\nimport { AXMMetaDataDefinitionService } from '../../../entities/meta-data-definition/meta-data-definition.service';\nimport { builderValueToMetaDataValue, metaDataValueToBuilderValue } from './meta-data-builder-mapping';\nimport type { AXMMetaDataBuilderValue } from './meta-data-builder.types';\n\n/**\n * Meta-data builder: groups/fields editing via {@link AXPStandardSectionItemsBuilder}.\n */\n@Component({\n selector: 'axp-meta-data-builder-groups',\n templateUrl: './meta-data-builder-groups.component.html',\n styleUrl: './meta-data-builder-groups.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStandardSectionItemsBuilderComponent,\n ],\n})\nexport class AXPMetaDataBuilderGroupsComponent {\n readonly value = input<AXMMetaDataBuilderValue | null | undefined>(null);\n readonly options = input<Record<string, unknown>>({});\n readonly contextPath = input<string | undefined>(undefined);\n\n readonly valueChange = output<AXMMetaDataBuilderValue>();\n\n private readonly standardRef = viewChild(AXPStandardSectionItemsBuilderComponent);\n\n private readonly dataSelectorService = inject(AXPDataSelectorService);\n private readonly metaDataService = inject(AXMMetaDataDefinitionService);\n private readonly entityResolver = inject(AXPEntityDefinitionRegistryService);\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly widgetPropertyViewerService = inject(AXPWidgetPropertyViewerService);\n private readonly contextStore = inject(AXPContextStore, { optional: true });\n\n protected readonly builderValue = signal<AXPBuilderValue>({ sections: [] });\n\n protected readonly standardConfig = computed<AXPStandardSectionItemsBuilderConfig>(() => ({\n mapItemToView: (item, _s) => this.mapItemToView(item),\n promptAddItems: (sid, v) => this.promptAddItems(sid, v),\n promptEditItem: (item, sid, v) => this.promptEditItem(item, sid, v),\n isDefaultSection: (section) =>\n String(section['name'] ?? section['id'] ?? '') === 'default' &&\n isEffectivelyEmptyLocalizedValue(section['title']),\n minSectionCount: 1,\n }));\n\n protected hideHeaderActions = computed<boolean>(() => (this.options()['hideHeaderActions'] as boolean) === true);\n protected readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) === true);\n\n protected previewGroups = computed(() => {\n const meta = builderValueToMetaDataValue(this.builderValue());\n return meta.groups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n fields: group.fields.map((f) => ({\n name: f.name,\n title: f.title,\n description: f.description,\n interface: f.interface,\n configuration: f.configuration,\n defaultValue: f.configuration?.['defaultValue'],\n })),\n }));\n });\n\n protected previewFormDefinition = computed<AXPDynamicFormDefinition>(() => {\n const groups = this.previewGroups();\n const formGroups: AXPDynamicFormGroupDefinition[] = [];\n groups.forEach((group) => {\n const fields = group.fields || [];\n const validFields = fields.filter((f: unknown) => f != null);\n if (validFields.length > 0) {\n formGroups.push({\n name: this.sanitizeGroupName(group.name || 'default'),\n title: group.title ?? group.name,\n description: group.description,\n look: groups.length > 1 ? 'group' : 'container',\n parameters: validFields.map((field: unknown) => this.convertFieldToFormDefinition(field as Record<string, unknown>)),\n });\n }\n });\n return { groups: formGroups };\n });\n\n protected isPreviewDisabled = computed<boolean>(() => {\n const meta = builderValueToMetaDataValue(this.builderValue());\n if (meta.groups.length === 0) return true;\n return !meta.groups.some((g) => g.fields.length > 0);\n });\n\n #syncValueToBuilder = effect(() => {\n const val = this.value();\n this.builderValue.set(metaDataValueToBuilderValue(val ?? null));\n });\n\n private syncBuilderToHost(): void {\n const out = builderValueToMetaDataValue(this.builderValue());\n this.valueChange.emit(out);\n const path = this.contextPath();\n const store = this.contextStore;\n if (path && store) store.update(path, out);\n }\n\n protected onBuilderValueChange(next: AXPBuilderValue): void {\n this.builderValue.set(next);\n this.syncBuilderToHost();\n }\n\n /** Page toolbar / header: open standardized add-section dialog. */\n async addSection(): Promise<void> {\n await this.standardRef()?.addSection();\n }\n\n private mapItemToView(item: AXPBuilderItem): AXPBuilderItemViewModel {\n const iface = String(item['interface'] ?? '');\n return {\n icon: 'fa-light fa-input-text',\n /** Fallback only; {@link AXPSectionItemsBuilderComponent} resolves raw ML on the item in the template. */\n title: '',\n name: String(item['name'] ?? ''),\n badges: [{ text: this.getWidgetTitle(iface), variant: 'neutral' }],\n };\n }\n\n private parseInterfaceConfig(interfaceValue: string | unknown): Record<string, unknown> {\n if (typeof interfaceValue === 'string') {\n try {\n return JSON.parse(interfaceValue || '{}') as Record<string, unknown>;\n } catch {\n return {};\n }\n }\n return (interfaceValue as Record<string, unknown>) || {};\n }\n\n private parseValidations(interfaceValue: string | unknown): unknown[] {\n const config = this.parseInterfaceConfig(interfaceValue);\n const opts = config?.['options'] as Record<string, unknown> | undefined;\n return (opts?.['validations'] as unknown[]) || [];\n }\n\n private sanitizeGroupName(name: string): string {\n return name.toLowerCase().replace(/[^a-z0-9]/g, '-');\n }\n\n private convertFieldToFormDefinition(field: Record<string, unknown>): AXPDynamicFormFieldDefinition {\n const interfaceConfig = this.parseInterfaceConfig(field['interface']);\n const defaultValue = field['defaultValue'] ?? (field['configuration'] as Record<string, unknown>)?.['defaultValue'];\n const cfg = field['configuration'] as Record<string, unknown> | undefined;\n const description = (field['description'] ?? cfg?.['description']) as AXPDynamicFormFieldDefinition['description'];\n const titleRaw = field['title'];\n const title: AXPDynamicFormFieldDefinition['title'] = !isEffectivelyEmptyLocalizedValue(titleRaw)\n ? (titleRaw as AXPDynamicFormFieldDefinition['title'])\n : 'Untitled Field';\n return {\n path: (field['name'] as string) || 'unnamed',\n title,\n description,\n widget: {\n type: (interfaceConfig?.['type'] as string) || 'text-editor',\n path: (field['name'] as string) || 'unnamed',\n options: {\n ...((interfaceConfig?.['options'] as Record<string, unknown>) ?? {}),\n defaultValue,\n validations: this.parseValidations(field['interface'] as string),\n },\n },\n };\n }\n\n private getWidgetTitle(interfaceValue: string): string {\n try {\n if (!interfaceValue) return 'Text';\n if (!interfaceValue.startsWith('{')) return interfaceValue;\n const parsed = JSON.parse(interfaceValue) as { type?: string };\n const widgetType = parsed?.type || 'text-editor';\n return (\n String(widgetType)\n .replace(/-/g, ' ')\n .replace(/editor/gi, '')\n .trim()\n .split(' ')\n .map((w: string) => w.charAt(0).toUpperCase() + w.slice(1))\n .join(' ') || 'Text'\n );\n } catch {\n return 'Text';\n }\n }\n\n private async promptAddItems(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null> {\n const section = value.sections.find((s) => s.id === sectionId);\n if (!section) return null;\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const result = await this.metaDataService.query(e);\n return { items: result.items, total: result.total };\n },\n });\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.metaDataService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: { field: 'parentId', operator: { type: 'isEmpty' }, value: true },\n });\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.metaDataService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: { field: 'parentId', operator: { type: 'equal' }, value: parentId },\n });\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.metaDataService.getCategoriesList({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n { field: 'title', operator: { type: 'contains' }, value: searchValue },\n { field: 'name', operator: { type: 'contains' }, value: searchValue },\n ],\n logic: 'or',\n },\n });\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n const entity = await this.entityResolver.resolve(RootConfig.module.name, RootConfig.entities.metaDataDefinition.name);\n if (!entity) throw new Error('Entity not found: ' + RootConfig.entities.metaDataDefinition.name);\n const columns =\n entity.columns\n ?.filter((col: AXPEntityTableColumn) => entity.properties?.some((p: AXPEntityProperty) => p.name === col.name))\n .map((col: AXPEntityTableColumn) => {\n const prop = entity.properties?.find((p: AXPEntityProperty) => p.name === col.name);\n return {\n name: col.name,\n title: prop?.title ?? '',\n visible: col.options?.visible !== false,\n widget: {\n type: col.showAs?.type ?? prop?.schema?.interface?.type ?? 'text-editor',\n options: col.showAs?.options ?? prop?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n const result = await this.dataSelectorService.openWithCategoryFilter(\n {\n title: '@data-management:metadata-definitions.components.meta-data-selector.select-items',\n dataSource,\n columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: '@general:terms.common.title' },\n { name: 'description', title: '@general:terms.common.description' },\n ],\n allowCreate: 'none',\n },\n {\n title: '@data-management:metadata-definitions.components.meta-data-selector.categories',\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n );\n if (!result?.items?.length) return null;\n const takenNames = this.collectItemNames(value);\n const baseOrder = section.items.length;\n return result.items.map((item: any, index: number) => {\n const uniqueName = this.generateUniqueItemName(String(item.name ?? ''), takenNames);\n if (uniqueName) takenNames.add(uniqueName);\n return {\n id: AXPDataGenerator.uuid(),\n order: baseOrder + index,\n name: uniqueName,\n title: item.title ?? '',\n description: item.description ?? '',\n interface: typeof item.interface === 'string' ? item.interface : JSON.stringify(item.interface ?? {}),\n configuration: { isRequired: false, placeholder: '' },\n status: 'active',\n isNewlyAdded: true,\n } as AXPBuilderItem;\n });\n } catch (error) {\n console.error('Error loading meta-data:', error);\n return null;\n }\n }\n\n private async promptEditItem(\n item: AXPBuilderItem,\n _sectionId: string,\n _value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n try {\n const ifaceRaw = item['interface'];\n const ifaceStr = typeof ifaceRaw === 'string' ? ifaceRaw : JSON.stringify(ifaceRaw ?? {});\n if (!ifaceStr.trim()) throw new Error('Field interface is empty');\n let currentWidget: AXPWidgetNode;\n try {\n currentWidget = JSON.parse(ifaceStr);\n } catch {\n throw new Error('Failed to parse field interface');\n }\n if (!currentWidget?.type) throw new Error('Invalid widget configuration');\n const editTitle =\n (await this.translationService.translateAsync('@general:actions.configure.title')) || 'Configure';\n\n const rawTitle = item['title'];\n const labelSeed =\n rawTitle !== undefined && rawTitle !== null && rawTitle !== '' ? rawTitle : (item['name'] ?? '');\n const rawDesc = item['description'];\n const descSeed = rawDesc !== undefined && rawDesc !== null ? rawDesc : undefined;\n const seededWidget: AXPWidgetNode = {\n ...cloneDeep(currentWidget),\n name: String(item['name'] ?? ''),\n options: {\n ...(cloneDeep(currentWidget.options) ?? {}),\n label: labelSeed,\n ...(descSeed !== undefined ? { description: descSeed } : {}),\n },\n };\n\n const duplicateNameMessage =\n (await this.translationService.translateAsync(\n '@data-management:metadata-definitions.components.meta-data-selector.basic-info.name-duplicate',\n )) || 'A field with this name already exists.';\n const overrideProperties = this.buildFieldOverrideProperties(item, duplicateNameMessage);\n\n const result = await this.widgetPropertyViewerService\n .create()\n .dialog((d) => {\n d.setMode('advanced');\n d.setTitle(editTitle).setWidget(seededWidget);\n d.setExclude(['name']);\n d.setCustom({ properties: overrideProperties });\n })\n .show();\n\n if (!result?.values) return null;\n\n const incomingOpts = (result.values.options ?? {}) as Record<string, unknown>;\n const descKeyPresent = Object.prototype.hasOwnProperty.call(incomingOpts, 'description');\n const descriptionAfter = descKeyPresent ? incomingOpts['description'] : undefined;\n const mergedOptions = {\n ...(currentWidget.options ?? {}),\n ...incomingOpts,\n } as Record<string, unknown>;\n delete mergedOptions['description'];\n const updatedWidget: AXPWidgetNode = {\n ...currentWidget,\n ...result.values,\n options: mergedOptions,\n };\n const overriddenName =\n typeof result.values?.name === 'string' && result.values.name.trim()\n ? result.values.name.trim()\n : String(item['name'] ?? '');\n const labelAfter = result.values?.options?.label;\n const overriddenTitle =\n labelAfter !== undefined &&\n labelAfter !== null &&\n !isEffectivelyEmptyLocalizedValue(labelAfter)\n ? labelAfter\n : (item['title'] ?? '');\n\n return {\n ...item,\n name: overriddenName,\n title: overriddenTitle,\n ...(descKeyPresent ? { description: descriptionAfter } : {}),\n interface: JSON.stringify(updatedWidget),\n };\n } catch (error) {\n console.error('Error editing field:', error);\n await this.dialogService.alert(\n (await this.translationService.translateAsync('@general:messages.error.title')) || 'Error',\n error instanceof Error ? error.message : 'Failed to edit field interface',\n 'danger',\n );\n return null;\n }\n }\n\n private buildFieldOverrideProperties(currentItem: AXPBuilderItem, duplicateNameMessage: string) {\n const basicGroup = {\n name: 'basic-info',\n order: -1,\n title: '@data-management:metadata-definitions.components.meta-data-selector.basic-info.title',\n };\n const siblingNames = this.collectItemNames(this.builderValue(), String(currentItem.id));\n const nameProperty: AXPWidgetProperty = {\n name: 'fieldName',\n title: '@general:terms.common.name',\n group: basicGroup,\n order: 0,\n schema: {\n dataType: 'string',\n interface: { name: 'name', path: 'name', type: AXPWidgetsCatalog.text },\n },\n validations: [\n { rule: 'required' },\n { rule: 'variable-name' },\n {\n rule: 'callback',\n options: {\n message: duplicateNameMessage,\n validate: (val: unknown) => {\n const name = typeof val === 'string' ? val.trim() : '';\n if (!name) return { result: true };\n return { result: !siblingNames.has(name), message: duplicateNameMessage };\n },\n },\n },\n ],\n visible: true,\n };\n const titleProperty: AXPWidgetProperty = {\n name: 'fieldTitle',\n title: '@general:terms.common.title',\n group: basicGroup,\n order: 1,\n schema: {\n dataType: 'string',\n interface: { name: 'label', path: 'options.label', type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n visible: true,\n };\n const descriptionProperty: AXPWidgetProperty = {\n name: 'fieldDescription',\n title: '@general:terms.common.description',\n group: basicGroup,\n order: 2,\n schema: {\n dataType: 'string',\n interface: { name: 'description', path: 'options.description', type: AXPWidgetsCatalog.largeText },\n },\n visible: true,\n };\n return [\n { property: nameProperty, tab: { name: 'general' }, group: basicGroup },\n { property: titleProperty, tab: { name: 'general' }, group: basicGroup },\n { property: descriptionProperty, tab: { name: 'general' }, group: basicGroup },\n ];\n }\n\n private collectItemNames(value: AXPBuilderValue, excludeItemId?: string): Set<string> {\n const names = new Set<string>();\n for (const s of value.sections) {\n for (const it of s.items) {\n if (excludeItemId != null && it.id === excludeItemId) continue;\n const n = it['name'];\n if (typeof n === 'string' && n) names.add(n);\n }\n }\n return names;\n }\n\n private generateUniqueItemName(baseName: string, taken: Set<string>): string {\n if (!baseName) return baseName;\n if (!taken.has(baseName)) return baseName;\n let i = 1;\n while (taken.has(`${baseName}${i}`)) i++;\n return `${baseName}${i}`;\n }\n\n async handlePreviewClick(): Promise<void> {\n if (this.isPreviewDisabled()) return;\n try {\n const previewTitle = await this.translationService.translateAsync(\n '@data-management:metadata-definitions.actions.preview.title',\n );\n const formDef = this.previewFormDefinition();\n if (!formDef.groups?.length) {\n const ref = await this.layoutBuilder\n .create()\n .dialog((d) => {\n d.setTitle(previewTitle).setSize('md').setCloseButton(true).setContext({});\n d.setActions((a) => a.cancel('@general:actions.close.title'));\n })\n .show();\n ref.close();\n return;\n }\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle(previewTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext(builderValueToMetaDataValue(this.builderValue()) || {})\n .content((lb) => lb.dynamicForm(formDef))\n .setActions((a) => a.cancel('@general:actions.close.title'));\n })\n .show();\n await dialogRef.action();\n dialogRef.close();\n } catch (error) {\n console.error('Error opening preview:', error);\n await this.dialogService.alert(\n (await this.translationService.translateAsync('@general:messages.error.title')) || 'Error',\n error instanceof Error ? error.message : 'Failed to open preview',\n 'danger',\n );\n }\n }\n}\n","<div class=\"axp-meta-data-builder-groups\" *translate=\"let t\">\n @if (!readonly() && !hideHeaderActions()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button class=\"ax-sm\"\n [text]=\"'@data-management:metadata-definitions.actions.add-group.title' | translate | async\" [color]=\"'primary'\"\n (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n\n <ax-button class=\"ax-sm\" [color]=\"'success'\" [disabled]=\"isPreviewDisabled()\"\n [text]=\"'@data-management:metadata-definitions.actions.preview.title' | translate | async\"\n (onClick)=\"handlePreviewClick()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"ax-block ax-min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n","import { AXPPageStatus, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core';\nimport { AXPMetaDataBuilderGroupsComponent } from './meta-data-builder-groups.component';\nimport type { AXMMetaDataBuilderValue } from './meta-data-builder.types';\n\n@Component({\n selector: 'axp-meta-data-builder-widget-edit',\n templateUrl: './meta-data-builder-edit.component.html',\n styleUrl: './meta-data-builder-edit.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPMetaDataBuilderGroupsComponent],\n})\nexport class AXPMetaDataBuilderWidgetEditComponent extends AXPValueWidgetComponent<AXMMetaDataBuilderValue> {\n private readonly currentValue = signal<AXMMetaDataBuilderValue | null>(null);\n\n protected valueForGroups = computed(() => this.getValue() ?? null);\n protected optionsForGroups = computed(() => this.options() ?? {});\n\n #submitEffect = effect(() => {\n if (this.layoutService.status() === AXPPageStatus.Submitting) {\n const val = this.currentValue();\n this.setValue(val ?? this.getValue() ?? { groups: [] });\n }\n });\n\n protected onValueChange(value: AXMMetaDataBuilderValue): void {\n this.currentValue.set(value);\n this.setValue(value);\n }\n}\n","<div class=\"axp-meta-data-builder-widget-edit\">\n <axp-meta-data-builder-groups\n [value]=\"valueForGroups()\"\n [options]=\"optionsForGroups()\"\n (valueChange)=\"onValueChange($event)\">\n </axp-meta-data-builder-groups>\n</div>\n","import { AXPEntityCommandScope } from '@acorex/platform/common';\nimport {\n actionExists,\n AXPEntityActionPlugin,\n resolveEntityPluginDetailPageOrder,\n} from '@acorex/platform/layout/entity';\nimport { META_DATA_FORM_FIELD, META_DATA_SELECTOR_FIELD } from '../config';\nimport { AXMMetaDataBuilderValue } from './meta-data-builder.types';\n\n/** Component key used when display is 'page'. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const META_DATA_BUILDER_PAGE_COMPONENT_KEY = 'entity-meta-data-builder-page';\n\n/** Display configuration for section (builder shown inline in entity views) */\nexport type MetaDataBuilderSectionConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/** Display configuration for popup (action opens builder in dialog) */\nexport type MetaDataBuilderPopupConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/** Display configuration for page (builder shown as entity tab with toolbar actions) */\nexport type MetaDataBuilderPageConfig = {\n enabled?: boolean;\n title?: string;\n icon?: string;\n order?: number;\n};\n\n/** Flexible display configuration object for the meta-data-builder */\nexport type MetaDataBuilderDisplayConfig = {\n section?: MetaDataBuilderSectionConfig;\n popup?: MetaDataBuilderPopupConfig;\n page?: MetaDataBuilderPageConfig;\n};\n\n/** Display option - where to show the meta-data-builder: section, popup, page, or both */\nexport type MetaDataBuilderDisplay = MetaDataBuilderDisplayConfig | 'section' | 'popup' | 'page' | 'both';\n\nfunction normalizeBuilderDisplayConfig(\n display: MetaDataBuilderDisplay | undefined,\n defaultTitle: string\n): MetaDataBuilderDisplayConfig {\n if (!display) return { section: { enabled: true } };\n if (typeof display === 'object') return display;\n switch (display) {\n case 'section':\n return { section: { enabled: true, title: defaultTitle }, popup: { enabled: false }, page: { enabled: false } };\n case 'popup':\n return { section: { enabled: false }, popup: { enabled: true, title: defaultTitle }, page: { enabled: false } };\n case 'page':\n return { section: { enabled: false }, popup: { enabled: false }, page: { enabled: true, title: defaultTitle } };\n case 'both':\n return { section: { enabled: true, title: defaultTitle }, popup: { enabled: true, title: defaultTitle }, page: { enabled: false } };\n default:\n return { section: { enabled: true } };\n }\n}\n\nexport type MetaDataBuilderPluginOptions = {\n /** Field and group title */\n title?: string;\n /** How to display the meta-data-builder: section (inline), popup (button opens dialog), page (entity tab with toolbar actions), or both */\n display?: MetaDataBuilderDisplay;\n /** If true, each metadata group becomes a separate entity section (TODO) */\n renderGroupsAsSections?: boolean;\n};\n\n/**\n * meta-data-builder plugin\n *\n * Dynamic behavior:\n * - Creates a single property for metadata builder configuration\n * - Dynamically generates entity groups and meta-data-form widgets based on configured groups\n * - Reads group configuration at runtime from the field value\n */\nexport const metaDataBuilderPlugin: AXPEntityActionPlugin = {\n name: 'meta-data-builder',\n order: 60,\n apply: (ctx, options?: MetaDataBuilderPluginOptions) => {\n const opts = options ?? {};\n const field = META_DATA_SELECTOR_FIELD;\n\n // Try to get title from various sources in priority order:\n // 1. Direct options.title\n // 2. meta-data-form plugin configuration (from plugins array - current entity or base entity)\n // 3. meta-data-form extension (if plugin has already run - current entity or base entity)\n // 4. category plugin metaData.title (if enabled via category plugin)\n // 5. Default title\n\n let metaDataFormTitle: string | undefined;\n let metaDataFormExtTitle: { title?: string } | undefined;\n let categoryMetaDataTitle: string | undefined;\n\n // Check current entity's plugins and extensions\n const plugins = (ctx.entity as any).plugins as Array<{ name: string; options?: any }> | undefined;\n const metaDataFormPlugin = plugins?.find((p) => p.name === 'meta-data-form');\n metaDataFormTitle = metaDataFormPlugin?.options?.title;\n\n const metaDataFormExt = (ctx.entity as any).extensions?.metaDataForm;\n metaDataFormExtTitle = metaDataFormExt\n ? Object.values(metaDataFormExt).find((ext: any) => ext?.title) as { title?: string } | undefined\n : undefined;\n\n const categoryExt = (ctx.entity as any).extensions?.category;\n categoryMetaDataTitle = categoryExt?.metaData?.title;\n\n // If running on a category entity (name ends with \"Category\"), check the base entity\n if (ctx.entity.name.endsWith('Category') && !metaDataFormTitle && !metaDataFormExtTitle) {\n const baseEntityName = ctx.entity.name.replace('Category', '');\n try {\n // Try to access the entity registry to get base entity\n // Note: This requires the registry to be available, which might not always be the case\n // For now, we'll rely on the category extension which should have the title\n // But we can also check if there's a way to access base entity plugins\n } catch (error) {\n // Silently fail - we'll use other sources\n }\n }\n\n // Priority: 1. options.title, 2. meta-data-form plugin title, 3. meta-data-form extension title, 4. category metaData.title, 5. default\n const displayTitle =\n (opts.title && opts.title.trim().length > 0)\n ? opts.title\n : (metaDataFormTitle && metaDataFormTitle.trim().length > 0)\n ? metaDataFormTitle\n : (metaDataFormExtTitle?.title && metaDataFormExtTitle.title.trim().length > 0)\n ? metaDataFormExtTitle.title\n : (categoryMetaDataTitle && categoryMetaDataTitle.trim().length > 0)\n ? categoryMetaDataTitle\n : '@data-management:metadata-definitions.actions.configure-meta-data.title';\n\n const displayConfig = normalizeBuilderDisplayConfig(opts.display, displayTitle);\n const sectionConfig = displayConfig.section ?? {};\n const popupConfig = displayConfig.popup ?? {};\n const pageConfig = displayConfig.page ?? {};\n const showSection = sectionConfig.enabled !== false;\n const showPopup = popupConfig.enabled === true;\n const showPage = pageConfig.enabled === true;\n const popupTitle = popupConfig.title ?? displayTitle;\n const pageTitle = pageConfig.title ?? displayTitle;\n const pageIcon = pageConfig.icon ?? 'fa-light fa-list-check';\n //#region ---- Step 1: Create Meta-Data Builder Property ----\n\n // Ensure group and section for the builder configuration itself\n const selectorSectionId = `meta-data-config`;\n const selectorGroupId = `meta-data-config`;\n const existingGroups = ctx.groups.list() ?? [];\n\n if (!existingGroups.some((g: any) => g.id === selectorGroupId)) {\n ctx.groups.add({ id: selectorGroupId, title: displayTitle } as any);\n }\n\n // Ensure property exists (using meta-data-builder-editor interface)\n const props = ctx.properties.list();\n if (!props.some((p: any) => p.name === field)) {\n ctx.properties.add({\n name: field,\n title: displayTitle,\n groupId: selectorGroupId,\n schema: {\n dataType: 'object',\n interface: {\n type: 'meta-data-builder-editor',\n },\n },\n } as any);\n }\n\n // Add builder to single/create/modify views only when section display is enabled\n const selectorColSpan = 12;\n if (showSection) {\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === selectorSectionId)) {\n next.sections.push({\n id: selectorSectionId,\n title: sectionConfig.title ?? displayTitle,\n order: sectionConfig.order ?? 200,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: selectorColSpan, order: 9 } },\n },\n });\n }\n return next;\n });\n\n ctx.interfaces.master.create.update((create) => {\n const next: any = create ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === selectorSectionId)) {\n next.sections.push({\n id: selectorSectionId,\n title: sectionConfig.title ?? displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: selectorColSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n\n ctx.interfaces.master.modify.update((modify) => {\n const next: any = modify ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === selectorSectionId)) {\n next.sections.push({\n id: selectorSectionId,\n title: sectionConfig.title ?? displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: selectorColSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n }\n\n if (showPage) {\n ctx.entity.pages ??= [];\n const pageExists = (ctx.entity.pages as any[]).some(\n (p: any) => p.componentKey === META_DATA_BUILDER_PAGE_COMPONENT_KEY && p.field === field,\n );\n const layoutOrder = resolveEntityPluginDetailPageOrder(\n { relatedEntities: ctx.entity.relatedEntities, pages: ctx.entity.pages as any[] },\n 'meta-data-builder',\n {\n componentKey: META_DATA_BUILDER_PAGE_COMPONENT_KEY,\n field,\n skipPage: pageExists\n ? { componentKey: META_DATA_BUILDER_PAGE_COMPONENT_KEY, field }\n : undefined,\n },\n );\n const page = {\n componentKey: META_DATA_BUILDER_PAGE_COMPONENT_KEY,\n field,\n title: pageTitle,\n icon: pageIcon,\n layout: { order: layoutOrder },\n };\n if (!pageExists) {\n (ctx.entity.pages as any[]).push(page);\n } else {\n const pages = ctx.entity.pages as any[];\n const index = pages.findIndex(\n (p) => p.componentKey === META_DATA_BUILDER_PAGE_COMPONENT_KEY && p.field === field,\n );\n if (index >= 0) {\n pages[index] = { ...pages[index], ...page };\n }\n }\n }\n\n //#endregion\n\n //#region ---- Step 2: Dynamic Group Generation Middleware ----\n\n // Add metadata middleware to dynamically generate groups at runtime\n // This middleware reads the metaDataList field value and creates\n // entity groups + meta-data-form widgets for each configured group\n\n const metadataMiddleware = {\n name: 'metadata-dynamic-groups',\n order: 100,\n apply: (entityCtx: any) => {\n // Get the metadata selector value from context\n const metaDataValue = entityCtx.data?.[field] as AXMMetaDataBuilderValue | undefined;\n\n if (!metaDataValue?.groups || metaDataValue.groups.length === 0) {\n return; // No groups configured, skip\n }\n\n // TODO: Implement renderGroupsAsSections option\n // If opts.renderGroupsAsSections === true:\n // - Create separate entity sections for each metadata group\n // - Each section gets its own meta-data-form widget with only that group's fields\n // If opts.renderGroupsAsSections === false (default):\n // - Create single section with all groups (current behavior)\n // - Single meta-data-form widget receives all groups, renders them as cards\n\n // Current implementation: renderGroupsAsSections = false (default)\n // Create a single section and single meta-data-form widget for all groups\n const sectionId = 'metadata-section';\n const formFieldName = META_DATA_FORM_FIELD;\n const groupId = 'metadata-group';\n\n // Ensure entity group exists\n if (!entityCtx.groups.list().some((g: any) => g.id === groupId)) {\n entityCtx.groups.add({\n id: groupId,\n title: displayTitle,\n } as any);\n }\n\n // Ensure meta-data-form property exists with all groups\n // Always update the property to ensure groups are passed correctly\n const existingProp = entityCtx.properties.list().find((p: any) => p.name === formFieldName);\n const groupsData = metaDataValue.groups.map((group) => ({\n name: group.name,\n title: group.title,\n description: group.description,\n fields: group.fields,\n }));\n\n if (!existingProp) {\n entityCtx.properties.add({\n name: formFieldName,\n title: displayTitle,\n groupId: groupId,\n schema: {\n dataType: 'object',\n interface: {\n type: 'meta-data-form-editor',\n options: {\n // Pass all groups so the form can render them as separate groups\n groups: groupsData,\n },\n },\n },\n } as any);\n } else {\n // Update existing property to ensure groups are set\n if (existingProp.schema?.interface?.options) {\n existingProp.schema.interface.options.groups = groupsData;\n }\n }\n\n // Add to single view - single section\n entityCtx.interfaces.master.single.update((single: any) => {\n const next: any = single ?? { title: entityCtx.entity.title, sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: displayTitle,\n order: 300,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === formFieldName)) {\n next.properties.push({\n name: formFieldName,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 0 } },\n },\n });\n }\n return next;\n });\n\n // Add to create view - single section\n entityCtx.interfaces.master.create.update((create: any) => {\n const next: any = create ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === formFieldName)) {\n next.properties.push({\n name: formFieldName,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 10 } },\n },\n });\n }\n return next;\n });\n\n // Add to modify view - single section\n entityCtx.interfaces.master.modify.update((modify: any) => {\n const next: any = modify ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: displayTitle,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === formFieldName)) {\n next.properties.push({\n name: formFieldName,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 10 } },\n },\n });\n }\n return next;\n });\n },\n };\n\n // Register the middleware (if middleware system exists)\n // Note: This is conceptual - actual implementation depends on platform capabilities\n // (ctx as any).middleware?.add?.(metadataMiddleware);\n\n //#endregion\n\n //#region ---- Step 3: Popup actions (when display is popup or both) ----\n\n if (showPopup) {\n const actionName = `show-meta-data-builder-popup-${field}`;\n const commandName = 'show-meta-data-builder-popup';\n\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [], actions: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n\n ctx.interfaces.master.list.update((list) => {\n const next: any = list ?? { actions: [], views: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n }\n\n //#endregion\n\n //#region ---- Step 4: Extension Metadata ----\n\n // Stamp normalized config for middleware\n (ctx.entity as any).extensions ??= {};\n (ctx.entity as any).extensions.metaDataBuilder ??= {};\n (ctx.entity as any).extensions.metaDataBuilder[field] = {\n title: displayTitle,\n display: displayConfig,\n };\n\n //#endregion\n },\n};\n","import { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject, Injectable } from '@angular/core';\n\n//#region ---- Meta-Data Builder Record Service ----\n\n/**\n * Contract for loading and persisting the record that holds the meta-data builder field.\n */\nexport abstract class AXMMetaDataBuilderRecordService {\n abstract findRecord(entity: string, id: string): Promise<Record<string, unknown> | null>;\n\n abstract updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>>;\n}\n\n@Injectable()\nexport class AXMDefaultMetaDataBuilderRecordService extends AXMMetaDataBuilderRecordService {\n private readonly entityService = inject(AXPEntityService);\n\n override findRecord(entity: string, id: string): Promise<Record<string, unknown> | null> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.byKey(id) as Promise<Record<string, unknown> | null>;\n }\n\n override updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n const dataAccessor = this.entityService.withEntity(entity).data();\n return dataAccessor.update(id, data) as unknown as Promise<Record<string, unknown>>;\n }\n}\n\n//#endregion\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'axp-meta-data-builder-widget-view',\n template: `<span>{{ display }}</span>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXDecoratorModule],\n})\nexport class AXPMetaDataBuilderWidgetViewComponent extends AXPValueWidgetComponent<unknown> {\n get display(): string {\n const val = this.getValue();\n return Array.isArray(val) ? val.map((v: { title?: string; text?: string }) => v.title || v.text).join(', ') : '';\n }\n}\n","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExecuteCommandResult } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPCommand } from '@acorex/platform/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { META_DATA_SELECTOR_FIELD } from '../config';\nimport { AXMMetaDataBuilderRecordService } from './meta-data-builder-record.service';\n\nexport interface ShowMetaDataBuilderPopupInput {\n entity: string;\n id: string;\n /** Selector field name (default: META_DATA_SELECTOR_FIELD) */\n field?: string;\n title?: string;\n}\n\n/**\n * Opens the meta-data-builder (configuration UI for groups/fields) in a popup.\n * Used when meta-data-builder plugin has display: 'popup' or 'both'.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ShowMetaDataBuilderPopupCommand\n implements AXPCommand<ShowMetaDataBuilderPopupInput, any> {\n protected readonly layoutBuilder = inject(AXPLayoutBuilderService);\n protected readonly translationService = inject(AXTranslationService);\n protected readonly recordService = inject(AXMMetaDataBuilderRecordService);\n\n async execute(\n input: ShowMetaDataBuilderPopupInput | any\n ): Promise<AXPExecuteCommandResult<any>> {\n try {\n const contextOptions = (input as any).__context__?.options;\n const evaluatedInput: ShowMetaDataBuilderPopupInput = {\n ...contextOptions,\n ...input,\n ...(contextOptions ? contextOptions : {}),\n };\n\n const {\n entity,\n id,\n field = META_DATA_SELECTOR_FIELD,\n title,\n } = evaluatedInput;\n\n if (!entity || !id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.invalid-data'\n ),\n },\n };\n }\n\n const finalId = typeof id === 'string' ? id : String(id);\n if (!finalId) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.invalid-data'\n ),\n },\n };\n }\n\n const currentRecord = await this.findRecord(entity, finalId);\n\n if (!currentRecord) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.not-found'\n ),\n },\n };\n }\n\n const currentSelectorValue = (currentRecord as any)[field] ?? { groups: [] };\n\n const dialogTitle =\n title ??\n (await this.translationService.translateAsync(\n '@data-management:metadata-definitions.actions.configure-meta-data.title'\n ));\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPExecuteCommandResult<any>>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('lg')\n .setCloseButton(true)\n .setContext({\n ...currentRecord,\n [field]: currentSelectorValue,\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px');\n flex.formField('', (fieldBuilder) => {\n fieldBuilder\n .path(field)\n .setShowLabel(false)\n .customWidget('meta-data-builder-editor', {});\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n const context = dialogRef.context();\n const action = dialogRef.action();\n if (!context || action === 'cancel') {\n return { success: false };\n }\n const updateData = { [field]: context[field] };\n const updated = await this.updateRecord(entity, finalId, updateData);\n return {\n success: true,\n data: updated,\n message: {\n text: await this.translationService.translateAsync(\n '@general:messages.entity.updated'\n ),\n },\n };\n });\n })\n .show();\n\n return result;\n } catch (error) {\n return {\n success: false,\n message: {\n text:\n error instanceof Error\n ? error.message\n : 'Failed to show meta data builder popup',\n },\n };\n }\n }\n\n //#region ---- Overridable Methods ----\n\n /**\n * Loads a record by entity and id. Delegates to {@link AXMMetaDataBuilderRecordService}.\n * Override in a subclass to use custom logic instead of the injected service.\n */\n protected findRecord(\n entity: string,\n id: string,\n ): Promise<Record<string, unknown> | null> {\n return this.recordService.findRecord(entity, id);\n }\n\n /**\n * Persists meta-data changes. Delegates to {@link AXMMetaDataBuilderRecordService}.\n * Override in a subclass to use custom logic instead of the injected service.\n */\n protected updateRecord(\n entity: string,\n id: string,\n data: Record<string, unknown>,\n ): Promise<Record<string, unknown>> {\n return this.recordService.updateRecord(entity, id, data);\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport { AXPMetaDataBuilderWidget } from './meta-data-builder';\nimport { AXPMetaDataFormWidget } from './meta-data-form';\n\n//#endregion\n\n//#region ---- Meta Data Widgets Provider ----\n\nconst WIDGETS = [AXPMetaDataBuilderWidget, AXPMetaDataFormWidget];\n\n@Injectable()\nexport class AXMMetaDataWidgetsProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return WIDGETS;\n }\n}\n\n//#endregion\n","import { AXPEntityCommandScope } from '@acorex/platform/common';\nimport { actionExists, AXPEntityActionPlugin } from '@acorex/platform/layout/entity';\nimport { META_DATA_FORM_FIELD } from '../config';\n\n/**\n * Display configuration for section\n */\nexport type MetaDataFormSectionConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/**\n * Display configuration for popup\n */\nexport type MetaDataFormPopupConfig = {\n enabled?: boolean;\n title?: string;\n order?: number;\n};\n\n/**\n * Flexible display configuration object\n */\nexport type MetaDataFormDisplayConfig = {\n section?: MetaDataFormSectionConfig;\n popup?: MetaDataFormPopupConfig;\n};\n\n/**\n * Display option - supports both simple string format and flexible object format\n */\nexport type MetaDataFormDisplay = MetaDataFormDisplayConfig | 'section' | 'popup' | 'both';\n\nexport type MetaDataFormPluginOptions = {\n // property name to hold meta data form, e.g., default is 'metaDataForm'\n field?: string;\n // path: string (field name - plugin will auto-detect category vs relationship lookup)\n path: string;\n // how to display the form - flexible configuration or simple string format\n display?: MetaDataFormDisplay;\n};\n\n/**\n * Normalizes display option to object format\n * Converts simple string format ('section' | 'popup' | 'both') to object format\n */\nfunction normalizeDisplayConfig(\n display: MetaDataFormDisplay | undefined,\n defaultTitle: string,\n): MetaDataFormDisplayConfig {\n // If not provided, default to section enabled\n if (!display) {\n return { section: { enabled: true } };\n }\n\n // If already an object, return as-is\n if (typeof display === 'object') {\n return display;\n }\n\n // Convert string format to object format\n switch (display) {\n case 'section':\n return {\n section: {\n enabled: true,\n title: defaultTitle,\n },\n popup: {\n enabled: false,\n },\n };\n case 'popup':\n return {\n section: {\n enabled: false,\n },\n popup: {\n enabled: true,\n title: defaultTitle,\n },\n };\n case 'both':\n return {\n section: {\n enabled: true,\n title: defaultTitle,\n },\n popup: {\n enabled: true,\n title: defaultTitle,\n },\n };\n default:\n // Fallback to section enabled\n return { section: { enabled: true } };\n }\n}\n\n/**\n * meta-data-form plugin\n * Notes:\n * - Always ensures a 'meta-data-form' group and single-view section\n * - Always ensures the property exists if missing\n * - Uses provided configuration options; others are fixed\n * - Requires path option (field name) to auto-detect metadata source\n * - Only applies if path field is a lookup-editor with valid entity option\n * - Auto-detects category lookup vs relationship lookup based on field definition\n * - field defaults to 'metaDataForm', title defaults to 'Meta Data Form'\n * - Silently ignores if path field is not properly configured\n */\nexport const metaDataFormPlugin: AXPEntityActionPlugin = {\n name: 'meta-data-form',\n order: 60,\n apply: (ctx, options?: MetaDataFormPluginOptions) => {\n if (!options?.path || options.path.trim().length === 0) {\n throw new Error('meta-data-form plugin requires a path option (field name) to auto-detect metadata source');\n }\n\n const field = options.field ?? META_DATA_FORM_FIELD;\n const defaultTitle = '@data-management:metadata-definitions.components.meta-data-form.title';\n\n // Normalize display configuration (convert string format to object format if needed)\n const displayConfig = normalizeDisplayConfig(options.display, defaultTitle);\n // Handle both 'section' and 'sections' for backward compatibility\n const sectionConfig = (displayConfig as any).section ?? (displayConfig as any).sections ?? {};\n const popupConfig = displayConfig.popup ?? {};\n\n // Determine if section and popup should be shown\n // Default: section enabled if not explicitly disabled, popup disabled if not explicitly enabled\n const showSection = sectionConfig.enabled !== false; // Default true\n const showPopup = popupConfig.enabled === true; // Default false\n\n // Get titles (use display config titles or fallback to default)\n const sectionTitle = sectionConfig.title ?? defaultTitle;\n const popupTitle = popupConfig.title ?? defaultTitle;\n // Use section title for group/property title, fallback to default\n const groupTitle = sectionTitle;\n\n // Smart detection: analyze the path field to determine metadata source\n const props = ctx.properties.list();\n const pathProperty = props.find((p: any) => p.name === options.path);\n\n // Only apply plugin if path field is a lookup-editor with valid entity\n //|| pathProperty.schema.interface.type !== 'lookup-editor'\n if (!pathProperty?.schema?.interface?.type) {\n return; // Ignore - path field is not a lookup-editor\n }\n\n const targetEntity = pathProperty.schema.interface.options?.['entity'];\n if (!targetEntity) {\n return; // Ignore - path field doesn't have valid entity option\n }\n\n let metadataExpression: string;\n\n if (targetEntity.endsWith('Category')) {\n // Scenario 1: Category lookup - use fromCategory\n metadataExpression = `{{ metadata.fromCategory(\"${ctx.entity.module}.${ctx.entity.name}\", context.eval('${options.path}')) }}`;\n } else {\n // Scenario 2: Relationship lookup - use fromEntity\n metadataExpression = `{{ metadata.fromEntity(\"${targetEntity}\", context.eval('${options.path}')) }}`;\n }\n\n // Ensure group and section ids (unique per field)\n const sectionId = `meta-data-form-${field}`;\n const groupIdForProperty = `meta-data-form-${field}`;\n const existingGroups = ctx.groups.list() ?? [];\n if (!existingGroups.some((g: any) => g.id === groupIdForProperty)) {\n ctx.groups.add({ id: groupIdForProperty, title: groupTitle } as any);\n }\n\n // Ensure property exists (using meta-data-form-editor interface)\n if (!props.some((p: any) => p.name === field)) {\n ctx.properties.add({\n name: field,\n title: groupTitle,\n groupId: groupIdForProperty,\n schema: {\n dataType: 'string',\n interface: {\n type: 'meta-data-form-editor',\n options: {\n groups: metadataExpression,\n },\n },\n },\n } as any);\n }\n\n // Ensure column exists\n // const cols = ctx.columns.list() ?? [];\n // if (!cols?.some((c: any) => c.name === field)) {\n // ctx.columns.add({ name: field } as any);\n // }\n\n // Display configuration is already parsed above\n\n // Ensure single view section and property layout exists (only if showSection is true)\n const sectionOrder = 9;\n const colSpan = 12;\n if (showSection) {\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: sectionTitle,\n order: sectionConfig.order ?? 200,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan, order: sectionOrder } },\n },\n });\n }\n return next;\n });\n\n // Ensure create view includes the section and property layout\n ctx.interfaces.master.create.update((create) => {\n const next: any = create ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: sectionTitle,\n order: sectionConfig.order,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n\n // Ensure update view includes the section and property layout\n ctx.interfaces.master.modify.update((modify) => {\n const next: any = modify ?? { sections: [], properties: [] };\n next.sections = next.sections ?? [];\n if (!next.sections.some((s: any) => s.id === sectionId)) {\n next.sections.push({\n id: sectionId,\n title: sectionTitle,\n order: sectionConfig.order,\n });\n }\n next.properties = next.properties ?? [];\n if (!next.properties.some((p: any) => p.name === field)) {\n next.properties.push({\n name: field,\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan, order: 7 } },\n },\n });\n }\n return next;\n });\n }\n\n // Add popup actions to entity views (only if showPopup is true)\n // Only apply to single and list views\n if (showPopup) {\n const actionName = `show-meta-data-form-popup-${field}`;\n const commandName = 'show-meta-data-form-popup';\n\n // Add action to single view\n ctx.interfaces.master.single.update((single) => {\n const next: any = single ?? { title: ctx.entity.title, sections: [], properties: [], actions: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field: field,\n path: options.path,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n\n // Add action to list view\n ctx.interfaces.master.list.update((list) => {\n const next: any = list ?? { actions: [], views: [] };\n next.actions = next.actions ?? [];\n if (!actionExists(next.actions, commandName, actionName)) {\n next.actions.push({\n name: actionName,\n title: popupTitle,\n command: {\n name: commandName,\n options: {\n entity: `${ctx.entity.module}.${ctx.entity.name}`,\n id: '{{ context.eval(\"id\") }}',\n field: field,\n path: options.path,\n title: popupTitle,\n },\n },\n priority: 'secondary',\n type: 'configure',\n icon: 'fa-light fa-list-check',\n scope: AXPEntityCommandScope.Individual,\n });\n }\n return next;\n });\n }\n\n // Stamp normalized config for middleware\n (ctx.entity as any).extensions ??= {};\n (ctx.entity as any).extensions.metaDataForm ??= {};\n (ctx.entity as any).extensions.metaDataForm[field] = {\n title: groupTitle,\n path: options.path,\n display: displayConfig,\n };\n },\n};\n","import { NgModule } from '@angular/core';\nimport {\n AXMMetaDataBuilderRecordService,\n AXMDefaultMetaDataBuilderRecordService,\n} from './meta-data-builder/meta-data-builder-record.service';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex/platform/layout/widget-core';\nimport { AXP_ENTITY_ACTION_PLUGIN } from '@acorex/platform/layout/entity';\nimport { AXMMetaDataWidgetsProvider } from './widget-definition.provider';\nimport { metaDataBuilderPlugin } from './meta-data-builder';\nimport { metaDataFormPlugin } from './meta-data-form/meta-data-form.plugin';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: metaDataBuilderPlugin },\n { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: metaDataFormPlugin },\n {\n provide: AXMMetaDataBuilderRecordService,\n useClass: AXMDefaultMetaDataBuilderRecordService,\n },\n { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXMMetaDataWidgetsProvider, multi: true },\n ],\n})\nexport class AXMMetaDataFeatureModule {}","import { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPMultiLanguageStringResolverService,\n compareMultiLanguageStrings,\n type AXPActionMenuItem,\n type AXPMultiLanguageString,\n} from '@acorex/platform/core';\nimport { AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY } from '@acorex/platform/layout/builder';\nimport { AXPItemConfiguratorComponent, type ItemConfiguratorListItem } from '@acorex/platform/layout/components';\nimport { AXPWidgetRegistryService, type AXPWidgetNode } from '@acorex/platform/layout/widget-core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { cloneDeep } from 'lodash-es';\n\nimport { AXMMetaDataDefinitionEntityModel } from '../../../../entities/meta-data-definition';\nimport { AXMMetaDataDefinitionService } from '../../../../entities/meta-data-definition/meta-data-definition.service';\nimport { AXPMetaDataFormWidget } from '../../meta-data-form/meta-data-form.config';\n\n//#region ---- Helpers ----\n\nfunction parseInterfaceToWidgetNode(\n raw: AXMMetaDataDefinitionEntityModel['interface'],\n): AXPWidgetNode | null {\n if (raw == null) {\n return null;\n }\n if (typeof raw === 'function') {\n return null;\n }\n if (typeof raw === 'string') {\n const t = raw.trim();\n if (!t) {\n return null;\n }\n try {\n const parsed = JSON.parse(t) as unknown;\n if (parsed && typeof parsed === 'object' && parsed !== null && 'type' in parsed) {\n return parsed as AXPWidgetNode;\n }\n } catch {\n return { type: t, options: {} };\n }\n return { type: t, options: {} };\n }\n if (typeof raw === 'object' && raw !== null && 'type' in raw) {\n return cloneDeep(raw as AXPWidgetNode);\n }\n return null;\n}\n\nfunction iconForInterfaceWidget(\n registry: AXPWidgetRegistryService,\n interfaceValue: AXMMetaDataDefinitionEntityModel['interface'],\n): string {\n const node = parseInterfaceToWidgetNode(interfaceValue);\n const type = node?.type?.trim();\n if (type) {\n const cfg = registry.getOptional(type);\n if (cfg?.icon) {\n return cfg.icon;\n }\n }\n return AXPMetaDataFormWidget.icon ?? 'fa-light fa-list-check';\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Select a meta-data definition (entity record) and preview its interface widget, mirroring\n * {@link AXPWidgetFieldConfiguratorComponent} but backed by {@link AXMMetaDataDefinitionService}.\n */\n@Component({\n selector: 'axm-meta-data-configurator',\n standalone: true,\n template: `\n <axp-item-configurator\n [(selectedItemId)]=\"definitionId\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [items]=\"configuratorItems()\"\n [headerActions]=\"previewHeaderActions()\"\n />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ax-flex ax-flex-col',\n '[attr.readonly]': 'readonly() ? \"\" : null',\n },\n styles: [\n `\n :host([readonly]) {\n pointer-events: none;\n opacity: 0.7;\n }\n `,\n ],\n imports: [AXPItemConfiguratorComponent],\n})\nexport class AXMetaDataConfiguratorComponent {\n //#region ---- Inputs ----\n\n /** When set, uses this list instead of loading from {@link AXMMetaDataDefinitionService}. */\n items = input<AXMMetaDataDefinitionEntityModel[] | undefined>(undefined);\n\n label = input<string>('@data-management:metadata-definitions.components.meta-data-configurator.label');\n\n /** Selected meta-data definition id (entity id). */\n definitionId = model<string>('');\n\n /** Optional preview field name override; defaults to the selected definition's `name`. */\n fieldName = input<string | undefined>(undefined);\n\n /** Optional preview field title override; defaults to the selected definition's `title`. */\n fieldTitle = input<AXPMultiLanguageString | undefined>(undefined);\n\n readonly = input<boolean>(false);\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly metaDataDefinitionService = inject(AXMMetaDataDefinitionService);\n private readonly translation = inject(AXTranslationService);\n private readonly mlResolver = inject(AXPMultiLanguageStringResolverService);\n private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n\n /** Recomputes list labels when the active locale changes. */\n private readonly activeLocale = toSignal(this.mlResolver.currentLocale$, {\n initialValue: this.translation.getActiveLang(),\n });\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly loadedItems = signal<AXMMetaDataDefinitionEntityModel[]>([]);\n private readonly fetchOnce = signal(false);\n\n //#endregion\n\n //#region ---- Computed ----\n\n protected definitions = computed<AXMMetaDataDefinitionEntityModel[]>(() => {\n const override = this.items();\n if (override !== undefined) {\n return override;\n }\n return this.loadedItems();\n });\n\n protected configuratorItems = computed<ItemConfiguratorListItem[]>(() => {\n this.activeLocale();\n const list: ItemConfiguratorListItem[] = [];\n for (const d of this.definitions()) {\n const id = d?.id != null ? String(d.id) : '';\n if (!id) {\n continue;\n }\n let label = this.mlResolver.resolve(d.title as AXPMultiLanguageString);\n if (!label.trim()) {\n label =\n typeof d.name === 'string'\n ? d.name\n : this.mlResolver.resolve(d.name as AXPMultiLanguageString);\n }\n label = label.trim() || id;\n const descRaw = d.description;\n let description: string | undefined;\n if (descRaw != null && descRaw !== '') {\n const text = this.mlResolver.resolve(descRaw as AXPMultiLanguageString).trim();\n if (text) {\n description = text;\n }\n }\n list.push({\n id,\n title: label,\n icon: iconForInterfaceWidget(this.widgetRegistry, d.interface),\n ...(description != null ? { description } : {}),\n });\n }\n const locale = this.activeLocale() ?? this.translation.getActiveLang();\n return list.sort((a, b) => compareMultiLanguageStrings(a.title, b.title, locale));\n });\n\n protected selectedDefinition = computed<AXMMetaDataDefinitionEntityModel | null>(() => {\n const id = this.definitionId();\n if (!id) {\n return null;\n }\n return this.definitions().find((d) => String(d.id) === id) ?? null;\n });\n\n protected previewHeaderActions = computed<AXPActionMenuItem[]>(() => {\n const def = this.selectedDefinition();\n const widget = def ? parseInterfaceToWidgetNode(def.interface) : null;\n const hasWidget = !!widget?.type;\n const fieldName = this.fieldName() ?? def?.name ?? 'Field';\n const fieldTitle = this.fieldTitle() ?? def?.title ?? '';\n return [\n {\n name: 'preview-meta-data-definition-interface',\n title: '@general:actions.preview.title',\n icon: 'fa-solid fa-eye',\n iconOnly: true,\n disabled: this.readonly() || !hasWidget,\n command: {\n name: AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY,\n options: {\n widget: cloneDeep(widget ?? { type: '', options: {} }),\n fieldName,\n fieldTitle,\n },\n },\n },\n ];\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n effect(() => {\n const override = this.items();\n if (override !== undefined) {\n return;\n }\n if (untracked(() => this.fetchOnce())) {\n return;\n }\n untracked(() => this.fetchOnce.set(true));\n void (async () => {\n try {\n const result = await this.metaDataDefinitionService.query({ skip: 0, take: 2000 });\n this.loadedItems.set(result.items ?? []);\n } catch {\n this.loadedItems.set([]);\n }\n })();\n });\n\n effect(() => {\n const id = this.definitionId();\n const defs = this.definitions();\n if (!id || defs.some((d) => String(d.id) === id)) {\n return;\n }\n void (async () => {\n try {\n const one = await this.metaDataDefinitionService.getOne(id);\n untracked(() => {\n this.loadedItems.update((cur) => {\n if (cur.some((d) => String(d.id) === String(one.id))) {\n return cur;\n }\n return [...cur, one];\n });\n });\n } catch {\n /* keep current list */\n }\n })();\n });\n }\n\n //#endregion\n}\n","\n//#region ---- System Tag Provider ----\n\nimport { AXPTagProvider, AXPTag } from \"@acorex/platform/core\";\n\n/**\n * Default system tag provider\n * Provides readonly system-level tags\n */\nexport class AXPSystemTagProvider extends AXPTagProvider {\n name = 'system';\n\n /**\n * Provide default system tags\n */\n async provide(): Promise<AXPTag[]> {\n return [\n {\n id: 'system-important',\n title: 'Important',\n color: '#F44336', // Red - Material Design\n scope: 'system',\n description: 'Marks items as important',\n },\n {\n id: 'system-urgent',\n title: 'Urgent',\n color: '#FF9800', // Orange - Material Design\n scope: 'system',\n description: 'Marks items as urgent',\n },\n {\n id: 'system-todo',\n title: 'To Do',\n color: '#2196F3', // Blue - Material Design\n scope: 'system',\n description: 'Items pending action',\n },\n {\n id: 'system-in-progress',\n title: 'In Progress',\n color: '#03A9F4', // Light Blue - Material Design\n scope: 'system',\n description: 'Currently being worked on',\n },\n {\n id: 'system-completed',\n title: 'Completed',\n color: '#4CAF50', // Green - Material Design\n scope: 'system',\n description: 'Finished items',\n },\n {\n id: 'system-blocked',\n title: 'Blocked',\n color: '#FF5722', // Deep Orange - Material Design\n scope: 'system',\n description: 'Items that are blocked',\n },\n {\n id: 'system-review',\n title: 'Review',\n color: '#FFC107', // Amber - Material Design\n scope: 'system',\n description: 'Items pending review',\n },\n {\n id: 'system-bug',\n title: 'Bug',\n color: '#E91E63', // Pink - Material Design\n scope: 'system',\n description: 'Bug reports',\n },\n {\n id: 'system-feature',\n title: 'Feature',\n color: '#009688', // Teal - Material Design\n scope: 'system',\n description: 'New feature requests',\n },\n {\n id: 'system-documentation',\n title: 'Documentation',\n color: '#00BCD4', // Cyan - Material Design\n scope: 'system',\n description: 'Documentation related',\n },\n ];\n }\n\n // System tags are readonly - no create/update/delete\n}\n\n//#endregion\n\n","import {\n AXPEntityActionPlugin,\n cloneLayoutArrays,\n ensureLayoutPropertyView,\n ensureLayoutSection,\n ensureListActions,\n} from '@acorex/platform/layout/entity';\nimport { AXPWidgetsList } from '@acorex/modules/common';\n\n//#region ---- Types ----\n\nexport interface AXPTagPluginOptions {\n propertyName?: string; // default: tags\n placeholder?: string; // default: '@general:widgets.tag-editor.placeholder'\n hasClearButton?: boolean; // default: true\n allowDuplicate?: boolean; // default: false\n showInList?: boolean; // default: false\n}\n\n//#endregion\n\n//#region ---- Plugin Definition ----\n\nexport const tagsPlugin: AXPEntityActionPlugin = {\n name: 'tags',\n order: 80,\n apply: (ctx, options?: AXPTagPluginOptions) => {\n ensureListActions(ctx);\n\n const propertyName = options?.propertyName?.trim()?.length ? options.propertyName : 'tags';\n const placeholder = options?.placeholder ?? '@general:widgets.tag-editor.placeholder';\n const hasClearButton = options?.hasClearButton ?? true;\n const allowDuplicate = options?.allowDuplicate ?? false;\n const showInList = options?.showInList ?? false;\n\n const groupId = 'classification';\n const groups = ctx.groups.list() ?? [];\n if (!groups.some((g: any) => g.id === groupId)) {\n ctx.groups.add({ id: groupId, title: '@general:terms.interface.classification', icon: 'fa-solid fa-tag' });\n }\n\n const props = ctx.properties.list();\n if (!props.some((p: any) => p.name === propertyName)) {\n ctx.properties.add({\n name: propertyName,\n title: '@general:terms.common.tags',\n groupId,\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.TagEditor,\n options: {\n placeholder,\n hasClearButton,\n allowDuplicate,\n },\n },\n },\n validations: [],\n options: {\n sort: { enabled: false },\n filter: {\n advance: { enabled: true },\n inline: { enabled: true },\n },\n },\n } as any);\n }\n\n // Add tags to columns for list view\n const columns = ctx.columns.list() ?? [];\n if (!columns.some((c: any) => c.name === propertyName)) {\n ctx.columns.add({\n name: propertyName,\n title: '@general:terms.common.tags',\n width: 200,\n sortable: false,\n filterable: true,\n visible: showInList,\n } as any);\n }\n\n const applyLayoutPatch = (layout: any) => {\n const next = cloneLayoutArrays(layout);\n ensureLayoutSection(next, { id: groupId, order: 150 } as any);\n ensureLayoutPropertyView(next, {\n name: propertyName,\n layout: { positions: { lg: { colSpan: 6, order: 24 } } },\n } as any);\n return next;\n };\n\n ctx.interfaces.master.create.update((create) => applyLayoutPatch(create ?? { sections: [], properties: [] }));\n ctx.interfaces.master.modify.update((modify) => applyLayoutPatch(modify ?? { sections: [], properties: [] }));\n ctx.interfaces.master.single.update((single) => applyLayoutPatch(single ?? { title: ctx.entity.title, sections: [], properties: [] }));\n },\n};\n\n//#endregion\n\n","\n//#region ---- System Tag Provider ----\n\nimport { AXPTagProvider, AXPTag } from \"@acorex/platform/core\";\nimport { AXMTagEntityService } from \"../../entities\";\nimport { inject } from \"@angular/core\";\n\n/**\n * Default system tag provider\n * Provides readonly system-level tags\n */\nexport class AXPUserTagProvider extends AXPTagProvider {\n name = 'user';\n\n private tagService = inject(AXMTagEntityService);\n\n /**\n * Provide default system tags\n */\n async provide(): Promise<AXPTag[]> {\n const tags = await this.tagService.query();\n return tags.items.map((tag) => ({\n id: tag.id,\n title: tag.title,\n color: tag.color,\n scope: tag.scope,\n description: tag.description,\n }));\n }\n\n}\n\n//#endregion\n\n","import { NgModule } from '@angular/core';\nimport { AXP_TAG_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_ACTION_PLUGIN } from '@acorex/platform/layout/entity';\nimport { tagsPlugin } from './tags.plugin';\nimport { AXPSystemTagProvider } from './tag-system.provider';\nimport { AXPUserTagProvider } from './tag-user.provider';\n\n//#region ---- Module ----\n\n@NgModule({\n providers: [\n { provide: AXP_ENTITY_ACTION_PLUGIN, useValue: tagsPlugin, multi: true },\n { provide: AXP_TAG_PROVIDER, useClass: AXPSystemTagProvider, multi: true },\n { provide: AXP_TAG_PROVIDER, useClass: AXPUserTagProvider, multi: true },\n ],\n})\nexport class AXMTagsFeatureModule { }\n\n//#endregion\n\n","import { NgModule } from \"@angular/core\";\nimport {\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n AXP_FEATURE_DEFINITION_PROVIDER,\n AXP_DATASOURCE_DEFINITION_PROVIDER,\n provideLazyProvider,\n} from '@acorex/platform/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex/platform/layout/components';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { DataManagementManifest } from './manifest';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXMDataManagementWidgetsProvider } from './widget-definition.provider';\nimport { AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { AXMMetadataEvaluatorScopeProvider } from './features/meta-data/metadata-evaluator-scope.provider';\nimport { AXMDataSourceEvaluatorScopeProvider } from './features/shared/data-source-evaluator-scope.provider';\nimport { AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER } from './features/query-builder/aggregate/default-aggregate-function.provider';\nimport { AXP_DEFAULT_AGGREGATE_CATEGORY_PROVIDER } from './features/query-builder/aggregate/default-aggregate-category.provider';\nimport { AXP_DEFAULT_DATABASE_TYPE_PROVIDER } from './features/query-builder/database-type/default-database-type.provider';\nimport { RootConfig } from './const';\nimport { AXPDataManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXMChoiceOptionsDataSourceDefinition } from './features/shared/choice-options.datasource';\nimport { AXMDataSourceListDataSourceDefinition } from './features/shared/datasources-list.datasource';\n\n// Entity Modules\nimport {\n AXMQueryEntityModule,\n AXMDataSourceEntityModule,\n AXMMetaDataDefinitionEntityModule,\n AXMTagEntityModule,\n} from './entities';\n\nimport { AXMMetaDataFeatureModule } from \"./features\";\nimport { AXMTagsFeatureModule } from \"./features/tags\";\n\n@NgModule({\n imports: [\n AXPWidgetCoreModule,\n // Entity Modules\n AXMQueryEntityModule,\n AXMDataSourceEntityModule,\n //\n AXMMetaDataDefinitionEntityModule,\n AXMMetaDataFeatureModule,\n //\n AXMTagEntityModule,\n AXMTagsFeatureModule\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMMetadataEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMDataSourceEvaluatorScopeProvider,\n multi: true,\n },\n // Aggregate Function Provider - Default provider for built-in aggregate functions\n AXP_DEFAULT_AGGREGATE_FUNCTION_PROVIDER,\n // Aggregate Category Provider - Default provider for aggregate categories\n AXP_DEFAULT_AGGREGATE_CATEGORY_PROVIDER,\n // Database Type Provider - Default provider for database types (MySQL, PostgreSQL, etc.)\n AXP_DEFAULT_DATABASE_TYPE_PROVIDER,\n // Execute Query Command\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.query.name}:Execute`,\n command: () => import('./features/query-builder/commands/execute-query.command').then((c) => c.ExecuteQueryCommand),\n },\n {\n key: 'show-meta-data-form-popup',\n command: () => import('./features/meta-data/meta-data-form/show-meta-data-form-popup.command').then((c) => c.ShowMetaDataFormPopupCommand),\n },\n {\n key: 'show-meta-data-builder-popup',\n command: () =>\n import('./features/meta-data/meta-data-builder/show-meta-data-builder-popup.command').then(\n (c) => c.ShowMetaDataBuilderPopupCommand\n ),\n },\n ]),\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: DataManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPDataManagementFeatureDefinitionProvider,\n multi: true,\n },\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 provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_DATASOURCE_DEFINITION_PROVIDER,\n useClass: AXMDataSourceListDataSourceDefinition,\n multi: true,\n },\n {\n provide: AXP_DATASOURCE_DEFINITION_PROVIDER,\n useClass: AXMChoiceOptionsDataSourceDefinition,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMDataManagementWidgetsProvider,\n multi: true,\n },\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/meta-data/meta-data-builder/meta-data-builder-page').then(\n (m) => m.AXMMetaDataBuilderPageComponentProvider\n ),\n ),\n ]\n})\nexport class AXMDataManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i1","i6","i5","i7","i8","i9","i10","WIDGETS"],"mappings":"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"}