@acorex/platform 19.4.5 → 19.4.6

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 (24) hide show
  1. package/fesm2022/acorex-platform-layout-builder.mjs +2 -0
  2. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-layout-entity.mjs +4 -2
  4. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  5. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-9XMpubtr.mjs → acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs} +2 -1
  6. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-9XMpubtr.mjs.map → acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs.map} +1 -1
  7. package/fesm2022/acorex-platform-widgets.mjs +389 -70
  8. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  9. package/layout/builder/lib/builder/widget-map.d.ts +2 -0
  10. package/package.json +11 -11
  11. package/widgets/lib/properties/layout.props.d.ts +1 -0
  12. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +0 -1
  13. package/widgets/lib/widgets/index.d.ts +2 -0
  14. package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +0 -2
  15. package/widgets/lib/widgets/layout/block/block-widget.config.d.ts +1 -0
  16. package/widgets/lib/widgets/layout/flex/flex-widget-designer.component.d.ts +10 -0
  17. package/widgets/lib/widgets/layout/flex/flex-widget-view.component.d.ts +10 -0
  18. package/widgets/lib/widgets/layout/flex/flex-widget.config.d.ts +28 -0
  19. package/widgets/lib/widgets/layout/flex/index.d.ts +3 -0
  20. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +6 -1
  21. package/widgets/lib/widgets/property-editors/direction/direction-widget-editor.component.d.ts +13 -0
  22. package/widgets/lib/widgets/property-editors/direction/direction-widget.config.d.ts +7 -0
  23. package/widgets/lib/widgets/property-editors/direction/index.d.ts +2 -0
  24. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layout-entity.mjs","sources":["../../../../libs/platform/layout/entity/src/lib/entity-data-seeder.ts","../../../../libs/platform/layout/entity/src/lib/entity.config.ts","../../../../libs/platform/layout/entity/src/lib/entity.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-detail-list.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-middleware.ts","../../../../libs/platform/layout/entity/src/lib/entity-registery.service.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-create.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-list.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/workflows/delete-entity.workflow.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-update.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/workflows/modify-section.workflow.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-single.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-storage-service.ts","../../../../libs/platform/layout/entity/src/lib/search-definition-command.provider.ts","../../../../libs/platform/layout/entity/src/lib/search-definition.provider.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-view.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-selector.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-edit.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-column.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget.config.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-column.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-edit.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-filter.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-print.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-view.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget.config.ts","../../../../libs/platform/layout/entity/src/lib/widgets/widget-selector/widget-selector-widget-edit.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/widget-selector/widget-selector-widget-view.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/widget-selector/widget-selector-widget.config.ts","../../../../libs/platform/layout/entity/src/lib/workflows/create-entity.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/modify-entity.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/show-details.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/show-list.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/show-file-uploader-popup.workflow.ts","../../../../libs/platform/layout/entity/src/lib/entity.module.ts","../../../../libs/platform/layout/entity/src/lib/entity.service.ts","../../../../libs/platform/layout/entity/src/acorex-platform-layout-entity.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { castArray } from 'lodash-es';\n\nexport interface AXPDataSeeder {\n seed(): Promise<void>;\n}\n\nexport const AXP_DATA_SEEDER_TOKEN = new InjectionToken<AXPDataSeeder[]>('AXP_DATA_SEEDER_TOKEN');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPDataSeederService {\n private loaders = inject(AXP_DATA_SEEDER_TOKEN, { optional: true });\n\n async seed(): Promise<void> {\n for (const loader of castArray(this.loaders)) {\n await loader?.seed();\n }\n }\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport { inject, Injectable, InjectionToken, Type } from '@angular/core';\n\nexport interface AXPEntityConfigs {\n viewers: {\n root: () => Type<any> | Promise<Type<any>>;\n detail: {\n list: () => Type<any> | Promise<Type<any>>;\n };\n master: {\n single: () => Type<any> | Promise<Type<any>>;\n create: () => Type<any> | Promise<Type<any>>;\n modify: () => Type<any> | Promise<Type<any>>;\n list: () => Type<any> | Promise<Type<any>>;\n };\n };\n}\n\nexport const AXP_ENTITY_CONFIG_TOKEN = new InjectionToken<AXPEntityConfigs>('AXP_ENTITY_CONFIG_TOKEN');\n\n\n\nexport interface AXPEntityDefinitionLoader {\n get(moduleName: string, entityName: string): Promise<AXPEntity | null>;\n}\n\nexport const AXP_ENTITY_DEFINITION_LOADER = new InjectionToken<AXPEntityDefinitionLoader>(\n 'AXP_ENTITY_DEFINITION_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityResolver {\n private providers = inject(AXP_ENTITY_DEFINITION_LOADER);\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (Array.isArray(this.providers)) {\n for (const loader of this.providers) {\n const entity = await loader.get(moduleName, entityName);\n if (entity) {\n return entity;\n }\n }\n } else {\n return await this.providers.get(moduleName, entityName);\n }\n return null;\n }\n}\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport {\n AXPEntity,\n AXPEntityAction,\n AXPEntityCommandScope,\n AXPEntityProperty,\n AXPEntityTableColumn,\n resolveActionLook,\n} from '@acorex/platform/common';\nimport { AXPMetaData } from '@acorex/platform/core';\nimport { AXPWidgetColumnNode } from '@acorex/platform/layout/builder';\nimport { computed } from '@angular/core';\n\nexport class AXPEntityCommandTriggerViewModel {\n priority: 'primary' | 'secondary';\n color: AXStyleColorType;\n icon: string;\n title: string;\n name: string;\n key?: string;\n separated: boolean;\n scope: AXPEntityCommandScope;\n disabled: boolean | string;\n hidden: boolean | string;\n options: any;\n metadata?: AXPMetaData;\n default?: boolean;\n\n constructor(entity: AXPEntity, action: AXPEntityAction) {\n this.name = `${typeof action.command === 'string' ? action.command : action.command.name}&${action.name}`;\n this.options = typeof action.command === 'object' ? action.command.options : undefined;\n this.metadata = typeof action.command === 'object' ? action.command.metadata : undefined;\n const resolvedLook = resolveActionLook(action);\n this.priority = action.priority;\n this.title = action.title;\n this.separated = action.separated ?? false;\n this.color = action.color ?? resolvedLook.color;\n this.icon = action.icon ?? resolvedLook.icon;\n this.hidden = action.hidden ?? false;\n this.disabled = action.disabled ?? false;\n this.default = action.default ?? false;\n this.scope = action.scope;\n }\n}\n\nexport class AXPEntityListViewColumnViewModel {\n constructor(\n private property: AXPEntityProperty,\n private column: AXPEntityTableColumn,\n ) {}\n\n name = this.property.name;\n title = this.column.title ?? this.property.title;\n visible = this.column?.options?.visible ?? true;\n dir = this.column.sort?.dir;\n sortEnabled = this.property.options?.sort?.enabled;\n width: '';\n\n node = computed<AXPWidgetColumnNode>(() => {\n const widget = this.property.schema.interface!;\n return {\n path: this.column.options?.dataPath ?? this.name,\n type: widget.type,\n options: { ...widget?.options, ...this.column?.options },\n } as AXPWidgetColumnNode;\n });\n}\n","import { AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n AXPFilterOperatorMiddlewareService,\n AXPRelatedEntity,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { Injector, computed, signal } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPEntityResolver } from './entity.config';\nimport { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } from './entity.viewmodel';\nimport { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService } from '@acorex/platform/core';\n\nexport class AXPEntityDetailListViewModel {\n private detailEntity = signal<AXPEntity | null>(null);\n private formatService = this.injector.get(AXFormatService);\n private workflow = this.injector.get(AXPWorkflowService);\n private filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);\n private expressionEvaluator = this.injector.get(AXPExpressionEvaluatorService);\n\n dataSource = new AXDataSource({\n byKey: (key) => {\n const func = this.detailEntity()?.queries.byKey.execute as Function;\n return func();\n },\n load: (e) => {\n const func = this.detailEntity()?.queries.list?.execute as Function;\n return func(e);\n },\n pageSize: 5,\n key: 'id',\n });\n\n public parentKey = computed(() => {\n return this.detailEntity()?.parentKey;\n });\n\n constructor(\n private injector: Injector,\n private detailEntityConfig: AXPRelatedEntity,\n private parent: { entity: AXPEntity; data: any },\n ) {\n this.initialize();\n }\n\n async initialize() {\n const entityResolver = this.injector.get(AXPEntityResolver);\n const [moduleName, entityName] = this.detailEntityConfig.entity.split('.');\n const entity = await entityResolver.get(moduleName, entityName);\n if (!entity) {\n throw Error(`Invalid enitity name: ${this.detailEntityConfig.entity}`);\n }\n this.detailEntity.set(entity);\n this.applyFilterAndSort();\n }\n\n public selectedItems = signal<any[]>([]);\n\n public hasSelectedItems = computed<boolean>(() => {\n return this.selectedItems().length > 0;\n });\n\n public clearSelection(): void {\n this.selectedItems.set([]);\n }\n\n //****************** Title ******************//\n public title = computed<string>(() => {\n return (\n this.detailEntityConfig.title ??\n this.detailEntity()?.interfaces?.detail?.list?.title! ??\n this.detailEntity()?.formats.plural!\n );\n });\n\n //****************** Visibility ******************//\n public hidden = computed<Promise<boolean>>(async () => {\n if (typeof this.detailEntityConfig.hidden == 'string') {\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return get(this.parent.data, path);\n },\n },\n };\n return await this.expressionEvaluator.evaluate(this.detailEntityConfig.hidden, scope);\n } else {\n return this.detailEntityConfig.hidden ?? false;\n }\n });\n\n //****************** Inline filter ******************//\n public inlineFiltersPlaceholders = computed<string[]>(() => {\n //return this.entityDef.properties.filter(p => p.options?.filter?.inline?.enabled).map(c => c.title);\n return [];\n });\n\n public hasInlineFilters = computed<boolean>(() => {\n return this.inlineFiltersPlaceholders().length > 0;\n });\n\n //****************** Actions ******************//\n private allActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n const list = this.detailEntity()?.interfaces?.master?.list?.actions ?? [];\n const detailEntityActionList = this.detailEntityConfig.actions ?? [];\n\n const mergedActions = list.map((tr) => {\n const commandName = typeof tr.command === 'string' ? tr.command : tr.command.name;\n const overrideAction = detailEntityActionList.find((action) => {\n const actionCommandName = typeof action.command === 'string' ? action.command : action.command.name;\n return actionCommandName === commandName && action.name === tr.name;\n });\n return new AXPEntityCommandTriggerViewModel(this.detailEntity()!, overrideAction ?? tr);\n });\n\n return mergedActions;\n });\n\n public selectedScopeActionsCount = computed<number>(() => {\n return this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Selected).length;\n });\n\n public primaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.allActions().filter(\n (a) =>\n a.priority == 'primary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())),\n );\n });\n\n public secondaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.allActions().filter(\n (a) =>\n a.priority == 'secondary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())),\n );\n });\n public primaryRowActions = computed<AXPEntityCommandTriggerViewModel[]>(() =>\n this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'primary'),\n );\n\n public secondaryRowActions = computed<AXPEntityCommandTriggerViewModel[]>(() =>\n this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'secondary'),\n );\n\n //****************** Filter ******************//\n\n private inlineFilters: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: [],\n };\n\n applyInlineFilter(value: string) {\n // const props = this.entityDef.properties.filter(c => c.options?.filter?.inline?.enabled);\n // this.inlineFilters.filters = [];\n // if (value) {\n // props.forEach(p => {\n // this.inlineFilters.filters?.push({\n // field: p.name,\n // operator: {\n // type: 'contains'\n // },\n // value\n // })\n // })\n // }\n this.applyFilterAndSort();\n }\n\n applyFilterAndSort() {\n this.dataSource.clearFilter();\n //\n //this.dataSource.sort(...this.detailEntity.().map(s => ({ dir: s.dir, field: s.name } as AXDataSourceSortOption)));\n //\n\n const parentFilters: AXDataSourceFilterOption[] =\n this.detailEntityConfig.conditions?.map((c) => {\n return {\n field: c.name,\n operator: c.operator as unknown as AXDataSourceOperator,\n value: this.parent.data?.id,\n } as AXDataSourceFilterOption;\n }) ?? [];\n const parentFilterWrapper: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: parentFilters,\n };\n //\n const inline = this.inlineFilters.filters?.length ?? 0;\n const parent = parentFilterWrapper.filters?.length ?? 0;\n //\n if (inline) {\n this.dataSource.filter(this.filterOperatorMiddleware.transformFilter(this.inlineFilters));\n } else if (!inline && parent) {\n this.dataSource.filter(this.filterOperatorMiddleware.transformFilter(parentFilterWrapper));\n } else if (inline && parent) {\n this.dataSource.filter(\n this.filterOperatorMiddleware.transformFilter({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [this.inlineFilters, parentFilterWrapper],\n }),\n );\n }\n //\n this.dataSource.refresh();\n }\n\n //****************** Columns ******************//\n\n columns = computed(() => {\n if (this.detailEntity()) {\n const detailColumns = this.detailEntityConfig.columns ?? [];\n const columns = this.detailEntity()?.columns?.map((c) => c.name) ?? [];\n const props =\n this.detailEntity()?.properties.filter(\n (p) => p.schema.hidden != true && (detailColumns?.length == 0 || detailColumns?.includes(p.name)),\n ) ?? [];\n const displayColumns = props.filter((p) => columns.some((c) => c == p.name));\n return displayColumns.map((p) => {\n return new AXPEntityListViewColumnViewModel(p, this.detailEntity()?.columns?.find((c) => c.name == p.name)!);\n });\n }\n return [];\n });\n\n //****************** Commands ******************//\n public async executeCommand(commandName: string, data: any = null) {\n const action = this.allActions().find((c) => {\n const isSelectedScope = this.selectedItems().length\n ? c.scope == AXPEntityCommandScope.Selected\n : c.scope == AXPEntityCommandScope.Individual;\n return c.name == commandName && (isSelectedScope || c.scope == AXPEntityCommandScope.TypeLevel);\n });\n\n if (!action) return;\n\n const actionData = action.options?.process?.data;\n const initialData = actionData ? { ...data, ...(await this.evaluateExpressions(actionData)) } : data;\n\n await this.workflow.execute(commandName.split('&')[0], {\n entity: getEntityInfo(this.detailEntity()!).source,\n data: action.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : initialData,\n entityInfo: {\n name: this.detailEntity()?.name,\n module: this.detailEntity()?.module,\n title: this.detailEntity()?.title,\n parentKey: this.detailEntity()?.parentKey,\n source: this.detailEntity()?.source,\n },\n options: action.options,\n });\n }\n\n private evaluateExpressions = async (actionData: { [key: string]: string }) => {\n const parentData = this.parent.data;\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return get(parentData, path);\n },\n },\n };\n\n return await this.expressionEvaluator.evaluate(actionData, scope);\n };\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport { Injectable } from '@angular/core';\n\nexport abstract class AXPEntityMiddleware {\n abstract process(entity: AXPEntity): AXPEntity;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityMiddlewareDefault extends AXPEntityMiddleware {\n process(entity: AXPEntity): AXPEntity {\n return entity;\n }\n\n // private processUsersEntity(entity: AXPEntity): AXPEntity {\n // // const customEntity: AXPEntity = {\n // // ...entity,\n // // properties: [\n // // ...entity.properties,\n // // {\n // // name: 'customProperty',\n // // title: 'Custom Property',\n // // schema: {\n // // dataType: 'string',\n // // interface: {\n // // type: AXPWidgetsCatalog.text,\n // // },\n // // },\n // // },\n // // ],\n // // columns: [...(entity.columns || []), { name: 'customProperty' }],\n // // };\n\n // // customEntity.columns?.push({ name: 'customProperty' });\n // // console.log({ customEntity });\n // entity.properties.push({\n // name: 'testt',\n // title: `sdkfkjsdf`,\n // groupId: 'info',\n // schema: {\n // dataType: 'string',\n // interface: {\n // type: AXPWidgetsCatalog.text,\n // },\n // },\n // options: {\n // filter: {\n // advance: {\n // enabled: true,\n // },\n // },\n // sort: {\n // enabled: true,\n // },\n // },\n // validations: [\n // {\n // rule: 'required',\n // },\n // ],\n // });\n // entity.interfaces?.master?.create?.properties?.push({\n // name: 'testt',\n // layout: {\n // positions: {\n // lg: {\n // colSpan: 12,\n // },\n // },\n // },\n // });\n // entity.interfaces?.master?.update?.properties?.push({\n // name: 'testt',\n // layout: {\n // positions: {\n // lg: {\n // colSpan: 12,\n // },\n // },\n // },\n // });\n // entity.columns?.push({ name: 'testt' });\n // entity.interfaces?.master?.list?.actions?.push({\n // title: `test`,\n // command: 'create-entity',\n // priority: 'primary',\n // type: 'create',\n // scope: AXPEntityCommandScope.TypeLevel,\n // });\n // console.log({ entity });\n // return entity;\n // }\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { AXPEntityMiddleware } from './entity-middleware';\nimport { AXP_ENTITY_DEFINITION_LOADER, AXPEntityDefinitionLoader, AXPEntityResolver } from './entity.config';\n\nexport interface AXPEntityPreloadEntity {\n module: string;\n entity: string;\n}\n\nexport interface AXPEntityDefinitionPreloader {\n preload(): AXPEntityPreloadEntity[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPEntityDefinitionRegistryService {\n private providers = inject(AXP_ENTITY_DEFINITION_LOADER);\n private resolver = inject(AXPEntityResolver);\n private middleware = inject(AXPEntityMiddleware);\n\n async preload() {\n const providers = Array.isArray(this.providers)\n ? this.providers\n : ([this.providers] as AXPEntityDefinitionLoader[]);\n const promises: Promise<AXPEntity | null>[] = [];\n\n providers.forEach((provider) => {\n const items = typeof provider.preload == 'function' ? provider.preload() : [];\n items.forEach((item: AXPEntityPreloadEntity) => {\n promises.push(this.resolver.get(item.module, item.entity));\n });\n });\n\n const entities = await Promise.all(promises);\n entities.forEach((entity) => {\n if (entity != null) this.register(this.middleware.process(entity));\n });\n }\n\n // Stores AXPEntityConfig objects, keyed by a combination of module and entity name.\n private entities = new Map<string, AXPEntity>();\n\n // Entity resolver service for dynamically loading entity configurations.\n private entityResolver = inject(AXPEntityResolver); // Assuming AXPEntityLoader is the correct type\n\n /**\n * Registers a new entity configuration. Entities are identified uniquely by a combination\n * of their module and name.\n *\n * @param config The configuration object of the entity to be registered.\n */\n register(config: AXPEntity): void {\n const key = this.createEntityKey(config.module, config.name);\n this.entities.set(key, this.middleware.process(config));\n }\n\n /**\n * Returns an array of all registered entity configurations.\n *\n * @returns An array of AXPEntity objects.\n */\n getAll(): AXPEntity[] {\n return Array.from(this.entities.values());\n }\n\n /**\n * Resolves an entity configuration based on module and entity name. If the configuration\n * is not already registered, attempts to load it dynamically. Throws an error if the\n * entity cannot be found or loaded.\n *\n * @param moduleName The module name of the entity.\n * @param entityName The name of the entity.\n * @returns A promise resolving to the entity configuration.\n * @throws Error if the entity configuration cannot be resolved.\n */\n async resolve(moduleName: string, entityName: string): Promise<AXPEntity> {\n const key = this.createEntityKey(moduleName, entityName);\n let config = this.entities.get(key) ?? null;\n\n if (!config) {\n try {\n config = await this.entityResolver.get(moduleName, entityName);\n if (config) {\n this.register(config);\n }\n } catch (error) {\n throw error; // Rethrow to allow error handling by caller\n }\n\n if (!config) {\n throw new Error(`Invalid entity name: ${key}`);\n }\n }\n return config;\n }\n\n /**\n * Creates a unique key for an entity based on its module and name.\n *\n * @param moduleName The module name of the entity.\n * @param entityName The name of the entity.\n * @returns The unique key for the entity.\n */\n private createEntityKey(moduleName: string, entityName: string): string {\n return `${moduleName}.${entityName}`;\n }\n}\n","import {\n AXPEntity,\n AXPEntityProperty,\n AXPEntityPropertyCreateView,\n AXPEntitySectionView,\n AXPGridLayoutOptions,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService, AXPPageStatus, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { Injectable, Injector, computed, inject, signal } from '@angular/core';\nimport { cloneDeep, get, isNil, merge, set } from 'lodash-es';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\n\nexport class AXPEntityCreateViewSectionViewModel {\n constructor(private entity: AXPEntity, private section: AXPEntitySectionView) {}\n\n group = this.entity.groups?.find((c) => c.id == this.section.id)!;\n name = signal(this.group.id);\n\n title = computed<string>(() => {\n return this.group.title ?? this.group.id;\n });\n\n description = computed<string | null | undefined>(() => {\n return this.group.description;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const source = cloneDeep(this.section.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n elements = computed(() => {\n const { interfaces, properties } = this.entity;\n const createProps = interfaces?.master?.create?.properties ?? [];\n const createPropNames = new Set(createProps.map(({ name }) => name));\n\n const filteredProperties = properties.filter(\n ({ groupId, schema, name }) => groupId === this.group.id && !schema.hidden && createPropNames.has(name)\n );\n\n return filteredProperties.map((property) => {\n const createProp = createProps.find(({ name }) => name === property.name);\n return new AXPEntityCreateViewElementViewModel(this.entity, this, property, createProp!);\n });\n });\n}\n\nexport class AXPEntityCreateViewElementViewModel {\n constructor(\n private entity: AXPEntity,\n private section: AXPEntityCreateViewSectionViewModel,\n private property: AXPEntityProperty,\n private createProp: AXPEntityPropertyCreateView\n ) {}\n\n name = signal(this.property.name);\n title = signal(this.property.title);\n description = signal(this.property.description);\n\n editable = computed<boolean>(() => {\n return !(this.property.schema.readonly ?? false);\n });\n\n isRequired = computed<boolean>(() => {\n return this.property.validations?.some((c) => c.rule == 'required') || false;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const source = cloneDeep(this.createProp.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n node = computed<AXPWidgetNode>(() => {\n const schema = this.property.schema!;\n const widget = schema.interface!;\n return {\n type: widget.type,\n mode: this.editable() ? 'edit' : 'view',\n path: this.name(),\n name: this.name(),\n children: widget.children,\n formula: widget.formula,\n triggers: widget.triggers,\n valueTransforms: widget.valueTransforms,\n options: merge(schema.interface?.options, {\n validations: this.property.validations?.map((c) => ({ rule: c.rule, message: c.message, options: c.options })),\n }),\n } as AXPWidgetNode;\n });\n}\n\nexport class AXPEntityMasterCreateViewModel {\n private entityDef = cloneDeep(this.config)!;\n\n private workflow = this.injector.get(AXPWorkflowService);\n private expressionEvaluator = this.injector.get(AXPExpressionEvaluatorService);\n\n public builder: AXPLayoutBuilderService;\n\n constructor(\n private readonly injector: Injector,\n private readonly config: AXPEntity,\n private readonly initialData: any = {},\n private readonly commandOptions: any\n ) {\n if (!initialData) initialData = {};\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(get(initialData, path));\n });\n });\n },\n },\n };\n\n const processDefault = async (value: any) => {\n if (typeof value == 'function') {\n return value();\n } else if (typeof value == 'string' && value.startsWith('{{')) {\n return await this.expressionEvaluator.evaluate(value, scope);\n }\n return value;\n };\n\n this.config.properties\n .filter((c) => !isNil(c.schema.defaultValue))\n .forEach(async (p) => {\n const value = await processDefault(p.schema.defaultValue);\n set(initialData, p.name, value);\n });\n //\n this.context.set(initialData);\n this.options.set(commandOptions);\n //\n const { redirect = true, canCreateNewOne = true } = commandOptions?.['process'] ?? {};\n this.canCreateNewOne.set(canCreateNewOne);\n this.redirect.set(redirect);\n }\n\n public context = signal<any>(this.initialData ?? {});\n public options = signal<any>(this.commandOptions ?? {});\n\n public isInProgress = signal<boolean>(false);\n public canCreateNewOne = signal<boolean>(true);\n public redirect = signal<boolean>(true);\n\n public sections = computed<AXPEntityCreateViewSectionViewModel[]>(() => {\n const { interfaces, properties } = this.entityDef;\n const createProps = interfaces?.master?.create?.properties?.map(({ name }) => name) ?? [];\n\n const visibleProperties = properties.filter(\n ({ groupId, schema, name }) => groupId && !schema.hidden && createProps.includes(name)\n );\n\n const sections =\n interfaces?.master?.create?.sections?.filter(({ id }) =>\n visibleProperties.some(({ groupId }) => groupId === id)\n ) ?? [];\n\n return sections.map((section) => new AXPEntityCreateViewSectionViewModel(this.entityDef, section));\n });\n\n public async save(): Promise<any | void> {\n try {\n this.isInProgress.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n const exec = this.entityDef.commands?.create?.execute as Function;\n const result = await exec(this.context());\n this.context.update((c) => ({ ...c, ...result }));\n return new Promise((resolve) => {\n setTimeout(() => {\n this.builder.setStatus(AXPPageStatus.Submitted);\n resolve(result);\n });\n });\n } catch (error: any) {\n this.builder.setStatus(AXPPageStatus.Error);\n return Promise.reject(error);\n } finally {\n this.isInProgress.set(false);\n }\n }\n\n public async createNewOne() {\n await this.workflow.execute('create-entity', {\n entity: getEntityInfo(this.entityDef).source,\n options: this.options(),\n data: this.initialData,\n // entityInfo\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityCreateViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(\n moduleName: string,\n entityName: string,\n initialData: any = null,\n options: { canCreateNewOne: boolean; redirect: boolean } = { canCreateNewOne: true, redirect: true }\n ): Promise<AXPEntityMasterCreateViewModel> {\n this.layout.setNavigationLoading(true);\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterCreateViewModel(this.injector, config, initialData, options);\n }\n}\n","import { AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n AXPEntityProperty,\n AXPFilterDefinition,\n AXPFilterOperatorMiddlewareService,\n AXPFilterQuery,\n AXPQueryView,\n AXPRefreshEvent,\n AXPSettingService,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport {\n AXPBreadcrumbItem,\n AXPContextStore,\n AXPExecuteCommand,\n AXPExpressionEvaluatorScope,\n AXPExpressionEvaluatorService,\n AXPPlatformScope,\n} from '@acorex/platform/core';\nimport { AXPWidgetRegistryService, AXPWidgetTypesMap } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { Injectable, EnvironmentInjector, computed, inject, signal, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { cloneDeep, get, set } from 'lodash-es';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } from './entity.viewmodel';\n\nexport interface AXPEntityMasterListViewSortPropViewModel {\n name: string;\n title: string;\n dir?: string;\n}\n\nexport class AXPEntityMasterListViewQueryViewModel {\n constructor(\n private entity: AXPEntity,\n private section: AXPEntityMasterListViewModel,\n private view: AXPQueryView,\n ) { }\n\n name = this.view.name;\n title = this.view.title;\n sorts = this.view.sorts;\n columns = this.view.columns;\n conditions = this.view.conditions;\n indexCol = this.view.indexCol;\n pageSize = this.view.pageSize;\n}\n\nexport class AXPEntityMasterListViewModel {\n readonly entityDef = cloneDeep(this.config)!;\n private readonly _viewDef = cloneDeep(this.entityDef.interfaces?.master?.list)!;\n private readonly formatService = this.injector.get(AXFormatService);\n private readonly session = this.injector.get(AXPSessionService);\n private readonly workflow = this.injector.get(AXPWorkflowService);\n private readonly settings = this.injector.get(AXPSettingService);\n private readonly widgetResolver = this.injector.get(AXPWidgetRegistryService);\n private readonly expressionEvaluator = this.injector.get(AXPExpressionEvaluatorService);\n\n private readonly filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);\n\n private settingEntityKey = `${this.config.module}:${this.config.name}`;\n private readonly destroyed = new Subject<void>();\n\n public events$: Subject<{ action: string; meta?: any }> = new Subject();\n\n //****************** Views ******************//\n\n views = computed(() => {\n const views = this.entityDef.interfaces?.master?.list?.views ?? [];\n\n return views.map((v) => {\n return new AXPEntityMasterListViewQueryViewModel(this.entityDef, this, v);\n });\n });\n\n view = signal<AXPEntityMasterListViewQueryViewModel>(this.views()[0]);\n\n async setView(viewName: string | null = null) {\n const entitySetting = await this.settings.get(this.settingEntityKey);\n const selectedViewName = entitySetting?.list?.currentView;\n if (viewName != this.view().name) {\n this.view.set(this.views().find((c) => c.name == (viewName || selectedViewName)) ?? this.views()[0]);\n\n this.applyViewSorts();\n this.applyViewColumns();\n this.applyViewFilters();\n // this.applyFilterAndSort();\n this.applySettings();\n }\n }\n\n dataSource = new AXDataSource({\n byKey: (key) => {\n const func = this.entityDef.queries.byKey.execute as Function;\n return func();\n },\n load: (e) => {\n const func = this.entityDef.queries.list?.execute as Function;\n return func(e);\n },\n pageSize: this.view().pageSize || 10,\n key: 'id',\n });\n\n constructor(\n private injector: Injector,\n private config: AXPEntity,\n ) {\n this.workflow.events$\n .pipe(ofType(AXPRefreshEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n if (event.payload.entity == getEntityInfo(this.entityDef).source) {\n this.selectedItems.set([]);\n this.events$.next({ action: 'refresh', meta: event.payload.meta });\n }\n });\n this.sortedFields.set(this.sortableFields());\n }\n\n public async applySettings() {\n this.saveSettings('view');\n\n const listViewSetting = await this.settings.get(this.settingEntityKey);\n if (listViewSetting) {\n const columns = listViewSetting.list.views[this.view().name].columns;\n const pageSize = listViewSetting.list.views[this.view().name].pageSize;\n const columnVisibilityMap = new Map(columns.map((col: any) => [col.name, col.visible]));\n const columnWidthsMap = new Map(columns.map((col: any) => [col.name, col.width]));\n\n // if (pageSize) {\n // this.dataSource.setPageSize(pageSize);\n // }\n\n this.columns.update((prev) =>\n prev\n .map((c: any) => {\n return { ...c, width: columnWidthsMap.get(c.name), visible: columnVisibilityMap.get(c.name) ?? c.visible };\n }) // Update visibility\n .sort(\n (a, b) =>\n columns.findIndex((col: any) => col.name === a.name) -\n columns.findIndex((col: any) => col.name === b.name),\n ),\n );\n }\n }\n\n public async saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize', data?: any) {\n const updateSettings = (updateFn: (prev: any) => any) => {\n this.settings.scope(AXPPlatformScope.User).update(this.settingEntityKey, updateFn);\n };\n\n switch (changesType) {\n case 'columnSizes':\n updateSettings((prev) => {\n const field = data.dataField.split('-')[1];\n const newSettings = { ...prev };\n\n set(\n newSettings,\n `list.views.${this.view().name}.columns`,\n prev?.list?.views?.[this.view().name]?.columns?.map((c: any) => ({\n ...c,\n width: c.name === field ? data.width : c.width,\n })),\n );\n\n return newSettings;\n });\n break;\n case 'columnOrders':\n updateSettings((prev) => {\n const newSettings = { ...prev };\n\n set(\n newSettings,\n `list.views.${this.view().name}.columns`,\n data.map((c: any) => ({\n name: c.name,\n visible: c.visible,\n width: c.width,\n })),\n );\n\n return newSettings;\n });\n break;\n case 'view':\n updateSettings((prev) => ({\n ...prev,\n list: {\n ...prev?.list,\n currentView: this.view().name,\n },\n }));\n break;\n\n case 'pageSize':\n updateSettings((prev) => ({\n ...prev,\n list: {\n ...prev?.list,\n views: {\n ...prev?.list?.views,\n [this.view().name]: {\n ...prev?.list?.views?.[this.view().name],\n pageSize: data,\n },\n },\n },\n }));\n break;\n\n default:\n break;\n }\n }\n\n public selectedItems = signal<any[]>([]);\n\n public parentKey = computed(() => {\n return this.entityDef.parentKey;\n });\n\n public hasSelectedItems = computed<boolean>(() => {\n return this.selectedItems().length > 0;\n });\n\n public clearSelection(): void {\n this.selectedItems.set([]);\n }\n\n //****************** Title ******************//\n public title = computed<string>(() => {\n return this._viewDef.title ?? this.entityDef.formats.plural!;\n });\n //****************** Description ******************//\n public description = computed<string | null>(() => {\n return this._viewDef.description ?? null;\n });\n\n //****************** Inline filter ******************//\n public inlineFiltersPlaceholders = computed<string[]>(() => {\n return this.entityDef.properties.filter((p) => p.options?.filter?.inline?.enabled).map((c) => c.title ?? c.name);\n });\n\n public hasInlineFilters = computed<boolean>(() => {\n return this.inlineFiltersPlaceholders().length > 0;\n });\n\n //****************** Beardcrumbs ******************//\n public beardcrumbs = computed<AXPBreadcrumbItem[]>(() => {\n return [\n {\n title: this.title(),\n },\n ];\n });\n\n //****************** Actions ******************//\n private allActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n const list = this.entityDef.interfaces?.master?.list?.actions ?? [];\n return list.map((tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)) ?? [];\n });\n\n public async getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]> {\n const scope: AXPExpressionEvaluatorScope = {};\n const actions = await Promise.all(\n this.allActions()\n .filter((a) => a.priority == 'primary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())))\n .map(async (a) => {\n const isHidden = await this.expressionEvaluator.evaluate(a.hidden, scope);\n if (isHidden) return null;\n const disabled = await this.expressionEvaluator.evaluate(a.disabled, scope);\n return { ...a, disabled };\n }),\n );\n return actions as AXPEntityCommandTriggerViewModel[];\n }\n\n public async getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]> {\n const scope: AXPExpressionEvaluatorScope = {};\n const actions = await Promise.all(\n this.allActions()\n .filter((a) => a.priority == 'secondary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())))\n .map(async (a) => {\n const isHidden = await this.expressionEvaluator.evaluate(a.hidden, scope);\n if (isHidden) return null;\n const disabled = await this.expressionEvaluator.evaluate(a.disabled, scope);\n return { ...a, disabled };\n }),\n );\n return actions as AXPEntityCommandTriggerViewModel[];\n }\n\n\n public selectedScopeActionsCount = computed<number>(() => {\n return this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Selected).length;\n });\n\n public primaryRowActions = computed<AXPEntityCommandTriggerViewModel[]>(() =>\n this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'primary'),\n );\n\n\n\n public async secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]> {\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n const actions = await Promise.all(\n this.allActions()\n .filter((a) => a.scope === AXPEntityCommandScope.Individual && a.priority === 'secondary')\n .map(async (a) => {\n const isHidden = await this.expressionEvaluator.evaluate(a.hidden, scope);\n if (isHidden) return null;\n const disabled = await this.expressionEvaluator.evaluate(a.disabled, scope);\n return { ...a, disabled };\n }),\n );\n\n return actions.filter(Boolean) as AXPEntityCommandTriggerViewModel[];\n }\n\n //****************** Filter ******************//\n\n filterQueries = signal<AXPFilterQuery[]>([]);\n\n get properties(): AXPEntityProperty[] {\n return this.entityDef.properties;\n }\n\n get filtersDef(): AXPFilterDefinition[] {\n const props = this.entityDef.properties.filter(\n (c) => c.options?.filter?.advance?.enabled || c.options?.filter?.inline?.enabled,\n );\n return props.map((e) => {\n const widgetConfig = this.widgetResolver.resolve(\n e.schema.interface?.type as AXPWidgetTypesMap[keyof AXPWidgetTypesMap],\n );\n\n const type = (e.options?.filter?.advance?.widgetType ||\n widgetConfig?.defaultFilterWidgetName ||\n e.schema.interface?.type) as AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n return {\n title: e.title,\n field: e.name,\n operator: {\n type: 'contains',\n },\n widget: { ...e.schema.interface, path: e.name, type },\n filters: [],\n isParametric: false,\n icon: widgetConfig?.icon,\n filterType: {\n advance: e.options?.filter?.advance?.enabled ?? false,\n inline: e.options?.filter?.inline?.enabled ?? false,\n },\n };\n });\n }\n\n // const viewFilters = this.view().conditions.map((f) => ({\n // field: f.name,\n // operator: f.operator,\n // value: f.value,\n // }));\n async applyViewFilters() {\n const viewFilters = this.view().conditions.map((f) => ({\n field: f.name,\n operator: f.operator,\n value: f.value,\n }));\n this.filterQueries.update((prev) => ({ ...prev, filters: viewFilters as AXPFilterQuery[] }));\n }\n\n resetFilters() {\n this.applyViewFilters();\n }\n\n async applyFilterAndSort() {\n this.dataSource.clearFilter();\n this.dataSource.sort(\n ...this.sortedFields()\n .filter((sf) => sf.dir)\n .map((s) => ({ dir: s.dir, field: s.name }) as AXDataSourceSortOption),\n );\n\n this.dataSource.filter(\n this.filterOperatorMiddleware.transformFilter({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: this.filterQueries() as AXDataSourceFilterOption[],\n }),\n );\n this.dataSource.refresh();\n }\n\n //****************** Columns ******************//\n\n private allAvailableColumns = (): AXPEntityListViewColumnViewModel[] => {\n const { columns = [], properties } = this.entityDef;\n const visibleProperties = properties.filter(({ schema }) => !schema?.hidden);\n const visiblePropNames = new Set(visibleProperties.map(({ name }) => name));\n return columns\n .filter(({ name }) => visiblePropNames.has(name))\n .map((column) => {\n const property = visibleProperties.find(({ name }) => name === column.name);\n return new AXPEntityListViewColumnViewModel(property!, column);\n });\n };\n\n visibleColumnCount = () => {\n return this.columns().filter((c) => c.visible == true).length;\n };\n\n columns = signal<AXPEntityListViewColumnViewModel[]>([]);\n\n resetColumns() {\n this.applyViewColumns();\n }\n\n async onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]) {\n this.saveSettings('columnOrders', columns);\n }\n\n applyViewColumns() {\n const cols = this.view().columns;\n const cloned = this.allAvailableColumns().map((c) => {\n const column = this.entityDef.columns?.find((cc) => cc.name == c.name);\n const prop = this.entityDef.properties.find((p) => p.name == c.name);\n const col = new AXPEntityListViewColumnViewModel(prop!, column!);\n col.visible = !cols.some((c) => c == col.name) && col.visible != false;\n return col;\n });\n this.columns.set(cloned);\n }\n\n //****************** Sort ******************//\n\n sortableFields = () => {\n const props = this.entityDef.properties.filter((c) => c.options?.sort?.enabled);\n return props.map((e) => {\n return {\n name: e.name,\n title: e.title,\n dir: undefined,\n };\n });\n };\n\n sortableFieldsCount = () => {\n return this.entityDef.properties.filter((c) => c.options?.sort?.enabled).length ?? 0;\n };\n\n canSort = () => {\n return this.sortableFieldsCount() > 0;\n };\n\n canAddMoreSort = () => {\n return this.sortedCount() < this.sortableFieldsCount();\n };\n\n sortedCount = () => {\n return this.sortedFields().filter((i) => i.dir).length;\n };\n\n sortedFields = signal<AXPEntityMasterListViewSortPropViewModel[]>([]);\n\n resetSorts() {\n this.applyViewSorts();\n }\n\n applySorts() {\n this.applyFilterAndSort();\n }\n\n addSort(): void {\n const prop = this.sortableFields().find((c) => !this.sortedFields().some((s) => s.name == c.name));\n if (prop) {\n this.sortedFields.set([...this.sortedFields(), ...[prop]]);\n }\n }\n\n removeSort(name: string): void {\n this.sortedFields.set(this.sortedFields().filter((c) => c.name != name));\n }\n\n applyViewSorts() {\n const viewSorts = this.view().sorts;\n\n this.sortedFields.update((prev) => {\n const viewSortsMap = new Map(viewSorts.map((vs) => [vs.name, vs]));\n return prev.map((sf) => {\n const updatedSort = viewSortsMap.get(sf.name);\n if (updatedSort) {\n return { ...updatedSort, title: sf.title };\n }\n return sf;\n });\n });\n }\n\n //****************** Commands ******************//\n public async executeCommand(commandName: string, data: any = null) {\n const action = this.allActions().find((c) => {\n return (\n c.name == commandName &&\n ((this.selectedItems().length\n ? c.scope == AXPEntityCommandScope.Selected\n : c.scope == AXPEntityCommandScope.Individual) ||\n c.scope == AXPEntityCommandScope.TypeLevel)\n );\n });\n const command = commandName.split('&')[0];\n const options = await this.evaluateExpressions(action?.options,data);\n await this.workflow.execute(command, {\n entity: getEntityInfo(this.entityDef).source,\n entityInfo: {\n name: this.entityDef.name,\n module: this.entityDef.module,\n title: this.entityDef.title,\n parentKey: this.entityDef.parentKey,\n source: this.entityDef.source,\n },\n data: action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : data,\n options: options,\n metadata: action?.metadata,\n });\n }\n\n private evaluateExpressions = async (options: { [key: string]: string },data:any) => {\n\n \n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return get(data, path);\n },\n },\n };\n\n return await this.expressionEvaluator.evaluate(options, scope);\n };\n\n async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command?.name) {\n case 'navigate':\n await this.workflow.execute('navigate', {\n options: {\n path: command.options?.['path'],\n },\n });\n break;\n default:\n this.executeCommand(command.name);\n break;\n }\n }\n\n //\n destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityListViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(moduleName: string, entityName: string): Promise<AXPEntityMasterListViewModel> {\n this.layout.setNavigationLoading(true);\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterListViewModel(this.injector, config);\n }\n}\n\nexport const AXPEntityListViewModelResolver: ResolveFn<Promise<AXPEntityMasterListViewModel>> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n service: AXPEntityListViewModelFactory = inject(AXPEntityListViewModelFactory),\n): Promise<AXPEntityMasterListViewModel> => {\n const moduleName = route.parent?.paramMap.get('module') as string;\n const entityName = route.paramMap.get('entity') as string;\n //\n return service.create(moduleName, entityName);\n};\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPEntity, AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\n\nexport const AXPEntityDeletedEvent = createWorkFlowEvent<{ entity: string; ids: string[]; meta?: any }>(\n '[Entity] Deleted'\n);\n\nexport interface AXPEntityDeleteOptions {\n source: string;\n ids: string[];\n}\n\n@Injectable()\nexport class AXPEntityPerformDeleteAction extends AXPWorkflowAction {\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private dialogService = inject(AXDialogService);\n private loadingDialog = inject(AXLoadingDialogService);\n private translationService = inject(AXTranslationService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const moduleEntity = context.getVariable('entity');\n const data = context.getVariable<any>('data');\n const meta = context.getVariable<any>('meta');\n\n const options = context.getVariable<any>('options');\n const process = options?.['process'];\n\n const showResult = process?.showResult ?? true;\n\n const entities: AXPEntityDeleteOptions[] = [];\n if (moduleEntity != null) {\n const ids = Array.isArray(data) ? data.map((c) => c.id) : [data.id];\n entities.push({\n source: moduleEntity,\n ids: ids,\n });\n } else {\n const listEntities = context.getVariable('entities');\n entities.push(...listEntities);\n }\n\n const entityDefinitions: { [key: string]: AXPEntity } = {};\n let deletedCount = 0;\n context.setVariable('deleteSuccessful', false);\n for await (const entity of entities) {\n const [moduleName, entityName] = entity.source.split('.');\n const entityDefinition = await this.entityRegistery.resolve(moduleName, entityName);\n if (entityDefinition.parentKey && data[entityDefinition.parentKey]) {\n context.setVariable('meta', { ...meta, refreshTargetId: data[entityDefinition.parentKey] });\n }\n entityDefinitions[entity.source] = entityDefinition;\n }\n\n // Compute consolidated ids from all entities\n const idLength = entities.reduce((acc: number, curr) => acc + curr.ids.length, 0);\n const dialog = this.loadingDialog.show({\n title: await this.translationService.translateAsync('workflow.deleting'),\n mode: 'determinate',\n status: 'Deleting...',\n progressValue: 0,\n text: `0/${idLength}`,\n buttons: [\n {\n text: await this.translationService.translateAsync('cancel'),\n color: 'danger',\n onClick: () => {\n dialog.close();\n },\n },\n ],\n });\n\n let allPromises: any[] = [];\n for (const entity of entities) {\n const entityDefinition = entityDefinitions[entity.source];\n if (entityDefinition.commands?.delete != null) {\n const deleteExec = entityDefinition.commands?.delete?.execute as Function;\n const entityPromises = (entity.ids as any[])\n .map((id, i) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(deleteExec(id));\n }, i * 200);\n });\n })\n .map((p) =>\n p?.then(\n (value) => {\n deletedCount++;\n dialog.setProgressText(`${deletedCount}/${idLength}`);\n dialog.setProgressValue((deletedCount / idLength) * 100);\n return { status: 'fulfilled', value };\n },\n (reason) => ({ status: 'rejected', reason })\n )\n );\n\n allPromises = allPromises.concat(entityPromises);\n } else {\n throw new Error(\n `The delete operation cannot be performed on ${entityDefinition.title}. This action might be restricted or not applicable for the selected item.`\n );\n }\n }\n\n const results = await Promise.all(allPromises);\n const successfulPromises = results.filter((result: any) => result?.status === 'fulfilled').length;\n const failedPromises = results.filter((result: any) => result?.status === 'rejected').length;\n setTimeout(() => {\n dialog.close();\n }, 300);\n\n // Store the last entity for use in event dispatching\n const lastEntity = entities[entities.length - 1];\n\n // Handle different scenarios for alerts\n if (successfulPromises > 0 && failedPromises === 0) {\n // All items deleted successfully\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.success-delete-title'),\n await this.translationService.translateAsync('workflow.success-delete-body', {\n params: { item: successfulPromises },\n }), //TODO test translation\n 'success'\n );\n }\n // Dispatch actions\n this.dispatch(AXPEntityDeletedEvent({ entity: lastEntity.source, ids: lastEntity.ids, meta: meta }));\n this.dispatch(AXPRefreshEvent({ entity: lastEntity.source, meta: context.getVariable<any>('meta') }));\n } else if (successfulPromises > 0 && failedPromises > 0) {\n // Some items deleted successfully, some failed\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.success-partial-delete-title'),\n await this.translationService.translateAsync('workflow.partial-delete-body', {\n params: { success: successfulPromises, fail: failedPromises },\n }),\n 'warning'\n );\n }\n // Dispatch actions\n this.dispatch(AXPEntityDeletedEvent({ entity: lastEntity.source, ids: lastEntity.ids, meta: meta }));\n } else if (successfulPromises === 0 && failedPromises > 0) {\n // No items deleted, all failed\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.fail-delete-title'),\n await this.translationService.translateAsync('workflow.fail-delete-body', {\n params: { item: failedPromises },\n }),\n 'danger'\n );\n }\n } else {\n // No items to delete (no successful or failed promises)\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.no-need'),\n await this.translationService.translateAsync('workflow.no-item'),\n 'primary'\n );\n }\n }\n }\n}\n\nexport const AXPDeleteEntityWorkflow: AXPWorkflow = {\n startStepId: 'confirm-delete',\n steps: {\n 'confirm-delete': {\n action: 'show-prompt-dialog',\n input: {\n title: 'workflow.warning',\n message: `workflow.confirm-delete`,\n type: 'danger',\n },\n nextSteps: [\n {\n conditions: [\n {\n type: 'AND',\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n },\n ],\n nextStepId: 'perform-delete',\n },\n ],\n },\n 'perform-delete': {\n action: 'entity-perform-delete',\n },\n },\n};\n","import { AXPEntity, AXPEntityProperty, AXPGridLayoutOptions } from '@acorex/platform/common';\nimport { AXPLayoutBuilderService, AXPPageStatus, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { computed, inject, Injectable, Injector, signal } from '@angular/core';\nimport { cloneDeep, merge, set } from 'lodash-es';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\n\nexport class AXPEntityMasterUpdateElementViewModel {\n constructor(\n private entity: AXPEntity,\n private property: AXPEntityProperty,\n ) {}\n\n name = signal(this.property.name);\n title = signal(this.property.title);\n description = signal(this.property.description);\n\n editable = computed<boolean>(() => {\n return !(this.property.schema.readonly ?? false);\n });\n\n isRequired = computed<boolean>(() => {\n return this.property.validations?.some((c) => c.rule == 'required') || false;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const updateProp = this.entity.interfaces?.master?.update?.properties?.find((c) => c.name == this.property.name);\n const source = cloneDeep(updateProp?.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n node = computed<AXPWidgetNode>(() => {\n const schema = this.property.schema!;\n const widget = schema.interface!;\n return {\n type: widget.type,\n mode: this.editable() ? 'edit' : 'view',\n path: this.name(),\n name: this.name(),\n children: widget.children,\n formula: widget.formula,\n triggers: widget.triggers,\n valueTransforms: widget.valueTransforms,\n options: merge(schema.interface?.options, {\n validations: this.property.validations?.map((c) => ({ rule: c.rule, message: c.message, options: c.options })),\n }),\n } as AXPWidgetNode;\n });\n}\n\nexport class AXPEntityMasterUpdateViewModel {\n private entityDef = cloneDeep(this.config)!;\n private workflow = this.injector.get(AXPWorkflowService);\n\n public builder: AXPLayoutBuilderService;\n\n constructor(\n private injector: Injector,\n private config: AXPEntity,\n private entityData: any,\n private props: string[],\n ) {}\n\n public isInProgress = signal<boolean>(false);\n\n public context = signal<any>(cloneDeep(this.entityData));\n\n elements = computed(() => {\n const props = this.entityDef.properties.filter((c) => this.props.includes(c.name) && c.schema.hidden != true);\n return props.map((e) => {\n return new AXPEntityMasterUpdateElementViewModel(this.entityDef, e);\n });\n });\n\n public async save(): Promise<any> {\n this.isInProgress.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n try {\n const com = this.entityDef.commands?.update;\n if (com) {\n const exec = com.execute as Function;\n const result = await exec(this.context());\n this.builder.setStatus(AXPPageStatus.Submitted);\n return result;\n }\n } catch (error: any) {\n this.builder.setStatus(AXPPageStatus.Error);\n return Promise.reject(error);\n } finally {\n this.isInProgress.set(false);\n }\n }\n\n public reset() {\n this.context.set(cloneDeep(this.entityData));\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityMasterUpdateViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(\n moduleName: string,\n entityName: string,\n id: string,\n props: string[],\n ): Promise<AXPEntityMasterUpdateViewModel> {\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(true);\n if (config.queries.byKey) {\n const func = config.queries.byKey.execute as Function;\n const data = await func(id);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterUpdateViewModel(this.injector, config, data, props);\n }\n this.layout.setNavigationLoading(false);\n return Promise.reject('cannot fetch ');\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXPEntityMasterUpdateViewModelFactory } from '../entity-master-update.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '../entity.config';\n\nexport const AXPEntityModifyEvent = createWorkFlowEvent<{ entity: string; values: any }>('[Entity] Modified');\n\n@Injectable()\nexport class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private platform = inject(AXPlatform);\n private translateService = inject(AXTranslationService);\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private config = inject(AXP_ENTITY_CONFIG_TOKEN);\n private factory = inject(AXPEntityMasterUpdateViewModelFactory);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [moduleName, entityName] = context.getVariable<string>('entity').split('.');\n const { properties, id, title } = context.getVariable('data');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n const vm = await this.factory.create(moduleName, entityName, id, properties);\n\n const options = context.getVariable<any>('options');\n const decoration = options?.['decoration'];\n const headerTitle = decoration?.header?.title;\n\n const com = await this.config.viewers.master.modify();\n const popup = await this.popupService.open(com, {\n title: headerTitle\n ? headerTitle\n : title ??\n `${this.translateService.translateSync('entity.modify')} ${this.translateService.translateSync(\n entityRef.formats.individual\n )}`,\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\n data: {\n vm,\n properties,\n entity: entityRef,\n },\n });\n context.setOutput('result', false);\n if (popup.data?.result == true) {\n context.setOutput('result', true);\n context.setVariable('data', cloneDeep(popup.data.context));\n }\n }\n}\n\n@Injectable()\nexport class AXPEntityModifyConfirmedAction extends AXPWorkflowAction {\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const updatedData = context.getVariable('data');\n this.dispatch(AXPEntityModifyEvent({ entity: context.getVariable<string>('entity'), values: updatedData }));\n\n const gridItemParentKey = context.getVariable('parentKey');\n\n this.dispatch(\n AXPRefreshEvent({\n entity: context.getVariable<string>('entity'),\n meta: {\n refreshTargetId: updatedData[gridItemParentKey],\n },\n })\n );\n }\n}\n\nexport const AXPModifyEntitySectionWorkflow: AXPWorkflow = {\n startStepId: 'modifyPopup',\n steps: {\n modifyPopup: {\n id: 'modifyPopup',\n action: 'AXPEntityModifySectionPopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-modified-title',\n content: 'workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n modifyConfirmed: {\n id: 'modifyConfirmed',\n action: 'AXPEntityModifyConfirmedAction',\n },\n },\n};\n","import { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n AXPEntityPropertyView,\n AXPEntitySectionView,\n AXPGridLayoutOptions,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { Injectable, Injector, computed, inject, signal } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { cloneDeep, merge, set } from 'lodash-es';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPEntityDetailListViewModel } from './entity-detail-list.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXPEntityCommandTriggerViewModel } from './entity.viewmodel';\nimport { AXPEntityDeletedEvent } from './workflows/delete-entity.workflow';\nimport { AXPEntityModifyEvent } from './workflows/modify-section.workflow';\n\nexport class AXPEntityMasterSingleViewGroupViewModel {\n constructor(private entity: AXPEntity, private section: AXPEntitySectionView) { }\n\n group = this.entity.groups?.find((c) => c.id == this.section.id)!;\n name = signal(this.group.id);\n isLoading = signal(false);\n\n title = computed<string>(() => {\n return this.group.title ?? this.group.id;\n });\n\n description = computed<string | null | undefined>(() => {\n return this.group.description;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const source = cloneDeep(this.section.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n props = computed(() => {\n const { properties, interfaces } = this.entity;\n const groupProperties = properties\n .filter(({ groupId, schema }) => groupId === this.group.id && !schema.hidden)\n .map(({ name }) => name);\n\n const viewProperties =\n interfaces?.master?.single?.properties?.filter(({ name }) => groupProperties.includes(name)) ?? [];\n\n return viewProperties.map((prop) => new AXPEntityMasterSingleElementViewModel(this.entity, this, prop));\n });\n\n editableProps = computed(() => {\n const { properties, interfaces } = this.entity;\n const editablePropertyNames = interfaces?.master?.update?.properties?.map(({ name }) => name) ?? [];\n\n const filteredProperties = properties.filter(\n ({ groupId, schema, name }) => groupId === this.group.id && !schema.hidden && editablePropertyNames.includes(name)\n );\n\n return filteredProperties.map((prop) => new AXPEntityMasterSingleElementViewModel(this.entity, this, prop));\n });\n\n editable = computed(() => {\n return this.editableProps().length > 0;\n });\n}\n\nexport class AXPEntityMasterSingleElementViewModel {\n constructor(\n private entity: AXPEntity,\n private section: AXPEntityMasterSingleViewGroupViewModel,\n private propertyView: AXPEntityPropertyView\n ) { }\n\n private property = this.entity.properties.find((c) => c.name == this.propertyView.name)!;\n name = signal(this.property.name);\n path = signal(this.propertyView.dataPath ?? this.property.name);\n title = signal(this.property.title);\n showLabel = signal(this.propertyView.layout?.label?.visible != false);\n description = signal(this.property.description);\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const viewProp = this.entity.interfaces?.master?.single?.properties?.find((c) => c.name == this.property.name);\n const source = cloneDeep(viewProp?.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n node = computed<AXPWidgetNode>(() => {\n const schema = this.property.schema!;\n const widget = schema.interface!;\n return {\n type: widget.type,\n mode: 'view',\n path: this.path(),\n children: widget.children,\n formula: widget.formula,\n valueTransforms: widget.valueTransforms,\n options: merge(schema.interface?.options),\n } as AXPWidgetNode;\n });\n}\n\nexport class AXPEntityMasterSingleViewModel {\n private readonly entityDef = cloneDeep(this.config)!;\n private readonly _viewDef = cloneDeep(this.entityDef.interfaces?.master?.single)!;\n private readonly session = this.injector.get(AXPSessionService);\n private readonly formatService = this.injector.get(AXFormatService);\n private readonly workflow = this.injector.get(AXPWorkflowService);\n private readonly destroyed = new Subject<void>();\n private translateService = this.injector.get(AXTranslationService);\n\n constructor(private injector: Injector, private config: AXPEntity, private entityData: any) {\n this.workflow.events$\n .pipe(ofType(AXPEntityDeletedEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n if (\n event.payload.entity == getEntityInfo(this.entityDef).source &&\n event.payload.ids.includes(this.context().id)\n ) {\n this.workflow.execute('show-list-view', {\n entity: getEntityInfo(this.entityDef).source,\n });\n }\n });\n this.workflow.events$\n .pipe(ofType(AXPEntityModifyEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe(async (event) => {\n if (\n event.payload.entity == getEntityInfo(this.entityDef).source &&\n event.payload.values.id === this.context().id\n ) {\n this.context.set(event.payload.values);\n }\n });\n }\n\n public context = signal<any>(cloneDeep(this.entityData));\n\n private actions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return (\n this.entityDef.interfaces?.master?.single?.actions?.map(\n (tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)\n ) ?? []\n );\n });\n\n public primaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.actions().filter((c) => c.priority == 'primary');\n });\n\n public secondaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.actions().filter((c) => c.priority == 'secondary');\n });\n\n public sections = computed<AXPEntityMasterSingleViewGroupViewModel[]>(() => {\n const { interfaces, properties } = this.entityDef;\n const viewProps = interfaces?.master?.single?.properties?.map(({ name }) => name) ?? [];\n\n const filteredProperties = properties.filter(\n ({ groupId, schema, name }) => groupId && !schema.hidden && viewProps.includes(name)\n );\n\n const groups =\n interfaces?.master?.single?.sections?.filter(({ id }) =>\n filteredProperties.some(({ groupId }) => groupId === id)\n ) ?? [];\n\n return groups.map((section) => new AXPEntityMasterSingleViewGroupViewModel(this.entityDef, section));\n });\n\n //****************** Title ******************//\n public title = computed<string>(() => {\n const suggestedProps = this.entityDef.properties.find((c) => ['title', 'name', 'code'].includes(c.name));\n let suggestedFormat = 'Item #{{id}}';\n if (suggestedProps) suggestedFormat = `{{${suggestedProps.name}}}`;\n return this.formatService.format(this._viewDef.title ?? suggestedFormat, 'string', this.context());\n });\n //****************** Description ******************//\n public description = computed<string | null>(() => {\n return this._viewDef.description\n ? this.formatService.format(this._viewDef.description, 'string', this.context())\n : null;\n });\n\n //****************** Beardcrumbs ******************//\n public beardcrumbs = computed<AXPBreadcrumbItem[]>(() => {\n return [\n {\n title: this.entityDef.formats.plural ?? this.entityDef.formats.individual,\n command: {\n name: 'navigate',\n options: {\n path: `/${this.session.application?.name}/m/${this.entityDef.module}/e/${this.entityDef.name}/list`,\n },\n },\n },\n {\n title: this.title(),\n },\n ];\n });\n\n public relatedEntities = computed<Promise<AXPEntityDetailListViewModel[]>>(async () => {\n const relatedEntities =\n this.entityDef.relatedEntities?.map(\n (re) => new AXPEntityDetailListViewModel(this.injector, re, { entity: this.entityDef, data: this.entityData })\n ) ?? [];\n\n const filteredEntities = await Promise.all(relatedEntities.map(async (re) => ((await re.hidden()) ? null : re)));\n\n return filteredEntities.filter((re) => re !== null) as AXPEntityDetailListViewModel[];\n });\n\n public async executeCommand(commandName: string, data: any = null) {\n //TODO: syntact for workflow\n switch (commandName) {\n case 'modify-entity-section': {\n this.workflow.execute('modify-entity-section', {\n entity: getEntityInfo(this.entityDef).source,\n data: {\n id: this.context().id,\n properties: (data as AXPEntityMasterSingleViewGroupViewModel).editableProps().map((m) => m.name()),\n },\n });\n break;\n }\n default: {\n const action = this.actions().find((c) => c.name == commandName);\n this.workflow.execute(commandName, {\n entity: getEntityInfo(this.entityDef).source,\n data: action?.scope == AXPEntityCommandScope.Individual ? this.context() : null,\n });\n }\n }\n }\n\n async execute(command: AXPExecuteCommand) {\n switch (command?.name) {\n case 'navigate':\n await this.workflow.execute('navigate', {\n options: {\n path: command.options?.['path'],\n },\n });\n break;\n default:\n this.executeCommand(command.name, command.options);\n break;\n }\n }\n //\n //\n destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityDetailViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(moduleName: string, entityName: string, id: string): Promise<AXPEntityMasterSingleViewModel> {\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(true);\n if (config.queries.byKey) {\n const func = config.queries.byKey.execute as Function;\n const data = await func(id);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterSingleViewModel(this.injector, config, data);\n }\n this.layout.setNavigationLoading(false);\n return Promise.reject('cannot fetch ');\n }\n}\n\nexport const AXPEntityDetailViewModelResolver: ResolveFn<Promise<AXPEntityMasterSingleViewModel>> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n service: AXPEntityDetailViewModelFactory = inject(AXPEntityDetailViewModelFactory)\n): Promise<AXPEntityMasterSingleViewModel> => {\n const moduleName = route.parent?.paramMap.get('module') as string;\n const entityName = route.paramMap.get('entity') as string;\n const id = route.paramMap.get('id') as string;\n //\n return service.create(moduleName, entityName, id);\n};\n","import { inject } from '@angular/core';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXPPagedListResult, AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXPEntityCreateDto,\n AXPEntityDetailDto,\n AXPEntityListItemDto,\n AXPEntityModel,\n AXPEntityUpdateDto,\n} from './entity.types';\n\nexport abstract class AXPEntityStorageService<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n abstract get dbName(): string;\n\n abstract initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;\n\n abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;\n\n abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;\n\n abstract deleteOne(entityName: string, id: TKey): Promise<void>;\n\n abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;\n\n abstract getAll(entityName: string): Promise<TListItemDto[]>;\n\n abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;\n}\n\nexport abstract class AXPEntityDataProvider<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n abstract get entityName(): string;\n\n abstract initial(collection: TCreateDto[]): Promise<void>;\n\n abstract getOne(id: TKey): Promise<TDetailDto>;\n\n abstract getAll(): Promise<TListItemDto[]>;\n\n abstract updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;\n\n abstract deleteOne(id: TKey): Promise<void>;\n\n abstract insertOne(entity: TCreateDto): Promise<TKey>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;\n}\n\nexport class AXPEntityDataProviderImpl<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> implements AXPEntityDataProvider<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>\n{\n constructor(\n private storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>,\n public entityName: string,\n ) {}\n\n async initial(collection: TCreateDto[]): Promise<void> {\n await this.storageService.initial(this.entityName, collection);\n }\n\n getOne(id: TKey): Promise<TDetailDto> {\n return this.storageService.getOne(this.entityName, id);\n }\n\n getAll(): Promise<TListItemDto[]> {\n return this.storageService.getAll(this.entityName);\n }\n\n query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>> {\n return this.storageService.query(this.entityName, request);\n }\n\n updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto> {\n return this.storageService.updateOne(this.entityName, id, keyValues);\n }\n\n deleteOne(id: TKey): Promise<void> {\n return this.storageService.deleteOne(this.entityName, id);\n }\n\n insertOne(entity: TCreateDto): Promise<TKey> {\n return this.storageService.insertOne(this.entityName, entity);\n }\n}\n\nexport abstract class AXMEntityCrudService<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n abstract insertOne(request: TCreateDto): Promise<TKey>;\n\n abstract getOne(id: TKey): Promise<TDetailDto>;\n\n abstract deleteOne(id: TKey): Promise<void>;\n\n abstract updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;\n}\n\nexport class AXMEntityCrudServiceImpl<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n private _storageService = inject(AXPEntityStorageService);\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private _entityDataProvider = new AXPEntityDataProviderImpl<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>(\n this._storageService,\n this.entityName,\n );\n\n constructor(private entityName: string) {}\n\n async insertOne(request: TCreateDto): Promise<TKey> {\n return this._entityDataProvider.insertOne(request);\n }\n\n async getOne(id: TKey): Promise<TDetailDto> {\n return this._entityDataProvider.getOne(id);\n }\n\n async deleteOne(id: TKey): Promise<void> {\n return this._entityDataProvider.deleteOne(id);\n }\n\n async updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto> {\n return this._entityDataProvider.updateOne(id, values);\n }\n\n async query(request: AXPQueryRequest = { skip: 0, take: 100 }): Promise<AXPPagedListResult<TListItemDto>> {\n const [moduleName, entityName] = this._entityDataProvider.entityName.split('.');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n if (entityRef.parentKey) {\n if (!request.filter?.filters?.length && request.filter?.field !== entityRef.parentKey) {\n request.filter = {\n value: true,\n field: entityRef.parentKey,\n operator: {\n type: 'isEmpty',\n },\n };\n }\n }\n return this._entityDataProvider.query(request);\n }\n\n // get entityDataProvider() {\n // return this._entityDataProvider;\n // }\n\n get storageService() {\n return this._storageService;\n }\n}\n","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex/platform/common';\n\nexport class AXPEntityCommandSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('command', 'Commands', 'command', 'fa-solid fa-command', 1, {\n format: {\n id: '{{id}}',\n },\n actions: [\n {\n name: 'open-entity',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\n\nexport class AXPEntitySearchDefinitionProvider implements AXPSearchDefinitionProvider {\n entityRegister = inject(AXPEntityDefinitionRegistryService);\n\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n console.log(this.entityRegister.getAll());\n\n this.entityRegister.getAll().forEach((entity) => {\n context.addDefinition(\n `Module.${entity.module}.${entity.name}`,\n entity.formats.searchResult?.description ?? entity.module,\n `Module.${entity.module}`,\n 'fa-solid fa-objects-column',\n 4,\n {\n actions: [\n {\n name: 'open-entity',\n type: 'view',\n priority: 'primary',\n },\n ],\n format: {\n title: entity.formats.searchResult?.title,\n description: (entity.formats.searchResult?.description ?? entity.module) + ' / ' + entity.title,\n id: '{{data.id}}',\n },\n }\n );\n });\n }\n}\n","import { AXLoadingModule } from '@acorex/components/loading';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding, inject, signal } from '@angular/core';\nimport { AXPEntityResolver } from '../../entity.config';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { castArray, isNil } from 'lodash-es';\n\n@Component({\n selector: 'axp-lookup-widget-view',\n template: `\n @if(loading())\n {\n <ax-loading></ax-loading>\n }\n @else{\n @for (item of displayItems(); track $index) {\n <ax-badge [look]=\"'twotone'\" [text]=\"item.text\" color=\"primary\"></ax-badge>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXLoadingModule, AXBadgeModule]\n})\nexport class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any> {\n protected readonly formatService = inject(AXFormatService);\n protected readonly entityResolver = inject(AXPEntityResolver);\n\n\n protected entity = computed<string>(() => this.options()['entity'] as string);\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n protected valueField = computed<string>(() => (this.options()['valueField'] as string) ?? 'id');\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n protected displayField = computed<string>(() => {\n return this.textField() ?? this.entityDef()?.formats.lookup ?? this.entityDef()?.properties.find((c) => c.name != 'id')?.name ?? 'title';\n });\n\n protected loading = signal(false);\n private entityDef = signal<AXPEntity | null>(null);\n\n protected displayItems = signal<any[]>([]);\n\n\n private efEntity = effect(async () => {\n const [module, entity] = this.entity().split('.');\n this.entityDef.set(await this.entityResolver.get(module, entity));\n });\n\n private efDisplay = effect(async () => {\n const value = this.getValue();\n if (isNil(value)) {\n this.displayItems.set([]);\n }\n else {\n const items = castArray(value).map(async (item: any) => await this.extractItem(item));\n this.displayItems.set(await Promise.all(items));\n }\n })\n\n\n private async extractItem(item: any) {\n if (typeof item == 'object') {\n return {\n id: item[this.valueField()],\n text: this.formatService.format(this.displayField(), 'string', item),\n }\n }\n else {\n const def = this.entityDef();\n const byKey = def?.queries.byKey?.execute as Function;\n if (byKey) {\n this.loading.set(true);\n const fetchedItem = await byKey(item);\n this.loading.set(false);\n return {\n id: fetchedItem[this.valueField()],\n text: this.formatService.format(this.displayField(), 'string', fetchedItem),\n }\n }\n return {\n id: item,\n text: item\n }\n }\n }\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n cls[`ax-flex`] = true;\n cls[`ax-gap-1`] = true;\n return cls;\n }\n}\n","import { AXCommonModule, AXDataSourceFilterOption, AXValueChangedEvent } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableModule,\n AXDataTableRowClick,\n AXDataTableRowDbClick,\n} from '@acorex/components/data-table';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, signal, viewChild } from '@angular/core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLookupWidgetSelectorViewModel } from './lookup-widget-selector.viewmodel';\n@Component({\n template: `\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4 ax-overflow-hidden\">\n @if (vm.hasInlineFilters()) {\n <div class=\"ax-w-full\">\n <ax-search-box\n [placeholder]=\"('widget.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\"\n [value]=\"searchTerm\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n [axAutoFocus]=\"true\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"ax-h-[50vh]\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm.dataSource\"\n [parentField]=\"vm.parentKey()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowClick)=\"handleRowClick($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n @if (vm.allowMultiple()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (col of vm.columns(); track col.name) {\n @if (col.visible) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && vm.parentKey() ? true : false\"\n [caption]=\"col.title | translate | async\"\n [node]=\"col.node()\"\n ></axp-widget-column-renderer>\n }\n }\n </ax-data-table>\n </div>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" [text]=\"('close' | translate | async)!\" (onClick)=\"handleCloseClick()\"> </ax-button>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"('select' | translate | async)!\"\n (onClick)=\"handleSelectClick()\"\n [disabled]=\"allowSelect() === false\"\n >\n </ax-button>\n @if (!vm.canCreate()) {\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'Create-New' | translate | async\"\n (onClick)=\"handleCreateNewClick()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-add\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXCommonModule,\n AXButtonModule,\n AXFormModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDataTableModule,\n AXSearchBoxModule,\n AXPLayoutBuilderModule,\n AXTranslationModule,\n ],\n inputs: [],\n})\nexport class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {\n protected vm: AXPLookupWidgetSelectorViewModel;\n protected searchTerm: string;\n protected filter: AXDataSourceFilterOption;\n\n protected grid = viewChild<AXDataTableComponent>('grid');\n\n protected initialSelectedItems: any[] = [];\n\n protected selectedItems = signal<any[]>([]);\n\n protected allowSelect = computed(() => this.selectedItems().length > 0);\n\n protected ngAfterViewInit() {\n if (this.initialSelectedItems.length > 0 && this.grid()) {\n this.grid()?.selectRows(...this.initialSelectedItems);\n }\n if (this.searchTerm) {\n this.vm.applyInlineFilter(this.searchTerm);\n } else {\n this.vm.applyFilterAndSort();\n }\n }\n\n protected handleRowDbClick(e: AXDataTableRowDbClick) {\n this.close({ items: [e.data] });\n }\n\n protected handleRowClick(e: AXDataTableRowClick) {\n if (this.vm.allowMultiple()) {\n this.selectedItems.set([...this.selectedItems(), e.data]);\n } else if (this.selectedItems().length > 0) {\n const selected = this.selectedItems().find((item) => item.id === e.data.id);\n if (selected) {\n this.selectedItems.set(this.selectedItems().filter((item) => item.id !== selected.id));\n } else {\n this.selectedItems.set([e.data]);\n }\n } else if (this.selectedItems().length === 0) {\n this.selectedItems.set([e.data]);\n } else {\n this.selectedItems.set([e.data]);\n }\n }\n\n protected async handleSelectedRowsChange(rows: unknown[]) {\n this.selectedItems.set(rows);\n }\n\n handleChangeSearchValue(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n this.vm.applyInlineFilter(e.value);\n }\n }\n\n protected async handleCreateNewClick() {\n this.close();\n await this.vm.create();\n }\n\n protected handleCloseClick() {\n this.close();\n }\n\n protected handleSelectClick() {\n this.close({ items: this.selectedItems() });\n }\n}\n","import { AXDataSource, AXDataSourceCallbackResult, AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXPCleanNestedFilters,\n AXPEntity,\n AXPFilterOperatorMiddlewareService,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { computed, Injector } from '@angular/core';\nimport { AXPEntityListViewColumnViewModel } from '../../entity.viewmodel';\n\nexport class AXPLookupWidgetSelectorViewModel {\n private workflow = this.injector.get(AXPWorkflowService);\n private filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);\n\n constructor(\n private injector: Injector,\n private entityDef: AXPEntity,\n private options: {\n parentFilters?: AXDataSourceFilterOption | null;\n customFilter?: AXDataSourceFilterOption | null;\n sortedFields?: { name: string; dir: 'asc' | 'desc' }[];\n allowMultiple?: boolean;\n } = {\n parentFilters: null,\n customFilter: null,\n sortedFields: [],\n },\n ) {}\n\n dataSource = new AXDataSource({\n byKey: (key) => {\n const func = this.entityDef.queries.byKey.execute as Function;\n return func();\n },\n load: (e) => {\n const func = this.entityDef.queries.list?.execute as Function;\n return func(e);\n },\n pageSize: 10,\n key: 'id',\n });\n\n public canCreate = computed(() => {\n return this.entityDef.commands?.create?.execute != null;\n });\n\n public parentKey = computed(() => {\n return this.entityDef.parentKey;\n });\n\n public allowMultiple = computed(() => {\n return this.options.allowMultiple ?? false;\n });\n\n public async create(): Promise<void> {\n await this.workflow.execute('create-entity', {\n entity: getEntityInfo(this.entityDef).source,\n });\n }\n\n public inlineFiltersPlaceholders = computed<string[]>(() => {\n return (\n this.entityDef?.properties.filter((p) => p.options?.filter?.inline?.enabled).map((c) => c.title ?? c.name) ?? []\n );\n });\n\n public hasInlineFilters = computed<boolean>(() => {\n return this.inlineFiltersPlaceholders().length > 0;\n });\n\n public columns = () => {\n const listColumns = this.entityDef.columns ?? [];\n const columns = listColumns?.map((c) => c.name) ?? [];\n const props = this.entityDef.properties.filter((p) => p.schema.hidden != true);\n const displayColumns = props.filter((p) => columns.some((c) => c == p.name));\n return displayColumns.map((p) => {\n return new AXPEntityListViewColumnViewModel(p, listColumns?.find((c) => c.name == p.name)!);\n });\n };\n\n private inlineFilters: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: [],\n };\n\n private advanceFilters: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [],\n };\n\n applyInlineFilter(value: string, refresh: boolean = true) {\n const props = this.entityDef.properties.filter((c) => c.options?.filter?.inline?.enabled);\n this.inlineFilters.filters = [];\n if (value) {\n props.forEach((p) => {\n this.inlineFilters.filters?.push({\n field: p.name,\n operator: {\n type: 'contains',\n },\n value,\n });\n });\n }\n if (refresh) this.applyFilterAndSort();\n }\n\n applyFilterAndSort() {\n // this.dataSource.clearFilter();\n //\n //this.dataSource.sort(...this.sortedFields().map(s => ({ dir: s.dir, field: s.name } as AXDataSourceSortOption)));\n //\n\n // Check if inlineFilters or parentFilters have any filters\n const hasInlineFilters = (this.inlineFilters?.filters?.length ?? 0) > 0;\n const hasParentFilters = (this.options.parentFilters?.filters?.length ?? 0) > 0;\n\n // Construct the filters array based on the presence of filters\n const filters: AXDataSourceFilterOption[] = [];\n console.log(this.options.customFilter);\n if (this.options.customFilter) {\n const cleanedFilters = AXPCleanNestedFilters([this.options.customFilter]);\n if (cleanedFilters.length > 0) {\n filters.push(this.filterOperatorMiddleware.transformFilter(cleanedFilters[0]));\n }\n }\n if (hasInlineFilters) {\n filters.push(this.inlineFilters);\n }\n if (hasParentFilters && this.options.parentFilters) {\n filters.push(this.options.parentFilters);\n }\n\n // Apply the filters to the dataSource\n this.dataSource.filter({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: filters,\n });\n\n // Refresh the dataSource\n this.dataSource.refresh();\n }\n\n async find(value: string): Promise<AXDataSourceCallbackResult<any>> {\n this.applyInlineFilter(value.trim(), false);\n const func = this.entityDef.queries.list?.execute as Function;\n return (await func({ filter: this.inlineFilters, take: 10 })) ?? [];\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport {\n AXClickEvent,\n AXDataSourceFilterOption,\n AXFocusEvent,\n AXHtmlEvent,\n AXValueChangedEvent,\n} from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTagBoxComponent, AXTagBoxModule } from '@acorex/components/tag-box';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPEntity, AXPQueryFilter } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Injector,\n computed,\n effect,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { castArray, get, isEmpty, isNil, set } from 'lodash-es';\nimport { AXPEntityResolver } from '../../entity.config';\nimport { AXPLookupWidgetSelectorComponent } from './lookup-widget-selector.component';\nimport { AXPLookupWidgetSelectorViewModel } from './lookup-widget-selector.viewmodel';\nimport { extractValue, setSmart } from '@acorex/platform/core';\n\n@Component({\n selector: 'axp-lookup-widget-edit',\n template: `\n <ax-tag-box\n [ngModel]=\"selectedItems()\"\n [textField]=\"textField()\"\n [valueField]=\"valueField()\"\n (onValueChanged)=\"handleValueChange($event)\"\n [placeholder]=\"placeholder() | translate | async\"\n [addOnEnter]=\"false\"\n [addOnComma]=\"false\"\n [disabled]=\"disabled()\"\n (onKeyUp)=\"handleKeyUp($event)\"\n (onBlur)=\"handleOnBlur($event)\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (selectedItems().length > 1) {\n <ax-clear-button (click)=\"handleClearClick()\"></ax-clear-button>\n }\n\n <ax-suffix>\n <ax-button color=\"ghost\" look=\"blank\" [disabled]=\"isLoading() || disabled()\" (onClick)=\"handleOnClick($event)\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <ax-icon icon=\"far fa-search\"> </ax-icon>\n }\n </ax-button>\n </ax-suffix>\n </ax-tag-box>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXValidationModule,\n AXFormModule,\n AXTagBoxModule,\n AXTranslationModule,\n ],\n})\nexport class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any> {\n protected readonly injector = inject(Injector);\n protected readonly entityResolver = inject(AXPEntityResolver);\n protected readonly formatService = inject(AXFormatService);\n protected readonly popupService = inject(AXPopupService);\n\n private readonly translateService = inject(AXTranslationService);\n\n protected expose = computed<string | undefined | any[]>(() => this.options()['expose'] as string);\n protected entity = computed<string>(() => this.options()['entity'] as string);\n protected disabled = computed<string>(() => this.options()['disabled'] as string);\n protected customFilter = computed<AXDataSourceFilterOption>(\n () => this.options()['filter'] as AXDataSourceFilterOption,\n );\n\n protected multiple = computed(() => (this.options()['multiple'] ?? false) as boolean);\n\n protected textField = computed<string>(() => {\n return (\n this.entityDef()?.formats.lookup ?? this.entityDef()?.properties.find((c) => c.name != 'id')?.name ?? 'title'\n );\n });\n\n protected valueField = computed<string>(() => this.entityDef()?.properties.find((c) => c.name == 'id')?.name ?? 'id');\n\n protected conditions?: AXPQueryFilter[];\n\n protected filter: AXDataSourceFilterOption | null;\n\n private entityDef = signal<AXPEntity | null>(null);\n\n protected searchTerm = signal<string | null>(null);\n\n protected selectedItems = signal<any[]>([]);\n\n textbox = viewChild(AXTagBoxComponent);\n\n protected isLoading = signal(false);\n\n protected isOpen = signal(false);\n\n protected vm = signal<AXPLookupWidgetSelectorViewModel | null>(null);\n\n protected placeholder = computed(() => {\n return this.selectedItems().length\n ? ''\n : this.translateService.translateSync('widget.lookup.search') + this.vm()?.inlineFiltersPlaceholders().join(', ');\n });\n\n #efEntity = effect(async () => {\n const [module, entity] = this.entity().split('.');\n this.entityDef.set(await this.entityResolver.get(module, entity));\n this.vm.set(\n new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef()!, {\n parentFilters: this.filter,\n allowMultiple: this.multiple(),\n }),\n );\n });\n\n #efValue = effect(() => {\n if (this.getValue()) {\n this.findByValue();\n }\n });\n\n private async findByValue() {\n this.isLoading.set(true);\n const rawValue = this.getValue();\n const values = castArray(rawValue);\n const byKey = this.entityDef()?.queries.byKey?.execute as Function;\n if (byKey && values.length) {\n if (this.multiple()) {\n const items = await Promise.all(values.map((value) => byKey(extractValue(value, this.valueField()))));\n this.setItems(items);\n } else {\n const id = extractValue(values[0], this.valueField());\n const item = await byKey(id);\n this.setItems(item);\n }\n } else {\n this.setItems([]);\n }\n this.isLoading.set(false);\n }\n\n protected handleOnClick(e: AXClickEvent) {\n this.showSelector();\n }\n\n private showSelector() {\n this.isOpen.set(true);\n this.popupService\n .open(AXPLookupWidgetSelectorComponent, {\n title: `${this.translateService.translateSync('widget.lookup.search')} ${this.translateService.translateSync(\n this.entityDef()?.formats.plural ?? '',\n )}`,\n\n size: (this.vm()?.columns().length ?? 0) > 3 ? 'lg' : 'md',\n data: {\n vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef()!, {\n customFilter: this.customFilter(),\n parentFilters: this.filter,\n allowMultiple: this.multiple(),\n }),\n searchTerm: this.searchTerm(),\n initialSelectedItems: this.selectedItems(),\n },\n })\n .then((e: any) => {\n this.isOpen.set(false);\n this.textbox()?.focus();\n if (e.data?.items) {\n this.setItems(e.data?.items);\n }\n });\n }\n\n protected handleValueChange(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n if (isNil(e.value) || isEmpty(e.value)) {\n this.clear();\n } else {\n this.setValue(this.singleOrMultiple(e.value));\n }\n }\n }\n\n protected handleOnBlur(e: AXFocusEvent) {\n setTimeout(() => {\n if (!this.isOpen()) {\n this.clearInput();\n }\n }, 100);\n }\n\n protected async handleKeyUp(e: AXHtmlEvent) {\n const keyEvent = e.nativeEvent as KeyboardEvent;\n const value = this.textbox()?.inputValue()!;\n this.searchTerm.set(value);\n if ((keyEvent.code == 'Enter' || keyEvent.code == 'NumpadEnter') && value) {\n this.isLoading.set(true);\n const result = await this.vm()?.find(value);\n if (result?.total == 1) {\n this.setItems(result.items[0]);\n } else {\n this.showSelector();\n }\n this.isLoading.set(false);\n }\n if (keyEvent.code == 'ArrowDown') {\n this.showSelector();\n }\n }\n\n private setItems(items: any[]) {\n if (!items || items.length == 0) {\n this.selectedItems.set([]);\n return;\n }\n //\n items = castArray(items);\n this.clearInput();\n this.selectedItems.set(items);\n //\n const keys = items.map((item) => get(item, this.valueField()));\n //\n this.setValue(this.singleOrMultiple(keys));\n //\n // extract data from valueField and set context by expose path\n if (this.expose()) {\n const exposeValue = castArray(this.expose());\n const itemToExpose: any = {};\n //\n exposeValue.forEach((i) => {\n if (typeof i == 'string') {\n const values = items.map((item) => set({}, i as string, get(item, i)));\n //this.contextService.update(i, this.singleOrMultiple(values));\n setSmart(itemToExpose, i, this.singleOrMultiple(values));\n } else {\n // extract data from item by source path and set context by target path\n const values = this.multiple()\n ? items.map((item) => set({}, i.source, get(item, i.source)))\n : items.map((item) => get(item, i.source));\n setSmart(itemToExpose, i.target, this.singleOrMultiple(values));\n }\n });\n this.contextService.patch(itemToExpose);\n //this.contextService.update(i.target, this.singleOrMultiple(values));\n }\n }\n\n protected handleClearClick() {\n this.clear();\n }\n\n public clear() {\n this.setValue(null);\n this.clearInput();\n this.selectedItems.set([]);\n }\n\n public clearInput() {\n this.textbox()?.inputValue.set('');\n this.searchTerm.set('');\n }\n\n private singleOrMultiple(values: any[]): any | any[] {\n return this.multiple() ? values : values[0];\n }\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { castArray } from 'lodash-es';\n@Component({\n template: `\n <div class=\"ax-flex ax-gap-1\">\n @for (item of displayItems(); track $index) {\n <ax-badge [text]=\"item[this.textField]\" color=\"primary\"></ax-badge>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXBadgeModule],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n protected valueField: string = this.options['valueField'] ?? 'id';\n protected textField: string = this.options['textField'] ?? 'title';\n\n protected displayItems = computed(() => castArray(this.rawValue).map((item: any) => this.extractItem(item)));\n\n private extractItem(item: any): any {\n return typeof item == 'object'\n ? {\n [this.valueField]: item?.[this.valueField],\n [this.textField]: item?.[this.textField],\n }\n : {\n [this.valueField]: item,\n [this.textField]: item,\n };\n }\n}\n","import { AXPExpression } from '@acorex/platform/core';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPLookupWidget: AXPWidgetConfig = {\n name: 'lookup-editor',\n title: 'Lookup',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n defaultFilterWidgetName: 'lookup-filter',\n type: 'editor',\n properties: [\n AXP_DISABLED_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n {\n name: 'expose',\n title: 'Expose',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n interface: {\n name: 'expose',\n path: 'options.expose',\n type: AXPWidgetsCatalog.select,\n },\n },\n visible: true,\n },\n {\n name: 'entity',\n title: 'Entity',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n interface: {\n name: 'entity',\n path: 'options.entity',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n AXP_ALLOW_MULTIPLE_PROPERTY\n ],\n components: {\n view: {\n component: () => import('./lookup-widget-view.component').then((c) => c.AXPLookupWidgetViewComponent),\n },\n edit: {\n component: () => import('./lookup-widget-edit.component').then((c) => c.AXPLookupWidgetEditComponent),\n },\n column: {\n component: () => import('./lookup-widget-column.component').then((c) => c.AXPLookupWidgetColumnComponent),\n },\n designer: {\n component: () => import('./lookup-widget-edit.component').then((c) => c.AXPLookupWidgetEditComponent),\n },\n },\n};\n\n\nexport interface AXPLookupWidgetOptions {\n disabled?: boolean | AXPExpression;\n readonly?: boolean | AXPExpression;\n placeholder?: string;\n expose?: string | string[];\n} \n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n template: `\n <div class=\"ax-flex ax-gap-1 ax-flex-wrap\">\n @if (useSelectBox() && getData().length > 0) { @for (item of getData(); track $index) {\n <ax-badge [look]=\"'twotone'\" [text]=\"item[textField()]\" color=\"primary\"></ax-badge>\n } } @else { @if(multiple()) { @for (item of internalValue(); track $index) {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-inline-block\">{{ item }}</span>\n } } @else {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-inline-block\">{{ internalValue()[0] }}</span>\n } }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXBadgeModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetColumnComponent extends AXPValueWidgetComponent<any> {\n protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n\n // ویژگی‌های مرتبط با SelectBox\n protected useSelectBox = computed<boolean>(() => this.options()['useSelectBox'] as boolean);\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n // استخراج داده‌ها برای نمایش\n protected getData = computed(() => {\n if (!this.useSelectBox()) {\n return [];\n }\n\n const value = this.getValue();\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n });\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\n// import { AXTagBoxModule } from '@acorex/components/tag-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, computed, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPEntityResolver } from '../../entity.config';\n\n@Component({\n selector: 'axp-tagable-box-widget',\n template: `\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n <!-- نمایش Select Box با دکمه اضافه کردن آیتم -->\n <ax-select-box\n class=\"ax-col-span-12\"\n [placeholder]=\"placeholder()\"\n [dataSource]=\"_dataSource\"\n [ngModel]=\"getValue()\"\n [valueField]=\"'name'\"\n [textField]=\"'title'\"\n [multiple]=\"true\"\n (onValueChanged)=\"handleSelectValueChange($event)\"\n >\n @if (allowSearch()) {\n <ax-search-box><ax-clear-button></ax-clear-button></ax-search-box>\n }\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-select-box>\n <ax-button\n [text]=\"'افزودن آیتم جدید'\"\n look=\"twotone\"\n [disabled]=\"disabled()\"\n (onClick)=\"addItem()\"\n class=\"ax-col-start-8 md:ax-col-start-9 2xl:ax-col-start-10 ax-col-end-13\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTextBoxModule,\n FormsModule,\n AXFormModule,\n AXDecoratorModule,\n AXValidationModule,\n AXButtonModule,\n // AXTagBoxModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n ],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetEditComponent extends AXPValueWidgetComponent<any> {\n protected entityResolver = inject(AXPEntityResolver);\n\n protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n\n // پارامترهای SelectBox\n protected moduleName = computed<string>(() => this.options()['module'] as string);\n protected entityName = computed<string>(() => this.options()['entity'] as string);\n protected allowSearch = computed<boolean>(() => this.options()['allowSearch'] as boolean);\n\n // منبع داده برای SelectBox\n protected _dataSource: AXDataSource<any> = new AXDataSource({\n load: async (e: any) => {\n const entity = await this.entityResolver.get(this.moduleName(), this.entityName());\n const func = entity?.queries.list?.execute as Function;\n const result = await func(e);\n console.log(result);\n return {\n items: result?.items || [],\n total: result?.total || 0,\n };\n },\n pageSize: 10,\n });\n\n protected handleSelectValueChange(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n this.setValue(e.value);\n }\n }\n\n protected addItem() {}\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n cls[`ax-block`] = true;\n cls[`ax-flex-1`] = true;\n return cls;\n }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetFilterComponent extends AXPValueWidgetComponent<any> { }\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n template: `\n <div>\n @if (useSelectBox() && getData().length > 0) { @for (item of getData(); track $index) {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-mr-2 ax-mb-2 ax-inline-block\">{{\n item[textField()]\n }}</span>\n } } @else { @if(multiple()) { @for (item of internalValue(); track $index) {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-mr-2 ax-mb-2 ax-inline-block\">{{ item }}</span>\n } } @else {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-mr-2 ax-mb-2 ax-inline-block\">{{\n internalValue()[0]\n }}</span>\n } }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetPrintComponent extends AXPValueWidgetComponent<any> {\n protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n\n // ویژگی‌های مرتبط با SelectBox\n protected useSelectBox = computed<boolean>(() => this.options()['useSelectBox'] as boolean);\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n // استخراج داده‌ها برای نمایش\n protected getData = computed(() => {\n if (!this.useSelectBox()) {\n return [];\n }\n\n const value = this.getValue();\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n });\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n selector: 'axp-tagable-box-widget',\n template: `\n @for (item of internalValue(); track $index) {\n <ax-badge [look]=\"'twotone'\" [text]=\"item\" color=\"primary\"></ax-badge>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXBadgeModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetViewComponent extends AXPValueWidgetComponent<any> {\n protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n\n // ویژگی‌های مرتبط با SelectBox\n protected useSelectBox = computed<boolean>(() => this.options()['useSelectBox'] as boolean);\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n // استخراج داده‌ها برای نمایش\n protected getData = computed(() => {\n if (!this.useSelectBox()) {\n return [];\n }\n\n const value = this.getValue();\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n });\n}\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\n\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPTagableBoxWidget: AXPWidgetConfig = {\n name: 'tagable-editor',\n title: 'Tagable Box',\n icon: 'fa-light fa-tags',\n description: 'Inputs text with tags',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n type: 'editor',\n defaultFilterWidgetName: 'string-filter',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n components: {\n view: {\n component: () => import('./tagable-box-widget-view.component').then((c) => c.AXPTagableBoxWidgetViewComponent),\n },\n edit: {\n component: () => import('./tagable-box-widget-edit.component').then((c) => c.AXPTagableBoxWidgetEditComponent),\n },\n filter: {\n component: () =>\n import('./tagable-box-widget-filter.component').then((c) => c.AXPTagableBoxWidgetFilterComponent),\n },\n column: {\n component: () =>\n import('./tagable-box-widget-column.component').then((c) => c.AXPTagableBoxWidgetColumnComponent),\n },\n print: {\n component: () => import('./tagable-box-widget-print.component').then((c) => c.AXPTagableBoxWidgetPrintComponent),\n },\n designer: {\n component: () => import('./tagable-box-widget-edit.component').then((c) => c.AXPTagableBoxWidgetEditComponent),\n },\n },\n};\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n tagable: 'tagable-editor';\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValidationRule } from '@acorex/platform/core';\nimport {\n AXPValueWidgetComponent,\n AXPWidgetConfig,\n AXPWidgetNode,\n AXPWidgetRegistryService,\n AXPWidgetTypesMap,\n} from '@acorex/platform/layout/builder';\nimport { AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/designer';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { sortBy } from 'lodash-es';\n\n@Component({\n template: `\n <ax-text-box [ngModel]=\"displayText()\" [placeholder]=\"placeholder()\" [readonly]=\"true\">\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-suffix>\n <ax-button color=\"ghost\" look=\"twotone\" (onClick)=\"showSelector()\">\n <ax-icon icon=\"far fa-search\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-text-box>\n @if(selectedWidgetNode()){\n <axp-widget-property-viewer [widget]=\"selectedWidgetNode()!\" (onChanged)=\"handleChangeWidget($event)\">\n </axp-widget-property-viewer>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXTextBoxModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXValidationModule,\n AXFormModule,\n AXPWidgetPropertyViewerComponent,\n ]\n})\nexport class AXPWidgetSelectorWidgetEditComponent extends AXPValueWidgetComponent<any> {\n private popupService = inject(AXPopupService);\n private widgetRegisteryService = inject(AXPWidgetRegistryService);\n\n @ViewChild(AXTextBoxComponent)\n textbox: AXTextBoxComponent;\n\n protected searchTerm = signal<string | null>(null);\n protected isOpen = signal(false);\n protected textField = signal<string>('');\n\n protected displayText = computed(() => this.getValue()?.title || '');\n protected selectedWidgetNode = signal<AXPWidgetNode | null>(null);\n protected selectedItem = signal<any | null>(null);\n\n protected placeholder = computed(() => this.options()['placeholder'] ?? '');\n protected loading = computed<boolean>(() => this.options()['loading'] ?? false);\n\n ngAfterViewInit(): void {\n if (this.getValue()) {\n this.selectedWidgetNode.set(this.getValue());\n }\n }\n\n async showSelector() {\n const com = await import('@acorex/platform/layout/designer').then((c) => c.AXPDesignerWidgetPickerComponent);\n const result = await this.popupService.open(com, {\n title: 'Widget Gallery',\n size: 'md',\n closeButton: true,\n data: {\n widgets: sortBy(\n this.widgetRegisteryService.all(),\n (c) => c.title\n ),\n },\n });\n if ((result.data?.widgets ?? []).length) {\n const selected = result.data?.widgets as AXPWidgetConfig[];\n const selectedNode = this.convertWidgetConfigToNode(selected[0]);\n this.selectedWidgetNode.set(selectedNode);\n }\n }\n\n protected convertWidgetConfigToNode(config: AXPWidgetConfig): AXPWidgetNode {\n return {\n type: config.name as (keyof AXPWidgetTypesMap),\n };\n }\n\n protected handleChangeWidget(e: AXPWidgetPropertiesChangedEvent) {\n const widget = this.widgetRegisteryService.resolve(e.values.type);\n this.setValue({ title: widget?.title, ...e.values });\n }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n template: `{{ getValue()?.title }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule]\n})\nexport class AXPWidgetSelectorWidgetViewComponent extends AXPValueWidgetComponent<any> { }\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPWidgetSelectorWidget: AXPWidgetConfig = {\n name: 'widget-selector',\n title: 'Widget Selector',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n type: 'editor',\n icon: 'fa-light fa-square',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n view: {\n component: () =>\n import('./widget-selector-widget-view.component').then((c) => c.AXPWidgetSelectorWidgetViewComponent),\n },\n edit: {\n component: () =>\n import('./widget-selector-widget-edit.component').then((c) => c.AXPWidgetSelectorWidgetEditComponent),\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n widgetSelector: 'widget-selector';\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityCreateViewModelFactory } from '../entity-master-create.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '../entity.config';\n\nexport const AXPEntityCreateEvent = createWorkFlowEvent<{ entity: string; meta?: any }>('[Entity] Created!');\n\n@Injectable()\nexport class AXPEntityCreatePopupAction extends AXPWorkflowAction {\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private popupService = inject(AXPopupService);\n private platform = inject(AXPlatform);\n private factory = inject(AXPEntityCreateViewModelFactory);\n private config = inject(AXP_ENTITY_CONFIG_TOKEN);\n private translateService = inject(AXTranslationService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [module, entity] = context.getVariable<string>('entity').split('.');\n const data = context.getVariable<any>('data');\n const options = context.getVariable<any>('options');\n\n console.log('data', data);\n\n const process = options?.['process'];\n const decoration = options?.['decoration'];\n const layout = options?.['layout'];\n\n const headerTitle = decoration?.header?.title;\n\n const size = layout?.size;\n\n const entityRef = await this.entityRegistery.resolve(module, entity);\n const com = await this.config.viewers.master.create();\n\n if (entityRef.parentKey) {\n context.setVariable('parentKey', entityRef.parentKey);\n }\n\n const result = await this.popupService.open(com, {\n title: headerTitle\n ? headerTitle\n : `${await this.translateService.translateAsync('create-new')} ${await this.translateService.translateAsync(\n entityRef.formats.individual\n )}`,\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : size ? size : 'md',\n data: {\n vm: await this.factory.create(module, entity, data, options),\n entity,\n },\n });\n context.setOutput('result', false);\n if (result.data?.save) {\n context.setOutput('result', true);\n const prevData = context.getVariable('data');\n const prevMeta = context.getVariable('meta');\n\n context.setVariable('data', { ...prevData, ...result.data.item });\n if (entityRef.parentKey && result.data.item[entityRef.parentKey]) {\n context.setVariable('meta', { ...prevMeta, refreshTargetId: result.data.item[entityRef.parentKey] });\n }\n }\n }\n}\n@Injectable() //avoid DEPRECATED: DI is instantiating a token \"AXPEntityCreateSubmittedAction\" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the \"AXPEntityCreateSubmittedAction\" class.\nexport class AXPEntityCreateSubmittedAction extends AXPWorkflowAction {\n async execute(context: AXPWorkflowContext): Promise<void> {\n this.dispatch(\n AXPEntityCreateEvent({ entity: context.getVariable<string>('entity'), meta: context.getVariable('meta') })\n );\n this.dispatch(\n AXPRefreshEvent({ entity: context.getVariable<string>('entity'), meta: context.getVariable('meta') })\n );\n }\n}\n\nexport const AXPCreateEntityWorkflow: AXPWorkflow = {\n startStepId: 'show-popup',\n steps: {\n 'show-popup': {\n action: 'AXPEntityCreatePopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'show-toast',\n },\n ],\n },\n 'show-toast': {\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-created',\n content: 'workflow.entity-created-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'dispatch-event',\n },\n ],\n },\n 'dispatch-event': {\n action: 'AXPEntityCreateSubmittedAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getVariable(\"options\")?.process?.redirect != false' }],\n nextStepId: 'show-entity',\n },\n ],\n },\n 'show-entity': {\n action: 'AXPShowDetailViewAction',\n },\n },\n};\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXPEntityMasterUpdateViewModelFactory } from '../entity-master-update.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '../entity.config';\n\n@Injectable()\nexport class AXPQuickEntityModifyPopupAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private platform = inject(AXPlatform);\n private translateService = inject(AXTranslationService);\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private config = inject(AXP_ENTITY_CONFIG_TOKEN);\n private factory = inject(AXPEntityMasterUpdateViewModelFactory);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [moduleName, entityName] = context.getVariable<string>('entity').split('.');\n const data = context.getVariable('data');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n const { parentKey } = entityRef;\n\n const { id } = data;\n const { interfaces, title } = entityRef;\n const properties = interfaces?.master?.update?.properties?.map((p) => p.name) || [];\n\n const vm = await this.factory.create(moduleName, entityName, id, properties);\n\n const options = context.getVariable<any>('options');\n const decoration = options?.['decoration'];\n const headerTitle = decoration?.header?.title;\n\n if (parentKey) {\n context.setVariable('parentKey', parentKey);\n }\n\n const com = await this.config.viewers.master.modify();\n const popup = await this.popupService.open(com, {\n title: headerTitle\n ? headerTitle\n : title ??\n `${this.translateService.translateSync('entity.modify')} ${this.translateService.translateSync(\n entityRef.formats.individual\n )}`,\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\n data: {\n vm,\n properties,\n entity: entityRef,\n },\n });\n context.setOutput('result', false);\n if (popup.data?.result == true) {\n context.setOutput('result', true);\n context.setVariable('data', cloneDeep(popup.data.context));\n }\n }\n}\n\nexport const AXPQuickModifyEntityWorkflow: AXPWorkflow = {\n startStepId: 'modifyPopup',\n steps: {\n modifyPopup: {\n id: 'modifyPopup',\n action: 'AXPQuickEntityModifyPopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-modified-title',\n content: 'workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n modifyConfirmed: {\n id: 'modifyConfirmed',\n action: 'AXPEntityModifyConfirmedAction',\n },\n },\n};\n\n\n\n@Injectable()\nexport class AXPEntityApplyUpdatesAction extends AXPWorkflowAction {\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n try {\n const [moduleName, entityName] = context.getVariable<string>('entity').split('.');\n const data = context.getVariable('data');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n const exec = entityRef.commands?.update?.execute as Function;\n const result = await exec(data);\n context.setVariable('data', result);\n context.setOutput('result', true);\n } catch (error) {\n context.setOutput('result', false);\n context.setOutput('error', error);\n }\n }\n} ","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable()\nexport class AXPShowDetailViewAction extends AXPWorkflowAction {\n private navigation = inject(AXPWorkflowNavigateAction);\n private sessionService = inject(AXPSessionService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [module, entity] = context.getVariable('entity').split(\".\");\n const { id } = context.getVariable('data');\n const newPayload = {\n commands: `/${this.sessionService.application?.name}/m/${module}/e/${entity}/${id}/view`,\n };\n context.setVariable('payload', newPayload);\n this.navigation.execute(context);\n }\n}\n\n\nexport const AXPShowDetailsViewWorkflow: AXPWorkflow = {\n startStepId: 'showDetailView',\n steps: {\n showDetailView: {\n action: 'AXPShowDetailViewAction',\n },\n },\n};\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\n\n\n@Injectable()\nexport class AXPShowListViewAction extends AXPWorkflowAction {\n private navigation = inject(AXPWorkflowNavigateAction);\n private sessionService = inject(AXPSessionService);\n async execute(context?: any): Promise<void> {\n const [moduleName, entityName] = context.getVariable('entity').split(\".\");\n const newPayload = {\n commands: `/${this.sessionService.application?.name}/m/${moduleName}/e/${entityName}/list`,\n };\n context.setVariable('payload', newPayload);\n this.navigation.execute(context);\n }\n}\n\nexport const AXPShowListViewWorkflow: AXPWorkflow = {\n startStepId: 'showListView',\n steps: {\n showListView: {\n id: 'showListView',\n action: 'AXPShowListViewAction',\n },\n },\n};\n","import { inject, Injectable } from '@angular/core';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { AXPFileListItem } from '@acorex/platform/core';\nimport { AXPFileUploaderWidgetService } from '@acorex/platform/widgets';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { cloneDeep } from 'lodash-es';\n\n@Injectable()\nexport class AXPShowFileUploaderPopupAction extends AXPWorkflowAction {\n private fileUploaderWidgetService = inject(AXPFileUploaderWidgetService);\n private entityRegistryService = inject(AXPEntityDefinitionRegistryService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n debugger;\n\n const key = context.getVariable<string>('options.key');\n const files = context.getVariable<AXPFileListItem[]>('options.files');\n const readOnly = context.getVariable<boolean>('options.readOnly');\n const multiple = context.getVariable<boolean>('options.multiple');\n const accept = context.getVariable<string>('options.accept');\n\n\n const res = await this.fileUploaderWidgetService.showFileList({\n files: files,\n readOnly: readOnly,\n multiple: multiple,\n accept: accept,\n });\n if ((res?.length ?? 0) === 0) {\n context.setOutput('result', false);\n return;\n }\n\n const [module, entity] = context.getVariable<string>('entity').split('.');\n const entityDefinition = await this.entityRegistryService.resolve(module, entity);\n\n if (entityDefinition) {\n const updateExec = entityDefinition.commands?.update?.execute as Function;\n\n const entityData = await updateExec({\n id: context.getVariable<string>('options.id'),\n [key]: res,\n });\n context.setOutput('result', true);\n context.setVariable('data', cloneDeep(entityData));\n }\n }\n}\n\nexport const AXPShowFileUploaderPopupWorkflow: AXPWorkflow = {\n startStepId: 'show-popup',\n steps: {\n 'show-popup': {\n action: 'AXPShowFileUploaderPopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-modified-title',\n content: 'workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n modifyConfirmed: {\n id: 'modifyConfirmed',\n action: 'AXPEntityModifyConfirmedAction',\n },\n },\n};\n","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport {\n AXPToastAction,\n AXPWorkflowNavigateAction,\n AXP_SEARCH_DEFINITION_PROVIDER,\n} from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\n\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { Injector, NgModule, inject, Inject } from '@angular/core';\nimport { ROUTES, RouterModule, Routes } from '@angular/router';\nimport { AXPEntityListViewModelResolver } from './entity-master-list.viewmodel';\nimport { AXPEntityDetailViewModelResolver } from './entity-master-single.viewmodel';\nimport { AXPEntityMiddleware, AXPEntityMiddlewareDefault } from './entity-middleware';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from './entity.config';\nimport { AXPEntityCommandSearchDefinitionProvider } from './search-definition-command.provider';\nimport { AXPEntitySearchDefinitionProvider } from './search-definition.provider';\nimport { AXPLookupWidget } from './widgets/lookup-widget';\nimport { AXPTagableBoxWidget } from './widgets/tagable-box';\nimport { AXPWidgetSelectorWidget } from './widgets/widget-selector';\nimport {\n AXPCreateEntityWorkflow,\n AXPEntityCreatePopupAction,\n AXPEntityCreateSubmittedAction,\n} from './workflows/create-entity.workflow';\nimport { AXPDeleteEntityWorkflow, AXPEntityPerformDeleteAction } from './workflows/delete-entity.workflow';\nimport { AXPEntityApplyUpdatesAction, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow } from './workflows/modify-entity.workflow';\nimport {\n AXPEntityModifyConfirmedAction,\n AXPEntityModifySectionPopupAction,\n AXPModifyEntitySectionWorkflow,\n} from './workflows/modify-section.workflow';\nimport { AXPShowDetailViewAction, AXPShowDetailsViewWorkflow } from './workflows/show-details.workflow';\nimport { AXPShowListViewAction, AXPShowListViewWorkflow } from './workflows/show-list.workflow';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXPShowFileUploaderPopupAction, AXPShowFileUploaderPopupWorkflow } from './workflows/show-file-uploader-popup.workflow';\n\nfunction routesFacory() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n let routes: Routes = [];\n routes = [\n {\n path: ':app/m',\n loadComponent: () => {\n return config.viewers.root();\n },\n canActivate: [AXPAuthGuard],\n children: [\n {\n path: ':module',\n children: [\n {\n path: 'e/:entity/list',\n loadComponent: () => {\n return config.viewers.master.list();\n },\n resolve: {\n vm: AXPEntityListViewModelResolver,\n },\n data: { reuse: false },\n },\n {\n path: 'e/:entity/:id/view',\n resolve: { vm: AXPEntityDetailViewModelResolver },\n loadComponent: () => {\n return config.viewers.master.single();\n },\n data: { reuse: false },\n },\n {\n path: 'e/:entity/:id',\n redirectTo: 'e/:entity/:id/view',\n pathMatch: 'full',\n },\n {\n path: 'e/:entity',\n redirectTo: ':entity/list',\n pathMatch: 'full',\n },\n ],\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [\n RouterModule,\n AXPWorkflowModule.forChild({\n actions: {\n AXPEntityCreatePopupAction,\n AXPEntityPerformDeleteAction,\n AXPWorkflowNavigateAction,\n 'entity-perform-delete': AXPEntityPerformDeleteAction,\n AXPEntityModifySectionPopupAction,\n AXPQuickEntityModifyPopupAction,\n AXPEntityModifyConfirmedAction,\n AXPToastAction,\n AXPShowDetailViewAction,\n AXPEntityCreateSubmittedAction,\n AXPShowListViewAction,\n 'entity-apply-updates': AXPEntityApplyUpdatesAction,\n AXPShowFileUploaderPopupAction,\n },\n workflows: {\n 'create-entity': AXPCreateEntityWorkflow,\n 'delete-entity': AXPDeleteEntityWorkflow,\n 'modify-entity-section': AXPModifyEntitySectionWorkflow,\n 'quick-modify-entity': AXPQuickModifyEntityWorkflow,\n 'open-entity': AXPShowDetailsViewWorkflow,\n 'show-list-view': AXPShowListViewWorkflow,\n 'show-file-uploader-popup': AXPShowFileUploaderPopupWorkflow,\n },\n functions: {},\n }),\n AXPLayoutBuilderModule.forChild({\n widgets: [AXPLookupWidget, AXPWidgetSelectorWidget, AXPTagableBoxWidget],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPEntitySearchDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPEntityCommandSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: AXPEntityMiddleware,\n useClass: AXPEntityMiddlewareDefault,\n },\n ],\n})\nexport class AXPEntityModule {\n\n\n constructor(appInitService: AXPAppStartUpService, injector: Injector,) {\n\n const service = injector.get(AXPEntityDefinitionRegistryService);\n appInitService.registerTask({\n name: 'layout-theme',\n statusText: 'Preload entities ...',\n priority: 100,\n run: async () => {\n // load in background\n service.preload();\n },\n });\n\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityService {\n private sessionService = inject(AXPSessionService);\n\n createPath(module: string, entity: string, path: string = 'list'): string {\n return `/${this.sessionService.application?.name}/m/${module}/e/${entity}/${path}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i5","i6","i7","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-layout-entity.mjs","sources":["../../../../libs/platform/layout/entity/src/lib/entity-data-seeder.ts","../../../../libs/platform/layout/entity/src/lib/entity.config.ts","../../../../libs/platform/layout/entity/src/lib/entity.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-detail-list.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-middleware.ts","../../../../libs/platform/layout/entity/src/lib/entity-registery.service.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-create.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-list.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/workflows/delete-entity.workflow.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-update.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/workflows/modify-section.workflow.ts","../../../../libs/platform/layout/entity/src/lib/entity-master-single.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/entity-storage-service.ts","../../../../libs/platform/layout/entity/src/lib/search-definition-command.provider.ts","../../../../libs/platform/layout/entity/src/lib/search-definition.provider.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-view.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-selector.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-edit.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget-column.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/lookup-widget/lookup-widget.config.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-column.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-edit.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-filter.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-print.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget-view.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/tagable-box/tagable-box-widget.config.ts","../../../../libs/platform/layout/entity/src/lib/widgets/widget-selector/widget-selector-widget-edit.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/widget-selector/widget-selector-widget-view.component.ts","../../../../libs/platform/layout/entity/src/lib/widgets/widget-selector/widget-selector-widget.config.ts","../../../../libs/platform/layout/entity/src/lib/workflows/create-entity.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/modify-entity.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/show-details.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/show-list.workflow.ts","../../../../libs/platform/layout/entity/src/lib/workflows/show-file-uploader-popup.workflow.ts","../../../../libs/platform/layout/entity/src/lib/entity.module.ts","../../../../libs/platform/layout/entity/src/lib/entity.service.ts","../../../../libs/platform/layout/entity/src/acorex-platform-layout-entity.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\nimport { castArray } from 'lodash-es';\n\nexport interface AXPDataSeeder {\n seed(): Promise<void>;\n}\n\nexport const AXP_DATA_SEEDER_TOKEN = new InjectionToken<AXPDataSeeder[]>('AXP_DATA_SEEDER_TOKEN');\n\n@Injectable({ providedIn: 'root' })\nexport class AXPDataSeederService {\n private loaders = inject(AXP_DATA_SEEDER_TOKEN, { optional: true });\n\n async seed(): Promise<void> {\n for (const loader of castArray(this.loaders)) {\n await loader?.seed();\n }\n }\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport { inject, Injectable, InjectionToken, Type } from '@angular/core';\n\nexport interface AXPEntityConfigs {\n viewers: {\n root: () => Type<any> | Promise<Type<any>>;\n detail: {\n list: () => Type<any> | Promise<Type<any>>;\n };\n master: {\n single: () => Type<any> | Promise<Type<any>>;\n create: () => Type<any> | Promise<Type<any>>;\n modify: () => Type<any> | Promise<Type<any>>;\n list: () => Type<any> | Promise<Type<any>>;\n };\n };\n}\n\nexport const AXP_ENTITY_CONFIG_TOKEN = new InjectionToken<AXPEntityConfigs>('AXP_ENTITY_CONFIG_TOKEN');\n\n\n\nexport interface AXPEntityDefinitionLoader {\n get(moduleName: string, entityName: string): Promise<AXPEntity | null>;\n}\n\nexport const AXP_ENTITY_DEFINITION_LOADER = new InjectionToken<AXPEntityDefinitionLoader>(\n 'AXP_ENTITY_DEFINITION_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityResolver {\n private providers = inject(AXP_ENTITY_DEFINITION_LOADER);\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (Array.isArray(this.providers)) {\n for (const loader of this.providers) {\n const entity = await loader.get(moduleName, entityName);\n if (entity) {\n return entity;\n }\n }\n } else {\n return await this.providers.get(moduleName, entityName);\n }\n return null;\n }\n}\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport {\n AXPEntity,\n AXPEntityAction,\n AXPEntityCommandScope,\n AXPEntityProperty,\n AXPEntityTableColumn,\n resolveActionLook,\n} from '@acorex/platform/common';\nimport { AXPMetaData } from '@acorex/platform/core';\nimport { AXPWidgetColumnNode } from '@acorex/platform/layout/builder';\nimport { computed } from '@angular/core';\n\nexport class AXPEntityCommandTriggerViewModel {\n priority: 'primary' | 'secondary';\n color: AXStyleColorType;\n icon: string;\n title: string;\n name: string;\n key?: string;\n separated: boolean;\n scope: AXPEntityCommandScope;\n disabled: boolean | string;\n hidden: boolean | string;\n options: any;\n metadata?: AXPMetaData;\n default?: boolean;\n\n constructor(entity: AXPEntity, action: AXPEntityAction) {\n this.name = `${typeof action.command === 'string' ? action.command : action.command.name}&${action.name}`;\n this.options = typeof action.command === 'object' ? action.command.options : undefined;\n this.metadata = typeof action.command === 'object' ? action.command.metadata : undefined;\n const resolvedLook = resolveActionLook(action);\n this.priority = action.priority;\n this.title = action.title;\n this.separated = action.separated ?? false;\n this.color = action.color ?? resolvedLook.color;\n this.icon = action.icon ?? resolvedLook.icon;\n this.hidden = action.hidden ?? false;\n this.disabled = action.disabled ?? false;\n this.default = action.default ?? false;\n this.scope = action.scope;\n }\n}\n\nexport class AXPEntityListViewColumnViewModel {\n constructor(\n private property: AXPEntityProperty,\n private column: AXPEntityTableColumn,\n ) {}\n\n name = this.property.name;\n title = this.column.title ?? this.property.title;\n visible = this.column?.options?.visible ?? true;\n dir = this.column.sort?.dir;\n sortEnabled = this.property.options?.sort?.enabled;\n width: '';\n\n node = computed<AXPWidgetColumnNode>(() => {\n const widget = this.property.schema.interface!;\n return {\n path: this.column.options?.dataPath ?? this.name,\n type: widget.type,\n options: { ...widget?.options, ...this.column?.options },\n } as AXPWidgetColumnNode;\n });\n}\n","import { AXDataSource, AXDataSourceFilterOption, AXDataSourceOperator } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n AXPFilterOperatorMiddlewareService,\n AXPRelatedEntity,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { Injector, computed, signal } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPEntityResolver } from './entity.config';\nimport { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } from './entity.viewmodel';\nimport { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService } from '@acorex/platform/core';\n\nexport class AXPEntityDetailListViewModel {\n private detailEntity = signal<AXPEntity | null>(null);\n private formatService = this.injector.get(AXFormatService);\n private workflow = this.injector.get(AXPWorkflowService);\n private filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);\n private expressionEvaluator = this.injector.get(AXPExpressionEvaluatorService);\n\n dataSource = new AXDataSource({\n byKey: (key) => {\n const func = this.detailEntity()?.queries.byKey.execute as Function;\n return func();\n },\n load: (e) => {\n const func = this.detailEntity()?.queries.list?.execute as Function;\n return func(e);\n },\n pageSize: 5,\n key: 'id',\n });\n\n public parentKey = computed(() => {\n return this.detailEntity()?.parentKey;\n });\n\n constructor(\n private injector: Injector,\n private detailEntityConfig: AXPRelatedEntity,\n private parent: { entity: AXPEntity; data: any },\n ) {\n this.initialize();\n }\n\n async initialize() {\n const entityResolver = this.injector.get(AXPEntityResolver);\n const [moduleName, entityName] = this.detailEntityConfig.entity.split('.');\n const entity = await entityResolver.get(moduleName, entityName);\n if (!entity) {\n throw Error(`Invalid enitity name: ${this.detailEntityConfig.entity}`);\n }\n this.detailEntity.set(entity);\n this.applyFilterAndSort();\n }\n\n public selectedItems = signal<any[]>([]);\n\n public hasSelectedItems = computed<boolean>(() => {\n return this.selectedItems().length > 0;\n });\n\n public clearSelection(): void {\n this.selectedItems.set([]);\n }\n\n //****************** Title ******************//\n public title = computed<string>(() => {\n return (\n this.detailEntityConfig.title ??\n this.detailEntity()?.interfaces?.detail?.list?.title! ??\n this.detailEntity()?.formats.plural!\n );\n });\n\n //****************** Visibility ******************//\n public hidden = computed<Promise<boolean>>(async () => {\n if (typeof this.detailEntityConfig.hidden == 'string') {\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return get(this.parent.data, path);\n },\n },\n };\n return await this.expressionEvaluator.evaluate(this.detailEntityConfig.hidden, scope);\n } else {\n return this.detailEntityConfig.hidden ?? false;\n }\n });\n\n //****************** Inline filter ******************//\n public inlineFiltersPlaceholders = computed<string[]>(() => {\n //return this.entityDef.properties.filter(p => p.options?.filter?.inline?.enabled).map(c => c.title);\n return [];\n });\n\n public hasInlineFilters = computed<boolean>(() => {\n return this.inlineFiltersPlaceholders().length > 0;\n });\n\n //****************** Actions ******************//\n private allActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n const list = this.detailEntity()?.interfaces?.master?.list?.actions ?? [];\n const detailEntityActionList = this.detailEntityConfig.actions ?? [];\n\n const mergedActions = list.map((tr) => {\n const commandName = typeof tr.command === 'string' ? tr.command : tr.command.name;\n const overrideAction = detailEntityActionList.find((action) => {\n const actionCommandName = typeof action.command === 'string' ? action.command : action.command.name;\n return actionCommandName === commandName && action.name === tr.name;\n });\n return new AXPEntityCommandTriggerViewModel(this.detailEntity()!, overrideAction ?? tr);\n });\n\n return mergedActions;\n });\n\n public selectedScopeActionsCount = computed<number>(() => {\n return this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Selected).length;\n });\n\n public primaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.allActions().filter(\n (a) =>\n a.priority == 'primary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())),\n );\n });\n\n public secondaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.allActions().filter(\n (a) =>\n a.priority == 'secondary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())),\n );\n });\n public primaryRowActions = computed<AXPEntityCommandTriggerViewModel[]>(() =>\n this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'primary'),\n );\n\n public secondaryRowActions = computed<AXPEntityCommandTriggerViewModel[]>(() =>\n this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'secondary'),\n );\n\n //****************** Filter ******************//\n\n private inlineFilters: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: [],\n };\n\n applyInlineFilter(value: string) {\n // const props = this.entityDef.properties.filter(c => c.options?.filter?.inline?.enabled);\n // this.inlineFilters.filters = [];\n // if (value) {\n // props.forEach(p => {\n // this.inlineFilters.filters?.push({\n // field: p.name,\n // operator: {\n // type: 'contains'\n // },\n // value\n // })\n // })\n // }\n this.applyFilterAndSort();\n }\n\n applyFilterAndSort() {\n this.dataSource.clearFilter();\n //\n //this.dataSource.sort(...this.detailEntity.().map(s => ({ dir: s.dir, field: s.name } as AXDataSourceSortOption)));\n //\n\n const parentFilters: AXDataSourceFilterOption[] =\n this.detailEntityConfig.conditions?.map((c) => {\n return {\n field: c.name,\n operator: c.operator as unknown as AXDataSourceOperator,\n value: this.parent.data?.id,\n } as AXDataSourceFilterOption;\n }) ?? [];\n const parentFilterWrapper: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: parentFilters,\n };\n //\n const inline = this.inlineFilters.filters?.length ?? 0;\n const parent = parentFilterWrapper.filters?.length ?? 0;\n //\n if (inline) {\n this.dataSource.filter(this.filterOperatorMiddleware.transformFilter(this.inlineFilters));\n } else if (!inline && parent) {\n this.dataSource.filter(this.filterOperatorMiddleware.transformFilter(parentFilterWrapper));\n } else if (inline && parent) {\n this.dataSource.filter(\n this.filterOperatorMiddleware.transformFilter({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [this.inlineFilters, parentFilterWrapper],\n }),\n );\n }\n //\n this.dataSource.refresh();\n }\n\n //****************** Columns ******************//\n\n columns = computed(() => {\n if (this.detailEntity()) {\n const detailColumns = this.detailEntityConfig.columns ?? [];\n const columns = this.detailEntity()?.columns?.map((c) => c.name) ?? [];\n const props =\n this.detailEntity()?.properties.filter(\n (p) => p.schema.hidden != true && (detailColumns?.length == 0 || detailColumns?.includes(p.name)),\n ) ?? [];\n const displayColumns = props.filter((p) => columns.some((c) => c == p.name));\n return displayColumns.map((p) => {\n return new AXPEntityListViewColumnViewModel(p, this.detailEntity()?.columns?.find((c) => c.name == p.name)!);\n });\n }\n return [];\n });\n\n //****************** Commands ******************//\n public async executeCommand(commandName: string, data: any = null) {\n const action = this.allActions().find((c) => {\n const isSelectedScope = this.selectedItems().length\n ? c.scope == AXPEntityCommandScope.Selected\n : c.scope == AXPEntityCommandScope.Individual;\n return c.name == commandName && (isSelectedScope || c.scope == AXPEntityCommandScope.TypeLevel);\n });\n\n if (!action) return;\n\n const actionData = action.options?.process?.data;\n const initialData = actionData ? { ...data, ...(await this.evaluateExpressions(actionData)) } : data;\n\n await this.workflow.execute(commandName.split('&')[0], {\n entity: getEntityInfo(this.detailEntity()!).source,\n data: action.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : initialData,\n entityInfo: {\n name: this.detailEntity()?.name,\n module: this.detailEntity()?.module,\n title: this.detailEntity()?.title,\n parentKey: this.detailEntity()?.parentKey,\n source: this.detailEntity()?.source,\n },\n options: action.options,\n });\n }\n\n private evaluateExpressions = async (actionData: { [key: string]: string }) => {\n const parentData = this.parent.data;\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return get(parentData, path);\n },\n },\n };\n\n return await this.expressionEvaluator.evaluate(actionData, scope);\n };\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport { Injectable } from '@angular/core';\n\nexport abstract class AXPEntityMiddleware {\n abstract process(entity: AXPEntity): AXPEntity;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityMiddlewareDefault extends AXPEntityMiddleware {\n process(entity: AXPEntity): AXPEntity {\n return entity;\n }\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { AXPEntityMiddleware } from './entity-middleware';\nimport { AXP_ENTITY_DEFINITION_LOADER, AXPEntityDefinitionLoader, AXPEntityResolver } from './entity.config';\n\nexport interface AXPEntityPreloadEntity {\n module: string;\n entity: string;\n}\n\nexport interface AXPEntityDefinitionPreloader {\n preload(): AXPEntityPreloadEntity[];\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPEntityDefinitionRegistryService {\n private providers = inject(AXP_ENTITY_DEFINITION_LOADER);\n private resolver = inject(AXPEntityResolver);\n private middleware = inject(AXPEntityMiddleware);\n\n async preload() {\n const providers = Array.isArray(this.providers)\n ? this.providers\n : ([this.providers] as AXPEntityDefinitionLoader[]);\n const promises: Promise<AXPEntity | null>[] = [];\n\n providers.forEach((provider) => {\n const items = typeof provider.preload == 'function' ? provider.preload() : [];\n items.forEach((item: AXPEntityPreloadEntity) => {\n promises.push(this.resolver.get(item.module, item.entity));\n });\n });\n\n const entities = await Promise.all(promises);\n entities.forEach((entity) => {\n if (entity != null) this.register(this.middleware.process(entity));\n });\n }\n\n // Stores AXPEntityConfig objects, keyed by a combination of module and entity name.\n private entities = new Map<string, AXPEntity>();\n\n // Entity resolver service for dynamically loading entity configurations.\n private entityResolver = inject(AXPEntityResolver); // Assuming AXPEntityLoader is the correct type\n\n /**\n * Registers a new entity configuration. Entities are identified uniquely by a combination\n * of their module and name.\n *\n * @param config The configuration object of the entity to be registered.\n */\n register(config: AXPEntity): void {\n const key = this.createEntityKey(config.module, config.name);\n this.entities.set(key, config);\n }\n\n /**\n * Returns an array of all registered entity configurations.\n *\n * @returns An array of AXPEntity objects.\n */\n getAll(): AXPEntity[] {\n return Array.from(this.entities.values());\n }\n\n /**\n * Resolves an entity configuration based on module and entity name. If the configuration\n * is not already registered, attempts to load it dynamically. Throws an error if the\n * entity cannot be found or loaded.\n *\n * @param moduleName The module name of the entity.\n * @param entityName The name of the entity.\n * @returns A promise resolving to the entity configuration.\n * @throws Error if the entity configuration cannot be resolved.\n */\n async resolve(moduleName: string, entityName: string): Promise<AXPEntity> {\n const key = this.createEntityKey(moduleName, entityName);\n let config = this.entities.get(key) ?? null;\n\n if (!config) {\n try {\n config = await this.entityResolver.get(moduleName, entityName);\n if (config) {\n const processedConfig = this.middleware.process(config);\n this.register(processedConfig);\n return processedConfig;\n }\n } catch (error) {\n throw error; // Rethrow to allow error handling by caller\n }\n\n if (!config) {\n throw new Error(`Invalid entity name: ${key}`);\n }\n }\n return config;\n }\n\n /**\n * Creates a unique key for an entity based on its module and name.\n *\n * @param moduleName The module name of the entity.\n * @param entityName The name of the entity.\n * @returns The unique key for the entity.\n */\n private createEntityKey(moduleName: string, entityName: string): string {\n return `${moduleName}.${entityName}`;\n }\n}\n","import {\n AXPEntity,\n AXPEntityProperty,\n AXPEntityPropertyCreateView,\n AXPEntitySectionView,\n AXPGridLayoutOptions,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService, AXPPageStatus, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { Injectable, Injector, computed, inject, signal } from '@angular/core';\nimport { cloneDeep, get, isNil, merge, set } from 'lodash-es';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\n\nexport class AXPEntityCreateViewSectionViewModel {\n constructor(private entity: AXPEntity, private section: AXPEntitySectionView) {}\n\n group = this.entity.groups?.find((c) => c.id == this.section.id)!;\n name = signal(this.group.id);\n\n title = computed<string>(() => {\n return this.group.title ?? this.group.id;\n });\n\n description = computed<string | null | undefined>(() => {\n return this.group.description;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const source = cloneDeep(this.section.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n elements = computed(() => {\n const { interfaces, properties } = this.entity;\n const createProps = interfaces?.master?.create?.properties ?? [];\n const createPropNames = new Set(createProps.map(({ name }) => name));\n\n const filteredProperties = properties.filter(\n ({ groupId, schema, name }) => groupId === this.group.id && !schema.hidden && createPropNames.has(name)\n );\n\n return filteredProperties.map((property) => {\n const createProp = createProps.find(({ name }) => name === property.name);\n return new AXPEntityCreateViewElementViewModel(this.entity, this, property, createProp!);\n });\n });\n}\n\nexport class AXPEntityCreateViewElementViewModel {\n constructor(\n private entity: AXPEntity,\n private section: AXPEntityCreateViewSectionViewModel,\n private property: AXPEntityProperty,\n private createProp: AXPEntityPropertyCreateView\n ) {}\n\n name = signal(this.property.name);\n title = signal(this.property.title);\n description = signal(this.property.description);\n\n editable = computed<boolean>(() => {\n return !(this.property.schema.readonly ?? false);\n });\n\n isRequired = computed<boolean>(() => {\n return this.property.validations?.some((c) => c.rule == 'required') || false;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const source = cloneDeep(this.createProp.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n node = computed<AXPWidgetNode>(() => {\n const schema = this.property.schema!;\n const widget = schema.interface!;\n return {\n type: widget.type,\n mode: this.editable() ? 'edit' : 'view',\n path: this.name(),\n name: this.name(),\n children: widget.children,\n formula: widget.formula,\n triggers: widget.triggers,\n valueTransforms: widget.valueTransforms,\n options: merge(schema.interface?.options, {\n validations: this.property.validations?.map((c) => ({ rule: c.rule, message: c.message, options: c.options })),\n }),\n } as AXPWidgetNode;\n });\n}\n\nexport class AXPEntityMasterCreateViewModel {\n private entityDef = cloneDeep(this.config)!;\n\n private workflow = this.injector.get(AXPWorkflowService);\n private expressionEvaluator = this.injector.get(AXPExpressionEvaluatorService);\n\n public builder: AXPLayoutBuilderService;\n\n constructor(\n private readonly injector: Injector,\n private readonly config: AXPEntity,\n private readonly initialData: any = {},\n private readonly commandOptions: any\n ) {\n if (!initialData) initialData = {};\n\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(get(initialData, path));\n });\n });\n },\n },\n };\n\n const processDefault = async (value: any) => {\n if (typeof value == 'function') {\n return value();\n } else if (typeof value == 'string' && value.startsWith('{{')) {\n return await this.expressionEvaluator.evaluate(value, scope);\n }\n return value;\n };\n\n this.config.properties\n .filter((c) => !isNil(c.schema.defaultValue))\n .forEach(async (p) => {\n const value = await processDefault(p.schema.defaultValue);\n set(initialData, p.name, value);\n });\n //\n this.context.set(initialData);\n this.options.set(commandOptions);\n //\n const { redirect = true, canCreateNewOne = true } = commandOptions?.['process'] ?? {};\n this.canCreateNewOne.set(canCreateNewOne);\n this.redirect.set(redirect);\n }\n\n public context = signal<any>(this.initialData ?? {});\n public options = signal<any>(this.commandOptions ?? {});\n\n public isInProgress = signal<boolean>(false);\n public canCreateNewOne = signal<boolean>(true);\n public redirect = signal<boolean>(true);\n\n public sections = computed<AXPEntityCreateViewSectionViewModel[]>(() => {\n const { interfaces, properties } = this.entityDef;\n const createProps = interfaces?.master?.create?.properties?.map(({ name }) => name) ?? [];\n\n const visibleProperties = properties.filter(\n ({ groupId, schema, name }) => groupId && !schema.hidden && createProps.includes(name)\n );\n\n const sections =\n interfaces?.master?.create?.sections?.filter(({ id }) =>\n visibleProperties.some(({ groupId }) => groupId === id)\n ) ?? [];\n\n return sections.map((section) => new AXPEntityCreateViewSectionViewModel(this.entityDef, section));\n });\n\n public async save(): Promise<any | void> {\n try {\n this.isInProgress.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n const exec = this.entityDef.commands?.create?.execute as Function;\n const result = await exec(this.context());\n this.context.update((c) => ({ ...c, ...result }));\n return new Promise((resolve) => {\n setTimeout(() => {\n this.builder.setStatus(AXPPageStatus.Submitted);\n resolve(result);\n });\n });\n } catch (error: any) {\n this.builder.setStatus(AXPPageStatus.Error);\n return Promise.reject(error);\n } finally {\n this.isInProgress.set(false);\n }\n }\n\n public async createNewOne() {\n await this.workflow.execute('create-entity', {\n entity: getEntityInfo(this.entityDef).source,\n options: this.options(),\n data: this.initialData,\n // entityInfo\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityCreateViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(\n moduleName: string,\n entityName: string,\n initialData: any = null,\n options: { canCreateNewOne: boolean; redirect: boolean } = { canCreateNewOne: true, redirect: true }\n ): Promise<AXPEntityMasterCreateViewModel> {\n this.layout.setNavigationLoading(true);\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterCreateViewModel(this.injector, config, initialData, options);\n }\n}\n","import { AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption } from '@acorex/cdk/common';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n AXPEntityProperty,\n AXPFilterDefinition,\n AXPFilterOperatorMiddlewareService,\n AXPFilterQuery,\n AXPQueryView,\n AXPRefreshEvent,\n AXPSettingService,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport {\n AXPBreadcrumbItem,\n AXPContextStore,\n AXPExecuteCommand,\n AXPExpressionEvaluatorScope,\n AXPExpressionEvaluatorService,\n AXPPlatformScope,\n} from '@acorex/platform/core';\nimport { AXPWidgetRegistryService, AXPWidgetTypesMap } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { Injectable, EnvironmentInjector, computed, inject, signal, Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { cloneDeep, get, set } from 'lodash-es';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXPEntityCommandTriggerViewModel, AXPEntityListViewColumnViewModel } from './entity.viewmodel';\n\nexport interface AXPEntityMasterListViewSortPropViewModel {\n name: string;\n title: string;\n dir?: string;\n}\n\nexport class AXPEntityMasterListViewQueryViewModel {\n constructor(\n private entity: AXPEntity,\n private section: AXPEntityMasterListViewModel,\n private view: AXPQueryView,\n ) { }\n\n name = this.view.name;\n title = this.view.title;\n sorts = this.view.sorts;\n columns = this.view.columns;\n conditions = this.view.conditions;\n indexCol = this.view.indexCol;\n pageSize = this.view.pageSize;\n}\n\nexport class AXPEntityMasterListViewModel {\n readonly entityDef = cloneDeep(this.config)!;\n private readonly _viewDef = cloneDeep(this.entityDef.interfaces?.master?.list)!;\n private readonly formatService = this.injector.get(AXFormatService);\n private readonly session = this.injector.get(AXPSessionService);\n private readonly workflow = this.injector.get(AXPWorkflowService);\n private readonly settings = this.injector.get(AXPSettingService);\n private readonly widgetResolver = this.injector.get(AXPWidgetRegistryService);\n private readonly expressionEvaluator = this.injector.get(AXPExpressionEvaluatorService);\n\n private readonly filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);\n\n private settingEntityKey = `${this.config.module}:${this.config.name}`;\n private readonly destroyed = new Subject<void>();\n\n public events$: Subject<{ action: string; meta?: any }> = new Subject();\n\n //****************** Views ******************//\n\n views = computed(() => {\n const views = this.entityDef.interfaces?.master?.list?.views ?? [];\n\n return views.map((v) => {\n return new AXPEntityMasterListViewQueryViewModel(this.entityDef, this, v);\n });\n });\n\n view = signal<AXPEntityMasterListViewQueryViewModel>(this.views()[0]);\n\n async setView(viewName: string | null = null) {\n const entitySetting = await this.settings.get(this.settingEntityKey);\n const selectedViewName = entitySetting?.list?.currentView;\n if (viewName != this.view().name) {\n this.view.set(this.views().find((c) => c.name == (viewName || selectedViewName)) ?? this.views()[0]);\n\n this.applyViewSorts();\n this.applyViewColumns();\n this.applyViewFilters();\n // this.applyFilterAndSort();\n this.applySettings();\n }\n }\n\n dataSource = new AXDataSource({\n byKey: (key) => {\n const func = this.entityDef.queries.byKey.execute as Function;\n return func();\n },\n load: (e) => {\n const func = this.entityDef.queries.list?.execute as Function;\n return func(e);\n },\n pageSize: this.view().pageSize || 10,\n key: 'id',\n });\n\n constructor(\n private injector: Injector,\n private config: AXPEntity,\n ) {\n this.workflow.events$\n .pipe(ofType(AXPRefreshEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n if (event.payload.entity == getEntityInfo(this.entityDef).source) {\n this.selectedItems.set([]);\n this.events$.next({ action: 'refresh', meta: event.payload.meta });\n }\n });\n this.sortedFields.set(this.sortableFields());\n }\n\n public async applySettings() {\n this.saveSettings('view');\n\n const listViewSetting = await this.settings.get(this.settingEntityKey);\n if (listViewSetting) {\n const columns = listViewSetting.list.views[this.view().name].columns;\n const pageSize = listViewSetting.list.views[this.view().name].pageSize;\n const columnVisibilityMap = new Map(columns.map((col: any) => [col.name, col.visible]));\n const columnWidthsMap = new Map(columns.map((col: any) => [col.name, col.width]));\n\n // if (pageSize) {\n // this.dataSource.setPageSize(pageSize);\n // }\n\n this.columns.update((prev) =>\n prev\n .map((c: any) => {\n return { ...c, width: columnWidthsMap.get(c.name), visible: columnVisibilityMap.get(c.name) ?? c.visible };\n }) // Update visibility\n .sort(\n (a, b) =>\n columns.findIndex((col: any) => col.name === a.name) -\n columns.findIndex((col: any) => col.name === b.name),\n ),\n );\n }\n }\n\n public async saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize', data?: any) {\n const updateSettings = (updateFn: (prev: any) => any) => {\n this.settings.scope(AXPPlatformScope.User).update(this.settingEntityKey, updateFn);\n };\n\n switch (changesType) {\n case 'columnSizes':\n updateSettings((prev) => {\n const field = data.dataField.split('-')[1];\n const newSettings = { ...prev };\n\n set(\n newSettings,\n `list.views.${this.view().name}.columns`,\n prev?.list?.views?.[this.view().name]?.columns?.map((c: any) => ({\n ...c,\n width: c.name === field ? data.width : c.width,\n })),\n );\n\n return newSettings;\n });\n break;\n case 'columnOrders':\n updateSettings((prev) => {\n const newSettings = { ...prev };\n\n set(\n newSettings,\n `list.views.${this.view().name}.columns`,\n data.map((c: any) => ({\n name: c.name,\n visible: c.visible,\n width: c.width,\n })),\n );\n\n return newSettings;\n });\n break;\n case 'view':\n updateSettings((prev) => ({\n ...prev,\n list: {\n ...prev?.list,\n currentView: this.view().name,\n },\n }));\n break;\n\n case 'pageSize':\n updateSettings((prev) => ({\n ...prev,\n list: {\n ...prev?.list,\n views: {\n ...prev?.list?.views,\n [this.view().name]: {\n ...prev?.list?.views?.[this.view().name],\n pageSize: data,\n },\n },\n },\n }));\n break;\n\n default:\n break;\n }\n }\n\n public selectedItems = signal<any[]>([]);\n\n public parentKey = computed(() => {\n return this.entityDef.parentKey;\n });\n\n public hasSelectedItems = computed<boolean>(() => {\n return this.selectedItems().length > 0;\n });\n\n public clearSelection(): void {\n this.selectedItems.set([]);\n }\n\n //****************** Title ******************//\n public title = computed<string>(() => {\n return this._viewDef.title ?? this.entityDef.formats.plural!;\n });\n //****************** Description ******************//\n public description = computed<string | null>(() => {\n return this._viewDef.description ?? null;\n });\n\n //****************** Inline filter ******************//\n public inlineFiltersPlaceholders = computed<string[]>(() => {\n return this.entityDef.properties.filter((p) => p.options?.filter?.inline?.enabled).map((c) => c.title ?? c.name);\n });\n\n public hasInlineFilters = computed<boolean>(() => {\n return this.inlineFiltersPlaceholders().length > 0;\n });\n\n //****************** Beardcrumbs ******************//\n public beardcrumbs = computed<AXPBreadcrumbItem[]>(() => {\n return [\n {\n title: this.title(),\n },\n ];\n });\n\n //****************** Actions ******************//\n private allActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n const list = this.entityDef.interfaces?.master?.list?.actions ?? [];\n return list.map((tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)) ?? [];\n });\n\n public async getPrimaryActions(): Promise<AXPEntityCommandTriggerViewModel[]> {\n const scope: AXPExpressionEvaluatorScope = {};\n const actions = await Promise.all(\n this.allActions()\n .filter((a) => a.priority == 'primary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())))\n .map(async (a) => {\n const isHidden = await this.expressionEvaluator.evaluate(a.hidden, scope);\n if (isHidden) return null;\n const disabled = await this.expressionEvaluator.evaluate(a.disabled, scope);\n return { ...a, disabled };\n }),\n );\n return actions as AXPEntityCommandTriggerViewModel[];\n }\n\n public async getSecondaryActions(): Promise<AXPEntityCommandTriggerViewModel[]> {\n const scope: AXPExpressionEvaluatorScope = {};\n const actions = await Promise.all(\n this.allActions()\n .filter((a) => a.priority == 'secondary' &&\n ((a.scope == AXPEntityCommandScope.Selected && this.hasSelectedItems()) ||\n (a.scope == AXPEntityCommandScope.TypeLevel && !this.hasSelectedItems())))\n .map(async (a) => {\n const isHidden = await this.expressionEvaluator.evaluate(a.hidden, scope);\n if (isHidden) return null;\n const disabled = await this.expressionEvaluator.evaluate(a.disabled, scope);\n return { ...a, disabled };\n }),\n );\n return actions as AXPEntityCommandTriggerViewModel[];\n }\n\n\n public selectedScopeActionsCount = computed<number>(() => {\n return this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Selected).length;\n });\n\n public primaryRowActions = computed<AXPEntityCommandTriggerViewModel[]>(() =>\n this.allActions().filter((a) => a.scope == AXPEntityCommandScope.Individual && a.priority === 'primary'),\n );\n\n\n\n public async secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]> {\n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => get(rowData, path),\n },\n };\n\n const actions = await Promise.all(\n this.allActions()\n .filter((a) => a.scope === AXPEntityCommandScope.Individual && a.priority === 'secondary')\n .map(async (a) => {\n const isHidden = await this.expressionEvaluator.evaluate(a.hidden, scope);\n if (isHidden) return null;\n const disabled = await this.expressionEvaluator.evaluate(a.disabled, scope);\n return { ...a, disabled };\n }),\n );\n\n return actions.filter(Boolean) as AXPEntityCommandTriggerViewModel[];\n }\n\n //****************** Filter ******************//\n\n filterQueries = signal<AXPFilterQuery[]>([]);\n\n get properties(): AXPEntityProperty[] {\n return this.entityDef.properties;\n }\n\n get filtersDef(): AXPFilterDefinition[] {\n const props = this.entityDef.properties.filter(\n (c) => c.options?.filter?.advance?.enabled || c.options?.filter?.inline?.enabled,\n );\n return props.map((e) => {\n const widgetConfig = this.widgetResolver.resolve(\n e.schema.interface?.type as AXPWidgetTypesMap[keyof AXPWidgetTypesMap],\n );\n\n const type = (e.options?.filter?.advance?.widgetType ||\n widgetConfig?.defaultFilterWidgetName ||\n e.schema.interface?.type) as AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n return {\n title: e.title,\n field: e.name,\n operator: {\n type: 'contains',\n },\n widget: { ...e.schema.interface, path: e.name, type },\n filters: [],\n isParametric: false,\n icon: widgetConfig?.icon,\n filterType: {\n advance: e.options?.filter?.advance?.enabled ?? false,\n inline: e.options?.filter?.inline?.enabled ?? false,\n },\n };\n });\n }\n\n // const viewFilters = this.view().conditions.map((f) => ({\n // field: f.name,\n // operator: f.operator,\n // value: f.value,\n // }));\n async applyViewFilters() {\n const viewFilters = this.view().conditions.map((f) => ({\n field: f.name,\n operator: f.operator,\n value: f.value,\n }));\n this.filterQueries.update((prev) => ({ ...prev, filters: viewFilters as AXPFilterQuery[] }));\n }\n\n resetFilters() {\n this.applyViewFilters();\n }\n\n async applyFilterAndSort() {\n this.dataSource.clearFilter();\n this.dataSource.sort(\n ...this.sortedFields()\n .filter((sf) => sf.dir)\n .map((s) => ({ dir: s.dir, field: s.name }) as AXDataSourceSortOption),\n );\n\n this.dataSource.filter(\n this.filterOperatorMiddleware.transformFilter({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: this.filterQueries() as AXDataSourceFilterOption[],\n }),\n );\n this.dataSource.refresh();\n }\n\n //****************** Columns ******************//\n\n private allAvailableColumns = (): AXPEntityListViewColumnViewModel[] => {\n const { columns = [], properties } = this.entityDef;\n const visibleProperties = properties.filter(({ schema }) => !schema?.hidden);\n const visiblePropNames = new Set(visibleProperties.map(({ name }) => name));\n return columns\n .filter(({ name }) => visiblePropNames.has(name))\n .map((column) => {\n const property = visibleProperties.find(({ name }) => name === column.name);\n return new AXPEntityListViewColumnViewModel(property!, column);\n });\n };\n\n visibleColumnCount = () => {\n return this.columns().filter((c) => c.visible == true).length;\n };\n\n columns = signal<AXPEntityListViewColumnViewModel[]>([]);\n\n resetColumns() {\n this.applyViewColumns();\n }\n\n async onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]) {\n this.saveSettings('columnOrders', columns);\n }\n\n applyViewColumns() {\n const cols = this.view().columns;\n const cloned = this.allAvailableColumns().map((c) => {\n const column = this.entityDef.columns?.find((cc) => cc.name == c.name);\n const prop = this.entityDef.properties.find((p) => p.name == c.name);\n const col = new AXPEntityListViewColumnViewModel(prop!, column!);\n col.visible = !cols.some((c) => c == col.name) && col.visible != false;\n return col;\n });\n this.columns.set(cloned);\n }\n\n //****************** Sort ******************//\n\n sortableFields = () => {\n const props = this.entityDef.properties.filter((c) => c.options?.sort?.enabled);\n return props.map((e) => {\n return {\n name: e.name,\n title: e.title,\n dir: undefined,\n };\n });\n };\n\n sortableFieldsCount = () => {\n return this.entityDef.properties.filter((c) => c.options?.sort?.enabled).length ?? 0;\n };\n\n canSort = () => {\n return this.sortableFieldsCount() > 0;\n };\n\n canAddMoreSort = () => {\n return this.sortedCount() < this.sortableFieldsCount();\n };\n\n sortedCount = () => {\n return this.sortedFields().filter((i) => i.dir).length;\n };\n\n sortedFields = signal<AXPEntityMasterListViewSortPropViewModel[]>([]);\n\n resetSorts() {\n this.applyViewSorts();\n }\n\n applySorts() {\n this.applyFilterAndSort();\n }\n\n addSort(): void {\n const prop = this.sortableFields().find((c) => !this.sortedFields().some((s) => s.name == c.name));\n if (prop) {\n this.sortedFields.set([...this.sortedFields(), ...[prop]]);\n }\n }\n\n removeSort(name: string): void {\n this.sortedFields.set(this.sortedFields().filter((c) => c.name != name));\n }\n\n applyViewSorts() {\n const viewSorts = this.view().sorts;\n\n this.sortedFields.update((prev) => {\n const viewSortsMap = new Map(viewSorts.map((vs) => [vs.name, vs]));\n return prev.map((sf) => {\n const updatedSort = viewSortsMap.get(sf.name);\n if (updatedSort) {\n return { ...updatedSort, title: sf.title };\n }\n return sf;\n });\n });\n }\n\n //****************** Commands ******************//\n public async executeCommand(commandName: string, data: any = null) {\n const action = this.allActions().find((c) => {\n return (\n c.name == commandName &&\n ((this.selectedItems().length\n ? c.scope == AXPEntityCommandScope.Selected\n : c.scope == AXPEntityCommandScope.Individual) ||\n c.scope == AXPEntityCommandScope.TypeLevel)\n );\n });\n const command = commandName.split('&')[0];\n const options = await this.evaluateExpressions(action?.options,data);\n await this.workflow.execute(command, {\n entity: getEntityInfo(this.entityDef).source,\n entityInfo: {\n name: this.entityDef.name,\n module: this.entityDef.module,\n title: this.entityDef.title,\n parentKey: this.entityDef.parentKey,\n source: this.entityDef.source,\n },\n data: action?.scope == AXPEntityCommandScope.Selected ? this.selectedItems() : data,\n options: options,\n metadata: action?.metadata,\n });\n }\n\n private evaluateExpressions = async (options: { [key: string]: string },data:any) => {\n\n \n const scope: AXPExpressionEvaluatorScope = {\n context: {\n eval: (path: string) => {\n return get(data, path);\n },\n },\n };\n\n return await this.expressionEvaluator.evaluate(options, scope);\n };\n\n async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command?.name) {\n case 'navigate':\n await this.workflow.execute('navigate', {\n options: {\n path: command.options?.['path'],\n },\n });\n break;\n default:\n this.executeCommand(command.name);\n break;\n }\n }\n\n //\n destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityListViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(moduleName: string, entityName: string): Promise<AXPEntityMasterListViewModel> {\n this.layout.setNavigationLoading(true);\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterListViewModel(this.injector, config);\n }\n}\n\nexport const AXPEntityListViewModelResolver: ResolveFn<Promise<AXPEntityMasterListViewModel>> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n service: AXPEntityListViewModelFactory = inject(AXPEntityListViewModelFactory),\n): Promise<AXPEntityMasterListViewModel> => {\n const moduleName = route.parent?.paramMap.get('module') as string;\n const entityName = route.paramMap.get('entity') as string;\n //\n return service.create(moduleName, entityName);\n};\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPEntity, AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\n\nexport const AXPEntityDeletedEvent = createWorkFlowEvent<{ entity: string; ids: string[]; meta?: any }>(\n '[Entity] Deleted'\n);\n\nexport interface AXPEntityDeleteOptions {\n source: string;\n ids: string[];\n}\n\n@Injectable()\nexport class AXPEntityPerformDeleteAction extends AXPWorkflowAction {\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private dialogService = inject(AXDialogService);\n private loadingDialog = inject(AXLoadingDialogService);\n private translationService = inject(AXTranslationService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const moduleEntity = context.getVariable('entity');\n const data = context.getVariable<any>('data');\n const meta = context.getVariable<any>('meta');\n\n const options = context.getVariable<any>('options');\n const process = options?.['process'];\n\n const showResult = process?.showResult ?? true;\n\n const entities: AXPEntityDeleteOptions[] = [];\n if (moduleEntity != null) {\n const ids = Array.isArray(data) ? data.map((c) => c.id) : [data.id];\n entities.push({\n source: moduleEntity,\n ids: ids,\n });\n } else {\n const listEntities = context.getVariable('entities');\n entities.push(...listEntities);\n }\n\n const entityDefinitions: { [key: string]: AXPEntity } = {};\n let deletedCount = 0;\n context.setVariable('deleteSuccessful', false);\n for await (const entity of entities) {\n const [moduleName, entityName] = entity.source.split('.');\n const entityDefinition = await this.entityRegistery.resolve(moduleName, entityName);\n if (entityDefinition.parentKey && data[entityDefinition.parentKey]) {\n context.setVariable('meta', { ...meta, refreshTargetId: data[entityDefinition.parentKey] });\n }\n entityDefinitions[entity.source] = entityDefinition;\n }\n\n // Compute consolidated ids from all entities\n const idLength = entities.reduce((acc: number, curr) => acc + curr.ids.length, 0);\n const dialog = this.loadingDialog.show({\n title: await this.translationService.translateAsync('workflow.deleting'),\n mode: 'determinate',\n status: 'Deleting...',\n progressValue: 0,\n text: `0/${idLength}`,\n buttons: [\n {\n text: await this.translationService.translateAsync('cancel'),\n color: 'danger',\n onClick: () => {\n dialog.close();\n },\n },\n ],\n });\n\n let allPromises: any[] = [];\n for (const entity of entities) {\n const entityDefinition = entityDefinitions[entity.source];\n if (entityDefinition.commands?.delete != null) {\n const deleteExec = entityDefinition.commands?.delete?.execute as Function;\n const entityPromises = (entity.ids as any[])\n .map((id, i) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(deleteExec(id));\n }, i * 200);\n });\n })\n .map((p) =>\n p?.then(\n (value) => {\n deletedCount++;\n dialog.setProgressText(`${deletedCount}/${idLength}`);\n dialog.setProgressValue((deletedCount / idLength) * 100);\n return { status: 'fulfilled', value };\n },\n (reason) => ({ status: 'rejected', reason })\n )\n );\n\n allPromises = allPromises.concat(entityPromises);\n } else {\n throw new Error(\n `The delete operation cannot be performed on ${entityDefinition.title}. This action might be restricted or not applicable for the selected item.`\n );\n }\n }\n\n const results = await Promise.all(allPromises);\n const successfulPromises = results.filter((result: any) => result?.status === 'fulfilled').length;\n const failedPromises = results.filter((result: any) => result?.status === 'rejected').length;\n setTimeout(() => {\n dialog.close();\n }, 300);\n\n // Store the last entity for use in event dispatching\n const lastEntity = entities[entities.length - 1];\n\n // Handle different scenarios for alerts\n if (successfulPromises > 0 && failedPromises === 0) {\n // All items deleted successfully\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.success-delete-title'),\n await this.translationService.translateAsync('workflow.success-delete-body', {\n params: { item: successfulPromises },\n }), //TODO test translation\n 'success'\n );\n }\n // Dispatch actions\n this.dispatch(AXPEntityDeletedEvent({ entity: lastEntity.source, ids: lastEntity.ids, meta: meta }));\n this.dispatch(AXPRefreshEvent({ entity: lastEntity.source, meta: context.getVariable<any>('meta') }));\n } else if (successfulPromises > 0 && failedPromises > 0) {\n // Some items deleted successfully, some failed\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.success-partial-delete-title'),\n await this.translationService.translateAsync('workflow.partial-delete-body', {\n params: { success: successfulPromises, fail: failedPromises },\n }),\n 'warning'\n );\n }\n // Dispatch actions\n this.dispatch(AXPEntityDeletedEvent({ entity: lastEntity.source, ids: lastEntity.ids, meta: meta }));\n } else if (successfulPromises === 0 && failedPromises > 0) {\n // No items deleted, all failed\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.fail-delete-title'),\n await this.translationService.translateAsync('workflow.fail-delete-body', {\n params: { item: failedPromises },\n }),\n 'danger'\n );\n }\n } else {\n // No items to delete (no successful or failed promises)\n if (showResult) {\n await this.dialogService.alert(\n await this.translationService.translateAsync('workflow.no-need'),\n await this.translationService.translateAsync('workflow.no-item'),\n 'primary'\n );\n }\n }\n }\n}\n\nexport const AXPDeleteEntityWorkflow: AXPWorkflow = {\n startStepId: 'confirm-delete',\n steps: {\n 'confirm-delete': {\n action: 'show-prompt-dialog',\n input: {\n title: 'workflow.warning',\n message: `workflow.confirm-delete`,\n type: 'danger',\n },\n nextSteps: [\n {\n conditions: [\n {\n type: 'AND',\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n },\n ],\n nextStepId: 'perform-delete',\n },\n ],\n },\n 'perform-delete': {\n action: 'entity-perform-delete',\n },\n },\n};\n","import { AXPEntity, AXPEntityProperty, AXPGridLayoutOptions } from '@acorex/platform/common';\nimport { AXPLayoutBuilderService, AXPPageStatus, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { computed, inject, Injectable, Injector, signal } from '@angular/core';\nimport { cloneDeep, merge, set } from 'lodash-es';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\n\nexport class AXPEntityMasterUpdateElementViewModel {\n constructor(\n private entity: AXPEntity,\n private property: AXPEntityProperty,\n ) {}\n\n name = signal(this.property.name);\n title = signal(this.property.title);\n description = signal(this.property.description);\n\n editable = computed<boolean>(() => {\n return !(this.property.schema.readonly ?? false);\n });\n\n isRequired = computed<boolean>(() => {\n return this.property.validations?.some((c) => c.rule == 'required') || false;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const updateProp = this.entity.interfaces?.master?.update?.properties?.find((c) => c.name == this.property.name);\n const source = cloneDeep(updateProp?.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n node = computed<AXPWidgetNode>(() => {\n const schema = this.property.schema!;\n const widget = schema.interface!;\n return {\n type: widget.type,\n mode: this.editable() ? 'edit' : 'view',\n path: this.name(),\n name: this.name(),\n children: widget.children,\n formula: widget.formula,\n triggers: widget.triggers,\n valueTransforms: widget.valueTransforms,\n options: merge(schema.interface?.options, {\n validations: this.property.validations?.map((c) => ({ rule: c.rule, message: c.message, options: c.options })),\n }),\n } as AXPWidgetNode;\n });\n}\n\nexport class AXPEntityMasterUpdateViewModel {\n private entityDef = cloneDeep(this.config)!;\n private workflow = this.injector.get(AXPWorkflowService);\n\n public builder: AXPLayoutBuilderService;\n\n constructor(\n private injector: Injector,\n private config: AXPEntity,\n private entityData: any,\n private props: string[],\n ) {}\n\n public isInProgress = signal<boolean>(false);\n\n public context = signal<any>(cloneDeep(this.entityData));\n\n elements = computed(() => {\n const props = this.entityDef.properties.filter((c) => this.props.includes(c.name) && c.schema.hidden != true);\n return props.map((e) => {\n return new AXPEntityMasterUpdateElementViewModel(this.entityDef, e);\n });\n });\n\n public async save(): Promise<any> {\n this.isInProgress.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n try {\n const com = this.entityDef.commands?.update;\n if (com) {\n const exec = com.execute as Function;\n const result = await exec(this.context());\n this.builder.setStatus(AXPPageStatus.Submitted);\n return result;\n }\n } catch (error: any) {\n this.builder.setStatus(AXPPageStatus.Error);\n return Promise.reject(error);\n } finally {\n this.isInProgress.set(false);\n }\n }\n\n public reset() {\n this.context.set(cloneDeep(this.entityData));\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityMasterUpdateViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(\n moduleName: string,\n entityName: string,\n id: string,\n props: string[],\n ): Promise<AXPEntityMasterUpdateViewModel> {\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(true);\n if (config.queries.byKey) {\n const func = config.queries.byKey.execute as Function;\n const data = await func(id);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterUpdateViewModel(this.injector, config, data, props);\n }\n this.layout.setNavigationLoading(false);\n return Promise.reject('cannot fetch ');\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXPEntityMasterUpdateViewModelFactory } from '../entity-master-update.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '../entity.config';\n\nexport const AXPEntityModifyEvent = createWorkFlowEvent<{ entity: string; values: any }>('[Entity] Modified');\n\n@Injectable()\nexport class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private platform = inject(AXPlatform);\n private translateService = inject(AXTranslationService);\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private config = inject(AXP_ENTITY_CONFIG_TOKEN);\n private factory = inject(AXPEntityMasterUpdateViewModelFactory);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [moduleName, entityName] = context.getVariable<string>('entity').split('.');\n const { properties, id, title } = context.getVariable('data');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n const vm = await this.factory.create(moduleName, entityName, id, properties);\n\n const options = context.getVariable<any>('options');\n const decoration = options?.['decoration'];\n const headerTitle = decoration?.header?.title;\n\n const com = await this.config.viewers.master.modify();\n const popup = await this.popupService.open(com, {\n title: headerTitle\n ? headerTitle\n : title ??\n `${this.translateService.translateSync('entity.modify')} ${this.translateService.translateSync(\n entityRef.formats.individual\n )}`,\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\n data: {\n vm,\n properties,\n entity: entityRef,\n },\n });\n context.setOutput('result', false);\n if (popup.data?.result == true) {\n context.setOutput('result', true);\n context.setVariable('data', cloneDeep(popup.data.context));\n }\n }\n}\n\n@Injectable()\nexport class AXPEntityModifyConfirmedAction extends AXPWorkflowAction {\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const updatedData = context.getVariable('data');\n this.dispatch(AXPEntityModifyEvent({ entity: context.getVariable<string>('entity'), values: updatedData }));\n\n const gridItemParentKey = context.getVariable('parentKey');\n\n this.dispatch(\n AXPRefreshEvent({\n entity: context.getVariable<string>('entity'),\n meta: {\n refreshTargetId: updatedData[gridItemParentKey],\n },\n })\n );\n }\n}\n\nexport const AXPModifyEntitySectionWorkflow: AXPWorkflow = {\n startStepId: 'modifyPopup',\n steps: {\n modifyPopup: {\n id: 'modifyPopup',\n action: 'AXPEntityModifySectionPopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-modified-title',\n content: 'workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n modifyConfirmed: {\n id: 'modifyConfirmed',\n action: 'AXPEntityModifyConfirmedAction',\n },\n },\n};\n","import { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n AXPEntityPropertyView,\n AXPEntitySectionView,\n AXPGridLayoutOptions,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { Injectable, Injector, computed, inject, signal } from '@angular/core';\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\nimport { cloneDeep, merge, set } from 'lodash-es';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPEntityDetailListViewModel } from './entity-detail-list.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXPEntityCommandTriggerViewModel } from './entity.viewmodel';\nimport { AXPEntityDeletedEvent } from './workflows/delete-entity.workflow';\nimport { AXPEntityModifyEvent } from './workflows/modify-section.workflow';\n\nexport class AXPEntityMasterSingleViewGroupViewModel {\n constructor(private entity: AXPEntity, private section: AXPEntitySectionView) { }\n\n group = this.entity.groups?.find((c) => c.id == this.section.id)!;\n name = signal(this.group.id);\n isLoading = signal(false);\n\n title = computed<string>(() => {\n return this.group.title ?? this.group.id;\n });\n\n description = computed<string | null | undefined>(() => {\n return this.group.description;\n });\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const source = cloneDeep(this.section.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n props = computed(() => {\n const { properties, interfaces } = this.entity;\n const groupProperties = properties\n .filter(({ groupId, schema }) => groupId === this.group.id && !schema.hidden)\n .map(({ name }) => name);\n\n const viewProperties =\n interfaces?.master?.single?.properties?.filter(({ name }) => groupProperties.includes(name)) ?? [];\n\n return viewProperties.map((prop) => new AXPEntityMasterSingleElementViewModel(this.entity, this, prop));\n });\n\n editableProps = computed(() => {\n const { properties, interfaces } = this.entity;\n const editablePropertyNames = interfaces?.master?.update?.properties?.map(({ name }) => name) ?? [];\n\n const filteredProperties = properties.filter(\n ({ groupId, schema, name }) => groupId === this.group.id && !schema.hidden && editablePropertyNames.includes(name)\n );\n\n return filteredProperties.map((prop) => new AXPEntityMasterSingleElementViewModel(this.entity, this, prop));\n });\n\n editable = computed(() => {\n return this.editableProps().length > 0;\n });\n}\n\nexport class AXPEntityMasterSingleElementViewModel {\n constructor(\n private entity: AXPEntity,\n private section: AXPEntityMasterSingleViewGroupViewModel,\n private propertyView: AXPEntityPropertyView\n ) { }\n\n private property = this.entity.properties.find((c) => c.name == this.propertyView.name)!;\n name = signal(this.property.name);\n path = signal(this.propertyView.dataPath ?? this.property.name);\n title = signal(this.property.title);\n showLabel = signal(this.propertyView.layout?.label?.visible != false);\n description = signal(this.property.description);\n\n layout = computed<AXPGridLayoutOptions>(() => {\n const viewProp = this.entity.interfaces?.master?.single?.properties?.find((c) => c.name == this.property.name);\n const source = cloneDeep(viewProp?.layout ?? {}) as object;\n set(source, 'positions.default.colSpan', 12);\n return source as AXPGridLayoutOptions;\n });\n\n node = computed<AXPWidgetNode>(() => {\n const schema = this.property.schema!;\n const widget = schema.interface!;\n return {\n type: widget.type,\n mode: 'view',\n path: this.path(),\n children: widget.children,\n formula: widget.formula,\n valueTransforms: widget.valueTransforms,\n options: merge(schema.interface?.options),\n } as AXPWidgetNode;\n });\n}\n\nexport class AXPEntityMasterSingleViewModel {\n private readonly entityDef = cloneDeep(this.config)!;\n private readonly _viewDef = cloneDeep(this.entityDef.interfaces?.master?.single)!;\n private readonly session = this.injector.get(AXPSessionService);\n private readonly formatService = this.injector.get(AXFormatService);\n private readonly workflow = this.injector.get(AXPWorkflowService);\n private readonly destroyed = new Subject<void>();\n private translateService = this.injector.get(AXTranslationService);\n\n constructor(private injector: Injector, private config: AXPEntity, private entityData: any) {\n this.workflow.events$\n .pipe(ofType(AXPEntityDeletedEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n if (\n event.payload.entity == getEntityInfo(this.entityDef).source &&\n event.payload.ids.includes(this.context().id)\n ) {\n this.workflow.execute('show-list-view', {\n entity: getEntityInfo(this.entityDef).source,\n });\n }\n });\n this.workflow.events$\n .pipe(ofType(AXPEntityModifyEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe(async (event) => {\n if (\n event.payload.entity == getEntityInfo(this.entityDef).source &&\n event.payload.values.id === this.context().id\n ) {\n this.context.set(event.payload.values);\n }\n });\n }\n\n public context = signal<any>(cloneDeep(this.entityData));\n\n private actions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return (\n this.entityDef.interfaces?.master?.single?.actions?.map(\n (tr) => new AXPEntityCommandTriggerViewModel(this.entityDef, tr)\n ) ?? []\n );\n });\n\n public primaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.actions().filter((c) => c.priority == 'primary');\n });\n\n public secondaryActions = computed<AXPEntityCommandTriggerViewModel[]>(() => {\n return this.actions().filter((c) => c.priority == 'secondary');\n });\n\n public sections = computed<AXPEntityMasterSingleViewGroupViewModel[]>(() => {\n const { interfaces, properties } = this.entityDef;\n const viewProps = interfaces?.master?.single?.properties?.map(({ name }) => name) ?? [];\n\n const filteredProperties = properties.filter(\n ({ groupId, schema, name }) => groupId && !schema.hidden && viewProps.includes(name)\n );\n\n const groups =\n interfaces?.master?.single?.sections?.filter(({ id }) =>\n filteredProperties.some(({ groupId }) => groupId === id)\n ) ?? [];\n\n return groups.map((section) => new AXPEntityMasterSingleViewGroupViewModel(this.entityDef, section));\n });\n\n //****************** Title ******************//\n public title = computed<string>(() => {\n const suggestedProps = this.entityDef.properties.find((c) => ['title', 'name', 'code'].includes(c.name));\n let suggestedFormat = 'Item #{{id}}';\n if (suggestedProps) suggestedFormat = `{{${suggestedProps.name}}}`;\n return this.formatService.format(this._viewDef.title ?? suggestedFormat, 'string', this.context());\n });\n //****************** Description ******************//\n public description = computed<string | null>(() => {\n return this._viewDef.description\n ? this.formatService.format(this._viewDef.description, 'string', this.context())\n : null;\n });\n\n //****************** Beardcrumbs ******************//\n public beardcrumbs = computed<AXPBreadcrumbItem[]>(() => {\n return [\n {\n title: this.entityDef.formats.plural ?? this.entityDef.formats.individual,\n command: {\n name: 'navigate',\n options: {\n path: `/${this.session.application?.name}/m/${this.entityDef.module}/e/${this.entityDef.name}/list`,\n },\n },\n },\n {\n title: this.title(),\n },\n ];\n });\n\n public relatedEntities = computed<Promise<AXPEntityDetailListViewModel[]>>(async () => {\n const relatedEntities =\n this.entityDef.relatedEntities?.map(\n (re) => new AXPEntityDetailListViewModel(this.injector, re, { entity: this.entityDef, data: this.entityData })\n ) ?? [];\n\n const filteredEntities = await Promise.all(relatedEntities.map(async (re) => ((await re.hidden()) ? null : re)));\n\n return filteredEntities.filter((re) => re !== null) as AXPEntityDetailListViewModel[];\n });\n\n public async executeCommand(commandName: string, data: any = null) {\n //TODO: syntact for workflow\n switch (commandName) {\n case 'modify-entity-section': {\n this.workflow.execute('modify-entity-section', {\n entity: getEntityInfo(this.entityDef).source,\n data: {\n id: this.context().id,\n properties: (data as AXPEntityMasterSingleViewGroupViewModel).editableProps().map((m) => m.name()),\n },\n });\n break;\n }\n default: {\n const action = this.actions().find((c) => c.name == commandName);\n this.workflow.execute(commandName, {\n entity: getEntityInfo(this.entityDef).source,\n data: action?.scope == AXPEntityCommandScope.Individual ? this.context() : null,\n });\n }\n }\n }\n\n async execute(command: AXPExecuteCommand) {\n switch (command?.name) {\n case 'navigate':\n await this.workflow.execute('navigate', {\n options: {\n path: command.options?.['path'],\n },\n });\n break;\n default:\n this.executeCommand(command.name, command.options);\n break;\n }\n }\n //\n //\n destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityDetailViewModelFactory {\n private entityService = inject(AXPEntityDefinitionRegistryService);\n private layout = inject(AXPLayoutThemeService);\n private injector = inject(Injector);\n\n public async create(moduleName: string, entityName: string, id: string): Promise<AXPEntityMasterSingleViewModel> {\n const config = await this.entityService.resolve(moduleName, entityName);\n this.layout.setNavigationLoading(true);\n if (config.queries.byKey) {\n const func = config.queries.byKey.execute as Function;\n const data = await func(id);\n this.layout.setNavigationLoading(false);\n return new AXPEntityMasterSingleViewModel(this.injector, config, data);\n }\n this.layout.setNavigationLoading(false);\n return Promise.reject('cannot fetch ');\n }\n}\n\nexport const AXPEntityDetailViewModelResolver: ResolveFn<Promise<AXPEntityMasterSingleViewModel>> = (\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n service: AXPEntityDetailViewModelFactory = inject(AXPEntityDetailViewModelFactory)\n): Promise<AXPEntityMasterSingleViewModel> => {\n const moduleName = route.parent?.paramMap.get('module') as string;\n const entityName = route.paramMap.get('entity') as string;\n const id = route.paramMap.get('id') as string;\n //\n return service.create(moduleName, entityName, id);\n};\n","import { inject } from '@angular/core';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXPPagedListResult, AXPQueryRequest } from '@acorex/platform/core';\nimport {\n AXPEntityCreateDto,\n AXPEntityDetailDto,\n AXPEntityListItemDto,\n AXPEntityModel,\n AXPEntityUpdateDto,\n} from './entity.types';\n\nexport abstract class AXPEntityStorageService<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n abstract get dbName(): string;\n\n abstract initial(entityName: string, collection: TCreateDto[]): Promise<TCreateDto[]>;\n\n abstract getOne(entityName: string, id: TKey): Promise<TDetailDto>;\n\n abstract updateOne(entityName: string, id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;\n\n abstract deleteOne(entityName: string, id: TKey): Promise<void>;\n\n abstract insertOne(entityName: string, entity: TCreateDto): Promise<TKey>;\n\n abstract getAll(entityName: string): Promise<TListItemDto[]>;\n\n abstract query(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;\n}\n\nexport abstract class AXPEntityDataProvider<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n abstract get entityName(): string;\n\n abstract initial(collection: TCreateDto[]): Promise<void>;\n\n abstract getOne(id: TKey): Promise<TDetailDto>;\n\n abstract getAll(): Promise<TListItemDto[]>;\n\n abstract updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;\n\n abstract deleteOne(id: TKey): Promise<void>;\n\n abstract insertOne(entity: TCreateDto): Promise<TKey>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;\n}\n\nexport class AXPEntityDataProviderImpl<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> implements AXPEntityDataProvider<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>\n{\n constructor(\n private storageService: AXPEntityStorageService<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>,\n public entityName: string,\n ) {}\n\n async initial(collection: TCreateDto[]): Promise<void> {\n await this.storageService.initial(this.entityName, collection);\n }\n\n getOne(id: TKey): Promise<TDetailDto> {\n return this.storageService.getOne(this.entityName, id);\n }\n\n getAll(): Promise<TListItemDto[]> {\n return this.storageService.getAll(this.entityName);\n }\n\n query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>> {\n return this.storageService.query(this.entityName, request);\n }\n\n updateOne(id: TKey, keyValues: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto> {\n return this.storageService.updateOne(this.entityName, id, keyValues);\n }\n\n deleteOne(id: TKey): Promise<void> {\n return this.storageService.deleteOne(this.entityName, id);\n }\n\n insertOne(entity: TCreateDto): Promise<TKey> {\n return this.storageService.insertOne(this.entityName, entity);\n }\n}\n\nexport abstract class AXMEntityCrudService<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = TDetailDto,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n abstract insertOne(request: TCreateDto): Promise<TKey>;\n\n abstract getOne(id: TKey): Promise<TDetailDto>;\n\n abstract deleteOne(id: TKey): Promise<void>;\n\n abstract updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto>;\n\n abstract query(request: AXPQueryRequest): Promise<AXPPagedListResult<TListItemDto>>;\n}\n\nexport class AXMEntityCrudServiceImpl<\n TKey,\n TDetailDto extends AXPEntityDetailDto<TKey> = AXPEntityModel<TKey>,\n TListItemDto extends AXPEntityListItemDto<TKey> = TDetailDto,\n TCreateDto extends AXPEntityCreateDto = Omit<TDetailDto, 'id'>,\n TUpdateDto extends AXPEntityUpdateDto<TKey> = TDetailDto,\n> {\n private _storageService = inject(AXPEntityStorageService);\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private _entityDataProvider = new AXPEntityDataProviderImpl<TKey, TDetailDto, TListItemDto, TCreateDto, TUpdateDto>(\n this._storageService,\n this.entityName,\n );\n\n constructor(private entityName: string) {}\n\n async insertOne(request: TCreateDto): Promise<TKey> {\n return this._entityDataProvider.insertOne(request);\n }\n\n async getOne(id: TKey): Promise<TDetailDto> {\n return this._entityDataProvider.getOne(id);\n }\n\n async deleteOne(id: TKey): Promise<void> {\n return this._entityDataProvider.deleteOne(id);\n }\n\n async updateOne(id: TKey, values: Omit<Partial<TUpdateDto>, 'id'>): Promise<TDetailDto> {\n return this._entityDataProvider.updateOne(id, values);\n }\n\n async query(request: AXPQueryRequest = { skip: 0, take: 100 }): Promise<AXPPagedListResult<TListItemDto>> {\n const [moduleName, entityName] = this._entityDataProvider.entityName.split('.');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n if (entityRef.parentKey) {\n if (!request.filter?.filters?.length && request.filter?.field !== entityRef.parentKey) {\n request.filter = {\n value: true,\n field: entityRef.parentKey,\n operator: {\n type: 'isEmpty',\n },\n };\n }\n }\n return this._entityDataProvider.query(request);\n }\n\n // get entityDataProvider() {\n // return this._entityDataProvider;\n // }\n\n get storageService() {\n return this._storageService;\n }\n}\n","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex/platform/common';\n\nexport class AXPEntityCommandSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('command', 'Commands', 'command', 'fa-solid fa-command', 1, {\n format: {\n id: '{{id}}',\n },\n actions: [\n {\n name: 'open-entity',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\n\nexport class AXPEntitySearchDefinitionProvider implements AXPSearchDefinitionProvider {\n entityRegister = inject(AXPEntityDefinitionRegistryService);\n\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n console.log(this.entityRegister.getAll());\n\n this.entityRegister.getAll().forEach((entity) => {\n context.addDefinition(\n `Module.${entity.module}.${entity.name}`,\n entity.formats.searchResult?.description ?? entity.module,\n `Module.${entity.module}`,\n 'fa-solid fa-objects-column',\n 4,\n {\n actions: [\n {\n name: 'open-entity',\n type: 'view',\n priority: 'primary',\n },\n ],\n format: {\n title: entity.formats.searchResult?.title,\n description: (entity.formats.searchResult?.description ?? entity.module) + ' / ' + entity.title,\n id: '{{data.id}}',\n },\n }\n );\n });\n }\n}\n","import { AXLoadingModule } from '@acorex/components/loading';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXPEntity } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding, inject, signal } from '@angular/core';\nimport { AXPEntityResolver } from '../../entity.config';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { castArray, isNil } from 'lodash-es';\n\n@Component({\n selector: 'axp-lookup-widget-view',\n template: `\n @if(loading())\n {\n <ax-loading></ax-loading>\n }\n @else{\n @for (item of displayItems(); track $index) {\n <ax-badge [look]=\"'twotone'\" [text]=\"item.text\" color=\"primary\"></ax-badge>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXLoadingModule, AXBadgeModule]\n})\nexport class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any> {\n protected readonly formatService = inject(AXFormatService);\n protected readonly entityResolver = inject(AXPEntityResolver);\n\n\n protected entity = computed<string>(() => this.options()['entity'] as string);\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n protected valueField = computed<string>(() => (this.options()['valueField'] as string) ?? 'id');\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n protected displayField = computed<string>(() => {\n return this.textField() ?? this.entityDef()?.formats.lookup ?? this.entityDef()?.properties.find((c) => c.name != 'id')?.name ?? 'title';\n });\n\n protected loading = signal(false);\n private entityDef = signal<AXPEntity | null>(null);\n\n protected displayItems = signal<any[]>([]);\n\n\n private efEntity = effect(async () => {\n const [module, entity] = this.entity().split('.');\n this.entityDef.set(await this.entityResolver.get(module, entity));\n });\n\n private efDisplay = effect(async () => {\n const value = this.getValue();\n if (isNil(value)) {\n this.displayItems.set([]);\n }\n else {\n const items = castArray(value).map(async (item: any) => await this.extractItem(item));\n this.displayItems.set(await Promise.all(items));\n }\n })\n\n\n private async extractItem(item: any) {\n if (typeof item == 'object') {\n return {\n id: item[this.valueField()],\n text: this.formatService.format(this.displayField(), 'string', item),\n }\n }\n else {\n const def = this.entityDef();\n const byKey = def?.queries.byKey?.execute as Function;\n if (byKey) {\n this.loading.set(true);\n const fetchedItem = await byKey(item);\n this.loading.set(false);\n return {\n id: fetchedItem[this.valueField()],\n text: this.formatService.format(this.displayField(), 'string', fetchedItem),\n }\n }\n return {\n id: item,\n text: item\n }\n }\n }\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n cls[`ax-flex`] = true;\n cls[`ax-gap-1`] = true;\n return cls;\n }\n}\n","import { AXCommonModule, AXDataSourceFilterOption, AXValueChangedEvent } from '@acorex/cdk/common';\nimport {\n AXDataTableComponent,\n AXDataTableModule,\n AXDataTableRowClick,\n AXDataTableRowDbClick,\n} from '@acorex/components/data-table';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, signal, viewChild } from '@angular/core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLookupWidgetSelectorViewModel } from './lookup-widget-selector.viewmodel';\n@Component({\n template: `\n <div class=\"ax-p-4 ax-flex ax-flex-col ax-gap-4 ax-overflow-hidden\">\n @if (vm.hasInlineFilters()) {\n <div class=\"ax-w-full\">\n <ax-search-box\n [placeholder]=\"('widget.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\"\n [value]=\"searchTerm\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n [axAutoFocus]=\"true\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"ax-h-[50vh]\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm.dataSource\"\n [parentField]=\"vm.parentKey()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowClick)=\"handleRowClick($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n @if (vm.allowMultiple()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (col of vm.columns(); track col.name) {\n @if (col.visible) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && vm.parentKey() ? true : false\"\n [caption]=\"col.title | translate | async\"\n [node]=\"col.node()\"\n ></axp-widget-column-renderer>\n }\n }\n </ax-data-table>\n </div>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" [text]=\"('close' | translate | async)!\" (onClick)=\"handleCloseClick()\"> </ax-button>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"('select' | translate | async)!\"\n (onClick)=\"handleSelectClick()\"\n [disabled]=\"allowSelect() === false\"\n >\n </ax-button>\n @if (!vm.canCreate()) {\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'Create-New' | translate | async\"\n (onClick)=\"handleCreateNewClick()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-add\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXCommonModule,\n AXButtonModule,\n AXFormModule,\n AXDecoratorModule,\n AXDropdownButtonModule,\n AXDataTableModule,\n AXSearchBoxModule,\n AXPLayoutBuilderModule,\n AXTranslationModule,\n ],\n inputs: [],\n})\nexport class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {\n protected vm: AXPLookupWidgetSelectorViewModel;\n protected searchTerm: string;\n protected filter: AXDataSourceFilterOption;\n\n protected grid = viewChild<AXDataTableComponent>('grid');\n\n protected initialSelectedItems: any[] = [];\n\n protected selectedItems = signal<any[]>([]);\n\n protected allowSelect = computed(() => this.selectedItems().length > 0);\n\n protected ngAfterViewInit() {\n if (this.initialSelectedItems.length > 0 && this.grid()) {\n this.grid()?.selectRows(...this.initialSelectedItems);\n }\n if (this.searchTerm) {\n this.vm.applyInlineFilter(this.searchTerm);\n } else {\n this.vm.applyFilterAndSort();\n }\n }\n\n protected handleRowDbClick(e: AXDataTableRowDbClick) {\n this.close({ items: [e.data] });\n }\n\n protected handleRowClick(e: AXDataTableRowClick) {\n if (this.vm.allowMultiple()) {\n this.selectedItems.set([...this.selectedItems(), e.data]);\n } else if (this.selectedItems().length > 0) {\n const selected = this.selectedItems().find((item) => item.id === e.data.id);\n if (selected) {\n this.selectedItems.set(this.selectedItems().filter((item) => item.id !== selected.id));\n } else {\n this.selectedItems.set([e.data]);\n }\n } else if (this.selectedItems().length === 0) {\n this.selectedItems.set([e.data]);\n } else {\n this.selectedItems.set([e.data]);\n }\n }\n\n protected async handleSelectedRowsChange(rows: unknown[]) {\n this.selectedItems.set(rows);\n }\n\n handleChangeSearchValue(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n this.vm.applyInlineFilter(e.value);\n }\n }\n\n protected async handleCreateNewClick() {\n this.close();\n await this.vm.create();\n }\n\n protected handleCloseClick() {\n this.close();\n }\n\n protected handleSelectClick() {\n this.close({ items: this.selectedItems() });\n }\n}\n","import { AXDataSource, AXDataSourceCallbackResult, AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXPCleanNestedFilters,\n AXPEntity,\n AXPFilterOperatorMiddlewareService,\n getEntityInfo,\n} from '@acorex/platform/common';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { computed, Injector } from '@angular/core';\nimport { AXPEntityListViewColumnViewModel } from '../../entity.viewmodel';\n\nexport class AXPLookupWidgetSelectorViewModel {\n private workflow = this.injector.get(AXPWorkflowService);\n private filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);\n\n constructor(\n private injector: Injector,\n private entityDef: AXPEntity,\n private options: {\n parentFilters?: AXDataSourceFilterOption | null;\n customFilter?: AXDataSourceFilterOption | null;\n sortedFields?: { name: string; dir: 'asc' | 'desc' }[];\n allowMultiple?: boolean;\n } = {\n parentFilters: null,\n customFilter: null,\n sortedFields: [],\n },\n ) {}\n\n dataSource = new AXDataSource({\n byKey: (key) => {\n const func = this.entityDef.queries.byKey.execute as Function;\n return func();\n },\n load: (e) => {\n const func = this.entityDef.queries.list?.execute as Function;\n return func(e);\n },\n pageSize: 10,\n key: 'id',\n });\n\n public canCreate = computed(() => {\n return this.entityDef.commands?.create?.execute != null;\n });\n\n public parentKey = computed(() => {\n return this.entityDef.parentKey;\n });\n\n public allowMultiple = computed(() => {\n return this.options.allowMultiple ?? false;\n });\n\n public async create(): Promise<void> {\n await this.workflow.execute('create-entity', {\n entity: getEntityInfo(this.entityDef).source,\n });\n }\n\n public inlineFiltersPlaceholders = computed<string[]>(() => {\n return (\n this.entityDef?.properties.filter((p) => p.options?.filter?.inline?.enabled).map((c) => c.title ?? c.name) ?? []\n );\n });\n\n public hasInlineFilters = computed<boolean>(() => {\n return this.inlineFiltersPlaceholders().length > 0;\n });\n\n public columns = () => {\n const listColumns = this.entityDef.columns ?? [];\n const columns = listColumns?.map((c) => c.name) ?? [];\n const props = this.entityDef.properties.filter((p) => p.schema.hidden != true);\n const displayColumns = props.filter((p) => columns.some((c) => c == p.name));\n return displayColumns.map((p) => {\n return new AXPEntityListViewColumnViewModel(p, listColumns?.find((c) => c.name == p.name)!);\n });\n };\n\n private inlineFilters: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'or',\n operator: null as any,\n filters: [],\n };\n\n private advanceFilters: AXDataSourceFilterOption = {\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: [],\n };\n\n applyInlineFilter(value: string, refresh: boolean = true) {\n const props = this.entityDef.properties.filter((c) => c.options?.filter?.inline?.enabled);\n this.inlineFilters.filters = [];\n if (value) {\n props.forEach((p) => {\n this.inlineFilters.filters?.push({\n field: p.name,\n operator: {\n type: 'contains',\n },\n value,\n });\n });\n }\n if (refresh) this.applyFilterAndSort();\n }\n\n applyFilterAndSort() {\n // this.dataSource.clearFilter();\n //\n //this.dataSource.sort(...this.sortedFields().map(s => ({ dir: s.dir, field: s.name } as AXDataSourceSortOption)));\n //\n\n // Check if inlineFilters or parentFilters have any filters\n const hasInlineFilters = (this.inlineFilters?.filters?.length ?? 0) > 0;\n const hasParentFilters = (this.options.parentFilters?.filters?.length ?? 0) > 0;\n\n // Construct the filters array based on the presence of filters\n const filters: AXDataSourceFilterOption[] = [];\n console.log(this.options.customFilter);\n if (this.options.customFilter) {\n const cleanedFilters = AXPCleanNestedFilters([this.options.customFilter]);\n if (cleanedFilters.length > 0) {\n filters.push(this.filterOperatorMiddleware.transformFilter(cleanedFilters[0]));\n }\n }\n if (hasInlineFilters) {\n filters.push(this.inlineFilters);\n }\n if (hasParentFilters && this.options.parentFilters) {\n filters.push(this.options.parentFilters);\n }\n\n // Apply the filters to the dataSource\n this.dataSource.filter({\n field: null as any,\n logic: 'and',\n operator: null as any,\n filters: filters,\n });\n\n // Refresh the dataSource\n this.dataSource.refresh();\n }\n\n async find(value: string): Promise<AXDataSourceCallbackResult<any>> {\n this.applyInlineFilter(value.trim(), false);\n const func = this.entityDef.queries.list?.execute as Function;\n return (await func({ filter: this.inlineFilters, take: 10 })) ?? [];\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport {\n AXClickEvent,\n AXDataSourceFilterOption,\n AXFocusEvent,\n AXHtmlEvent,\n AXValueChangedEvent,\n} from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTagBoxComponent, AXTagBoxModule } from '@acorex/components/tag-box';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPEntity, AXPQueryFilter } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Injector,\n computed,\n effect,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { castArray, get, isEmpty, isNil, set } from 'lodash-es';\nimport { AXPEntityResolver } from '../../entity.config';\nimport { AXPLookupWidgetSelectorComponent } from './lookup-widget-selector.component';\nimport { AXPLookupWidgetSelectorViewModel } from './lookup-widget-selector.viewmodel';\nimport { extractValue, setSmart } from '@acorex/platform/core';\n\n@Component({\n selector: 'axp-lookup-widget-edit',\n template: `\n <ax-tag-box\n [ngModel]=\"selectedItems()\"\n [textField]=\"textField()\"\n [valueField]=\"valueField()\"\n (onValueChanged)=\"handleValueChange($event)\"\n [placeholder]=\"placeholder() | translate | async\"\n [addOnEnter]=\"false\"\n [addOnComma]=\"false\"\n [disabled]=\"disabled()\"\n (onKeyUp)=\"handleKeyUp($event)\"\n (onBlur)=\"handleOnBlur($event)\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (selectedItems().length > 1) {\n <ax-clear-button (click)=\"handleClearClick()\"></ax-clear-button>\n }\n\n <ax-suffix>\n <ax-button color=\"ghost\" look=\"blank\" [disabled]=\"isLoading() || disabled()\" (onClick)=\"handleOnClick($event)\">\n @if (isLoading()) {\n <ax-loading></ax-loading>\n } @else {\n <ax-icon icon=\"far fa-search\"> </ax-icon>\n }\n </ax-button>\n </ax-suffix>\n </ax-tag-box>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXValidationModule,\n AXFormModule,\n AXTagBoxModule,\n AXTranslationModule,\n ],\n})\nexport class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any> {\n protected readonly injector = inject(Injector);\n protected readonly entityResolver = inject(AXPEntityResolver);\n protected readonly formatService = inject(AXFormatService);\n protected readonly popupService = inject(AXPopupService);\n\n private readonly translateService = inject(AXTranslationService);\n\n protected expose = computed<string | undefined | any[]>(() => this.options()['expose'] as string);\n protected entity = computed<string>(() => this.options()['entity'] as string);\n protected disabled = computed<string>(() => this.options()['disabled'] as string);\n protected customFilter = computed<AXDataSourceFilterOption>(\n () => this.options()['filter'] as AXDataSourceFilterOption,\n );\n\n protected multiple = computed(() => (this.options()['multiple'] ?? false) as boolean);\n\n protected textField = computed<string>(() => {\n return (\n this.entityDef()?.formats.lookup ?? this.entityDef()?.properties.find((c) => c.name != 'id')?.name ?? 'title'\n );\n });\n\n protected valueField = computed<string>(() => this.entityDef()?.properties.find((c) => c.name == 'id')?.name ?? 'id');\n\n protected conditions?: AXPQueryFilter[];\n\n protected filter: AXDataSourceFilterOption | null;\n\n private entityDef = signal<AXPEntity | null>(null);\n\n protected searchTerm = signal<string | null>(null);\n\n protected selectedItems = signal<any[]>([]);\n\n textbox = viewChild(AXTagBoxComponent);\n\n protected isLoading = signal(false);\n\n protected isOpen = signal(false);\n\n protected vm = signal<AXPLookupWidgetSelectorViewModel | null>(null);\n\n protected placeholder = computed(() => {\n return this.selectedItems().length\n ? ''\n : this.translateService.translateSync('widget.lookup.search') + this.vm()?.inlineFiltersPlaceholders().join(', ');\n });\n\n #efEntity = effect(async () => {\n const [module, entity] = this.entity().split('.');\n this.entityDef.set(await this.entityResolver.get(module, entity));\n this.vm.set(\n new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef()!, {\n parentFilters: this.filter,\n allowMultiple: this.multiple(),\n }),\n );\n });\n\n #efValue = effect(() => {\n if (this.getValue()) {\n this.findByValue();\n }\n });\n\n private async findByValue() {\n this.isLoading.set(true);\n const rawValue = this.getValue();\n const values = castArray(rawValue);\n const byKey = this.entityDef()?.queries.byKey?.execute as Function;\n if (byKey && values.length) {\n if (this.multiple()) {\n const items = await Promise.all(values.map((value) => byKey(extractValue(value, this.valueField()))));\n this.setItems(items);\n } else {\n const id = extractValue(values[0], this.valueField());\n const item = await byKey(id);\n this.setItems(item);\n }\n } else {\n this.setItems([]);\n }\n this.isLoading.set(false);\n }\n\n protected handleOnClick(e: AXClickEvent) {\n this.showSelector();\n }\n\n private showSelector() {\n this.isOpen.set(true);\n this.popupService\n .open(AXPLookupWidgetSelectorComponent, {\n title: `${this.translateService.translateSync('widget.lookup.search')} ${this.translateService.translateSync(\n this.entityDef()?.formats.plural ?? '',\n )}`,\n\n size: (this.vm()?.columns().length ?? 0) > 3 ? 'lg' : 'md',\n data: {\n vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef()!, {\n customFilter: this.customFilter(),\n parentFilters: this.filter,\n allowMultiple: this.multiple(),\n }),\n searchTerm: this.searchTerm(),\n initialSelectedItems: this.selectedItems(),\n },\n })\n .then((e: any) => {\n this.isOpen.set(false);\n this.textbox()?.focus();\n if (e.data?.items) {\n this.setItems(e.data?.items);\n }\n });\n }\n\n protected handleValueChange(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n if (isNil(e.value) || isEmpty(e.value)) {\n this.clear();\n } else {\n this.setValue(this.singleOrMultiple(e.value));\n }\n }\n }\n\n protected handleOnBlur(e: AXFocusEvent) {\n setTimeout(() => {\n if (!this.isOpen()) {\n this.clearInput();\n }\n }, 100);\n }\n\n protected async handleKeyUp(e: AXHtmlEvent) {\n const keyEvent = e.nativeEvent as KeyboardEvent;\n const value = this.textbox()?.inputValue()!;\n this.searchTerm.set(value);\n if ((keyEvent.code == 'Enter' || keyEvent.code == 'NumpadEnter') && value) {\n this.isLoading.set(true);\n const result = await this.vm()?.find(value);\n if (result?.total == 1) {\n this.setItems(result.items[0]);\n } else {\n this.showSelector();\n }\n this.isLoading.set(false);\n }\n if (keyEvent.code == 'ArrowDown') {\n this.showSelector();\n }\n }\n\n private setItems(items: any[]) {\n if (!items || items.length == 0) {\n this.selectedItems.set([]);\n return;\n }\n //\n items = castArray(items);\n this.clearInput();\n this.selectedItems.set(items);\n //\n const keys = items.map((item) => get(item, this.valueField()));\n //\n this.setValue(this.singleOrMultiple(keys));\n //\n // extract data from valueField and set context by expose path\n if (this.expose()) {\n const exposeValue = castArray(this.expose());\n const itemToExpose: any = {};\n //\n exposeValue.forEach((i) => {\n if (typeof i == 'string') {\n const values = items.map((item) => set({}, i as string, get(item, i)));\n //this.contextService.update(i, this.singleOrMultiple(values));\n setSmart(itemToExpose, i, this.singleOrMultiple(values));\n } else {\n // extract data from item by source path and set context by target path\n const values = this.multiple()\n ? items.map((item) => set({}, i.source, get(item, i.source)))\n : items.map((item) => get(item, i.source));\n setSmart(itemToExpose, i.target, this.singleOrMultiple(values));\n }\n });\n this.contextService.patch(itemToExpose);\n //this.contextService.update(i.target, this.singleOrMultiple(values));\n }\n }\n\n protected handleClearClick() {\n this.clear();\n }\n\n public clear() {\n this.setValue(null);\n this.clearInput();\n this.selectedItems.set([]);\n }\n\n public clearInput() {\n this.textbox()?.inputValue.set('');\n this.searchTerm.set('');\n }\n\n private singleOrMultiple(values: any[]): any | any[] {\n return this.multiple() ? values : values[0];\n }\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { castArray } from 'lodash-es';\n@Component({\n template: `\n <div class=\"ax-flex ax-gap-1\">\n @for (item of displayItems(); track $index) {\n <ax-badge [text]=\"item[this.textField]\" color=\"primary\"></ax-badge>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXBadgeModule],\n inputs: ['rawValue', 'rowData'],\n})\nexport class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n protected valueField: string = this.options['valueField'] ?? 'id';\n protected textField: string = this.options['textField'] ?? 'title';\n\n protected displayItems = computed(() => castArray(this.rawValue).map((item: any) => this.extractItem(item)));\n\n private extractItem(item: any): any {\n return typeof item == 'object'\n ? {\n [this.valueField]: item?.[this.valueField],\n [this.textField]: item?.[this.textField],\n }\n : {\n [this.valueField]: item,\n [this.textField]: item,\n };\n }\n}\n","import { AXPExpression } from '@acorex/platform/core';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPLookupWidget: AXPWidgetConfig = {\n name: 'lookup-editor',\n title: 'Lookup',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n defaultFilterWidgetName: 'lookup-filter',\n type: 'editor',\n properties: [\n AXP_DISABLED_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n {\n name: 'expose',\n title: 'Expose',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n interface: {\n name: 'expose',\n path: 'options.expose',\n type: AXPWidgetsCatalog.select,\n },\n },\n visible: true,\n },\n {\n name: 'entity',\n title: 'Entity',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n interface: {\n name: 'entity',\n path: 'options.entity',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n AXP_ALLOW_MULTIPLE_PROPERTY\n ],\n components: {\n view: {\n component: () => import('./lookup-widget-view.component').then((c) => c.AXPLookupWidgetViewComponent),\n },\n edit: {\n component: () => import('./lookup-widget-edit.component').then((c) => c.AXPLookupWidgetEditComponent),\n },\n column: {\n component: () => import('./lookup-widget-column.component').then((c) => c.AXPLookupWidgetColumnComponent),\n },\n designer: {\n component: () => import('./lookup-widget-edit.component').then((c) => c.AXPLookupWidgetEditComponent),\n },\n },\n};\n\n\nexport interface AXPLookupWidgetOptions {\n disabled?: boolean | AXPExpression;\n readonly?: boolean | AXPExpression;\n placeholder?: string;\n expose?: string | string[];\n} \n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n template: `\n <div class=\"ax-flex ax-gap-1 ax-flex-wrap\">\n @if (useSelectBox() && getData().length > 0) { @for (item of getData(); track $index) {\n <ax-badge [look]=\"'twotone'\" [text]=\"item[textField()]\" color=\"primary\"></ax-badge>\n } } @else { @if(multiple()) { @for (item of internalValue(); track $index) {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-inline-block\">{{ item }}</span>\n } } @else {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-inline-block\">{{ internalValue()[0] }}</span>\n } }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXBadgeModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetColumnComponent extends AXPValueWidgetComponent<any> {\n protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n\n // ویژگی‌های مرتبط با SelectBox\n protected useSelectBox = computed<boolean>(() => this.options()['useSelectBox'] as boolean);\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n // استخراج داده‌ها برای نمایش\n protected getData = computed(() => {\n if (!this.useSelectBox()) {\n return [];\n }\n\n const value = this.getValue();\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n });\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\n// import { AXTagBoxModule } from '@acorex/components/tag-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, computed, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPEntityResolver } from '../../entity.config';\n\n@Component({\n selector: 'axp-tagable-box-widget',\n template: `\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n <!-- نمایش Select Box با دکمه اضافه کردن آیتم -->\n <ax-select-box\n class=\"ax-col-span-12\"\n [placeholder]=\"placeholder()\"\n [dataSource]=\"_dataSource\"\n [ngModel]=\"getValue()\"\n [valueField]=\"'name'\"\n [textField]=\"'title'\"\n [multiple]=\"true\"\n (onValueChanged)=\"handleSelectValueChange($event)\"\n >\n @if (allowSearch()) {\n <ax-search-box><ax-clear-button></ax-clear-button></ax-search-box>\n }\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-select-box>\n <ax-button\n [text]=\"'افزودن آیتم جدید'\"\n look=\"twotone\"\n [disabled]=\"disabled()\"\n (onClick)=\"addItem()\"\n class=\"ax-col-start-8 md:ax-col-start-9 2xl:ax-col-start-10 ax-col-end-13\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTextBoxModule,\n FormsModule,\n AXFormModule,\n AXDecoratorModule,\n AXValidationModule,\n AXButtonModule,\n // AXTagBoxModule,\n AXSelectBoxModule,\n AXSearchBoxModule,\n ],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetEditComponent extends AXPValueWidgetComponent<any> {\n protected entityResolver = inject(AXPEntityResolver);\n\n protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n\n // پارامترهای SelectBox\n protected moduleName = computed<string>(() => this.options()['module'] as string);\n protected entityName = computed<string>(() => this.options()['entity'] as string);\n protected allowSearch = computed<boolean>(() => this.options()['allowSearch'] as boolean);\n\n // منبع داده برای SelectBox\n protected _dataSource: AXDataSource<any> = new AXDataSource({\n load: async (e: any) => {\n const entity = await this.entityResolver.get(this.moduleName(), this.entityName());\n const func = entity?.queries.list?.execute as Function;\n const result = await func(e);\n console.log(result);\n return {\n items: result?.items || [],\n total: result?.total || 0,\n };\n },\n pageSize: 10,\n });\n\n protected handleSelectValueChange(e: AXValueChangedEvent) {\n if (e.isUserInteraction) {\n this.setValue(e.value);\n }\n }\n\n protected addItem() {}\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n cls[`ax-block`] = true;\n cls[`ax-flex-1`] = true;\n return cls;\n }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n template: ``,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetFilterComponent extends AXPValueWidgetComponent<any> { }\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n template: `\n <div>\n @if (useSelectBox() && getData().length > 0) { @for (item of getData(); track $index) {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-mr-2 ax-mb-2 ax-inline-block\">{{\n item[textField()]\n }}</span>\n } } @else { @if(multiple()) { @for (item of internalValue(); track $index) {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-mr-2 ax-mb-2 ax-inline-block\">{{ item }}</span>\n } } @else {\n <span class=\"ax-bg-slate-100 ax-px-2 ax-py-1 ax-rounded ax-mr-2 ax-mb-2 ax-inline-block\">{{\n internalValue()[0]\n }}</span>\n } }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetPrintComponent extends AXPValueWidgetComponent<any> {\n protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n\n // ویژگی‌های مرتبط با SelectBox\n protected useSelectBox = computed<boolean>(() => this.options()['useSelectBox'] as boolean);\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n // استخراج داده‌ها برای نمایش\n protected getData = computed(() => {\n if (!this.useSelectBox()) {\n return [];\n }\n\n const value = this.getValue();\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n });\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n selector: 'axp-tagable-box-widget',\n template: `\n @for (item of internalValue(); track $index) {\n <ax-badge [look]=\"'twotone'\" [text]=\"item\" color=\"primary\"></ax-badge>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXBadgeModule],\n inputs: [],\n})\nexport class AXPTagableBoxWidgetViewComponent extends AXPValueWidgetComponent<any> {\n protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n\n // ویژگی‌های مرتبط با SelectBox\n protected useSelectBox = computed<boolean>(() => this.options()['useSelectBox'] as boolean);\n protected textField = computed<string>(() => (this.options()['textField'] as string) ?? 'title');\n\n // استخراج داده‌ها برای نمایش\n protected getData = computed(() => {\n if (!this.useSelectBox()) {\n return [];\n }\n\n const value = this.getValue();\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n });\n}\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\n\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPTagableBoxWidget: AXPWidgetConfig = {\n name: 'tagable-editor',\n title: 'Tagable Box',\n icon: 'fa-light fa-tags',\n description: 'Inputs text with tags',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n type: 'editor',\n defaultFilterWidgetName: 'string-filter',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n components: {\n view: {\n component: () => import('./tagable-box-widget-view.component').then((c) => c.AXPTagableBoxWidgetViewComponent),\n },\n edit: {\n component: () => import('./tagable-box-widget-edit.component').then((c) => c.AXPTagableBoxWidgetEditComponent),\n },\n filter: {\n component: () =>\n import('./tagable-box-widget-filter.component').then((c) => c.AXPTagableBoxWidgetFilterComponent),\n },\n column: {\n component: () =>\n import('./tagable-box-widget-column.component').then((c) => c.AXPTagableBoxWidgetColumnComponent),\n },\n print: {\n component: () => import('./tagable-box-widget-print.component').then((c) => c.AXPTagableBoxWidgetPrintComponent),\n },\n designer: {\n component: () => import('./tagable-box-widget-edit.component').then((c) => c.AXPTagableBoxWidgetEditComponent),\n },\n },\n};\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n tagable: 'tagable-editor';\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValidationRule } from '@acorex/platform/core';\nimport {\n AXPValueWidgetComponent,\n AXPWidgetConfig,\n AXPWidgetNode,\n AXPWidgetRegistryService,\n AXPWidgetTypesMap,\n} from '@acorex/platform/layout/builder';\nimport { AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/designer';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, ViewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { sortBy } from 'lodash-es';\n\n@Component({\n template: `\n <ax-text-box [ngModel]=\"displayText()\" [placeholder]=\"placeholder()\" [readonly]=\"true\">\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-suffix>\n <ax-button color=\"ghost\" look=\"twotone\" (onClick)=\"showSelector()\">\n <ax-icon icon=\"far fa-search\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-text-box>\n @if(selectedWidgetNode()){\n <axp-widget-property-viewer [widget]=\"selectedWidgetNode()!\" (onChanged)=\"handleChangeWidget($event)\">\n </axp-widget-property-viewer>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXSelectBoxModule,\n AXTextBoxModule,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXValidationModule,\n AXFormModule,\n AXPWidgetPropertyViewerComponent,\n ]\n})\nexport class AXPWidgetSelectorWidgetEditComponent extends AXPValueWidgetComponent<any> {\n private popupService = inject(AXPopupService);\n private widgetRegisteryService = inject(AXPWidgetRegistryService);\n\n @ViewChild(AXTextBoxComponent)\n textbox: AXTextBoxComponent;\n\n protected searchTerm = signal<string | null>(null);\n protected isOpen = signal(false);\n protected textField = signal<string>('');\n\n protected displayText = computed(() => this.getValue()?.title || '');\n protected selectedWidgetNode = signal<AXPWidgetNode | null>(null);\n protected selectedItem = signal<any | null>(null);\n\n protected placeholder = computed(() => this.options()['placeholder'] ?? '');\n protected loading = computed<boolean>(() => this.options()['loading'] ?? false);\n\n ngAfterViewInit(): void {\n if (this.getValue()) {\n this.selectedWidgetNode.set(this.getValue());\n }\n }\n\n async showSelector() {\n const com = await import('@acorex/platform/layout/designer').then((c) => c.AXPDesignerWidgetPickerComponent);\n const result = await this.popupService.open(com, {\n title: 'Widget Gallery',\n size: 'md',\n closeButton: true,\n data: {\n widgets: sortBy(\n this.widgetRegisteryService.all(),\n (c) => c.title\n ),\n },\n });\n if ((result.data?.widgets ?? []).length) {\n const selected = result.data?.widgets as AXPWidgetConfig[];\n const selectedNode = this.convertWidgetConfigToNode(selected[0]);\n this.selectedWidgetNode.set(selectedNode);\n }\n }\n\n protected convertWidgetConfigToNode(config: AXPWidgetConfig): AXPWidgetNode {\n return {\n type: config.name as (keyof AXPWidgetTypesMap),\n };\n }\n\n protected handleChangeWidget(e: AXPWidgetPropertiesChangedEvent) {\n const widget = this.widgetRegisteryService.resolve(e.values.type);\n this.setValue({ title: widget?.title, ...e.values });\n }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n template: `{{ getValue()?.title }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule]\n})\nexport class AXPWidgetSelectorWidgetViewComponent extends AXPValueWidgetComponent<any> { }\n","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/widgets';\n\nexport const AXPWidgetSelectorWidget: AXPWidgetConfig = {\n name: 'widget-selector',\n title: 'Widget Selector',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n type: 'editor',\n icon: 'fa-light fa-square',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n components: {\n view: {\n component: () =>\n import('./widget-selector-widget-view.component').then((c) => c.AXPWidgetSelectorWidgetViewComponent),\n },\n edit: {\n component: () =>\n import('./widget-selector-widget-edit.component').then((c) => c.AXPWidgetSelectorWidgetEditComponent),\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n widgetSelector: 'widget-selector';\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityCreateViewModelFactory } from '../entity-master-create.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '../entity.config';\n\nexport const AXPEntityCreateEvent = createWorkFlowEvent<{ entity: string; meta?: any }>('[Entity] Created!');\n\n@Injectable()\nexport class AXPEntityCreatePopupAction extends AXPWorkflowAction {\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private popupService = inject(AXPopupService);\n private platform = inject(AXPlatform);\n private factory = inject(AXPEntityCreateViewModelFactory);\n private config = inject(AXP_ENTITY_CONFIG_TOKEN);\n private translateService = inject(AXTranslationService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [module, entity] = context.getVariable<string>('entity').split('.');\n const data = context.getVariable<any>('data');\n const options = context.getVariable<any>('options');\n\n console.log('data', data);\n\n const process = options?.['process'];\n const decoration = options?.['decoration'];\n const layout = options?.['layout'];\n\n const headerTitle = decoration?.header?.title;\n\n const size = layout?.size;\n\n const entityRef = await this.entityRegistery.resolve(module, entity);\n const com = await this.config.viewers.master.create();\n\n if (entityRef.parentKey) {\n context.setVariable('parentKey', entityRef.parentKey);\n }\n\n const result = await this.popupService.open(com, {\n title: headerTitle\n ? headerTitle\n : `${await this.translateService.translateAsync('create-new')} ${await this.translateService.translateAsync(\n entityRef.formats.individual\n )}`,\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : size ? size : 'md',\n data: {\n vm: await this.factory.create(module, entity, data, options),\n entity,\n },\n });\n context.setOutput('result', false);\n if (result.data?.save) {\n context.setOutput('result', true);\n const prevData = context.getVariable('data');\n const prevMeta = context.getVariable('meta');\n\n context.setVariable('data', { ...prevData, ...result.data.item });\n if (entityRef.parentKey && result.data.item[entityRef.parentKey]) {\n context.setVariable('meta', { ...prevMeta, refreshTargetId: result.data.item[entityRef.parentKey] });\n }\n }\n }\n}\n@Injectable() //avoid DEPRECATED: DI is instantiating a token \"AXPEntityCreateSubmittedAction\" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the \"AXPEntityCreateSubmittedAction\" class.\nexport class AXPEntityCreateSubmittedAction extends AXPWorkflowAction {\n async execute(context: AXPWorkflowContext): Promise<void> {\n this.dispatch(\n AXPEntityCreateEvent({ entity: context.getVariable<string>('entity'), meta: context.getVariable('meta') })\n );\n this.dispatch(\n AXPRefreshEvent({ entity: context.getVariable<string>('entity'), meta: context.getVariable('meta') })\n );\n }\n}\n\nexport const AXPCreateEntityWorkflow: AXPWorkflow = {\n startStepId: 'show-popup',\n steps: {\n 'show-popup': {\n action: 'AXPEntityCreatePopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'show-toast',\n },\n ],\n },\n 'show-toast': {\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-created',\n content: 'workflow.entity-created-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'dispatch-event',\n },\n ],\n },\n 'dispatch-event': {\n action: 'AXPEntityCreateSubmittedAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getVariable(\"options\")?.process?.redirect != false' }],\n nextStepId: 'show-entity',\n },\n ],\n },\n 'show-entity': {\n action: 'AXPShowDetailViewAction',\n },\n },\n};\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXPEntityMasterUpdateViewModelFactory } from '../entity-master-update.viewmodel';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from '../entity.config';\n\n@Injectable()\nexport class AXPQuickEntityModifyPopupAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private platform = inject(AXPlatform);\n private translateService = inject(AXTranslationService);\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n private config = inject(AXP_ENTITY_CONFIG_TOKEN);\n private factory = inject(AXPEntityMasterUpdateViewModelFactory);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [moduleName, entityName] = context.getVariable<string>('entity').split('.');\n const data = context.getVariable('data');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n const { parentKey } = entityRef;\n\n const { id } = data;\n const { interfaces, title } = entityRef;\n const properties = interfaces?.master?.update?.properties?.map((p) => p.name) || [];\n\n const vm = await this.factory.create(moduleName, entityName, id, properties);\n\n const options = context.getVariable<any>('options');\n const decoration = options?.['decoration'];\n const headerTitle = decoration?.header?.title;\n\n if (parentKey) {\n context.setVariable('parentKey', parentKey);\n }\n\n const com = await this.config.viewers.master.modify();\n const popup = await this.popupService.open(com, {\n title: headerTitle\n ? headerTitle\n : title ??\n `${this.translateService.translateSync('entity.modify')} ${this.translateService.translateSync(\n entityRef.formats.individual\n )}`,\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\n data: {\n vm,\n properties,\n entity: entityRef,\n },\n });\n context.setOutput('result', false);\n if (popup.data?.result == true) {\n context.setOutput('result', true);\n context.setVariable('data', cloneDeep(popup.data.context));\n }\n }\n}\n\nexport const AXPQuickModifyEntityWorkflow: AXPWorkflow = {\n startStepId: 'modifyPopup',\n steps: {\n modifyPopup: {\n id: 'modifyPopup',\n action: 'AXPQuickEntityModifyPopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-modified-title',\n content: 'workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n modifyConfirmed: {\n id: 'modifyConfirmed',\n action: 'AXPEntityModifyConfirmedAction',\n },\n },\n};\n\n\n\n@Injectable()\nexport class AXPEntityApplyUpdatesAction extends AXPWorkflowAction {\n private entityRegistery = inject(AXPEntityDefinitionRegistryService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n try {\n const [moduleName, entityName] = context.getVariable<string>('entity').split('.');\n const data = context.getVariable('data');\n const entityRef = await this.entityRegistery.resolve(moduleName, entityName);\n const exec = entityRef.commands?.update?.execute as Function;\n const result = await exec(data);\n context.setVariable('data', result);\n context.setOutput('result', true);\n } catch (error) {\n context.setOutput('result', false);\n context.setOutput('error', error);\n }\n }\n} ","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\n\n@Injectable()\nexport class AXPShowDetailViewAction extends AXPWorkflowAction {\n private navigation = inject(AXPWorkflowNavigateAction);\n private sessionService = inject(AXPSessionService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n const [module, entity] = context.getVariable('entity').split(\".\");\n const { id } = context.getVariable('data');\n const newPayload = {\n commands: `/${this.sessionService.application?.name}/m/${module}/e/${entity}/${id}/view`,\n };\n context.setVariable('payload', newPayload);\n this.navigation.execute(context);\n }\n}\n\n\nexport const AXPShowDetailsViewWorkflow: AXPWorkflow = {\n startStepId: 'showDetailView',\n steps: {\n showDetailView: {\n action: 'AXPShowDetailViewAction',\n },\n },\n};\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\nimport { AXPWorkflow, AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { Injectable, inject } from '@angular/core';\n\n\n@Injectable()\nexport class AXPShowListViewAction extends AXPWorkflowAction {\n private navigation = inject(AXPWorkflowNavigateAction);\n private sessionService = inject(AXPSessionService);\n async execute(context?: any): Promise<void> {\n const [moduleName, entityName] = context.getVariable('entity').split(\".\");\n const newPayload = {\n commands: `/${this.sessionService.application?.name}/m/${moduleName}/e/${entityName}/list`,\n };\n context.setVariable('payload', newPayload);\n this.navigation.execute(context);\n }\n}\n\nexport const AXPShowListViewWorkflow: AXPWorkflow = {\n startStepId: 'showListView',\n steps: {\n showListView: {\n id: 'showListView',\n action: 'AXPShowListViewAction',\n },\n },\n};\n","import { inject, Injectable } from '@angular/core';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\nimport { AXPFileListItem } from '@acorex/platform/core';\nimport { AXPFileUploaderWidgetService } from '@acorex/platform/widgets';\nimport { AXPEntityDefinitionRegistryService } from '../entity-registery.service';\nimport { cloneDeep } from 'lodash-es';\n\n@Injectable()\nexport class AXPShowFileUploaderPopupAction extends AXPWorkflowAction {\n private fileUploaderWidgetService = inject(AXPFileUploaderWidgetService);\n private entityRegistryService = inject(AXPEntityDefinitionRegistryService);\n\n async execute(context: AXPWorkflowContext): Promise<void> {\n debugger;\n\n const key = context.getVariable<string>('options.key');\n const files = context.getVariable<AXPFileListItem[]>('options.files');\n const readOnly = context.getVariable<boolean>('options.readOnly');\n const multiple = context.getVariable<boolean>('options.multiple');\n const accept = context.getVariable<string>('options.accept');\n\n\n const res = await this.fileUploaderWidgetService.showFileList({\n files: files,\n readOnly: readOnly,\n multiple: multiple,\n accept: accept,\n });\n if ((res?.length ?? 0) === 0) {\n context.setOutput('result', false);\n return;\n }\n\n const [module, entity] = context.getVariable<string>('entity').split('.');\n const entityDefinition = await this.entityRegistryService.resolve(module, entity);\n\n if (entityDefinition) {\n const updateExec = entityDefinition.commands?.update?.execute as Function;\n\n const entityData = await updateExec({\n id: context.getVariable<string>('options.id'),\n [key]: res,\n });\n context.setOutput('result', true);\n context.setVariable('data', cloneDeep(entityData));\n }\n }\n}\n\nexport const AXPShowFileUploaderPopupWorkflow: AXPWorkflow = {\n startStepId: 'show-popup',\n steps: {\n 'show-popup': {\n action: 'AXPShowFileUploaderPopupAction',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'successToast',\n },\n ],\n },\n successToast: {\n id: 'successToast',\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: 'workflow.entity-modified-title',\n content: 'workflow.entity-modified-body',\n },\n nextSteps: [\n {\n conditions: [],\n nextStepId: 'modifyConfirmed',\n },\n ],\n },\n modifyConfirmed: {\n id: 'modifyConfirmed',\n action: 'AXPEntityModifyConfirmedAction',\n },\n },\n};\n","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport {\n AXPToastAction,\n AXPWorkflowNavigateAction,\n AXP_SEARCH_DEFINITION_PROVIDER,\n} from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\n\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { Injector, NgModule, inject, Inject } from '@angular/core';\nimport { ROUTES, RouterModule, Routes } from '@angular/router';\nimport { AXPEntityListViewModelResolver } from './entity-master-list.viewmodel';\nimport { AXPEntityDetailViewModelResolver } from './entity-master-single.viewmodel';\nimport { AXPEntityMiddleware, AXPEntityMiddlewareDefault } from './entity-middleware';\nimport { AXPEntityDefinitionRegistryService } from './entity-registery.service';\nimport { AXP_ENTITY_CONFIG_TOKEN } from './entity.config';\nimport { AXPEntityCommandSearchDefinitionProvider } from './search-definition-command.provider';\nimport { AXPEntitySearchDefinitionProvider } from './search-definition.provider';\nimport { AXPLookupWidget } from './widgets/lookup-widget';\nimport { AXPTagableBoxWidget } from './widgets/tagable-box';\nimport { AXPWidgetSelectorWidget } from './widgets/widget-selector';\nimport {\n AXPCreateEntityWorkflow,\n AXPEntityCreatePopupAction,\n AXPEntityCreateSubmittedAction,\n} from './workflows/create-entity.workflow';\nimport { AXPDeleteEntityWorkflow, AXPEntityPerformDeleteAction } from './workflows/delete-entity.workflow';\nimport { AXPEntityApplyUpdatesAction, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow } from './workflows/modify-entity.workflow';\nimport {\n AXPEntityModifyConfirmedAction,\n AXPEntityModifySectionPopupAction,\n AXPModifyEntitySectionWorkflow,\n} from './workflows/modify-section.workflow';\nimport { AXPShowDetailViewAction, AXPShowDetailsViewWorkflow } from './workflows/show-details.workflow';\nimport { AXPShowListViewAction, AXPShowListViewWorkflow } from './workflows/show-list.workflow';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXPShowFileUploaderPopupAction, AXPShowFileUploaderPopupWorkflow } from './workflows/show-file-uploader-popup.workflow';\n\nfunction routesFacory() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n let routes: Routes = [];\n routes = [\n {\n path: ':app/m',\n loadComponent: () => {\n return config.viewers.root();\n },\n canActivate: [AXPAuthGuard],\n children: [\n {\n path: ':module',\n children: [\n {\n path: 'e/:entity/list',\n loadComponent: () => {\n return config.viewers.master.list();\n },\n resolve: {\n vm: AXPEntityListViewModelResolver,\n },\n data: { reuse: false },\n },\n {\n path: 'e/:entity/:id/view',\n resolve: { vm: AXPEntityDetailViewModelResolver },\n loadComponent: () => {\n return config.viewers.master.single();\n },\n data: { reuse: false },\n },\n {\n path: 'e/:entity/:id',\n redirectTo: 'e/:entity/:id/view',\n pathMatch: 'full',\n },\n {\n path: 'e/:entity',\n redirectTo: ':entity/list',\n pathMatch: 'full',\n },\n ],\n },\n ],\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [\n RouterModule,\n AXPWorkflowModule.forChild({\n actions: {\n AXPEntityCreatePopupAction,\n AXPEntityPerformDeleteAction,\n AXPWorkflowNavigateAction,\n 'entity-perform-delete': AXPEntityPerformDeleteAction,\n AXPEntityModifySectionPopupAction,\n AXPQuickEntityModifyPopupAction,\n AXPEntityModifyConfirmedAction,\n AXPToastAction,\n AXPShowDetailViewAction,\n AXPEntityCreateSubmittedAction,\n AXPShowListViewAction,\n 'entity-apply-updates': AXPEntityApplyUpdatesAction,\n AXPShowFileUploaderPopupAction,\n },\n workflows: {\n 'create-entity': AXPCreateEntityWorkflow,\n 'delete-entity': AXPDeleteEntityWorkflow,\n 'modify-entity-section': AXPModifyEntitySectionWorkflow,\n 'quick-modify-entity': AXPQuickModifyEntityWorkflow,\n 'open-entity': AXPShowDetailsViewWorkflow,\n 'show-list-view': AXPShowListViewWorkflow,\n 'show-file-uploader-popup': AXPShowFileUploaderPopupWorkflow,\n },\n functions: {},\n }),\n AXPLayoutBuilderModule.forChild({\n widgets: [AXPLookupWidget, AXPWidgetSelectorWidget, AXPTagableBoxWidget],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPEntitySearchDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPEntityCommandSearchDefinitionProvider,\n multi: true,\n },\n {\n provide: AXPEntityMiddleware,\n useClass: AXPEntityMiddlewareDefault,\n },\n ],\n})\nexport class AXPEntityModule {\n\n\n constructor(appInitService: AXPAppStartUpService, injector: Injector,) {\n\n const service = injector.get(AXPEntityDefinitionRegistryService);\n appInitService.registerTask({\n name: 'layout-theme',\n statusText: 'Preload entities ...',\n priority: 100,\n run: async () => {\n // load in background\n service.preload();\n },\n });\n\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPEntityService {\n private sessionService = inject(AXPSessionService);\n\n createPath(module: string, entity: string, path: string = 'list'): string {\n return `/${this.sessionService.application?.name}/m/${module}/e/${entity}/${path}`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i5","i6","i7","i3","i4"],"mappings":"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"}