@acorex-platform/module-project-management-client 2.0.0-next.14 → 2.0.0-next.16

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 (18) hide show
  1. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project.mjs +40 -7
  2. package/fesm2022/acorex-platform-module-project-management-client-contracts-entities-project.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-acorex-platform-module-project-management-client-contracts-entity-catalog-DrReAl2a.mjs → acorex-platform-module-project-management-client-contracts-entity-catalog-acorex-platform-module-project-management-client-contracts-entity-catalog-D7aa9CBP.mjs} +5 -5
  4. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-acorex-platform-module-project-management-client-contracts-entity-catalog-DrReAl2a.mjs.map → acorex-platform-module-project-management-client-contracts-entity-catalog-acorex-platform-module-project-management-client-contracts-entity-catalog-D7aa9CBP.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project-member.entity-6IcX41Eh.mjs → acorex-platform-module-project-management-client-contracts-entity-catalog-project-member.entity-BZzp33ed.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project-member.entity-6IcX41Eh.mjs.map → acorex-platform-module-project-management-client-contracts-entity-catalog-project-member.entity-BZzp33ed.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project-type-role-type.entity-BZb9_usG.mjs → acorex-platform-module-project-management-client-contracts-entity-catalog-project-type-role-type.entity-BEmB9nxZ.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project-type-role-type.entity-BZb9_usG.mjs.map → acorex-platform-module-project-management-client-contracts-entity-catalog-project-type-role-type.entity-BEmB9nxZ.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project-type.entity-BrOhK-Rh.mjs → acorex-platform-module-project-management-client-contracts-entity-catalog-project-type.entity-B1a0HKyv.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project-type.entity-BrOhK-Rh.mjs.map → acorex-platform-module-project-management-client-contracts-entity-catalog-project-type.entity-B1a0HKyv.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-project-management-client-contracts-entity-catalog-project.entity-DeIWrdxI.mjs → acorex-platform-module-project-management-client-contracts-entity-catalog-project.entity-CjCPmdKm.mjs} +42 -9
  12. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project.entity-CjCPmdKm.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog.mjs +1 -1
  14. package/fesm2022/acorex-platform-module-project-management-client.mjs +202 -5
  15. package/fesm2022/acorex-platform-module-project-management-client.mjs.map +1 -1
  16. package/package.json +2 -2
  17. package/types/acorex-platform-module-project-management-client-contracts.d.ts +1 -0
  18. package/fesm2022/acorex-platform-module-project-management-client-contracts-entity-catalog-project.entity-DeIWrdxI.mjs.map +0 -1
