@acorex-platform/module-platform-management-client 0.0.37 → 0.0.46

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 (87) hide show
  1. package/fesm2022/{acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-BGVhn6wv.mjs → acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs} +465 -101
  2. package/fesm2022/acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-YuJijjKh.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-command-definition.mjs +20 -0
  4. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-command-definition.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-access-policy.mjs +20 -0
  6. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-access-policy.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-definition.mjs +1499 -30
  8. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-entity-definition.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-module-definition.mjs +396 -0
  10. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-module-definition.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-plugin-definition.mjs +20 -0
  12. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-plugin-definition.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-query-definition.mjs +49 -1
  14. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-query-definition.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-token.mjs +20 -0
  16. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-token.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-widget.mjs +20 -0
  18. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entities-widget.mjs.map +1 -1
  19. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-acorex-platform-module-platform-management-client-contracts-entity-catalog-BOwC5Ns9.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-acorex-platform-module-platform-management-client-contracts-entity-catalog-HWczTPH2.mjs} +15 -8
  20. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-acorex-platform-module-platform-management-client-contracts-entity-catalog-HWczTPH2.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-command-definition.entity-CdvQlwAk.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-command-definition.entity-C3B1_QMs.mjs} +16 -2
  22. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-command-definition.entity-C3B1_QMs.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-access-policy.entity-Dye4aSKE.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-access-policy.entity-BPkJloHy.mjs} +16 -2
  24. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-access-policy.entity-BPkJloHy.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-definition.entity-BL1I9pmK.mjs +1621 -0
  26. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-definition.entity-BL1I9pmK.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-module-definition.entity-Cknl0vbc.mjs +299 -0
  28. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-module-definition.entity-Cknl0vbc.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-plugin-definition.entity-CwU5hMjI.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-plugin-definition.entity-BxABTl8L.mjs} +16 -2
  30. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-plugin-definition.entity-BxABTl8L.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-query-definition.entity-DGK684Q1.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-query-definition.entity-Cv6HVQOU.mjs} +45 -3
  32. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-query-definition.entity-Cv6HVQOU.mjs.map +1 -0
  33. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-token.entity-DI_k6-ha.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-token.entity-BV8iSuoK.mjs} +16 -2
  34. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-token.entity-BV8iSuoK.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-module-platform-management-client-contracts-entity-catalog-widget.entity-C18msniH.mjs → acorex-platform-module-platform-management-client-contracts-entity-catalog-widget.entity-BYH6SIqU.mjs} +16 -2
  36. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-widget.entity-BYH6SIqU.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog.mjs +1 -1
  38. package/fesm2022/acorex-platform-module-platform-management-client-contracts.mjs +1664 -1
  39. package/fesm2022/acorex-platform-module-platform-management-client-contracts.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query-contract.util-D_af2BUi.mjs +586 -0
  41. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query-contract.util-D_af2BUi.mjs.map +1 -0
  42. package/fesm2022/{acorex-platform-module-platform-management-client-create-user-query.command-9Ku7C1BC.mjs → acorex-platform-module-platform-management-client-create-user-query.command-Bh49QHkl.mjs} +374 -324
  43. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.command-Bh49QHkl.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-module-platform-management-client-entity-definition-form-page.component-BgBWob9p.mjs +329 -0
  45. package/fesm2022/acorex-platform-module-platform-management-client-entity-definition-form-page.component-BgBWob9p.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-module-platform-management-client-entity-definition-form-page.provider-hLzgoJu3.mjs +23 -0
  47. package/fesm2022/acorex-platform-module-platform-management-client-entity-definition-form-page.provider-hLzgoJu3.mjs.map +1 -0
  48. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-CZM6JQou.mjs +197 -0
  49. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-CZM6JQou.mjs.map +1 -0
  50. package/fesm2022/acorex-platform-module-platform-management-client-local-entities.mjs +1 -0
  51. package/fesm2022/acorex-platform-module-platform-management-client-local-entities.mjs.map +1 -1
  52. package/fesm2022/{acorex-platform-module-platform-management-client-menu-list.component-uF5w1c7t.mjs → acorex-platform-module-platform-management-client-menu-list.component-iMEnFPEY.mjs} +2 -2
  53. package/fesm2022/{acorex-platform-module-platform-management-client-menu-list.component-uF5w1c7t.mjs.map → acorex-platform-module-platform-management-client-menu-list.component-iMEnFPEY.mjs.map} +1 -1
  54. package/fesm2022/acorex-platform-module-platform-management-client-query-contract-widget-column.component-COfOzMGh.mjs +45 -0
  55. package/fesm2022/acorex-platform-module-platform-management-client-query-contract-widget-column.component-COfOzMGh.mjs.map +1 -0
  56. package/fesm2022/acorex-platform-module-platform-management-client-query-contract-widget-edit.component-BW2pBOeg.mjs +166 -0
  57. package/fesm2022/acorex-platform-module-platform-management-client-query-contract-widget-edit.component-BW2pBOeg.mjs.map +1 -0
  58. package/fesm2022/acorex-platform-module-platform-management-client-query-contract-widget-view.component-DD9ETjFD.mjs +45 -0
  59. package/fesm2022/acorex-platform-module-platform-management-client-query-contract-widget-view.component-DD9ETjFD.mjs.map +1 -0
  60. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-B0g6dweQ.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DRkE2a7n.mjs} +2 -2
  61. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-B0g6dweQ.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-column.component-DRkE2a7n.mjs.map} +1 -1
  62. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-A0v5MWRU.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-CXI6fJi3.mjs} +2 -3
  63. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-A0v5MWRU.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-edit.component-CXI6fJi3.mjs.map} +1 -1
  64. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-RR5zcsnI.mjs → acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-C3iHgoC2.mjs} +2 -2
  65. package/fesm2022/{acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-RR5zcsnI.mjs.map → acorex-platform-module-platform-management-client-rest-api-generator-widget-view.component-C3iHgoC2.mjs.map} +1 -1
  66. package/fesm2022/acorex-platform-module-platform-management-client-run-user-query.command-BzNa3B48.mjs +144 -0
  67. package/fesm2022/acorex-platform-module-platform-management-client-run-user-query.command-BzNa3B48.mjs.map +1 -0
  68. package/fesm2022/acorex-platform-module-platform-management-client.mjs +1 -1
  69. package/package.json +7 -3
  70. package/types/acorex-platform-module-platform-management-client-contracts-entities-module-definition.d.ts +5 -0
  71. package/types/acorex-platform-module-platform-management-client-contracts.d.ts +225 -5
  72. package/types/acorex-platform-module-platform-management-client.d.ts +35 -3
  73. package/fesm2022/acorex-platform-module-platform-management-client-acorex-platform-module-platform-management-client-BGVhn6wv.mjs.map +0 -1
  74. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-acorex-platform-module-platform-management-client-contracts-entity-catalog-BOwC5Ns9.mjs.map +0 -1
  75. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-command-definition.entity-CdvQlwAk.mjs.map +0 -1
  76. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-access-policy.entity-Dye4aSKE.mjs.map +0 -1
  77. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-definition.entity-CcJ58vfr.mjs +0 -158
  78. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-entity-definition.entity-CcJ58vfr.mjs.map +0 -1
  79. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-plugin-definition.entity-CwU5hMjI.mjs.map +0 -1
  80. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-query-definition.entity-DGK684Q1.mjs.map +0 -1
  81. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-token.entity-DI_k6-ha.mjs.map +0 -1
  82. package/fesm2022/acorex-platform-module-platform-management-client-contracts-entity-catalog-widget.entity-C18msniH.mjs.map +0 -1
  83. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.command-9Ku7C1BC.mjs.map +0 -1
  84. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs +0 -71
  85. package/fesm2022/acorex-platform-module-platform-management-client-create-user-query.types-DdygAori.mjs.map +0 -1
  86. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-DjStd3a8.mjs +0 -136
  87. package/fesm2022/acorex-platform-module-platform-management-client-list-registered-entities.query-DjStd3a8.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-platform-management-client-create-user-query.command-Bh49QHkl.mjs","sources":["../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query-persist.util.ts","../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query.wizard.ts","../../../../libs/modules/platform-management/client/src/lib/features/query-definition/create-user-query.command.ts"],"sourcesContent":["import type { AXPFilterDefinition } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityAggregateMeasure, AXPEntityAggregateReducerType } from '@acorex-platform/framework-shared/entity';\nimport type {\n AXMQueryDefinitionEntityModel,\n AXPUserQueryBuilderValue,\n AXPUserQuerySourceSpec,\n} from '@acorex-platform/module-platform-management-client/contracts';\n\nimport { normalizeUserQueryMeasure } from './create-user-query-contract.util';\nimport type { AXPUserQueryEntityFieldItem, AXPUserQueryWizardContext } from './create-user-query.types';\n\n//#region ----- Constants -----\n\nconst VALUE_REDUCERS: readonly AXPEntityAggregateReducerType[] = ['count', 'sum', 'min', 'max', 'avg'];\n\nexport const EMPTY_USER_QUERY_WHERE: AXPFilterDefinition = {\n id: 'root',\n logic: 'and',\n filters: [],\n order: 0,\n title: 'Root',\n widget: { type: 'string-filter', options: {} },\n filterType: { advance: true, inline: true },\n};\n\n//#endregion\n\n//#region ----- Public API -----\n\nexport function emptyUserQueryBuilderValue(): AXPUserQueryBuilderValue {\n return {\n columns: [],\n where: { ...EMPTY_USER_QUERY_WHERE, filters: [] },\n sort: [],\n groupBy: [],\n aggregates: [],\n };\n}\n\nexport function toQueryBuilderDataSource(entityName: string, fields: AXPUserQueryEntityFieldItem[]) {\n const columns = fields.map((field) => ({\n name: field.path,\n title: field.text || field.path,\n datatype: field.dataType || 'string',\n type: field.filterWidget || 'text-editor',\n }));\n\n const filters = fields.map((field) => ({\n id: field.path,\n field: field.path,\n title: field.text || field.path,\n operator: { type: 'equal' as const },\n widget: { type: field.filterWidget || 'string-filter', options: {} },\n filterType: { advance: true, inline: true },\n }));\n\n return {\n name: entityName,\n title: entityName,\n columns,\n filters,\n };\n}\n\nexport function measureFromBuilderValue(\n query: AXPUserQueryBuilderValue | undefined,\n fallback: AXPEntityAggregateMeasure | undefined,\n available: AXPUserQueryEntityFieldItem[],\n): AXPEntityAggregateMeasure {\n const first = query?.aggregates?.find((item) => typeof item?.function === 'string' && item.function.trim());\n if (!first) {\n return normalizeUserQueryMeasure(fallback, available);\n }\n\n const key = first.function.trim().toLowerCase();\n const reducer: AXPEntityAggregateReducerType =\n key === 'average' ? 'avg' : VALUE_REDUCERS.includes(key as AXPEntityAggregateReducerType) ? (key as AXPEntityAggregateReducerType) : 'count';\n if (reducer === 'count') {\n return { reducer: 'count', alias: first.alias?.trim() || 'value' };\n }\n\n return normalizeUserQueryMeasure({ reducer, field: first.field, alias: first.alias?.trim() || 'value' }, available);\n}\n\nexport function toUserQueryDefinitionRow(\n context: AXPUserQueryWizardContext,\n available: AXPUserQueryEntityFieldItem[],\n): AXMQueryDefinitionEntityModel {\n const contract = context.contract;\n if (!contract) {\n throw new Error('contract');\n }\n\n const entityName = typeof context.source?.entity?.entityName === 'string' ? context.source.entity.entityName.trim() : '';\n const fields = context.source?.entity?.fields ?? [];\n const query = (context.source?.entity?.query ?? emptyUserQueryBuilderValue()) as AXPUserQueryBuilderValue;\n const measure = contract.kind === 'value' ? measureFromBuilderValue(query, contract.measure, available) : undefined;\n\n const source: AXPUserQuerySourceSpec = {\n kind: 'entity',\n entityName,\n fields,\n fieldGroups: context.source?.entity?.fieldGroups,\n query,\n ...(measure ? { measure } : {}),\n };\n\n return {\n name: contract.name.trim(),\n catalogTitle: contract.catalogTitle.trim(),\n description: contract.description,\n active: true,\n executionMode: 'backend',\n kind: contract.kind,\n valueType: contract.kind === 'value' ? contract.valueType : undefined,\n binding: contract.kind === 'collection' ? contract.capabilities?.binding : undefined,\n args: { enabled: false },\n filter: contract.capabilities?.filter ?? { enabled: false },\n sort: contract.kind === 'collection' ? contract.capabilities?.sort : { enabled: false },\n paging: contract.kind === 'collection' ? contract.capabilities?.paging : { enabled: false },\n columns: contract.kind === 'value' ? undefined : contract.columns,\n capabilities: ['ai'],\n source,\n stateInfo: { isSystem: false },\n } as AXMQueryDefinitionEntityModel;\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport type { AXPLayoutBuilderService, AXPStepWizardGuardPayload, IDialogBuilder, IFieldsetContainerBuilder, IFlexContainerBuilder, ILayoutBuilder, IPanelContainerBuilder } from '@acorex-platform/framework-client/layout/builder';\nimport { resolveLayoutBuilderDialogResult } from '@acorex-platform/framework-client/layout/builder';\nimport type { AXPEntityResolver } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWidgetsList, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport type { AXRestApiOutput } from '@acorex/components/rest-api-generator';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { QUERY_CONTRACT_WIDGET_NAME } from '../query-contract-widget/query-contract-widget.constants';\nimport { createEmptyRestApiOutput, normalizeRestApiOutput } from '../rest-api-generator-widget/parse-http-request.util';\nimport { REST_API_GENERATOR_WIDGET_NAME } from '../rest-api-generator-widget/rest-api-generator-widget.constants';\nimport {\n assembleEntityQueryContract,\n createDefaultEntityContract,\n flattenEntityFieldItems,\n resolveAvailableContractFields,\n validateEntityQueryContract,\n} from './create-user-query-contract.util';\nimport { emptyUserQueryBuilderValue, toQueryBuilderDataSource } from './create-user-query-persist.util';\nimport { collectSelectedFieldGroupPaths, collectUserQueryEntityFieldGroups, defaultSelectedFieldGroups, numericUserQueryFields, parseEntityFullName, resolvePickedEntityFullName, USER_QUERY_RELATED_DEPTH, withRequiredIdField } from './create-user-query-entity-fields.util';\nimport {\n CREATE_USER_QUERY_ENTITY_CATALOG,\n CREATE_USER_QUERY_WIZARD_NAME,\n CREATE_USER_QUERY_I18N as i18n,\n USER_QUERY_KIND_OPTIONS,\n USER_QUERY_MEASURE_REDUCER_OPTIONS,\n USER_QUERY_VALUE_TYPE_OPTIONS,\n type AXPUserQueryApiTestResult,\n type AXPUserQueryContractValidationError,\n type AXPUserQueryEntityFieldGroup,\n type AXPUserQueryEntityFieldGroupView,\n type AXPUserQuerySourceKind,\n type AXPUserQueryStaticItem,\n type AXPUserQueryWizardContext,\n type AXPUserQueryWizardSource,\n} from './create-user-query.types';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXPOpenCreateUserQueryWizardArgs {\n layoutBuilder: AXPLayoutBuilderService;\n toastService: AXToastService;\n translationService: AXTranslationService;\n entityResolver: AXPEntityResolver;\n sourceKind: AXPUserQuerySourceKind;\n}\n\nconst ENTITY_WIZARD_BACK = 'back';\nconst API_WIZARD_BACK = 'back';\n\ntype EntityFieldsDialogResult = AXPUserQueryWizardContext | typeof ENTITY_WIZARD_BACK;\ntype ApiFieldsDialogResult = AXPUserQueryWizardContext | typeof API_WIZARD_BACK;\ntype FieldGroupLayoutHost = ILayoutBuilder | IFlexContainerBuilder;\n\n//#endregion\n\n//#region ----- Public API -----\n\nexport async function openCreateUserQueryWizard(args: AXPOpenCreateUserQueryWizardArgs): Promise<AXPUserQueryWizardContext | null> {\n if (args.sourceKind === 'advanced') {\n return openAdvancedPlaceholder(args);\n }\n\n if (args.sourceKind === 'entity') {\n return openEntitySourceWizard(args);\n }\n\n if (args.sourceKind === 'api') {\n return openApiSourceWizard(args);\n }\n\n const result = await args.layoutBuilder\n .create()\n .dialog<AXPUserQueryWizardContext | null>((dialog) => {\n configureSimpleSourceWizard(dialog, args);\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPUserQueryWizardContext>(result);\n}\n\n//#endregion\n\n//#region ----- Entity sub-steps -----\n\nasync function openEntitySourceWizard(args: AXPOpenCreateUserQueryWizardArgs): Promise<AXPUserQueryWizardContext | null> {\n let entityName = '';\n let previousFields: Record<string, string[]> | undefined;\n\n while (true) {\n const picked = await openEntityPickDialog(args, entityName);\n if (!picked) {\n return null;\n }\n\n const graph = await loadEntityFieldGraph(args, picked);\n if (!graph) {\n entityName = picked;\n continue;\n }\n\n const selectedGroups = picked === entityName && previousFields != null ? previousFields : graph.defaultGroups;\n\n const outcome = await openEntityFieldsDialog(args, picked, graph.groups, selectedGroups);\n if (outcome === ENTITY_WIZARD_BACK) {\n entityName = picked;\n previousFields = selectedGroups;\n continue;\n }\n\n return outcome;\n }\n}\n\nasync function openEntityPickDialog(args: AXPOpenCreateUserQueryWizardArgs, entityName: string): Promise<string | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<string | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.entity)\n .setSize('lg')\n .setCloseButton(true)\n .setContext(createInitialContext('entity', entityName))\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .step('entity', i18n.steps.entity, (step) => {\n step.setIcon('fa-light fa-database').content((layout) => {\n fillEntityPickStep(layout);\n });\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillHintStep(layout, i18n.steps.fields, i18n.placeholders.fieldsNext);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillHintStep(layout, i18n.steps.contract, i18n.placeholders.contractNext);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.next.title',\n command: 'continue-to-fields',\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isFirst || api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: 'submit',\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n const name = resolvePickedEntityFullName(context?.source?.entity?.entityName);\n if (!name) {\n throw new Error(i18n.errors.entityRequired);\n }\n\n return name;\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<string>(result);\n}\n\nasync function openEntityFieldsDialog(args: AXPOpenCreateUserQueryWizardArgs, entityName: string, groups: AXPUserQueryEntityFieldGroupView[], selectedGroups: Record<string, string[]>): Promise<EntityFieldsDialogResult | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<EntityFieldsDialogResult | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.entity)\n .setSize('xl')\n .setCloseButton(true)\n .setContext(createInitialContext('entity', entityName, [], selectedGroups, createEntityContractSeed(entityName, groups, selectedGroups)))\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .setGuards({\n next: (payload) => canLeaveEntityFieldsStep(payload, args, groups),\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillEntityFieldsStep(layout, entityName, groups);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillEntityContractStep(layout, entityName, groups);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.previous.title',\n command: 'back-to-entity',\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.previous.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.previous`,\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: 'submit',\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n if (dialogRef.action() === 'back-to-entity') {\n return ENTITY_WIZARD_BACK;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n if (!context) {\n return null;\n }\n\n const fields = withRequiredIdField(collectSelectedFieldGroupPaths(context.source?.entity?.fieldGroups, groups));\n if (countFieldGroupItems(groups) > 0 && fields.filter((path) => path !== 'id').length === 0) {\n throw new Error(i18n.errors.fieldsRequired);\n }\n\n const available = resolveAvailableContractFields(flattenEntityFieldItems(groups), fields);\n const contract = assembleEntityQueryContract(\n {\n name: context.contract?.name ?? '',\n catalogTitle: context.contract?.catalogTitle ?? '',\n description: context.contract?.description,\n kind: context.contract?.kind,\n valueType: context.contract?.valueType,\n measure: context.contract?.measure,\n },\n context.contract?.capabilities,\n available,\n );\n const contractError = validateEntityQueryContract(contract, available);\n if (contractError) {\n throw new Error(contractValidationErrorKey(contractError));\n }\n\n return {\n ...context,\n contract,\n source: {\n ...context.source,\n kind: 'entity',\n entity: {\n ...context.source?.entity,\n entityName,\n fields,\n fieldGroups: context.source?.entity?.fieldGroups,\n },\n },\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<EntityFieldsDialogResult>(result);\n}\n\nasync function loadEntityFieldGraph(args: AXPOpenCreateUserQueryWizardArgs, entityName: string): Promise<{ groups: AXPUserQueryEntityFieldGroupView[]; defaultGroups: Record<string, string[]> } | null> {\n const parsed = parseEntityFullName(entityName);\n if (!parsed) {\n await showWizardWarning(args, i18n.errors.entityLoadFailed);\n return null;\n }\n\n const entity = await args.entityResolver.get(parsed.module, parsed.name);\n if (!entity) {\n await showWizardWarning(args, i18n.errors.entityLoadFailed);\n return null;\n }\n\n const relatedByName = await loadRelatedEntityClosure(args.entityResolver, entity.relatedEntities ?? []);\n const groups = collectUserQueryEntityFieldGroups(entity, relatedByName);\n\n return {\n groups: await toFieldGroupViews(groups, args.translationService),\n defaultGroups: defaultSelectedFieldGroups(groups),\n };\n}\n\nasync function loadRelatedEntityClosure(entityResolver: AXPEntityResolver, roots: Array<{ entity?: string }>): Promise<Map<string, AXPEntity>> {\n const relatedByName = new Map<string, AXPEntity>();\n let pending = [...new Set(roots.map((item) => item.entity?.trim() ?? '').filter(Boolean))];\n\n for (let depth = 1; depth <= USER_QUERY_RELATED_DEPTH && pending.length > 0; depth += 1) {\n const batch = pending.filter((name) => !relatedByName.has(name));\n pending = [];\n\n await Promise.all(\n batch.map(async (fullName) => {\n const parsed = parseEntityFullName(fullName);\n if (!parsed) {\n return;\n }\n\n const definition = await entityResolver.get(parsed.module, parsed.name);\n if (!definition) {\n return;\n }\n\n relatedByName.set(fullName, definition);\n for (const nested of definition.relatedEntities ?? []) {\n const nestedName = nested.entity?.trim();\n if (nestedName && !relatedByName.has(nestedName)) {\n pending.push(nestedName);\n }\n }\n }),\n );\n }\n\n return relatedByName;\n}\n\n//#endregion\n\n//#region ----- API sub-steps -----\n\nasync function openApiSourceWizard(args: AXPOpenCreateUserQueryWizardArgs): Promise<AXPUserQueryWizardContext | null> {\n let previous = createApiWizardContext();\n\n while (true) {\n const tested = await openApiSourceDialog(args, previous);\n if (!tested) {\n return null;\n }\n\n const groups = inferJsonFieldGroups(tested.source?.api?.lastTest?.body);\n const views = await toFieldGroupViews(groups, args.translationService);\n const selected = isSameApiRequest(previous, tested) && previous.source?.api?.fieldGroups ? previous.source.api.fieldGroups : defaultHostFieldGroups(groups);\n\n const outcome = await openApiFieldsDialog(args, tested, views, selected);\n if (outcome === API_WIZARD_BACK) {\n previous = tested;\n continue;\n }\n\n return outcome;\n }\n}\n\nasync function openApiSourceDialog(args: AXPOpenCreateUserQueryWizardArgs, previous: AXPUserQueryWizardContext): Promise<AXPUserQueryWizardContext | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<AXPUserQueryWizardContext | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.api)\n .setSize('xl')\n .setCloseButton(true)\n .setContext(previous)\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .step('source', i18n.steps.source, (step) => {\n step.setIcon('fa-light fa-cloud-arrow-up').content((layout) => {\n fillApiSourceStep(layout);\n });\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillHintStep(layout, i18n.steps.fields, i18n.placeholders.apiFieldsNext);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.next.title',\n command: 'continue-to-fields',\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isFirst || api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: 'submit',\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n const request = normalizeRestApiOutput(context?.source?.api?.request);\n if (!request.url) {\n throw new Error(i18n.errors.apiUrlRequired);\n }\n\n const lastTest = await runRestApiRequest(request);\n if (!lastTest.ok) {\n await showApiTestFailure(args, lastTest);\n throw new Error(lastTest.status === 0 ? i18n.errors.apiTestNetwork : i18n.errors.apiTestFailed);\n }\n\n await showWizardWarning(args, i18n.placeholders.apiTestOk, { status: String(lastTest.status) }, 'success');\n\n return createApiWizardContext({\n connectionId: context?.source?.api?.connectionId,\n request,\n lastTest,\n fieldGroups: context?.source?.api?.fieldGroups,\n });\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<AXPUserQueryWizardContext>(result);\n}\n\nasync function openApiFieldsDialog(args: AXPOpenCreateUserQueryWizardArgs, tested: AXPUserQueryWizardContext, groups: AXPUserQueryEntityFieldGroupView[], selectedGroups: Record<string, string[]>): Promise<ApiFieldsDialogResult | null> {\n const result = await args.layoutBuilder\n .create()\n .dialog<ApiFieldsDialogResult | null>((dialog) => {\n dialog\n .setTitle(i18n.titles.api)\n .setSize('xl')\n .setCloseButton(true)\n .setContext(createApiWizardContext(tested.source?.api, selectedGroups))\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .setGuards({\n next: (payload) => canLeaveApiFieldsStep(payload, args, groups),\n })\n .step('fields', i18n.steps.fields, (step) => {\n step.setIcon('fa-light fa-diagram-project').content((layout) => {\n fillApiFieldsStep(layout, groups);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.previous.title',\n command: 'back-to-source',\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{!api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.previous.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.previous`,\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n hidden: '{{api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: 'submit',\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n if (dialogRef.action() === 'back-to-source') {\n return API_WIZARD_BACK;\n }\n\n const context = (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n if (!context) {\n return null;\n }\n\n const fields = collectSelectedFieldGroupPaths(context.source?.api?.fieldGroups, groups);\n if (countFieldGroupItems(groups) > 0 && fields.length === 0) {\n throw new Error(i18n.errors.fieldsRequired);\n }\n\n return createApiWizardContext({\n ...tested.source?.api,\n fields,\n fieldGroups: context.source?.api?.fieldGroups,\n });\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<ApiFieldsDialogResult>(result);\n}\n\nfunction fillApiFieldsStep(layout: ILayoutBuilder, groups: AXPUserQueryEntityFieldGroupView[]): void {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px').setAlignItems('stretch');\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.fields.sample)\n .setDescription(i18n.placeholders.selectedApiHint)\n .setIcon('fa-light fa-code')\n .setCols(1)\n .formField(i18n.fields.status, (field) => {\n field.path('source.api.lastTest.status').textBox().readonly(true);\n })\n .formField(i18n.fields.sample, (field) => {\n field.path('source.api.lastTest.body').customWidget('json-viewer', {}).layout(1);\n });\n });\n\n for (const group of groups) {\n renderFieldGroup(flex, group, 'source.api.fieldGroups');\n }\n });\n}\n\nasync function canLeaveApiFieldsStep(payload: AXPStepWizardGuardPayload, args: AXPOpenCreateUserQueryWizardArgs, groups: AXPUserQueryEntityFieldGroupView[]): Promise<boolean> {\n if (payload.step?.id !== 'fields') {\n return true;\n }\n\n if (countFieldGroupItems(groups) === 0) {\n return true;\n }\n\n const context = (payload.context ?? {}) as AXPUserQueryWizardContext;\n const selected = collectSelectedFieldGroupPaths(context.source?.api?.fieldGroups, groups);\n if (selected.length > 0) {\n return true;\n }\n\n await showWizardWarning(args, i18n.errors.fieldsRequired);\n return false;\n}\n\nfunction createApiWizardContext(api?: AXPUserQueryWizardSource['api'], fieldGroups: Record<string, string[]> = {}): AXPUserQueryWizardContext {\n const base = createInitialContext('api');\n return {\n ...base,\n source: {\n ...base.source,\n api: {\n request: api?.request ?? createEmptyRestApiOutput(),\n connectionId: api?.connectionId,\n lastTest: api?.lastTest ? { ...api.lastTest, status: String(api.lastTest.status) } : undefined,\n fields: api?.fields ?? [],\n fieldGroups: Object.keys(fieldGroups).length ? fieldGroups : (api?.fieldGroups ?? {}),\n },\n },\n };\n}\n\nfunction isSameApiRequest(left: AXPUserQueryWizardContext, right: AXPUserQueryWizardContext): boolean {\n return JSON.stringify(left.source?.api?.request) === JSON.stringify(right.source?.api?.request);\n}\n\nasync function showApiTestFailure(args: AXPOpenCreateUserQueryWizardArgs, lastTest: AXPUserQueryApiTestResult): Promise<void> {\n if (Number(lastTest.status) === 0) {\n await showWizardWarning(args, i18n.errors.apiTestNetwork);\n return;\n }\n\n await showWizardWarning(args, i18n.errors.apiTestFailed, { status: String(lastTest.status) });\n}\n\nasync function runRestApiRequest(value: AXRestApiOutput | null | undefined): Promise<AXPUserQueryApiTestResult> {\n const request = normalizeRestApiOutput(value);\n const url = buildApiRequestUrl(request);\n if (!url) {\n return { ok: false, status: 0, body: null };\n }\n\n const headers: Record<string, string> = {};\n if (request.headers['ContentType'].trim()) {\n headers['Content-Type'] = request.headers['ContentType'].trim();\n }\n if (request.headers['Authorization'].trim()) {\n headers['Authorization'] = request.headers['Authorization'].trim();\n }\n for (const [key, headerValue] of Object.entries(request.headers)) {\n if (key === 'Authorization' || key === 'ContentType' || key === 'tempId') {\n continue;\n }\n if (typeof headerValue === 'string' && headerValue.trim()) {\n headers[key] = headerValue.trim();\n }\n }\n\n try {\n const response = await fetch(url, {\n method: request.method,\n headers,\n body: request.method === 'GET' || !request.body.trim() ? undefined : request.body,\n credentials: 'omit',\n signal: AbortSignal.timeout(15000),\n });\n const text = (await response.text()).trim();\n let body: unknown = text || null;\n if (text) {\n try {\n body = JSON.parse(text) as unknown;\n } catch {\n body = text;\n }\n }\n\n return {\n ok: response.status >= 200 && response.status < 300,\n status: response.status,\n body,\n };\n } catch {\n return { ok: false, status: 0, body: null };\n }\n}\n\nfunction buildApiRequestUrl(request: AXRestApiOutput): string {\n const base = request.url.trim();\n if (!base) {\n return '';\n }\n\n const params = new URLSearchParams();\n for (const query of request.queries ?? []) {\n for (const [key, value] of Object.entries(query)) {\n if (key === 'tempId' || !String(key).trim() || value == null || !String(value).trim()) {\n continue;\n }\n params.append(key, String(value).trim());\n }\n }\n\n const search = params.toString();\n if (!search) {\n return base;\n }\n\n return base.includes('?') ? `${base}&${search}` : `${base}?${search}`;\n}\n\nfunction inferJsonFieldGroups(sample: unknown): AXPUserQueryEntityFieldGroup[] {\n const root = firstPlainObject(sample);\n if (!root) {\n return [];\n }\n\n const envelope = splitJsonEnvelope(root);\n if (!envelope) {\n return jsonGroupsFromObject(root, '', 0, true);\n }\n\n const groups = jsonGroupsFromObject(envelope.record, envelope.path, 0, true);\n if (envelope.meta.length > 0) {\n groups.push({\n id: 'response',\n kind: 'lookup',\n title: i18n.fields.response,\n fallback: 'response',\n items: envelope.meta,\n });\n }\n\n return groups;\n}\n\nfunction splitJsonEnvelope(root: Record<string, unknown>): { record: Record<string, unknown>; path: string; meta: AXPUserQueryEntityFieldGroup['items'] } | null {\n const payloadKeys = ['data', 'result', 'results', 'items', 'records', 'value', 'payload', 'content'];\n const flagKeys = new Set(['ok', 'success', 'status', 'kind', 'error', 'code', 'message']);\n const metaObjectKeys = new Set(['info', 'meta', 'pagination', 'support', 'links', 'page']);\n const keys = Object.keys(root);\n const namedPayload = payloadKeys.find((key) => root[key] != null);\n const hasFlag = keys.some((key) => flagKeys.has(key) && isJsonScalar(root[key]));\n\n let payloadKey = namedPayload;\n if (payloadKey) {\n const rest = keys.filter((key) => key !== payloadKey);\n const restAreMeta = rest.every((key) => isJsonScalar(root[key]) || flagKeys.has(key) || metaObjectKeys.has(key));\n if (!hasFlag && !restAreMeta) {\n payloadKey = undefined;\n }\n } else {\n const arrayKeys = keys.filter((key) => {\n const value = root[key];\n return Array.isArray(value) && value.some((item) => isPlainObject(item));\n });\n const otherKeys = keys.filter((key) => !arrayKeys.includes(key));\n if (arrayKeys.length === 1 && otherKeys.length > 0 && otherKeys.every((key) => isJsonScalar(root[key]))) {\n payloadKey = arrayKeys[0];\n }\n }\n\n if (!payloadKey) {\n return null;\n }\n\n const payload = root[payloadKey];\n const meta: AXPUserQueryEntityFieldGroup['items'] = [];\n for (const [key, value] of Object.entries(root)) {\n if (key === payloadKey || !isJsonScalar(value)) {\n continue;\n }\n meta.push({ path: key, fallback: key });\n }\n\n if (Array.isArray(payload)) {\n const record = firstPlainObject(payload);\n if (!record) {\n return null;\n }\n return { record, path: payloadKey, meta };\n }\n\n if (isPlainObject(payload)) {\n const items = payload['items'];\n if (Array.isArray(items)) {\n const record = firstPlainObject(items);\n if (record) {\n for (const [key, value] of Object.entries(payload)) {\n if (key === 'items' || !isJsonScalar(value)) {\n continue;\n }\n meta.push({ path: `${payloadKey}.${key}`, fallback: key });\n }\n return { record, path: `${payloadKey}.items`, meta };\n }\n }\n\n return { record: payload, path: payloadKey, meta };\n }\n\n meta.push({ path: payloadKey, fallback: payloadKey });\n return { record: { value: payload }, path: payloadKey, meta };\n}\n\nfunction jsonGroupsFromObject(value: Record<string, unknown>, prefix: string, depth: number, asHost = false): AXPUserQueryEntityFieldGroup[] {\n const scalars: AXPUserQueryEntityFieldGroup['items'] = [];\n const nested: Array<{ key: string; path: string; value: Record<string, unknown> }> = [];\n\n for (const [key, raw] of Object.entries(value)) {\n const path = prefix ? `${prefix}.${key}` : key;\n const unwrapped = Array.isArray(raw) ? firstPlainObject(raw) : raw;\n if (isPlainObject(unwrapped) && depth < 2) {\n nested.push({ key, path, value: unwrapped });\n continue;\n }\n\n scalars.push({ path, fallback: key });\n }\n\n const groups: AXPUserQueryEntityFieldGroup[] = [];\n if (scalars.length > 0) {\n const leaf = prefix.includes('.') ? (prefix.split('.').pop() ?? prefix) : prefix;\n const isHost = (asHost && depth === 0) || !prefix;\n groups.push({\n id: isHost ? 'host' : `rel_${prefix.replace(/[^a-zA-Z0-9]+/g, '_')}_fields`,\n kind: isHost ? 'host' : 'relation',\n title: leaf,\n fallback: leaf || 'fields',\n items: scalars,\n });\n }\n\n if (depth >= 2) {\n return groups;\n }\n\n for (const item of nested) {\n const children = jsonGroupsFromObject(item.value, item.path, depth + 1, false);\n groups.push({\n id: `rel_${item.path.replace(/[^a-zA-Z0-9]+/g, '_')}`,\n kind: 'relation',\n title: item.key,\n fallback: item.key,\n items: [],\n children: children.length > 0 ? children : undefined,\n });\n }\n\n return groups;\n}\n\nfunction defaultHostFieldGroups(groups: AXPUserQueryEntityFieldGroup[]): Record<string, string[]> {\n const selected: Record<string, string[]> = {};\n const walk = (group: AXPUserQueryEntityFieldGroup): void => {\n selected[group.id] = group.kind === 'host' ? group.items.map((item) => item.path) : [];\n for (const child of group.children ?? []) {\n walk(child);\n }\n };\n for (const group of groups) {\n walk(group);\n }\n return selected;\n}\n\nfunction firstPlainObject(value: unknown): Record<string, unknown> | null {\n if (Array.isArray(value)) {\n for (const item of value) {\n const found = firstPlainObject(item);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n return isPlainObject(value) ? value : null;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction isJsonScalar(value: unknown): boolean {\n if (value == null) {\n return true;\n }\n\n const type = typeof value;\n return type === 'string' || type === 'number' || type === 'boolean';\n}\n\n//#endregion\n\n//#region ----- Advanced placeholder -----\n\nasync function openAdvancedPlaceholder(args: AXPOpenCreateUserQueryWizardArgs): Promise<null> {\n await args.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog.setTitle(i18n.titles.advanced).setMessage(i18n.placeholders.advanced).setSize('md').setCloseButton(true);\n })\n .show();\n\n return null;\n}\n\n//#endregion\n\n//#region ----- Simple source wizard -----\n\nfunction configureSimpleSourceWizard(dialog: IDialogBuilder<AXPUserQueryWizardContext | null>, args: AXPOpenCreateUserQueryWizardArgs): void {\n dialog\n .setTitle(dialogTitleKey(args.sourceKind))\n .setSize(args.sourceKind === 'api' ? 'xl' : 'lg')\n .setCloseButton(true)\n .setContext(createInitialContext(args.sourceKind))\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('16px')\n .stepWizard((wizard) => {\n wizard\n .name(CREATE_USER_QUERY_WIZARD_NAME)\n .setLook('circular-icon')\n .setLinear(true)\n .setDirection('horizontal')\n .setShowActions(false)\n .setGuards({\n next: (payload) => canLeaveSourceStep(payload, args),\n })\n .step('source', i18n.steps.source, (step) => {\n step.setIcon(sourceStepIcon(args.sourceKind)).content((layout) => {\n fillSourceStep(layout, args);\n });\n })\n .step('contract', i18n.steps.contract, (step) => {\n step.setIcon('fa-light fa-file-contract').content((layout) => {\n fillContractPlaceholderStep(layout);\n });\n });\n });\n })\n .setActions((actions) => {\n actions\n .cancel('@general:actions.cancel.title')\n .custom({\n title: '@general:actions.previous.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.previous`,\n icon: 'fa-regular fa-arrow-left',\n color: 'primary',\n position: 'prefix',\n disabled: '{{api.getStatus().isFirst}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.next.title',\n command: `widget:${CREATE_USER_QUERY_WIZARD_NAME}.next`,\n icon: 'fa-regular fa-arrow-right',\n color: 'primary',\n hidden: '{{api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never)\n .custom({\n title: '@general:actions.submit.title',\n command: 'submit',\n icon: 'fa-regular fa-check',\n color: 'success',\n hidden: '{{!api.getStatus().isLast}}',\n predicateApiWidgetName: CREATE_USER_QUERY_WIZARD_NAME,\n } as never);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n return (dialogRef.context() as AXPUserQueryWizardContext) ?? null;\n });\n}\n\n//#endregion\n\n//#region ----- Step bodies -----\n\nfunction fillSourceStep(layout: ILayoutBuilder, args: AXPOpenCreateUserQueryWizardArgs): void {\n switch (args.sourceKind) {\n case 'static':\n fillStaticSourceStep(layout);\n return;\n case 'api':\n fillApiSourceStep(layout);\n return;\n default:\n return;\n }\n}\n\nfunction fillEntityPickStep(layout: ILayoutBuilder, readonly = false): void {\n layout.fieldset((fieldset) => {\n fieldset.setTitle(i18n.steps.entity).setIcon('fa-light fa-database').setCols(1);\n if (!readonly) {\n fieldset.setDescription(i18n.placeholders.fieldsNext);\n }\n\n fieldset.formField(i18n.fields.entity, (field) => {\n field.path('source.entity.entityName').lookupBox({\n entity: CREATE_USER_QUERY_ENTITY_CATALOG,\n valueField: 'name',\n textField: 'name',\n look: 'select',\n searchable: true,\n allowClear: !readonly,\n validations: readonly ? undefined : [{ rule: 'required' }],\n });\n if (readonly) {\n field.readonly(true);\n }\n });\n });\n}\n\nfunction fillEntityContractStep(layout: ILayoutBuilder, entityName: string, groups: AXPUserQueryEntityFieldGroupView[]): void {\n const builderFields = flattenEntityFieldItems(groups);\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px').setAlignItems('stretch');\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.fields.identity)\n .setDescription(i18n.placeholders.identity)\n .setIcon('fa-light fa-id-card')\n .setCols(2)\n .formField(i18n.fields.queryName, (field) => {\n field.path('contract.name').textBox({ validations: [{ rule: 'required' }] });\n })\n .formField(i18n.fields.catalogTitle, (field) => {\n field.path('contract.catalogTitle').textBox({ validations: [{ rule: 'required' }] });\n })\n .formField(i18n.fields.description, (field) => {\n field.path('contract.description').largeTextBox({ rows: 3 }).layout(2);\n });\n });\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.fields.kind)\n .setDescription(i18n.placeholders.kind)\n .setIcon('fa-light fa-shapes')\n .setCols(2)\n .formField(i18n.fields.kind, (field) => {\n field\n .path('contract.kind')\n .setShowLabel(false)\n .selectBox({\n valueField: 'value',\n textField: 'text',\n dataSource: USER_QUERY_KIND_OPTIONS,\n validations: [{ rule: 'required' }],\n });\n })\n .formField(i18n.fields.valueType, (field) => {\n field\n .path('contract.valueType')\n .selectBox({\n valueField: 'value',\n textField: 'text',\n dataSource: USER_QUERY_VALUE_TYPE_OPTIONS,\n })\n .visible('{{ context.eval(\"contract.kind\") === \"value\" }}');\n })\n .formField(i18n.fields.measure, (field) => {\n field\n .path('contract.measure.reducer')\n .selectBox({\n valueField: 'value',\n textField: 'text',\n dataSource: USER_QUERY_MEASURE_REDUCER_OPTIONS,\n validations: [{ rule: 'required' }],\n })\n .visible('{{ context.eval(\"contract.kind\") === \"value\" }}');\n })\n .formField(i18n.fields.measureField, (field) => {\n field\n .path('contract.measure.field')\n .selectBox({\n valueField: 'path',\n textField: 'text',\n dataSource: numericUserQueryFields(flattenEntityFieldItems(groups)),\n })\n .visible(\n '{{ context.eval(\"contract.kind\") === \"value\" && context.eval(\"contract.measure.reducer\") !== \"count\" }}',\n );\n });\n });\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.fields.predicates)\n .setDescription(i18n.placeholders.predicates)\n .setIcon('fa-light fa-filter')\n .setCols(1)\n .formField(' ', (field) => {\n field\n .path('source.entity.query')\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Editors.QueryBuilder, {\n visibleTabs: ['where', 'aggregate'],\n dataSource: toQueryBuilderDataSource(entityName, builderFields),\n })\n .layout(1);\n });\n });\n flex.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.fields.capabilities)\n .setDescription(i18n.placeholders.capabilities)\n .setIcon('fa-light fa-sliders')\n .setCols(1)\n .formField(' ', (field) => {\n field\n .path('contract.capabilities')\n .setShowLabel(false)\n .customWidget(QUERY_CONTRACT_WIDGET_NAME, {\n fields: flattenEntityFieldItems(groups),\n })\n .layout(1);\n });\n });\n });\n}\n\nfunction fillEntityFieldsStep(layout: ILayoutBuilder, entityName: string, groups: AXPUserQueryEntityFieldGroupView[]): void {\n layout.flex((flex) => {\n flex.setDirection('column').setGap('16px').setAlignItems('stretch');\n flex.fieldset((fieldset) => {\n fieldset.setTitle(entityName).setDescription(i18n.placeholders.selectedEntityHint).setIcon('fa-light fa-database').setLook('group');\n });\n\n for (const group of groups) {\n renderFieldGroup(flex, group);\n }\n });\n}\n\nfunction renderFieldGroup(layout: FieldGroupLayoutHost, group: AXPUserQueryEntityFieldGroupView, fieldGroupsPath = 'source.entity.fieldGroups'): void {\n if (group.kind === 'relation' && (group.children?.length ?? 0) > 0) {\n layout.panel((panel) => {\n panel.setCaption(group.title).setIcon('fa-light fa-link').setLook('outline');\n if (group.items.length) {\n panel.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, i18n.fields.hostFields, fieldGroupsPath);\n });\n }\n for (const child of group.children ?? []) {\n renderFieldGroupOnPanel(panel, child, fieldGroupsPath);\n }\n });\n return;\n }\n\n layout.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, group.title, fieldGroupsPath);\n });\n}\n\nfunction renderFieldGroupOnPanel(panel: IPanelContainerBuilder, group: AXPUserQueryEntityFieldGroupView, fieldGroupsPath = 'source.entity.fieldGroups'): void {\n if ((group.children?.length ?? 0) > 0) {\n panel.panel((inner) => {\n inner.setCaption(group.title).setIcon('fa-light fa-link').setLook('outline');\n if (group.items.length) {\n inner.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, i18n.fields.hostFields, fieldGroupsPath);\n });\n }\n for (const child of group.children ?? []) {\n renderFieldGroupOnPanel(inner, child, fieldGroupsPath);\n }\n });\n return;\n }\n\n panel.fieldset((fieldset) => {\n appendFieldGroupList(fieldset, group, group.title, fieldGroupsPath);\n });\n}\n\nfunction appendFieldGroupList(fieldset: IFieldsetContainerBuilder, group: AXPUserQueryEntityFieldGroupView, title: string, fieldGroupsPath = 'source.entity.fieldGroups'): void {\n fieldset.setTitle(title).setIcon(fieldGroupIcon(group.kind)).setCols(1);\n if (group.kind === 'host') {\n fieldset.setDescription(fieldGroupsPath.startsWith('source.api') ? i18n.placeholders.apiFields : i18n.placeholders.entityFields);\n }\n\n if (!group.items.length) {\n return;\n }\n\n fieldset.formField(' ', (field) => {\n field.path(`${fieldGroupsPath}.${group.id}`).selectionList({\n dataSource: group.items,\n valueField: 'path',\n textField: 'text',\n multiple: true,\n searchable: group.items.length > 8,\n direction: { id: 'vertical' } as never,\n } as never);\n });\n}\n\nfunction fieldGroupIcon(kind: AXPUserQueryEntityFieldGroupView['kind']): string {\n if (kind === 'relation') {\n return 'fa-light fa-link';\n }\n if (kind === 'lookup') {\n return 'fa-light fa-diagram-nested';\n }\n return 'fa-light fa-list';\n}\n\nfunction fillHintStep(layout: ILayoutBuilder, titleKey: string, descriptionKey: string): void {\n layout.fieldset((fieldset) => {\n fieldset.setTitle(titleKey).setDescription(descriptionKey).setIcon('fa-light fa-diagram-project').setLook('group');\n });\n}\n\nfunction fillStaticSourceStep(layout: ILayoutBuilder): void {\n layout.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.steps.source)\n .setDescription(i18n.placeholders.itemsHint)\n .setIcon('fa-light fa-list')\n .setCols(1)\n .formField(' ', (field) => {\n field\n .path('source.static.items')\n .setShowLabel(false)\n .customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n allowReorder: true,\n children: staticItemRepeaterChildren(),\n })\n .layout(1);\n });\n });\n}\n\nfunction staticItemRepeaterChildren(): AXPWidgetNode[] {\n return [\n {\n type: AXPWidgetsList.Layouts.FlexLayout,\n mode: 'edit',\n options: {\n flexDirection: 'row',\n gap: '12px',\n alignItems: 'stretch',\n },\n children: [staticItemRepeaterField(i18n.fields.value, 'value'), staticItemRepeaterField(i18n.fields.title, 'title')],\n },\n ];\n}\n\nfunction staticItemRepeaterField(label: string, path: string): AXPWidgetNode {\n return {\n type: AXPWidgetsList.Layouts.FlexItemLayout,\n options: { grow: 1 },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n options: { label, showLabel: true },\n children: [\n {\n type: AXPWidgetsList.Editors.TextBox,\n path,\n name: path,\n mode: 'edit',\n },\n ],\n },\n ],\n };\n}\n\nfunction fillApiSourceStep(layout: ILayoutBuilder): void {\n layout.fieldset((fieldset) => {\n fieldset\n .setTitle(i18n.steps.source)\n .setDescription(i18n.placeholders.apiFieldsNext)\n .setIcon('fa-light fa-cloud-arrow-up')\n .setCols(1)\n .formField(i18n.fields.connection, (field) => {\n field\n .path('source.api.connectionId')\n .lookupBox({\n entity: 'IntegrationManagement.IntegrationConnection',\n searchable: true,\n allowClear: true,\n })\n .layout(1);\n })\n .formField(i18n.fields.request, (field) => {\n field.path('source.api.request').customWidget(REST_API_GENERATOR_WIDGET_NAME, {}).layout(1);\n });\n });\n}\n\nfunction fillContractPlaceholderStep(layout: ILayoutBuilder): void {\n layout.fieldset((fieldset) => {\n fieldset.setTitle(i18n.steps.contract).setDescription(i18n.placeholders.contract).setIcon('fa-light fa-file-contract').setLook('group');\n });\n}\n\n//#endregion\n\n//#region ----- Guards & helpers -----\n\nasync function canLeaveSourceStep(payload: AXPStepWizardGuardPayload, args: AXPOpenCreateUserQueryWizardArgs): Promise<boolean> {\n if (payload.step?.id !== 'source') {\n return true;\n }\n\n const context = (payload.context ?? {}) as AXPUserQueryWizardContext;\n const errorKey = sourceStepErrorKey(args.sourceKind, context);\n if (!errorKey) {\n return true;\n }\n\n await showWizardWarning(args, errorKey);\n return false;\n}\n\nasync function canLeaveEntityFieldsStep(payload: AXPStepWizardGuardPayload, args: AXPOpenCreateUserQueryWizardArgs, groups: AXPUserQueryEntityFieldGroupView[]): Promise<boolean> {\n if (payload.step?.id !== 'fields') {\n return true;\n }\n\n if (countFieldGroupItems(groups) === 0) {\n return true;\n }\n\n const context = (payload.context ?? {}) as AXPUserQueryWizardContext;\n const selected = collectSelectedFieldGroupPaths(context.source?.entity?.fieldGroups, groups).filter((path) => path !== 'id');\n if (selected.length > 0) {\n return true;\n }\n\n await showWizardWarning(args, i18n.errors.fieldsRequired);\n return false;\n}\n\nfunction sourceStepErrorKey(sourceKind: AXPUserQuerySourceKind, context: AXPUserQueryWizardContext): string | null {\n if (sourceKind === 'static') {\n const hasValue = (context.source?.static?.items ?? []).some((row) => String(row?.value ?? '').trim());\n return hasValue ? null : i18n.errors.staticRequired;\n }\n\n if (sourceKind === 'api') {\n const url = context.source?.api?.request?.url?.trim() ?? '';\n return url ? null : i18n.errors.apiUrlRequired;\n }\n\n return null;\n}\n\nfunction createInitialContext(\n sourceKind: AXPUserQuerySourceKind,\n entityName = '',\n fields: string[] = [],\n fieldGroups: Record<string, string[]> = {},\n contract?: AXPUserQueryWizardContext['contract'],\n): AXPUserQueryWizardContext {\n const items: AXPUserQueryStaticItem[] = [{ value: '', title: '' }];\n\n return {\n sourceKind,\n source: {\n kind: sourceKind,\n entity: { entityName, fields, fieldGroups, query: emptyUserQueryBuilderValue() },\n static: { items },\n api: { request: createEmptyRestApiOutput() },\n },\n contract,\n };\n}\n\nfunction createEntityContractSeed(\n entityName: string,\n groups: AXPUserQueryEntityFieldGroupView[],\n selectedGroups: Record<string, string[]>,\n): AXPUserQueryWizardContext['contract'] {\n const available = resolveAvailableContractFields(\n flattenEntityFieldItems(groups),\n collectSelectedFieldGroupPaths(selectedGroups, groups),\n );\n return createDefaultEntityContract(entityName, available);\n}\n\nfunction contractValidationErrorKey(error: AXPUserQueryContractValidationError): string {\n if (error === 'title') {\n return i18n.errors.contractTitleRequired;\n }\n if (error === 'binding') {\n return i18n.errors.contractBindingInvalid;\n }\n if (error === 'measure') {\n return i18n.errors.contractMeasureInvalid;\n }\n return i18n.errors.contractNameRequired;\n}\n\nfunction countFieldGroupItems(groups: AXPUserQueryEntityFieldGroupView[]): number {\n let count = 0;\n const walk = (group: AXPUserQueryEntityFieldGroupView): void => {\n count += group.items.length;\n for (const child of group.children ?? []) {\n walk(child);\n }\n };\n for (const group of groups) {\n walk(group);\n }\n return count;\n}\n\nasync function toFieldGroupViews(groups: AXPUserQueryEntityFieldGroup[], translationService: AXTranslationService): Promise<AXPUserQueryEntityFieldGroupView[]> {\n const hostTitle = await resolveLabel(translationService, i18n.fields.hostFields, 'Fields');\n\n const mapGroup = async (group: AXPUserQueryEntityFieldGroup): Promise<AXPUserQueryEntityFieldGroupView> => {\n const resolvedName = await resolveLabel(translationService, group.title, group.fallback);\n let title = resolvedName;\n if (group.kind === 'host') {\n title = hostTitle;\n } else if (group.kind === 'relation') {\n title = await formatRelatedGroupTitle(translationService, resolvedName);\n }\n\n const children = group.children?.length ? await Promise.all(group.children.map((child) => mapGroup(child))) : undefined;\n\n return {\n id: group.id,\n kind: group.kind,\n title,\n items: await Promise.all(\n group.items.map(async (item) => ({\n path: item.path,\n text: await resolveLabel(translationService, item.title, item.fallback),\n filterWidget: item.filterWidget,\n dataType: item.dataType,\n })),\n ),\n children,\n };\n };\n\n return Promise.all(groups.map((group) => mapGroup(group)));\n}\n\nasync function formatRelatedGroupTitle(translationService: AXTranslationService, name: string): Promise<string> {\n const translated = await translationService.translateAsync(i18n.placeholders.relatedTo, { params: { name } });\n return typeof translated === 'string' && translated.trim() ? translated.trim() : name;\n}\n\nasync function resolveLabel(translationService: AXTranslationService, value: unknown, fallback: string): Promise<string> {\n if (value == null || value === '') {\n return fallback;\n }\n\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) {\n return fallback;\n }\n if (trimmed.startsWith('@')) {\n const translated = await translationService.translateAsync(trimmed);\n const text = typeof translated === 'string' ? translated.trim() : '';\n return text && text !== trimmed ? text : fallback;\n }\n return trimmed;\n }\n\n const resolved = translationService.resolve(value as never);\n const text = typeof resolved === 'string' ? resolved.trim() : '';\n return text || fallback;\n}\n\nasync function showWizardWarning(args: AXPOpenCreateUserQueryWizardArgs, errorKey: string, params?: Record<string, string>, color: 'warning' | 'success' = 'warning'): Promise<void> {\n const message = await args.translationService.translateAsync(errorKey, params ? { params } : undefined);\n args.toastService.show({\n color,\n content: message,\n closeButton: true,\n timeOut: 4000,\n timeOutProgress: true,\n });\n}\n\nfunction dialogTitleKey(sourceKind: AXPUserQuerySourceKind): string {\n if (sourceKind === 'static') {\n return i18n.titles.static;\n }\n if (sourceKind === 'api') {\n return i18n.titles.api;\n }\n return i18n.titles.entity;\n}\n\nfunction sourceStepIcon(sourceKind: AXPUserQuerySourceKind): string {\n if (sourceKind === 'static') {\n return 'fa-light fa-list';\n }\n if (sourceKind === 'api') {\n return 'fa-light fa-cloud-arrow-up';\n }\n return 'fa-light fa-database';\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { extractRequestErrorInfo, platformErrorI18nKey } from '@acorex-platform/framework-client/common';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityResolver, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPCommand,\n ENTITY_INSERT_DEFAULT,\n entityActionDataRecord,\n resolveEntityActionCommandInput,\n type AXPCommandExecuteResultPromise,\n type AXPEntityActionCommandInput,\n} from '@acorex-platform/framework-shared/runtime';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { RootConfig } from '@acorex-platform/module-platform-management-client/contracts';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\n\nimport { toUserQueryDefinitionRow } from './create-user-query-persist.util';\nimport type { AXPUserQuerySourceKind, AXPUserQueryWizardContext } from './create-user-query.types';\nimport { CREATE_USER_QUERY_I18N as i18n } from './create-user-query.types';\nimport { openCreateUserQueryWizard } from './create-user-query.wizard';\n\n//#endregion\n\n//#region ----- Command -----\n\n/**\n * Opens the user-query create wizard and persists an entity-source QueryDefinition.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMCreateUserQueryCommand implements AXPCommand<AXPEntityActionCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityResolver = inject(AXPEntityResolver);\n private readonly entityService = inject(AXPEntityService);\n private readonly commandService = inject(AXPCommandService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Execution -----\n\n async execute(input: AXPEntityActionCommandInput = {}): AXPCommandExecuteResultPromise {\n const sourceKind = resolveSourceKind(input);\n\n const context = await openCreateUserQueryWizard({\n layoutBuilder: this.layoutBuilder,\n toastService: this.toastService,\n translationService: this.translationService,\n entityResolver: this.entityResolver,\n sourceKind,\n });\n\n if (!context) {\n return {\n success: true,\n kind: 'object',\n data: { sourceKind },\n metadata: { refresh: false },\n };\n }\n\n if (context.sourceKind !== 'entity' || !context.contract) {\n return {\n success: true,\n kind: 'object',\n data: context,\n metadata: { refresh: false },\n };\n }\n\n try {\n await this.persistEntityQuery(context);\n } catch (error: unknown) {\n const message = await this.translatePersistError(error);\n this.toastService.show({\n color: 'danger',\n content: message,\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n return {\n success: false,\n message: { text: message },\n };\n }\n\n const ok = await this.translationService.translateAsync(i18n.placeholders.persistOk, {\n params: { name: context.contract.name },\n });\n this.toastService.show({\n color: 'success',\n content: ok,\n closeButton: true,\n timeOut: 4000,\n timeOutProgress: true,\n });\n\n return {\n success: true,\n kind: 'object',\n data: context,\n metadata: { refresh: true },\n };\n }\n\n //#endregion\n\n //#region ----- Persist -----\n\n private async persistEntityQuery(context: AXPUserQueryWizardContext): Promise<void> {\n const name = context.contract?.name?.trim() ?? '';\n const catalog = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.queryDefinition.name)\n .data();\n const existing = await catalog.query({\n skip: 0,\n take: 1,\n filter: { field: 'name', operator: { type: 'equal' }, value: name },\n });\n if ((existing.items?.length ?? 0) > 0) {\n throw new DuplicateUserQueryNameError();\n }\n\n const available = (context.source?.entity?.fields ?? []).map((path) => ({ path, text: path }));\n const row = toUserQueryDefinitionRow(context, available);\n const result = await this.commandService.execute(ENTITY_INSERT_DEFAULT, {\n entity: `${RootConfig.module.name}.${RootConfig.entities.queryDefinition.name}`,\n data: row,\n });\n if (!result?.success) {\n throw result ?? new Error('insert');\n }\n }\n\n private async translatePersistError(error: unknown): Promise<string> {\n if (error instanceof DuplicateUserQueryNameError) {\n return this.translationService.translateAsync(i18n.errors.persistDuplicate);\n }\n\n const info = extractRequestErrorInfo(error);\n const mapped = platformErrorI18nKey(info?.code);\n if (mapped) {\n return this.translationService.translateAsync(mapped);\n }\n\n return this.translationService.translateAsync(i18n.errors.persistFailed);\n }\n\n //#endregion\n}\n\n//#endregion\n\n//#region ----- Helpers -----\n\nclass DuplicateUserQueryNameError extends Error {\n constructor() {\n super('duplicate-query-name');\n this.name = 'DuplicateUserQueryNameError';\n }\n}\n\nfunction resolveSourceKind(input: AXPEntityActionCommandInput): AXPUserQuerySourceKind {\n const resolved = resolveEntityActionCommandInput(input);\n const data = entityActionDataRecord(resolved.data) ?? {};\n const options = (resolved.options ?? {}) as Record<string, unknown>;\n const process = (options['process'] ?? {}) as Record<string, unknown>;\n const processData = (process['data'] ?? {}) as Record<string, unknown>;\n const raw = data['sourceKind'] ?? processData['sourceKind'];\n\n if (raw === 'static' || raw === 'api' || raw === 'advanced' || raw === 'entity') {\n return raw;\n }\n\n return 'entity';\n}\n\n//#endregion\n"],"names":["i18n"],"mappings":"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"}