@@ -1,16 +1,203 @@
1
1
  import { AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex-platform/framework-client/core';
2
2
  import * as i0 from '@angular/core';
3
- import { Injectable, inject, NgModule } from '@angular/core';
3
+ import { inject, Injectable, NgModule } from '@angular/core';
4
4
  import { AXPRuntimeModule } from '@acorex-platform/framework-client/runtime';
5
5
  import { AXPSearchCommandProvider, createEntitySearchCommand, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';
6
6
  import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
7
- import { AXPEntityService, AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';
7
+ import { AXPEntityService, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
8
+ import { AXTranslationService } from '@acorex/core/translation';
9
+ import { resolveMultiLanguageString, runtimeQueryCollectionData, runtimeQueryPayloadData, AXPStatusProvider } from '@acorex-platform/framework-shared/core';
10
+ import { RootConfig, AXPProjectsWorkPermissionKeys, AXPProjectManagementMenuKeys, PM_CATALOG_SCOPE, PM_PROJECT_ENTITY_SOURCE } from '@acorex-platform/module-project-management-client/contracts';
11
+ import { get, isEmpty, defaultTo, merge, isString, uniq } from 'lodash';
8
12
  import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
9
- import { AXPProjectsWorkPermissionKeys, RootConfig, AXPProjectManagementMenuKeys, PM_CATALOG_SCOPE, PM_PROJECT_ENTITY_SOURCE } from '@acorex-platform/module-project-management-client/contracts';
10
- import { AXPStatusProvider } from '@acorex-platform/framework-shared/core';
11
13
  import { entityDetailsDeleteAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';
12
14
  import { AXPTaskManagementCommandKeys } from '@acorex-platform/module-task-management-client/contracts';
13
- import { isEmpty, defaultTo, merge, isString, uniq } from 'lodash';
15
+
16
+ //#region ----- Imports -----
17
+ //#endregion
18
+ //#region ----- Constants -----
19
+ const PROJECT_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.project.name}`;
20
+ const LOCATION_ASSIGNMENT_ENTITY = 'LocationManagement.LocationAssignment';
21
+ const LOCATION_ENTITY = 'LocationManagement.Location';
22
+ //#endregion
23
+ //#region ----- Helpers -----
24
+ function readTitle(value, locale) {
25
+ if (typeof value === 'string') {
26
+ return value.trim();
27
+ }
28
+ if (value == null || value === '') {
29
+ return '';
30
+ }
31
+ return resolveMultiLanguageString(value, locale).trim();
32
+ }
33
+ function readRecordId(row) {
34
+ const id = row['id'] ?? row['_id'];
35
+ return typeof id === 'string' ? id.trim() : '';
36
+ }
37
+ function readAssignmentId(row) {
38
+ const direct = get(row, 'locationAssignmentId');
39
+ if (typeof direct === 'string' && direct.trim()) {
40
+ return direct.trim();
41
+ }
42
+ if (direct && typeof direct === 'object') {
43
+ const id = get(direct, 'id');
44
+ if (typeof id === 'string' && id.trim()) {
45
+ return id.trim();
46
+ }
47
+ }
48
+ const nested = get(row, 'locationAssignment.id');
49
+ return typeof nested === 'string' ? nested.trim() : '';
50
+ }
51
+ function rowLocationTitle(row, locale) {
52
+ return (readTitle(get(row, 'locationAssignment.location.title'), locale) ||
53
+ readTitle(get(row, 'locationAssignment.title'), locale));
54
+ }
55
+ function columnShowsLocationTitle(row, locale) {
56
+ return readTitle(get(row, 'locationAssignment.title'), locale) !== '';
57
+ }
58
+ function withLocationTitle(row, title) {
59
+ const current = row['locationAssignment'];
60
+ const assignment = current != null && typeof current === 'object' && !Array.isArray(current)
61
+ ? { ...current }
62
+ : {};
63
+ const location = assignment['location'];
64
+ const locationRecord = location != null && typeof location === 'object' && !Array.isArray(location)
65
+ ? { ...location }
66
+ : {};
67
+ return {
68
+ ...row,
69
+ locationAssignment: {
70
+ ...assignment,
71
+ title,
72
+ location: {
73
+ ...locationRecord,
74
+ title,
75
+ },
76
+ },
77
+ };
78
+ }
79
+ function projectRows(result) {
80
+ const collection = runtimeQueryCollectionData(result);
81
+ if (collection && Array.isArray(collection.items)) {
82
+ return {
83
+ rows: collection.items,
84
+ write: (rows) => {
85
+ collection.items = rows;
86
+ },
87
+ };
88
+ }
89
+ const payload = runtimeQueryPayloadData(result);
90
+ if (payload != null && typeof payload === 'object' && !Array.isArray(payload) && result != null && typeof result === 'object') {
91
+ return {
92
+ rows: [payload],
93
+ write: (rows) => {
94
+ result.data = rows[0];
95
+ },
96
+ };
97
+ }
98
+ if (result != null && typeof result === 'object' && Array.isArray(result.items)) {
99
+ const page = result;
100
+ return {
101
+ rows: page.items,
102
+ write: (rows) => {
103
+ page.items = rows;
104
+ },
105
+ };
106
+ }
107
+ return null;
108
+ }
109
+ //#endregion
110
+ //#region ----- Project location title -----
111
+ /**
112
+ * The project list join stores the location name at locationAssignment.location.title.
113
+ * The Location column reads locationAssignment.title, so copy the name onto that path.
114
+ */
115
+ const projectLocationTitleMiddleware = {
116
+ target: {
117
+ entity: PROJECT_ENTITY,
118
+ ops: ['getOne', 'getAll', 'query'],
119
+ order: 20,
120
+ },
121
+ execute: async (ctx, next) => {
122
+ let locale = 'en-US';
123
+ try {
124
+ locale = inject(AXTranslationService).getActiveLang?.() ?? locale;
125
+ }
126
+ catch {
127
+ locale = 'en-US';
128
+ }
129
+ await next();
130
+ try {
131
+ if (ctx.entityName !== PROJECT_ENTITY) {
132
+ return;
133
+ }
134
+ const page = projectRows(ctx.result);
135
+ if (!page?.rows.length) {
136
+ return;
137
+ }
138
+ const missingIds = Array.from(new Set(page.rows
139
+ .filter((row) => !rowLocationTitle(row, locale))
140
+ .map((row) => readAssignmentId(row))
141
+ .filter((id) => id !== '')));
142
+ const assignments = missingIds.length
143
+ ? await ctx.entities.query(LOCATION_ASSIGNMENT_ENTITY, {
144
+ skip: 0,
145
+ take: missingIds.length,
146
+ fields: ['id', 'locationId'],
147
+ filter: { field: 'id', operator: { type: 'in' }, value: missingIds },
148
+ })
149
+ : null;
150
+ const titleByAssignmentId = new Map();
151
+ const locationIdByAssignmentId = new Map();
152
+ for (const item of assignments?.items ?? []) {
153
+ const row = item;
154
+ const assignmentId = readRecordId(row);
155
+ if (!assignmentId) {
156
+ continue;
157
+ }
158
+ const locationId = get(row, 'locationId');
159
+ if (typeof locationId === 'string' && locationId.trim()) {
160
+ locationIdByAssignmentId.set(assignmentId, locationId.trim());
161
+ }
162
+ }
163
+ const locationIds = Array.from(new Set(locationIdByAssignmentId.values()));
164
+ const titleByLocationId = new Map();
165
+ if (locationIds.length) {
166
+ const locations = await ctx.entities.query(LOCATION_ENTITY, {
167
+ skip: 0,
168
+ take: locationIds.length,
169
+ fields: ['id', 'title'],
170
+ filter: { field: 'id', operator: { type: 'in' }, value: locationIds },
171
+ });
172
+ for (const item of locations?.items ?? []) {
173
+ const row = item;
174
+ const locationId = readRecordId(row);
175
+ const title = readTitle(get(row, 'title'), locale);
176
+ if (locationId && title) {
177
+ titleByLocationId.set(locationId, title);
178
+ }
179
+ }
180
+ for (const [assignmentId, locationId] of locationIdByAssignmentId) {
181
+ const title = titleByLocationId.get(locationId);
182
+ if (title) {
183
+ titleByAssignmentId.set(assignmentId, title);
184
+ }
185
+ }
186
+ }
187
+ page.write(page.rows.map((row) => {
188
+ if (columnShowsLocationTitle(row, locale)) {
189
+ return row;
190
+ }
191
+ const title = rowLocationTitle(row, locale) || titleByAssignmentId.get(readAssignmentId(row));
192
+ return title ? withLocationTitle(row, title) : row;
193
+ }));
194
+ }
195
+ catch {
196
+ // A location lookup failure must not block the project grid.
197
+ }
198
+ },
199
+ };
200
+ //#endregion
14
201
 
15
202
  //#endregion
16
203
  //#region ---- Permission Definition Provider ----
@@ -586,6 +773,11 @@ class AXMProjectManagementModule {
586
773
  useValue: AXMProjectDefaultTypeEntityModifier,
587
774
  multi: true,
588
775
  },
776
+ {
777
+ provide: AXP_ENTITY_STORAGE_MIDDLEWARE,
778
+ multi: true,
779
+ useValue: projectLocationTitleMiddleware,
780
+ },
589
781
  ], imports: [AXPRuntimeModule] }); }
590
782
  }
591
783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMProjectManagementModule, decorators: [{
@@ -642,6 +834,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
642
834
  useValue: AXMProjectDefaultTypeEntityModifier,
643
835
  multi: true,
644
836
  },
837
+ {
838
+ provide: AXP_ENTITY_STORAGE_MIDDLEWARE,
839
+ multi: true,
840
+ useValue: projectLocationTitleMiddleware,
841
+ },
645
842
  ],
646
843
  }]
647
844
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-project-management-client.mjs","sources":["../../../../libs/modules/project-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/project-management/client/src/lib/menu.provider.ts","../../../../libs/modules/project-management/client/src/lib/setting.provider.ts","../../../../libs/modules/project-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/project/project-status.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/project/project-default-type.entity-modifier.ts","../../../../libs/modules/project-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/shared/allowed-task-types-expression-evaluator-scope.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/shared/document-type-names-expression-evaluator-scope.provider.ts","../../../../libs/modules/project-management/client/src/lib/project-management.module.ts","../../../../libs/modules/project-management/client/src/acorex-platform-module-project-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPProjectsWorkPermissionKeys\n} from '@acorex-platform/module-project-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers Projects & Work capabilities owned by project-management.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPProjectsWorkPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:projects-work.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.ProjectsWork.Root, `${G}.projects-work.title`, `${G}.projects-work.description`, { order: 60 });\n\n context\n .addGroup(\n groups.ProjectsWork.Projects,\n `${G}.projects-work-projects.title`,\n `${G}.projects-work-projects.description`,\n { parent: groups.ProjectsWork.Root, order: 10 },\n )\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(keys.MaintainProjects, `${P}.maintain-projects.title`, `${P}.maintain-projects.description`)\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPProjectsWorkPermissionKeys\n} from '@acorex-platform/module-project-management-client/contracts';\nimport { AXPProjectManagementMenuKeys } from '@acorex-platform/module-project-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPProjectsWorkPermissionKeys;\n\n context.addItems([\n {\n name: AXPProjectManagementMenuKeys.Root,\n priority: 8100,\n text: '@project-management:projects.terms.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.project.name),\n icon: RootConfig.entities.project.icon,\n policy: {\n features: [module.name],\n permissions: [keys.MaintainProjects],\n },\n },\n ]);\n\n context.find(AXPCommonMenuKeys.Projects).addItems([\n {\n name: AXPProjectManagementMenuKeys.ProjectTypes,\n text: '@project-management:projects.project-types.plural',\n icon: RootConfig.entities.projectType.icon,\n priority: 1,\n path: this.entityService\n .withEntity(module.name, RootConfig.entities.projectType.name)\n .createPath(),\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n ]);\n }\n}\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\n\nexport class AXMSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // context\n // // Add Form Template Group\n // .addGroup('form-template', 'Form Template', 'Settings related to form templates.', RootConfig.module.icon)\n // // Start Interface Section\n // .addSection('interface', 'UI Interface', 'Customize the user interface for forms.')\n // .addSetting({\n // key: 'history-panel',\n // title: 'Show History Panel',\n // scope: 'U',\n // isInherited: true,\n // defaultValue: false,\n // widget: {\n // type: AXPWidgetsCatalog.toggle,\n // },\n // description: 'Enable or disable the history panel for forms.',\n // validationRules: [\n // {\n // rule: 'required',\n // },\n // ],\n // })\n // .endSection()\n // .endGroup();\n }\n}\n","import { AXPSearchCommandProvider, createEntitySearchCommand } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\n\nexport class AXMSearchCommandProvider extends AXPSearchCommandProvider {\n commands = [\n createEntitySearchCommand({\n id: 'create-project',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.project.name}`,\n entityInfo: { name: RootConfig.entities.project.name, module: RootConfig.module.name, title: RootConfig.entities.project.title },\n titleKey: '@project-management:projects.search-commands.create-project.title',\n descriptionKey: '@project-management:projects.search-commands.create-project.description',\n icon: RootConfig.entities.project.icon,\n }),\n createEntitySearchCommand({\n id: 'create-project-type',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.projectType.name}`,\n entityInfo: { name: RootConfig.entities.projectType.name, module: RootConfig.module.name, title: RootConfig.entities.projectType.title },\n titleKey: '@project-management:projects.search-commands.create-project-type.title',\n descriptionKey: '@project-management:projects.search-commands.create-project-type.description',\n icon: RootConfig.entities.projectType.icon,\n }),\n ];\n}\n","//#region ---- Imports ----\n\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Project Status Provider ----\n\n/**\n * Helper function to create status definitions\n */\nconst status = (\n name: string,\n title: string,\n color: string,\n options: Partial<AXPStatusDefinition> = {},\n): AXPStatusDefinition => ({\n name,\n title,\n color,\n ...options,\n});\n\nexport class AXMProjectStatusProvider extends AXPStatusProvider {\n readonly key = 'project-management.status.projectStatus';\n\n readonly statuses: AXPStatusDefinition[] = [\n status('Initial', '@project-management:projects.meeting-participants.states.initial', 'neutral', {\n order: 1,\n generateView: true,\n isInitial: true,\n icon: 'fa-light fa-circle-dot',\n }),\n status('In Progress', '@meeting-management:meetings.meeting-participants.states.present', 'warning', {\n order: 2,\n generateView: true,\n icon: 'fa-light fa-spinner',\n }),\n status('Completed', '@meeting-management:meetings.meeting-participants.states.accept', 'success', {\n order: 3,\n generateView: true,\n isFinal: true,\n icon: 'fa-light fa-check-circle',\n }),\n status('Archived', '@meeting-management:meetings.meeting-participants.states.decline', 'danger', {\n order: 4,\n generateView: true,\n isFinal: true,\n icon: 'fa-light fa-box-archive',\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: 'Initial',\n to: 'In Progress',\n title: '@meeting-management:meetings.meeting-participants.transitions.mark-present',\n },\n {\n from: 'In Progress',\n to: 'Completed',\n title: '@meeting-management:meetings.meeting-participants.transitions.accept',\n },\n {\n from: 'Completed',\n to: 'Archived',\n title: '@meeting-management:meetings.meeting-participants.transitions.decline',\n },\n {\n from: 'In Progress',\n to: 'Initial',\n title: '@meeting-management:meetings.meeting-participants.transitions.mark-absent',\n },\n ];\n\n readonly defaultStatus = 'Initial';\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPEntityModifierProvider,\n} from '@acorex-platform/framework-client/layout/entity';\nimport {\n entityDetailsDeleteAction,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/**\n * Mirrors `AXEPMExtensionSettings.DefaultProjectTypeId`\n * (module must not import extension contracts).\n */\nconst DEFAULT_PROJECT_TYPE_SETTING_KEY =\n 'ProjectManagementExtension:Setting:DefaultProjectTypeId';\n\nconst DEFAULT_PROJECT_TYPE_EXPR = `{{ settings.get('${DEFAULT_PROJECT_TYPE_SETTING_KEY}') }}`;\n\n/** Editable on create; locked once the project has an id. */\nconst CODE_READONLY_EXPR = '{{ !!context.eval(\"id\") }}';\n\nconst TASK_RELATED_ENTITY = 'TaskManagement.Task';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction actionCommandName(action: { command?: unknown }): string | undefined {\n const command = action.command;\n if (typeof command === 'string') {\n return command;\n }\n if (command && typeof command === 'object' && 'name' in command) {\n return String((command as { name: string }).name);\n }\n return undefined;\n}\n\n//#endregion\n\n//#region ----- Project create/edit form modifier -----\n\n/**\n * Project create/edit form tweaks applied at resolve-time:\n * - Default Type from tenant Default Project Type setting\n * - Code editable on create, readonly on edit\n * - Task related list includes Delete (workflow-run suppresses Task entity CRUD delete)\n */\nexport const AXMProjectDefaultTypeEntityModifier: AXPEntityModifierProvider = {\n entityName: RootConfig.entities.project.name,\n order: 20,\n modifier: (ctx) => {\n if (ctx.module.get() !== RootConfig.module.name) {\n return;\n }\n\n const typeHandle = ctx.properties.find('projectTypeId');\n if (typeHandle.get()) {\n typeHandle.update((prop) => ({\n ...prop,\n schema: {\n ...prop.schema,\n defaultValue: DEFAULT_PROJECT_TYPE_EXPR,\n },\n }));\n }\n\n const codeHandle = ctx.properties.find('code');\n if (codeHandle.get()) {\n codeHandle.update((prop) => {\n const interfaceOptions = { ...(prop.schema?.interface?.options ?? {}) };\n delete (interfaceOptions as { disabled?: unknown }).disabled;\n\n return {\n ...prop,\n schema: {\n ...prop.schema,\n readonly: CODE_READONLY_EXPR,\n interface: {\n ...prop.schema?.interface,\n options: interfaceOptions,\n },\n },\n };\n });\n }\n\n const related = ctx.relatedEntities.list() ?? [];\n const taskRelated = related.find((r) => r.entity === TASK_RELATED_ENTITY);\n if (!taskRelated) {\n return;\n }\n\n const deleteAction = entityDetailsDeleteAction();\n const deleteCommand = actionCommandName(deleteAction);\n const hasDelete = (taskRelated.actions ?? []).some(\n (action) => actionCommandName(action) === deleteCommand,\n );\n if (!hasDelete) {\n taskRelated.actions = [...(taskRelated.actions ?? []), deleteAction];\n }\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPCatalogScopeDefinition, AXPCatalogScopeDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { PM_CATALOG_SCOPE } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst WORKFLOW_DEFINITION = 'WorkflowManagement.WorkflowDefinition';\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMProjectManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: PM_CATALOG_SCOPE,\n title: '@project-management:catalog-scopes.pm.title',\n description: '@project-management:catalog-scopes.pm.description',\n targets: [WORKFLOW_DEFINITION],\n icon: 'fa-light fa-diagram-project',\n cssClass: 'secondary-lighter-surface',\n order: 15,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport {AXPTaskManagementCommandKeys} from '@acorex-platform/module-task-management-client/contracts'\nimport {type AXMTaskManagementTaskTypeEntityModel} from '@acorex-platform/module-task-management-client/contracts';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { defaultTo, isEmpty, merge } from 'lodash';\nimport { PM_PROJECT_ENTITY_SOURCE } from '@acorex-platform/module-project-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectTypeEntityModel } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AllowedTaskTypeRef = {\n taskTypeId: string;\n projectTypeId: string;\n taskTypeDetail?: Pick<\n AXMTaskManagementTaskTypeEntityModel,\n 'id' | 'title' | 'workflowConfig' | 'isActive'\n >;\n};\n\n//#endregion\n\n/**\n * Expression-evaluator scope for project \"Start task\" dropdown items (allowed task types).\n */\nexport class AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n AllowedTaskTypes: async (projectTypeIdRaw?: unknown): Promise<AXPEntityAction[]> => {\n try {\n const projectTypeId = typeof projectTypeIdRaw === 'string' ? projectTypeIdRaw.trim() : '';\n if (!projectTypeId) {\n return [];\n }\n\n const allowedRows = await this.loadAllowedTaskTypes(projectTypeId);\n if (isEmpty(allowedRows)) {\n return [];\n }\n\n return allowedRows.map((row) => this.buildAction(row));\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.AllowedTaskTypes failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadAllowedTaskTypes(projectTypeId: string): Promise<AllowedTaskTypeRef[]> {\n const projectType = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.projectType.name)\n .data()\n .byKey(projectTypeId)) as AXMProjectManagementProjectTypeEntityModel | null;\n\n if (!projectType) {\n return [];\n }\n\n const taskTypeIds = this.resolveAllowedTaskTypeIds(projectType);\n const enriched: AllowedTaskTypeRef[] = [];\n\n for (const taskTypeId of taskTypeIds) {\n const trimmedId = taskTypeId?.trim();\n if (!trimmedId) {\n continue;\n }\n const taskTypeDetail = (await this.entityService\n .withEntity('TaskManagement', 'TaskType')\n .data()\n .byKey(trimmedId)) as AXMTaskManagementTaskTypeEntityModel | null;\n if (!taskTypeDetail?.isActive) {\n continue;\n }\n enriched.push({\n taskTypeId: trimmedId,\n projectTypeId,\n taskTypeDetail: {\n id: taskTypeDetail.id,\n title: taskTypeDetail.title,\n workflowConfig: taskTypeDetail.workflowConfig,\n isActive: taskTypeDetail.isActive,\n },\n });\n }\n\n return enriched;\n }\n\n private resolveAllowedTaskTypeIds(projectType: AXMProjectManagementProjectTypeEntityModel): string[] {\n const fromRefs =\n (projectType.allowedTaskTypesList ?? projectType.allowedTaskTypes)?.map((row) => row.id).filter(Boolean) ?? [];\n if (!isEmpty(fromRefs)) {\n return fromRefs;\n }\n return defaultTo(projectType.allowedTaskTypeIds, []).filter((id) => typeof id === 'string' && id.trim().length > 0);\n }\n\n private buildAction(row: AllowedTaskTypeRef): AXPEntityAction {\n const taskTypeId = row.taskTypeId;\n const taskTypeTitle = row.taskTypeDetail?.title ?? taskTypeId;\n const workflowConfig = row.taskTypeDetail?.workflowConfig;\n const workflowId = workflowConfig?.workflowName?.trim();\n\n const guidedFlowCommand = workflowId\n ? ({\n name: AXPTaskManagementCommandKeys.Task.StartFlow,\n options: {\n workflowId,\n input: merge(defaultTo(workflowConfig?.defaultInput, {}), {\n taskTypeId,\n taskTypeTitle,\n projectTypeId: row.projectTypeId,\n subjectRef: {\n type: PM_PROJECT_ENTITY_SOURCE,\n id: '{{ context.eval(\"id\") }}',\n title: '{{ context.eval(\"title\") }}',\n },\n }),\n },\n } satisfies AXPEntityAction['command'])\n : undefined;\n\n const notConfiguredCommand = {\n name: 'workflow-activity:show-toast',\n options: {\n message: '@project-management:projects.messages.task-type-not-configured',\n type: 'warning',\n },\n } satisfies AXPEntityAction['command'];\n\n return {\n name: `start-project-task-${taskTypeId}`,\n title: taskTypeTitle,\n icon: 'fa-light fa-play',\n color: 'default',\n command: guidedFlowCommand ?? notConfiguredCommand,\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n } satisfies AXPEntityAction;\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport type { AXMTaskManagementTaskTypeEntityModel } from '@acorex-platform/module-task-management-client/contracts';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { defaultTo, isEmpty, isString, uniq } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectEntityModel } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectTypeEntityModel } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst PROJECT_RECORD_DOCUMENT_TYPE_NAMES = ['customer-document', 'toolbox-agenda'] as const;\n\n//#endregion\n\n/**\n * Expression-evaluator scope for resolving allowed document type names from a project record.\n * Unions document type names configured on each allowed TaskType for the project's ProjectType.\n */\nexport class AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n resolveDocumentTypeNames: async (projectIdRaw?: unknown): Promise<string[]> => {\n try {\n const projectId = isString(projectIdRaw) ? projectIdRaw.trim() : '';\n if (!projectId) {\n return [];\n }\n\n return await this.loadAllowedDocumentTypeNamesForProject(projectId);\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.resolveDocumentTypeNames failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadAllowedDocumentTypeNamesForProject(projectId: string): Promise<string[]> {\n const project = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.project.name)\n .data()\n .byKey(projectId)) as AXMProjectManagementProjectEntityModel | null;\n\n if (!project) {\n return [];\n }\n\n const fromTaskTypes = await this.loadDocumentTypeNamesFromProjectType(project);\n return uniq([...PROJECT_RECORD_DOCUMENT_TYPE_NAMES, ...fromTaskTypes]);\n }\n\n private async loadDocumentTypeNamesFromProjectType(\n project: AXMProjectManagementProjectEntityModel,\n ): Promise<string[]> {\n const projectTypeId = this.resolveProjectTypeId(project);\n if (!projectTypeId) {\n return [];\n }\n\n const projectType = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.projectType.name)\n .data()\n .byKey(projectTypeId)) as AXMProjectManagementProjectTypeEntityModel | null;\n\n if (!projectType) {\n return [];\n }\n\n const taskTypeIds = this.resolveAllowedTaskTypeIds(projectType);\n if (isEmpty(taskTypeIds)) {\n return [];\n }\n\n const names: string[] = [];\n for (const taskTypeId of taskTypeIds) {\n const trimmedId = taskTypeId?.trim();\n if (!trimmedId) {\n continue;\n }\n\n const taskType = (await this.entityService\n .withEntity('TaskManagement', 'TaskType')\n .data()\n .byKey(trimmedId)) as AXMTaskManagementTaskTypeEntityModel | null;\n\n if (!taskType?.isActive) {\n continue;\n }\n\n names.push(...this.extractDocumentTypeNames(taskType));\n }\n\n return uniq(names.filter((name) => name.trim().length > 0));\n }\n\n private resolveProjectTypeId(project: AXMProjectManagementProjectEntityModel): string {\n const fromNested = project.projectType?.id;\n if (isString(fromNested) && fromNested.trim()) {\n return fromNested.trim();\n }\n\n const raw = project.projectTypeId as unknown;\n if (isString(raw) && raw.trim()) {\n return raw.trim();\n }\n if (raw && typeof raw === 'object' && isString((raw as { id?: string }).id)) {\n return ((raw as { id: string }).id ?? '').trim();\n }\n return '';\n }\n\n private resolveAllowedTaskTypeIds(projectType: AXMProjectManagementProjectTypeEntityModel): string[] {\n const fromRefs =\n (projectType.allowedTaskTypesList ?? projectType.allowedTaskTypes)?.map((row) => row.id).filter(Boolean) ?? [];\n if (!isEmpty(fromRefs)) {\n return fromRefs;\n }\n return defaultTo(projectType.allowedTaskTypeIds, []).filter((id) => isString(id) && id.trim().length > 0);\n }\n\n private extractDocumentTypeNames(taskType: AXMTaskManagementTaskTypeEntityModel): string[] {\n return (taskType.documentTypesList ?? taskType.documentTypes ?? [])\n .map((row) => row?.name)\n .filter((name): name is string => isString(name) && name.trim().length > 0)\n .map((name) => name.trim());\n }\n\n //#endregion\n}\n","import { AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { NgModule } from '@angular/core';\nimport { AXPRuntimeModule } from '@acorex-platform/framework-client/runtime';\nimport { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_ENTITY_MODIFIER } from '@acorex-platform/framework-client/layout/entity';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\n\nimport { AXMSettingProvider } from './setting.provider';\nimport { AXMSearchCommandProvider } from './search-command.provider';\nimport { AXMProjectStatusProvider } from './features/project/project-status.provider';\nimport { AXMProjectDefaultTypeEntityModifier } from './features/project/project-default-type.entity-modifier';\nimport { AXMProjectManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider } from './features/shared/allowed-task-types-expression-evaluator-scope.provider';\nimport { AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider } from './features/shared/document-type-names-expression-evaluator-scope.provider';\n\n@NgModule({\n imports: [\n AXPRuntimeModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMProjectStatusProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMProjectManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_MODIFIER,\n useValue: AXMProjectDefaultTypeEntityModifier,\n multi: true,\n },\n ],\n})\nexport class AXMProjectManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-project-management-client.mjs","sources":["../../../../libs/modules/project-management/client/src/lib/middlewares/project-location-title.middleware.ts","../../../../libs/modules/project-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/project-management/client/src/lib/menu.provider.ts","../../../../libs/modules/project-management/client/src/lib/setting.provider.ts","../../../../libs/modules/project-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/project/project-status.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/project/project-default-type.entity-modifier.ts","../../../../libs/modules/project-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/shared/allowed-task-types-expression-evaluator-scope.provider.ts","../../../../libs/modules/project-management/client/src/lib/features/shared/document-type-names-expression-evaluator-scope.provider.ts","../../../../libs/modules/project-management/client/src/lib/project-management.module.ts","../../../../libs/modules/project-management/client/src/acorex-platform-module-project-management-client.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveMultiLanguageString, runtimeQueryCollectionData, runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityStorageMiddleware } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport { inject } from '@angular/core';\nimport { get } from 'lodash';\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst PROJECT_ENTITY = `${RootConfig.module.name}.${RootConfig.entities.project.name}`;\nconst LOCATION_ASSIGNMENT_ENTITY = 'LocationManagement.LocationAssignment';\nconst LOCATION_ENTITY = 'LocationManagement.Location';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction readTitle(value: unknown, locale: string): string {\n if (typeof value === 'string') {\n return value.trim();\n }\n if (value == null || value === '') {\n return '';\n }\n return resolveMultiLanguageString(value, locale).trim();\n}\n\nfunction readRecordId(row: Record<string, unknown>): string {\n const id = row['id'] ?? row['_id'];\n return typeof id === 'string' ? id.trim() : '';\n}\n\nfunction readAssignmentId(row: Record<string, unknown>): string {\n const direct = get(row, 'locationAssignmentId');\n if (typeof direct === 'string' && direct.trim()) {\n return direct.trim();\n }\n if (direct && typeof direct === 'object') {\n const id = get(direct, 'id') as unknown;\n if (typeof id === 'string' && id.trim()) {\n return id.trim();\n }\n }\n const nested = get(row, 'locationAssignment.id');\n return typeof nested === 'string' ? nested.trim() : '';\n}\n\nfunction rowLocationTitle(row: Record<string, unknown>, locale: string): string {\n return (\n readTitle(get(row, 'locationAssignment.location.title'), locale) ||\n readTitle(get(row, 'locationAssignment.title'), locale)\n );\n}\n\nfunction columnShowsLocationTitle(row: Record<string, unknown>, locale: string): boolean {\n return readTitle(get(row, 'locationAssignment.title'), locale) !== '';\n}\n\nfunction withLocationTitle(row: Record<string, unknown>, title: string): Record<string, unknown> {\n const current = row['locationAssignment'];\n const assignment =\n current != null && typeof current === 'object' && !Array.isArray(current)\n ? { ...(current as Record<string, unknown>) }\n : {};\n const location = assignment['location'];\n const locationRecord =\n location != null && typeof location === 'object' && !Array.isArray(location)\n ? { ...(location as Record<string, unknown>) }\n : {};\n\n return {\n ...row,\n locationAssignment: {\n ...assignment,\n title,\n location: {\n ...locationRecord,\n title,\n },\n },\n };\n}\n\nfunction projectRows(result: unknown): {\n rows: Record<string, unknown>[];\n write: (rows: Record<string, unknown>[]) => void;\n} | null {\n const collection = runtimeQueryCollectionData(result as never);\n if (collection && Array.isArray(collection.items)) {\n return {\n rows: collection.items as Record<string, unknown>[],\n write: (rows) => {\n collection.items = rows;\n },\n };\n }\n\n const payload = runtimeQueryPayloadData(result as never);\n if (payload != null && typeof payload === 'object' && !Array.isArray(payload) && result != null && typeof result === 'object') {\n return {\n rows: [payload as Record<string, unknown>],\n write: (rows) => {\n (result as { data: unknown }).data = rows[0];\n },\n };\n }\n\n if (result != null && typeof result === 'object' && Array.isArray((result as { items?: unknown }).items)) {\n const page = result as { items: Record<string, unknown>[] };\n return {\n rows: page.items,\n write: (rows) => {\n page.items = rows;\n },\n };\n }\n\n return null;\n}\n\n//#endregion\n\n//#region ----- Project location title -----\n\n/**\n * The project list join stores the location name at locationAssignment.location.title.\n * The Location column reads locationAssignment.title, so copy the name onto that path.\n */\nexport const projectLocationTitleMiddleware: AXPEntityStorageMiddleware = {\n target: {\n entity: PROJECT_ENTITY,\n ops: ['getOne', 'getAll', 'query'],\n order: 20,\n },\n execute: async (ctx, next) => {\n let locale = 'en-US';\n try {\n locale = inject(AXTranslationService).getActiveLang?.() ?? locale;\n } catch {\n locale = 'en-US';\n }\n\n await next();\n\n try {\n if (ctx.entityName !== PROJECT_ENTITY) {\n return;\n }\n\n const page = projectRows(ctx.result);\n if (!page?.rows.length) {\n return;\n }\n\n const missingIds = Array.from(\n new Set(\n page.rows\n .filter((row) => !rowLocationTitle(row, locale))\n .map((row) => readAssignmentId(row))\n .filter((id) => id !== ''),\n ),\n );\n\n const assignments = missingIds.length\n ? await ctx.entities.query(LOCATION_ASSIGNMENT_ENTITY, {\n skip: 0,\n take: missingIds.length,\n fields: ['id', 'locationId'],\n filter: { field: 'id', operator: { type: 'in' }, value: missingIds },\n })\n : null;\n const titleByAssignmentId = new Map<string, string>();\n const locationIdByAssignmentId = new Map<string, string>();\n\n for (const item of assignments?.items ?? []) {\n const row = item as unknown as Record<string, unknown>;\n const assignmentId = readRecordId(row);\n if (!assignmentId) {\n continue;\n }\n const locationId = get(row, 'locationId');\n if (typeof locationId === 'string' && locationId.trim()) {\n locationIdByAssignmentId.set(assignmentId, locationId.trim());\n }\n }\n\n const locationIds = Array.from(new Set(locationIdByAssignmentId.values()));\n const titleByLocationId = new Map<string, string>();\n if (locationIds.length) {\n const locations = await ctx.entities.query(LOCATION_ENTITY, {\n skip: 0,\n take: locationIds.length,\n fields: ['id', 'title'],\n filter: { field: 'id', operator: { type: 'in' }, value: locationIds },\n });\n for (const item of locations?.items ?? []) {\n const row = item as unknown as Record<string, unknown>;\n const locationId = readRecordId(row);\n const title = readTitle(get(row, 'title'), locale);\n if (locationId && title) {\n titleByLocationId.set(locationId, title);\n }\n }\n for (const [assignmentId, locationId] of locationIdByAssignmentId) {\n const title = titleByLocationId.get(locationId);\n if (title) {\n titleByAssignmentId.set(assignmentId, title);\n }\n }\n }\n\n page.write(\n page.rows.map((row) => {\n if (columnShowsLocationTitle(row, locale)) {\n return row;\n }\n const title = rowLocationTitle(row, locale) || titleByAssignmentId.get(readAssignmentId(row));\n return title ? withLocationTitle(row, title) : row;\n }),\n );\n } catch {\n // A location lookup failure must not block the project grid.\n }\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPProjectsWorkPermissionKeys\n} from '@acorex-platform/module-project-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ---- Permission Definition Provider ----\n\n/**\n * Registers Projects & Work capabilities owned by project-management.\n */\n@Injectable()\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPProjectsWorkPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:projects-work.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.ProjectsWork.Root, `${G}.projects-work.title`, `${G}.projects-work.description`, { order: 60 });\n\n context\n .addGroup(\n groups.ProjectsWork.Projects,\n `${G}.projects-work-projects.title`,\n `${G}.projects-work-projects.description`,\n { parent: groups.ProjectsWork.Root, order: 10 },\n )\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(keys.MaintainProjects, `${P}.maintain-projects.title`, `${P}.maintain-projects.description`)\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPProjectsWorkPermissionKeys\n} from '@acorex-platform/module-project-management-client/contracts';\nimport { AXPProjectManagementMenuKeys } from '@acorex-platform/module-project-management-client/contracts';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPProjectsWorkPermissionKeys;\n\n context.addItems([\n {\n name: AXPProjectManagementMenuKeys.Root,\n priority: 8100,\n text: '@project-management:projects.terms.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.project.name),\n icon: RootConfig.entities.project.icon,\n policy: {\n features: [module.name],\n permissions: [keys.MaintainProjects],\n },\n },\n ]);\n\n context.find(AXPCommonMenuKeys.Projects).addItems([\n {\n name: AXPProjectManagementMenuKeys.ProjectTypes,\n text: '@project-management:projects.project-types.plural',\n icon: RootConfig.entities.projectType.icon,\n priority: 1,\n path: this.entityService\n .withEntity(module.name, RootConfig.entities.projectType.name)\n .createPath(),\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n ]);\n }\n}\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';\n\nexport class AXMSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // context\n // // Add Form Template Group\n // .addGroup('form-template', 'Form Template', 'Settings related to form templates.', RootConfig.module.icon)\n // // Start Interface Section\n // .addSection('interface', 'UI Interface', 'Customize the user interface for forms.')\n // .addSetting({\n // key: 'history-panel',\n // title: 'Show History Panel',\n // scope: 'U',\n // isInherited: true,\n // defaultValue: false,\n // widget: {\n // type: AXPWidgetsCatalog.toggle,\n // },\n // description: 'Enable or disable the history panel for forms.',\n // validationRules: [\n // {\n // rule: 'required',\n // },\n // ],\n // })\n // .endSection()\n // .endGroup();\n }\n}\n","import { AXPSearchCommandProvider, createEntitySearchCommand } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\n\nexport class AXMSearchCommandProvider extends AXPSearchCommandProvider {\n commands = [\n createEntitySearchCommand({\n id: 'create-project',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.project.name}`,\n entityInfo: { name: RootConfig.entities.project.name, module: RootConfig.module.name, title: RootConfig.entities.project.title },\n titleKey: '@project-management:projects.search-commands.create-project.title',\n descriptionKey: '@project-management:projects.search-commands.create-project.description',\n icon: RootConfig.entities.project.icon,\n }),\n createEntitySearchCommand({\n id: 'create-project-type',\n entityKey: `${RootConfig.module.name}.${RootConfig.entities.projectType.name}`,\n entityInfo: { name: RootConfig.entities.projectType.name, module: RootConfig.module.name, title: RootConfig.entities.projectType.title },\n titleKey: '@project-management:projects.search-commands.create-project-type.title',\n descriptionKey: '@project-management:projects.search-commands.create-project-type.description',\n icon: RootConfig.entities.projectType.icon,\n }),\n ];\n}\n","//#region ---- Imports ----\n\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Project Status Provider ----\n\n/**\n * Helper function to create status definitions\n */\nconst status = (\n name: string,\n title: string,\n color: string,\n options: Partial<AXPStatusDefinition> = {},\n): AXPStatusDefinition => ({\n name,\n title,\n color,\n ...options,\n});\n\nexport class AXMProjectStatusProvider extends AXPStatusProvider {\n readonly key = 'project-management.status.projectStatus';\n\n readonly statuses: AXPStatusDefinition[] = [\n status('Initial', '@project-management:projects.meeting-participants.states.initial', 'neutral', {\n order: 1,\n generateView: true,\n isInitial: true,\n icon: 'fa-light fa-circle-dot',\n }),\n status('In Progress', '@meeting-management:meetings.meeting-participants.states.present', 'warning', {\n order: 2,\n generateView: true,\n icon: 'fa-light fa-spinner',\n }),\n status('Completed', '@meeting-management:meetings.meeting-participants.states.accept', 'success', {\n order: 3,\n generateView: true,\n isFinal: true,\n icon: 'fa-light fa-check-circle',\n }),\n status('Archived', '@meeting-management:meetings.meeting-participants.states.decline', 'danger', {\n order: 4,\n generateView: true,\n isFinal: true,\n icon: 'fa-light fa-box-archive',\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: 'Initial',\n to: 'In Progress',\n title: '@meeting-management:meetings.meeting-participants.transitions.mark-present',\n },\n {\n from: 'In Progress',\n to: 'Completed',\n title: '@meeting-management:meetings.meeting-participants.transitions.accept',\n },\n {\n from: 'Completed',\n to: 'Archived',\n title: '@meeting-management:meetings.meeting-participants.transitions.decline',\n },\n {\n from: 'In Progress',\n to: 'Initial',\n title: '@meeting-management:meetings.meeting-participants.transitions.mark-absent',\n },\n ];\n\n readonly defaultStatus = 'Initial';\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPEntityModifierProvider,\n} from '@acorex-platform/framework-client/layout/entity';\nimport {\n entityDetailsDeleteAction,\n} from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/**\n * Mirrors `AXEPMExtensionSettings.DefaultProjectTypeId`\n * (module must not import extension contracts).\n */\nconst DEFAULT_PROJECT_TYPE_SETTING_KEY =\n 'ProjectManagementExtension:Setting:DefaultProjectTypeId';\n\nconst DEFAULT_PROJECT_TYPE_EXPR = `{{ settings.get('${DEFAULT_PROJECT_TYPE_SETTING_KEY}') }}`;\n\n/** Editable on create; locked once the project has an id. */\nconst CODE_READONLY_EXPR = '{{ !!context.eval(\"id\") }}';\n\nconst TASK_RELATED_ENTITY = 'TaskManagement.Task';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction actionCommandName(action: { command?: unknown }): string | undefined {\n const command = action.command;\n if (typeof command === 'string') {\n return command;\n }\n if (command && typeof command === 'object' && 'name' in command) {\n return String((command as { name: string }).name);\n }\n return undefined;\n}\n\n//#endregion\n\n//#region ----- Project create/edit form modifier -----\n\n/**\n * Project create/edit form tweaks applied at resolve-time:\n * - Default Type from tenant Default Project Type setting\n * - Code editable on create, readonly on edit\n * - Task related list includes Delete (workflow-run suppresses Task entity CRUD delete)\n */\nexport const AXMProjectDefaultTypeEntityModifier: AXPEntityModifierProvider = {\n entityName: RootConfig.entities.project.name,\n order: 20,\n modifier: (ctx) => {\n if (ctx.module.get() !== RootConfig.module.name) {\n return;\n }\n\n const typeHandle = ctx.properties.find('projectTypeId');\n if (typeHandle.get()) {\n typeHandle.update((prop) => ({\n ...prop,\n schema: {\n ...prop.schema,\n defaultValue: DEFAULT_PROJECT_TYPE_EXPR,\n },\n }));\n }\n\n const codeHandle = ctx.properties.find('code');\n if (codeHandle.get()) {\n codeHandle.update((prop) => {\n const interfaceOptions = { ...(prop.schema?.interface?.options ?? {}) };\n delete (interfaceOptions as { disabled?: unknown }).disabled;\n\n return {\n ...prop,\n schema: {\n ...prop.schema,\n readonly: CODE_READONLY_EXPR,\n interface: {\n ...prop.schema?.interface,\n options: interfaceOptions,\n },\n },\n };\n });\n }\n\n const related = ctx.relatedEntities.list() ?? [];\n const taskRelated = related.find((r) => r.entity === TASK_RELATED_ENTITY);\n if (!taskRelated) {\n return;\n }\n\n const deleteAction = entityDetailsDeleteAction();\n const deleteCommand = actionCommandName(deleteAction);\n const hasDelete = (taskRelated.actions ?? []).some(\n (action) => actionCommandName(action) === deleteCommand,\n );\n if (!hasDelete) {\n taskRelated.actions = [...(taskRelated.actions ?? []), deleteAction];\n }\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPCatalogScopeDefinition, AXPCatalogScopeDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { PM_CATALOG_SCOPE } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst WORKFLOW_DEFINITION = 'WorkflowManagement.WorkflowDefinition';\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMProjectManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: PM_CATALOG_SCOPE,\n title: '@project-management:catalog-scopes.pm.title',\n description: '@project-management:catalog-scopes.pm.description',\n targets: [WORKFLOW_DEFINITION],\n icon: 'fa-light fa-diagram-project',\n cssClass: 'secondary-lighter-surface',\n order: 15,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport {AXPTaskManagementCommandKeys} from '@acorex-platform/module-task-management-client/contracts'\nimport {type AXMTaskManagementTaskTypeEntityModel} from '@acorex-platform/module-task-management-client/contracts';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { defaultTo, isEmpty, merge } from 'lodash';\nimport { PM_PROJECT_ENTITY_SOURCE } from '@acorex-platform/module-project-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectTypeEntityModel } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AllowedTaskTypeRef = {\n taskTypeId: string;\n projectTypeId: string;\n taskTypeDetail?: Pick<\n AXMTaskManagementTaskTypeEntityModel,\n 'id' | 'title' | 'workflowConfig' | 'isActive'\n >;\n};\n\n//#endregion\n\n/**\n * Expression-evaluator scope for project \"Start task\" dropdown items (allowed task types).\n */\nexport class AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n AllowedTaskTypes: async (projectTypeIdRaw?: unknown): Promise<AXPEntityAction[]> => {\n try {\n const projectTypeId = typeof projectTypeIdRaw === 'string' ? projectTypeIdRaw.trim() : '';\n if (!projectTypeId) {\n return [];\n }\n\n const allowedRows = await this.loadAllowedTaskTypes(projectTypeId);\n if (isEmpty(allowedRows)) {\n return [];\n }\n\n return allowedRows.map((row) => this.buildAction(row));\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.AllowedTaskTypes failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadAllowedTaskTypes(projectTypeId: string): Promise<AllowedTaskTypeRef[]> {\n const projectType = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.projectType.name)\n .data()\n .byKey(projectTypeId)) as AXMProjectManagementProjectTypeEntityModel | null;\n\n if (!projectType) {\n return [];\n }\n\n const taskTypeIds = this.resolveAllowedTaskTypeIds(projectType);\n const enriched: AllowedTaskTypeRef[] = [];\n\n for (const taskTypeId of taskTypeIds) {\n const trimmedId = taskTypeId?.trim();\n if (!trimmedId) {\n continue;\n }\n const taskTypeDetail = (await this.entityService\n .withEntity('TaskManagement', 'TaskType')\n .data()\n .byKey(trimmedId)) as AXMTaskManagementTaskTypeEntityModel | null;\n if (!taskTypeDetail?.isActive) {\n continue;\n }\n enriched.push({\n taskTypeId: trimmedId,\n projectTypeId,\n taskTypeDetail: {\n id: taskTypeDetail.id,\n title: taskTypeDetail.title,\n workflowConfig: taskTypeDetail.workflowConfig,\n isActive: taskTypeDetail.isActive,\n },\n });\n }\n\n return enriched;\n }\n\n private resolveAllowedTaskTypeIds(projectType: AXMProjectManagementProjectTypeEntityModel): string[] {\n const fromRefs =\n (projectType.allowedTaskTypesList ?? projectType.allowedTaskTypes)?.map((row) => row.id).filter(Boolean) ?? [];\n if (!isEmpty(fromRefs)) {\n return fromRefs;\n }\n return defaultTo(projectType.allowedTaskTypeIds, []).filter((id) => typeof id === 'string' && id.trim().length > 0);\n }\n\n private buildAction(row: AllowedTaskTypeRef): AXPEntityAction {\n const taskTypeId = row.taskTypeId;\n const taskTypeTitle = row.taskTypeDetail?.title ?? taskTypeId;\n const workflowConfig = row.taskTypeDetail?.workflowConfig;\n const workflowId = workflowConfig?.workflowName?.trim();\n\n const guidedFlowCommand = workflowId\n ? ({\n name: AXPTaskManagementCommandKeys.Task.StartFlow,\n options: {\n workflowId,\n input: merge(defaultTo(workflowConfig?.defaultInput, {}), {\n taskTypeId,\n taskTypeTitle,\n projectTypeId: row.projectTypeId,\n subjectRef: {\n type: PM_PROJECT_ENTITY_SOURCE,\n id: '{{ context.eval(\"id\") }}',\n title: '{{ context.eval(\"title\") }}',\n },\n }),\n },\n } satisfies AXPEntityAction['command'])\n : undefined;\n\n const notConfiguredCommand = {\n name: 'workflow-activity:show-toast',\n options: {\n message: '@project-management:projects.messages.task-type-not-configured',\n type: 'warning',\n },\n } satisfies AXPEntityAction['command'];\n\n return {\n name: `start-project-task-${taskTypeId}`,\n title: taskTypeTitle,\n icon: 'fa-light fa-play',\n color: 'default',\n command: guidedFlowCommand ?? notConfiguredCommand,\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n } satisfies AXPEntityAction;\n }\n\n //#endregion\n}\n","//#region ---- Imports ----\n\nimport type { AXMTaskManagementTaskTypeEntityModel } from '@acorex-platform/module-task-management-client/contracts';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { defaultTo, isEmpty, isString, uniq } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectEntityModel } from '@acorex-platform/module-project-management-client/contracts';\nimport type { AXMProjectManagementProjectTypeEntityModel } from '@acorex-platform/module-project-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst PROJECT_RECORD_DOCUMENT_TYPE_NAMES = ['customer-document', 'toolbox-agenda'] as const;\n\n//#endregion\n\n/**\n * Expression-evaluator scope for resolving allowed document type names from a project record.\n * Unions document type names configured on each allowed TaskType for the project's ProjectType.\n */\nexport class AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n resolveDocumentTypeNames: async (projectIdRaw?: unknown): Promise<string[]> => {\n try {\n const projectId = isString(projectIdRaw) ? projectIdRaw.trim() : '';\n if (!projectId) {\n return [];\n }\n\n return await this.loadAllowedDocumentTypeNamesForProject(projectId);\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.resolveDocumentTypeNames failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async loadAllowedDocumentTypeNamesForProject(projectId: string): Promise<string[]> {\n const project = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.project.name)\n .data()\n .byKey(projectId)) as AXMProjectManagementProjectEntityModel | null;\n\n if (!project) {\n return [];\n }\n\n const fromTaskTypes = await this.loadDocumentTypeNamesFromProjectType(project);\n return uniq([...PROJECT_RECORD_DOCUMENT_TYPE_NAMES, ...fromTaskTypes]);\n }\n\n private async loadDocumentTypeNamesFromProjectType(\n project: AXMProjectManagementProjectEntityModel,\n ): Promise<string[]> {\n const projectTypeId = this.resolveProjectTypeId(project);\n if (!projectTypeId) {\n return [];\n }\n\n const projectType = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.projectType.name)\n .data()\n .byKey(projectTypeId)) as AXMProjectManagementProjectTypeEntityModel | null;\n\n if (!projectType) {\n return [];\n }\n\n const taskTypeIds = this.resolveAllowedTaskTypeIds(projectType);\n if (isEmpty(taskTypeIds)) {\n return [];\n }\n\n const names: string[] = [];\n for (const taskTypeId of taskTypeIds) {\n const trimmedId = taskTypeId?.trim();\n if (!trimmedId) {\n continue;\n }\n\n const taskType = (await this.entityService\n .withEntity('TaskManagement', 'TaskType')\n .data()\n .byKey(trimmedId)) as AXMTaskManagementTaskTypeEntityModel | null;\n\n if (!taskType?.isActive) {\n continue;\n }\n\n names.push(...this.extractDocumentTypeNames(taskType));\n }\n\n return uniq(names.filter((name) => name.trim().length > 0));\n }\n\n private resolveProjectTypeId(project: AXMProjectManagementProjectEntityModel): string {\n const fromNested = project.projectType?.id;\n if (isString(fromNested) && fromNested.trim()) {\n return fromNested.trim();\n }\n\n const raw = project.projectTypeId as unknown;\n if (isString(raw) && raw.trim()) {\n return raw.trim();\n }\n if (raw && typeof raw === 'object' && isString((raw as { id?: string }).id)) {\n return ((raw as { id: string }).id ?? '').trim();\n }\n return '';\n }\n\n private resolveAllowedTaskTypeIds(projectType: AXMProjectManagementProjectTypeEntityModel): string[] {\n const fromRefs =\n (projectType.allowedTaskTypesList ?? projectType.allowedTaskTypes)?.map((row) => row.id).filter(Boolean) ?? [];\n if (!isEmpty(fromRefs)) {\n return fromRefs;\n }\n return defaultTo(projectType.allowedTaskTypeIds, []).filter((id) => isString(id) && id.trim().length > 0);\n }\n\n private extractDocumentTypeNames(taskType: AXMTaskManagementTaskTypeEntityModel): string[] {\n return (taskType.documentTypesList ?? taskType.documentTypes ?? [])\n .map((row) => row?.name)\n .filter((name): name is string => isString(name) && name.trim().length > 0)\n .map((name) => name.trim());\n }\n\n //#endregion\n}\n","import { AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { NgModule } from '@angular/core';\nimport { AXPRuntimeModule } from '@acorex-platform/framework-client/runtime';\nimport { AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';\nimport { projectLocationTitleMiddleware } from './middlewares/project-location-title.middleware';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMenuProvider } from './menu.provider';\n\nimport { AXMSettingProvider } from './setting.provider';\nimport { AXMSearchCommandProvider } from './search-command.provider';\nimport { AXMProjectStatusProvider } from './features/project/project-status.provider';\nimport { AXMProjectDefaultTypeEntityModifier } from './features/project/project-default-type.entity-modifier';\nimport { AXMProjectManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider } from './features/shared/allowed-task-types-expression-evaluator-scope.provider';\nimport { AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider } from './features/shared/document-type-names-expression-evaluator-scope.provider';\n\n@NgModule({\n imports: [\n AXPRuntimeModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_STATUS_PROVIDERS,\n useClass: AXMProjectStatusProvider,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMProjectManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_MODIFIER,\n useValue: AXMProjectDefaultTypeEntityModifier,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n multi: true,\n useValue: projectLocationTitleMiddleware,\n },\n ],\n})\nexport class AXMProjectManagementModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-project-management-client",
3
- "version": "2.0.0-next.14",
3
+ "version": "2.0.0-next.16",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/module-data-management-client": "2.0.0-next.14",
6
+ "@acorex-platform/module-data-management-client": "2.0.0-next.16",
7
7
  "@angular/common": "^21.0.0 || ^22.0.0",
8
8
  "@angular/core": "^21.0.0 || ^22.0.0"
9
9
  },
@@ -137,6 +137,7 @@ interface AXMProjectManagementProjectEntityModel extends AXPEntityModel<string>
137
137
  id: string;
138
138
  title?: string;
139
139
  location?: {
140
+ title?: string;
140
141
  street1?: string;
141
142
  city?: {
142
143
  title?: string;