@@ -0,0 +1,329 @@
1
+ import { AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';
2
+ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
3
+ import { AXPPageLayoutBaseComponent, AXPPageLayoutBase } from '@acorex-platform/framework-client/layout/views';
4
+ import { buildEntityDefinitionEntity, flattenEntityContentToDesignerForm, flattenProperties, RootConfig, ENTITY_DEFINITION_SCHEMA_PROPERTY_NAMES, ENTITY_DEFINITION_SURFACES_PROPERTY_NAMES } from '@acorex-platform/module-platform-management-client/contracts';
5
+ import * as i0 from '@angular/core';
6
+ import { input, inject, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
7
+ import { isEqual } from 'lodash-es';
8
+ import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
9
+
10
+ //#region ----- Imports -----
11
+ //#endregion
12
+ //#region ----- Public API -----
13
+ function buildEntityDefinitionWizardPageLayout(propertyNames) {
14
+ const entity = buildEntityDefinitionEntity();
15
+ const allowed = new Set(propertyNames);
16
+ const properties = entity.properties.filter((property) => allowed.has(property.name));
17
+ const groups = entity.groups ?? [];
18
+ const grouped = new Map();
19
+ for (const property of properties) {
20
+ const groupId = property.groupId ?? 'basic-info';
21
+ const bucket = grouped.get(groupId) ?? [];
22
+ bucket.push(property);
23
+ grouped.set(groupId, bucket);
24
+ }
25
+ const fieldsets = [];
26
+ for (const group of groups) {
27
+ const groupProperties = grouped.get(group.id);
28
+ if (!groupProperties?.length) {
29
+ continue;
30
+ }
31
+ fieldsets.push(buildFieldset(group, groupProperties));
32
+ }
33
+ return {
34
+ type: AXPWidgetsList.Layouts.BlockLayout,
35
+ mode: 'edit',
36
+ options: { gap: '1rem' },
37
+ children: fieldsets,
38
+ };
39
+ }
40
+ function defaultWizardValuesFromContext(propertyNames, root) {
41
+ const content = root['content'] && typeof root['content'] === 'object' && !Array.isArray(root['content'])
42
+ ? root['content']
43
+ : {};
44
+ const flattened = flattenEntityContentToDesignerForm(content);
45
+ const next = { ...root };
46
+ for (const name of propertyNames) {
47
+ if (root[name] !== undefined) {
48
+ next[name] = root[name];
49
+ }
50
+ else if (flattened[name] !== undefined) {
51
+ next[name] = flattened[name];
52
+ }
53
+ else {
54
+ next[name] = defaultForProperty(name);
55
+ }
56
+ }
57
+ const properties = flattenProperties(root['properties'] ?? flattened['properties'] ?? content['properties']);
58
+ const groups = readObjectArray(root['groups'] ?? flattened['groups'] ?? content['groups']);
59
+ next['properties'] = properties;
60
+ next['groups'] = groups;
61
+ if (propertyNames.includes('columns')) {
62
+ next['columns'] = syncRowsToSource(readObjectArray(next['columns']), properties, 'name', (property) => ({
63
+ name: property['name'],
64
+ title: property['title'] ?? property['name'],
65
+ widgetType: readWidgetType(property),
66
+ }));
67
+ }
68
+ if (propertyNames.includes('createSections')) {
69
+ next['createSections'] = syncRowsToSource(readObjectArray(next['createSections']), groups, 'id', (group) => ({ id: group['id'] }));
70
+ }
71
+ if (propertyNames.includes('createProperties')) {
72
+ next['createProperties'] = syncRowsToSource(readObjectArray(next['createProperties']), properties, 'name', (property) => ({
73
+ name: property['name'],
74
+ colSpan: 6,
75
+ }));
76
+ }
77
+ return next;
78
+ }
79
+ //#endregion
80
+ //#region ----- Helpers -----
81
+ function buildFieldset(group, properties) {
82
+ return {
83
+ type: AXPWidgetsList.Layouts.FieldsetLayout,
84
+ mode: 'edit',
85
+ options: {
86
+ title: group.title,
87
+ look: 'fieldset',
88
+ cols: 12,
89
+ showHeader: true,
90
+ },
91
+ children: properties.map((property) => buildFormField(property)),
92
+ };
93
+ }
94
+ function buildFormField(property) {
95
+ const widget = property.schema?.interface;
96
+ const child = {
97
+ type: widget?.type || AXPWidgetsList.Editors.TextBox,
98
+ mode: 'edit',
99
+ path: property.name,
100
+ name: property.name,
101
+ options: widget?.options ?? {},
102
+ children: widget?.children ?? undefined,
103
+ };
104
+ return {
105
+ type: AXPWidgetsList.Layouts.FormField,
106
+ mode: 'edit',
107
+ options: {
108
+ label: property.title,
109
+ showLabel: true,
110
+ },
111
+ children: [child],
112
+ };
113
+ }
114
+ function defaultForProperty(name) {
115
+ if (name === 'rules' ||
116
+ name === 'validations' ||
117
+ name === 'commandsJson' ||
118
+ name === 'queriesJson') {
119
+ return '';
120
+ }
121
+ return [];
122
+ }
123
+ function syncRowsToSource(existing, source, key, buildDefault) {
124
+ if (!source.length) {
125
+ return existing;
126
+ }
127
+ const byKey = new Map(existing.map((row) => [String(row[key] ?? ''), row]));
128
+ return source
129
+ .map((item) => {
130
+ const id = String(item[key] ?? item['name'] ?? item['id'] ?? '');
131
+ if (!id) {
132
+ return null;
133
+ }
134
+ return byKey.get(id) ?? buildDefault(item);
135
+ })
136
+ .filter((row) => !!row);
137
+ }
138
+ function readObjectArray(value) {
139
+ if (!Array.isArray(value)) {
140
+ return [];
141
+ }
142
+ return value.filter((item) => item && typeof item === 'object' && !Array.isArray(item));
143
+ }
144
+ function readWidgetType(property) {
145
+ const schema = property['schema'];
146
+ if (!schema || typeof schema !== 'object' || Array.isArray(schema)) {
147
+ const iface = property['interface'];
148
+ if (iface && typeof iface === 'object' && !Array.isArray(iface)) {
149
+ const type = iface['type'];
150
+ return typeof type === 'string' ? type : undefined;
151
+ }
152
+ return typeof property['widgetType'] === 'string' ? property['widgetType'] : undefined;
153
+ }
154
+ const iface = schema['interface'];
155
+ if (iface && typeof iface === 'object' && !Array.isArray(iface)) {
156
+ const type = iface['type'];
157
+ return typeof type === 'string' ? type : undefined;
158
+ }
159
+ return undefined;
160
+ }
161
+ //#endregion
162
+
163
+ //#endregion
164
+ //#region ----- Constants -----
165
+ const SAVE_COMMAND = 'EntityDefinition:SaveWizardStep';
166
+ const ENTITY_FULL_NAME = `${RootConfig.module.name}.${RootConfig.entities.entityDefinition.name}`;
167
+ //#endregion
168
+ //#region ----- Component -----
169
+ class AXMEntityDefinitionFormPageComponent extends AXPPageLayoutBaseComponent {
170
+ //#endregion
171
+ //#region ----- Lifecycle -----
172
+ constructor() {
173
+ super();
174
+ //#region ----- Inputs -----
175
+ this.rootContext = input(/* @ts-ignore */
176
+ ...(ngDevMode ? [undefined, { debugName: "rootContext" }] : /* istanbul ignore next */ []));
177
+ this.pageConfig = input(/* @ts-ignore */
178
+ ...(ngDevMode ? [undefined, { debugName: "pageConfig" }] : /* istanbul ignore next */ []));
179
+ this.options = input(/* @ts-ignore */
180
+ ...(ngDevMode ? [undefined, { debugName: "options" }] : /* istanbul ignore next */ []));
181
+ //#endregion
182
+ //#region ----- Services -----
183
+ this.entityService = inject(AXPEntityService);
184
+ //#endregion
185
+ //#region ----- State -----
186
+ this.editorContext = signal({}, /* @ts-ignore */
187
+ ...(ngDevMode ? [{ debugName: "editorContext" }] : /* istanbul ignore next */ []));
188
+ this.baseline = signal({}, /* @ts-ignore */
189
+ ...(ngDevMode ? [{ debugName: "baseline" }] : /* istanbul ignore next */ []));
190
+ this.seededRootKey = signal('', /* @ts-ignore */
191
+ ...(ngDevMode ? [{ debugName: "seededRootKey" }] : /* istanbul ignore next */ []));
192
+ //#endregion
193
+ //#region ----- Computed -----
194
+ this.propertyNames = computed(() => {
195
+ const fromOptions = this.options()?.['propertyNames'];
196
+ if (Array.isArray(fromOptions) && fromOptions.every((item) => typeof item === 'string')) {
197
+ return fromOptions;
198
+ }
199
+ const field = this.pageConfig()?.['field'];
200
+ if (field === 'properties') {
201
+ return [...ENTITY_DEFINITION_SCHEMA_PROPERTY_NAMES];
202
+ }
203
+ if (field === 'interfaces') {
204
+ return [...ENTITY_DEFINITION_SURFACES_PROPERTY_NAMES];
205
+ }
206
+ return [...ENTITY_DEFINITION_SCHEMA_PROPERTY_NAMES];
207
+ }, /* @ts-ignore */
208
+ ...(ngDevMode ? [{ debugName: "propertyNames" }] : /* istanbul ignore next */ []));
209
+ this.pageLayout = computed(() => buildEntityDefinitionWizardPageLayout(this.propertyNames()), /* @ts-ignore */
210
+ ...(ngDevMode ? [{ debugName: "pageLayout" }] : /* istanbul ignore next */ []));
211
+ effect(() => {
212
+ const root = this.rootContext() ?? {};
213
+ const names = this.propertyNames();
214
+ const properties = Array.isArray(root['properties']) ? root['properties'] : [];
215
+ const groups = Array.isArray(root['groups']) ? root['groups'] : [];
216
+ const fingerprint = [
217
+ ...properties.map((item) => item && typeof item === 'object' ? String(item['name'] ?? '') : ''),
218
+ ...groups.map((item) => item && typeof item === 'object' ? String(item['id'] ?? '') : ''),
219
+ ].join('|');
220
+ const seedKey = `${String(root['id'] ?? '')}:${names.join(',')}:${fingerprint}`;
221
+ if (seedKey === untracked(() => this.seededRootKey())) {
222
+ return;
223
+ }
224
+ const seeded = defaultWizardValuesFromContext(names, root);
225
+ this.seededRootKey.set(seedKey);
226
+ this.editorContext.set(seeded);
227
+ this.baseline.set(this.pickOwned(seeded, names));
228
+ });
229
+ }
230
+ //#endregion
231
+ //#region ----- Wizard / page contract -----
232
+ hasUnsavedChanges() {
233
+ return !isEqual(this.pickOwned(this.editorContext(), this.propertyNames()), this.baseline());
234
+ }
235
+ getWizardStepContext() {
236
+ return this.pickOwned(this.editorContext(), this.propertyNames());
237
+ }
238
+ getWizardStepContinueCommand() {
239
+ return { name: SAVE_COMMAND };
240
+ }
241
+ async getPrimaryMenuItems() {
242
+ return [
243
+ {
244
+ title: '@general:actions.save.title',
245
+ icon: 'fa-light fa-floppy-disk',
246
+ command: { name: SAVE_COMMAND },
247
+ priority: 'primary',
248
+ zone: 'footer',
249
+ },
250
+ ];
251
+ }
252
+ execute(command) {
253
+ if (command.name !== SAVE_COMMAND) {
254
+ return;
255
+ }
256
+ return this.saveOwnedFields();
257
+ }
258
+ //#endregion
259
+ //#region ----- Persistence -----
260
+ async saveOwnedFields() {
261
+ const root = this.rootContext() ?? {};
262
+ const id = typeof root['id'] === 'string' ? root['id'] : '';
263
+ const patch = this.getWizardStepContext();
264
+ if (!id) {
265
+ this.baseline.set(patch);
266
+ this.recompute();
267
+ return { success: true, kind: 'object', data: patch };
268
+ }
269
+ try {
270
+ const dataAccessor = this.entityService.withEntity(ENTITY_FULL_NAME).data();
271
+ await dataAccessor.update(id, patch);
272
+ this.baseline.set(patch);
273
+ this.recompute();
274
+ return { success: true, kind: 'object', data: patch };
275
+ }
276
+ catch (error) {
277
+ return {
278
+ success: false,
279
+ message: {
280
+ text: error instanceof Error ? error.message : '@general:messages.generic.error.description',
281
+ },
282
+ };
283
+ }
284
+ }
285
+ pickOwned(source, names) {
286
+ const next = {};
287
+ for (const name of names) {
288
+ next[name] = source[name];
289
+ }
290
+ return next;
291
+ }
292
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMEntityDefinitionFormPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
293
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXMEntityDefinitionFormPageComponent, isStandalone: true, selector: "axm-entity-definition-form-page", inputs: { rootContext: { classPropertyName: "rootContext", publicName: "rootContext", isSignal: true, isRequired: false, transformFunction: null }, pageConfig: { classPropertyName: "pageConfig", publicName: "pageConfig", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex h-full min-h-0 flex-1 flex-col overflow-hidden" }, providers: [
294
+ {
295
+ provide: AXPPageLayoutBase,
296
+ useExisting: AXMEntityDefinitionFormPageComponent,
297
+ },
298
+ ], usesInheritance: true, ngImport: i0, template: `
299
+ <div class="flex min-h-0 flex-1 flex-col overflow-auto p-1">
300
+ <axp-layout-renderer [layout]="pageLayout()" [(context)]="editorContext" mode="edit" />
301
+ </div>
302
+ `, isInline: true, dependencies: [{ kind: "component", type: AXPLayoutRendererComponent, selector: "axp-layout-renderer", inputs: ["layout", "context", "look", "mode"], outputs: ["contextChange", "contextInitiated", "validityChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMEntityDefinitionFormPageComponent, decorators: [{
305
+ type: Component,
306
+ args: [{
307
+ selector: 'axm-entity-definition-form-page',
308
+ standalone: true,
309
+ changeDetection: ChangeDetectionStrategy.OnPush,
310
+ imports: [AXPLayoutRendererComponent],
311
+ providers: [
312
+ {
313
+ provide: AXPPageLayoutBase,
314
+ useExisting: AXMEntityDefinitionFormPageComponent,
315
+ },
316
+ ],
317
+ template: `
318
+ <div class="flex min-h-0 flex-1 flex-col overflow-auto p-1">
319
+ <axp-layout-renderer [layout]="pageLayout()" [(context)]="editorContext" mode="edit" />
320
+ </div>
321
+ `,
322
+ host: {
323
+ class: 'flex h-full min-h-0 flex-1 flex-col overflow-hidden',
324
+ },
325
+ }]
326
+ }], ctorParameters: () => [], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
327
+
328
+ export { AXMEntityDefinitionFormPageComponent };
329
+ //# sourceMappingURL=acorex-platform-module-platform-management-client-entity-definition-form-page.component-BgBWob9p.mjs.map