@acorex-platform/module-project-management-client 0.0.54 → 0.0.56

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.
@@ -430,6 +430,9 @@ class AXMProjectManagementAllowedTaskTypesExpressionEvaluatorScopeProvider {
430
430
 
431
431
  //#region ---- Imports ----
432
432
  //#endregion
433
+ //#region ---- Constants ----
434
+ const PROJECT_RECORD_DOCUMENT_TYPE_NAMES = ['customer-document', 'toolbox-agenda'];
435
+ //#endregion
433
436
  /**
434
437
  * Expression-evaluator scope for resolving allowed document type names from a project record.
435
438
  * Unions document type names configured on each allowed TaskType for the project's ProjectType.
@@ -469,6 +472,10 @@ class AXMProjectManagementDocumentTypeNamesExpressionEvaluatorScopeProvider {
469
472
  if (!project) {
470
473
  return [];
471
474
  }
475
+ const fromTaskTypes = await this.loadDocumentTypeNamesFromProjectType(project);
476
+ return uniq([...PROJECT_RECORD_DOCUMENT_TYPE_NAMES, ...fromTaskTypes]);
477
+ }
478
+ async loadDocumentTypeNamesFromProjectType(project) {
472
479
  const projectTypeId = this.resolveProjectTypeId(project);
473
480
  if (!projectTypeId) {
474
481
  return [];
@@ -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/**\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 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/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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"}
@@ -0,0 +1,301 @@
1
+ {
2
+ "module": {
3
+ "title": "Project Management",
4
+ "description": "Manage projects, tasks and resources",
5
+ "menus": {
6
+ "root": {
7
+ "title": "Project Management",
8
+ "description": "Manage projects, tasks and resources"
9
+ }
10
+ },
11
+ "permissions": {
12
+ "title": "Project Management",
13
+ "description": "Access project management features",
14
+ "project": {
15
+ "manage": {
16
+ "title": "Project management",
17
+ "description": "View and manage projects"
18
+ }
19
+ },
20
+ "project-type": {
21
+ "manage": {
22
+ "title": "Project type management",
23
+ "description": "Configure project types"
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "projects": {
29
+ "terms": {
30
+ "title": "Project",
31
+ "plural": "Projects",
32
+ "projectName": "Title",
33
+ "projectNo": "Project No",
34
+ "description": "Description",
35
+ "projectTypeId": "Project Type",
36
+ "startDate": "Start Date",
37
+ "endDate": "End Date",
38
+ "duedate": "Due Date",
39
+ "actualStartDate": "Actual Start",
40
+ "actualEndDate": "Actual End",
41
+ "projectWeight": "Project Weight",
42
+ "customerId": "Customer",
43
+ "location": "Location",
44
+ "locationAssignmentId": "Location",
45
+ "contactAssignmentId": "Contact"
46
+ },
47
+ "groups": {
48
+ "basic-information": "Basic Information",
49
+ "organization-parties": "Organization / Parties",
50
+ "schedule": "Schedule",
51
+ "project-status": "Project Status",
52
+ "customer-profile": "Customer Profile"
53
+ },
54
+ "project-types": {
55
+ "title": "Project Type",
56
+ "plural": "Project Types"
57
+ },
58
+ "project-type-categories": {
59
+ "title": "Project Type Category",
60
+ "plural": "Project Type Categories"
61
+ },
62
+ "project-type-allowed-task-types": {
63
+ "title": "Allowed Task Type",
64
+ "plural": "Allowed Task Types"
65
+ },
66
+ "project-type-role-types": {
67
+ "title": "Role Type",
68
+ "plural": "Role Types",
69
+ "projectTypeId": "Project Type",
70
+ "description": "Description"
71
+ },
72
+ "task-type": {
73
+ "individual-title": "Task Type",
74
+ "plural-title": "Task Types",
75
+ "configuration": "Configuration",
76
+ "allowed-context-types": "Allowed Context Types",
77
+ "form-template": "Form Template",
78
+ "features": {
79
+ "title": "Features",
80
+ "fields": {
81
+ "title": {
82
+ "title": "Title",
83
+ "description": "Task type title",
84
+ "placeholder": "Enter title"
85
+ },
86
+ "description": {
87
+ "title": "Description"
88
+ },
89
+ "default-status": "Default Status"
90
+ }
91
+ }
92
+ },
93
+ "project-members": {
94
+ "title": "Member",
95
+ "plural": "Members",
96
+ "emlployeeId": "Member",
97
+ "projectTypeRoleTypeId": "Role"
98
+ },
99
+ "tasks": {
100
+ "title": "Task",
101
+ "plural": "Tasks",
102
+ "startDate": "Start Date",
103
+ "endDate": "End Date",
104
+ "parentTaskId": "Parent Task",
105
+ "supervisorId": "Supervisor",
106
+ "referenceType": "Reference Type",
107
+ "referenceId": "referenceId"
108
+ },
109
+ "search-commands": {
110
+ "create-project": {
111
+ "title": "Create Project",
112
+ "description": "Create a new project"
113
+ },
114
+ "create-project-type": {
115
+ "title": "Create Project Type",
116
+ "description": "Create a new project type"
117
+ }
118
+ },
119
+ "entities": {
120
+ "project": {
121
+ "components": {
122
+ "meta-data-form": {
123
+ "title": "Type-Specific Fields"
124
+ }
125
+ },
126
+ "related-entities": {
127
+ "task-start": {
128
+ "title": "Start Task"
129
+ }
130
+ }
131
+ }
132
+ },
133
+ "messages": {
134
+ "task-type-not-configured": "This task type has no workflow configured.",
135
+ "date-on-or-after-start-date": "Must be on or after the start date.",
136
+ "date-on-or-after-actual-start-date": "Must be on or after the actual start date."
137
+ },
138
+ "site-inspection": {
139
+ "setup": {
140
+ "title": "Start Site Inspection",
141
+ "questionnaire": "Questionnaire",
142
+ "assignee": "Assign To",
143
+ "sign-offs": "Sign-Off Reviewers (optional)",
144
+ "sign-off-help": "Select one or more managers or supervisors. Order is preserved for sequential review. Leave empty to skip sign-off."
145
+ },
146
+ "tasks": {
147
+ "board-title": "Site Inspection",
148
+ "conduct": {
149
+ "description": "Open the questionnaire and complete it on site. Use Save as draft in the questionnaire to continue later."
150
+ },
151
+ "sign-off": {
152
+ "description": "Review the submitted questionnaire, then sign off or reject."
153
+ },
154
+ "actions": {
155
+ "open-questionnaire": "Open Questionnaire",
156
+ "review": "Review"
157
+ }
158
+ },
159
+ "messages": {
160
+ "setup-cancelled": "Site inspection setup was cancelled.",
161
+ "setup-failed": "Could not start site inspection. Check questionnaire, assignee, and project members.",
162
+ "sign-off": "Sign off this site inspection before it can be closed.",
163
+ "rejection": "Reject this site inspection and provide a reason.",
164
+ "completed": "Site inspection completed.",
165
+ "rejected": "Site inspection was rejected during sign-off review."
166
+ }
167
+ },
168
+ "toolbox-talk": {
169
+ "setup": {
170
+ "title": "Start Toolbox Talk",
171
+ "questionnaire": "Questionnaire",
172
+ "assignee": "Assign To",
173
+ "sign-offs": "Sign-Off Reviewers (optional)",
174
+ "sign-off-help": "Select one or more managers or supervisors. Order is preserved for sequential review. Leave empty to skip sign-off."
175
+ },
176
+ "tasks": {
177
+ "board-title": "Toolbox Talk",
178
+ "conduct": {
179
+ "description": "Open the questionnaire and complete the toolbox talk. Use Save as draft in the questionnaire to continue later."
180
+ },
181
+ "sign-off": {
182
+ "description": "Review the submitted questionnaire, then sign off or reject."
183
+ },
184
+ "actions": {
185
+ "open-questionnaire": "Open Questionnaire",
186
+ "review": "Review"
187
+ }
188
+ },
189
+ "messages": {
190
+ "setup-cancelled": "Toolbox talk setup was cancelled.",
191
+ "setup-failed": "Could not start toolbox talk. Check questionnaire, assignee, and project members.",
192
+ "sign-off": "Sign off this toolbox talk before it can be closed.",
193
+ "rejection": "Reject this toolbox talk and provide a reason.",
194
+ "completed": "Toolbox talk completed.",
195
+ "rejected": "Toolbox talk was rejected during sign-off review."
196
+ }
197
+ },
198
+ "swms": {
199
+ "setup": {
200
+ "title": "Start SWMS Completion",
201
+ "safety-plan": "Published SWMS Safety Plan",
202
+ "safety-plan-help": "Choose a published SWMS plan to copy into this job.",
203
+ "assignee": "Assign To",
204
+ "sign-offs": "Read & sign off Users",
205
+ "sign-off-help": "Select managers or supervisors who need their own SWMS tasks. Those child tasks start as Initial with the main task, then become Assigned after the main assignee signs off. Leave empty if only the assignee is needed."
206
+ },
207
+ "tasks": {
208
+ "board-title": "SWMS",
209
+ "draft": {
210
+ "description": "View the Safety Plan. Save as Draft keeps this task with you. Submit assigns the selected people."
211
+ },
212
+ "assigned": {
213
+ "description": "View the Safety Plan. Lock makes it read-only. Sign Off opens the signature form."
214
+ },
215
+ "locked": {
216
+ "description": "This SWMS is locked and read-only. Sign Off opens the signature form. After you sign off, this task becomes Signed Off and Read & sign off user tasks become Assigned."
217
+ },
218
+ "sign-off": {
219
+ "description": "View the Safety Plan and sign off your own task. The main SWMS task stays open until the assignee completes the job."
220
+ },
221
+ "complete": {
222
+ "description": "This SWMS is signed off. Complete the job to archive it."
223
+ },
224
+ "actions": {
225
+ "open-safety-plan": "View Safety Plan",
226
+ "save-draft": "Save as Draft",
227
+ "submit": "Submit",
228
+ "lock": "Lock",
229
+ "sign-off": "Sign Off",
230
+ "complete-job": "Complete Job"
231
+ }
232
+ },
233
+ "messages": {
234
+ "setup-cancelled": "SWMS setup was cancelled.",
235
+ "setup-failed": "Could not start SWMS. Check the published plan, assignee, and project members.",
236
+ "sign-off": "Sign off this SWMS before it can be archived.",
237
+ "sign-off-tasks-failed": "Sign-off tasks could not be created or assigned.",
238
+ "completed": "SWMS job completed and archived."
239
+ }
240
+ },
241
+ "catalog-scopes": {
242
+ "pm": {
243
+ "title": "Project management",
244
+ "description": "Workflows and catalogs for project tasks"
245
+ }
246
+ },
247
+ "meeting-participants": {
248
+ "states": {
249
+ "initial": "Initial"
250
+ }
251
+ }
252
+ },
253
+ "categories": {
254
+ "terms": {
255
+ "category": "Category",
256
+ "categories": "Categories"
257
+ },
258
+ "menus": {
259
+ "categories": {
260
+ "title": "Categories",
261
+ "description": "Manage project categories"
262
+ }
263
+ },
264
+ "entities": {
265
+ "project-management": {
266
+ "title": "Category",
267
+ "plural": "Categories",
268
+ "fields": {
269
+ "parent": {
270
+ "title": "Parent Category"
271
+ }
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "queries": {
277
+ "shared": {
278
+ "status": "Status",
279
+ "project-type": "Project Type",
280
+ "employee": "Employee",
281
+ "project": "Project",
282
+ "projects": "Projects"
283
+ },
284
+ "reports": {
285
+ "projects-by-status": {
286
+ "title": "Projects by Status",
287
+ "description": "Project portfolio counts grouped by status.",
288
+ "fields": {
289
+ "project-count": "Project Count"
290
+ }
291
+ },
292
+ "member-workload": {
293
+ "title": "Member Workload",
294
+ "description": "Number of projects per employee with project list context.",
295
+ "fields": {
296
+ "project-count": "Project Count"
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
@@ -0,0 +1,301 @@
1
+ {
2
+ "module": {
3
+ "title": "Project Management",
4
+ "description": "Manage projects, tasks and resources",
5
+ "menus": {
6
+ "root": {
7
+ "title": "Project Management",
8
+ "description": "Manage projects, tasks and resources"
9
+ }
10
+ },
11
+ "permissions": {
12
+ "title": "Project Management",
13
+ "description": "Access project management features",
14
+ "project": {
15
+ "manage": {
16
+ "title": "Project management",
17
+ "description": "View and manage projects"
18
+ }
19
+ },
20
+ "project-type": {
21
+ "manage": {
22
+ "title": "Project type management",
23
+ "description": "Configure project types"
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "projects": {
29
+ "terms": {
30
+ "title": "Project",
31
+ "plural": "Projects",
32
+ "projectName": "Title",
33
+ "projectNo": "Project No",
34
+ "description": "Description",
35
+ "projectTypeId": "Project Type",
36
+ "startDate": "Start Date",
37
+ "endDate": "End Date",
38
+ "duedate": "Due Date",
39
+ "actualStartDate": "Actual Start",
40
+ "actualEndDate": "Actual End",
41
+ "projectWeight": "Project Weight",
42
+ "customerId": "Customer",
43
+ "location": "Location",
44
+ "locationAssignmentId": "Location",
45
+ "contactAssignmentId": "Contact"
46
+ },
47
+ "groups": {
48
+ "basic-information": "Basic Information",
49
+ "organization-parties": "Organization / Parties",
50
+ "schedule": "Schedule",
51
+ "project-status": "Project Status",
52
+ "customer-profile": "Customer Profile"
53
+ },
54
+ "project-types": {
55
+ "title": "Project Type",
56
+ "plural": "Project Types"
57
+ },
58
+ "project-type-categories": {
59
+ "title": "Project Type Category",
60
+ "plural": "Project Type Categories"
61
+ },
62
+ "project-type-allowed-task-types": {
63
+ "title": "Allowed Task Type",
64
+ "plural": "Allowed Task Types"
65
+ },
66
+ "project-type-role-types": {
67
+ "title": "Role Type",
68
+ "plural": "Role Types",
69
+ "projectTypeId": "Project Type",
70
+ "description": "Description"
71
+ },
72
+ "task-type": {
73
+ "individual-title": "Task Type",
74
+ "plural-title": "Task Types",
75
+ "configuration": "Configuration",
76
+ "allowed-context-types": "Allowed Context Types",
77
+ "form-template": "Form Template",
78
+ "features": {
79
+ "title": "Features",
80
+ "fields": {
81
+ "title": {
82
+ "title": "Title",
83
+ "description": "Task type title",
84
+ "placeholder": "Enter title"
85
+ },
86
+ "description": {
87
+ "title": "Description"
88
+ },
89
+ "default-status": "Default Status"
90
+ }
91
+ }
92
+ },
93
+ "project-members": {
94
+ "title": "Member",
95
+ "plural": "Members",
96
+ "emlployeeId": "Member",
97
+ "projectTypeRoleTypeId": "Role"
98
+ },
99
+ "tasks": {
100
+ "title": "Task",
101
+ "plural": "Tasks",
102
+ "startDate": "Start Date",
103
+ "endDate": "End Date",
104
+ "parentTaskId": "Parent Task",
105
+ "supervisorId": "Supervisor",
106
+ "referenceType": "Reference Type",
107
+ "referenceId": "referenceId"
108
+ },
109
+ "search-commands": {
110
+ "create-project": {
111
+ "title": "Create Project",
112
+ "description": "Create a new project"
113
+ },
114
+ "create-project-type": {
115
+ "title": "Create Project Type",
116
+ "description": "Create a new project type"
117
+ }
118
+ },
119
+ "entities": {
120
+ "project": {
121
+ "components": {
122
+ "meta-data-form": {
123
+ "title": "Type-Specific Fields"
124
+ }
125
+ },
126
+ "related-entities": {
127
+ "task-start": {
128
+ "title": "Start Task"
129
+ }
130
+ }
131
+ }
132
+ },
133
+ "messages": {
134
+ "task-type-not-configured": "This task type has no workflow configured.",
135
+ "date-on-or-after-start-date": "Must be on or after the start date.",
136
+ "date-on-or-after-actual-start-date": "Must be on or after the actual start date."
137
+ },
138
+ "site-inspection": {
139
+ "setup": {
140
+ "title": "Start Site Inspection",
141
+ "questionnaire": "Questionnaire",
142
+ "assignee": "Assign To",
143
+ "sign-offs": "Sign-Off Reviewers (optional)",
144
+ "sign-off-help": "Select one or more managers or supervisors. Order is preserved for sequential review. Leave empty to skip sign-off."
145
+ },
146
+ "tasks": {
147
+ "board-title": "Site Inspection",
148
+ "conduct": {
149
+ "description": "Open the questionnaire and complete it on site. Use Save as draft in the questionnaire to continue later."
150
+ },
151
+ "sign-off": {
152
+ "description": "Review the submitted questionnaire, then sign off or reject."
153
+ },
154
+ "actions": {
155
+ "open-questionnaire": "Open Questionnaire",
156
+ "review": "Review"
157
+ }
158
+ },
159
+ "messages": {
160
+ "setup-cancelled": "Site inspection setup was cancelled.",
161
+ "setup-failed": "Could not start site inspection. Check questionnaire, assignee, and project members.",
162
+ "sign-off": "Sign off this site inspection before it can be closed.",
163
+ "rejection": "Reject this site inspection and provide a reason.",
164
+ "completed": "Site inspection completed.",
165
+ "rejected": "Site inspection was rejected during sign-off review."
166
+ }
167
+ },
168
+ "toolbox-talk": {
169
+ "setup": {
170
+ "title": "Start Toolbox Talk",
171
+ "questionnaire": "Questionnaire",
172
+ "assignee": "Assign To",
173
+ "sign-offs": "Sign-Off Reviewers (optional)",
174
+ "sign-off-help": "Select one or more managers or supervisors. Order is preserved for sequential review. Leave empty to skip sign-off."
175
+ },
176
+ "tasks": {
177
+ "board-title": "Toolbox Talk",
178
+ "conduct": {
179
+ "description": "Open the questionnaire and complete the toolbox talk. Use Save as draft in the questionnaire to continue later."
180
+ },
181
+ "sign-off": {
182
+ "description": "Review the submitted questionnaire, then sign off or reject."
183
+ },
184
+ "actions": {
185
+ "open-questionnaire": "Open Questionnaire",
186
+ "review": "Review"
187
+ }
188
+ },
189
+ "messages": {
190
+ "setup-cancelled": "Toolbox talk setup was cancelled.",
191
+ "setup-failed": "Could not start toolbox talk. Check questionnaire, assignee, and project members.",
192
+ "sign-off": "Sign off this toolbox talk before it can be closed.",
193
+ "rejection": "Reject this toolbox talk and provide a reason.",
194
+ "completed": "Toolbox talk completed.",
195
+ "rejected": "Toolbox talk was rejected during sign-off review."
196
+ }
197
+ },
198
+ "swms": {
199
+ "setup": {
200
+ "title": "Start SWMS Completion",
201
+ "safety-plan": "Published SWMS Safety Plan",
202
+ "safety-plan-help": "Choose a published SWMS plan to copy into this job.",
203
+ "assignee": "Assign To",
204
+ "sign-offs": "Read & sign off Users",
205
+ "sign-off-help": "Select managers or supervisors who need their own SWMS tasks. Those child tasks start as Initial with the main task, then become Assigned after the main assignee signs off. Leave empty if only the assignee is needed."
206
+ },
207
+ "tasks": {
208
+ "board-title": "SWMS",
209
+ "draft": {
210
+ "description": "View the Safety Plan. Save as Draft keeps this task with you. Submit assigns the selected people."
211
+ },
212
+ "assigned": {
213
+ "description": "View the Safety Plan. Lock makes it read-only. Sign Off opens the signature form."
214
+ },
215
+ "locked": {
216
+ "description": "This SWMS is locked and read-only. Sign Off opens the signature form. After you sign off, this task becomes Signed Off and Read & sign off user tasks become Assigned."
217
+ },
218
+ "sign-off": {
219
+ "description": "View the Safety Plan and sign off your own task. The main SWMS task stays open until the assignee completes the job."
220
+ },
221
+ "complete": {
222
+ "description": "This SWMS is signed off. Complete the job to archive it."
223
+ },
224
+ "actions": {
225
+ "open-safety-plan": "View Safety Plan",
226
+ "save-draft": "Save as Draft",
227
+ "submit": "Submit",
228
+ "lock": "Lock",
229
+ "sign-off": "Sign Off",
230
+ "complete-job": "Complete Job"
231
+ }
232
+ },
233
+ "messages": {
234
+ "setup-cancelled": "SWMS setup was cancelled.",
235
+ "setup-failed": "Could not start SWMS. Check the published plan, assignee, and project members.",
236
+ "sign-off": "Sign off this SWMS before it can be archived.",
237
+ "sign-off-tasks-failed": "Sign-off tasks could not be created or assigned.",
238
+ "completed": "SWMS job completed and archived."
239
+ }
240
+ },
241
+ "catalog-scopes": {
242
+ "pm": {
243
+ "title": "Project management",
244
+ "description": "Workflows and catalogs for project tasks"
245
+ }
246
+ },
247
+ "meeting-participants": {
248
+ "states": {
249
+ "initial": "Initial"
250
+ }
251
+ }
252
+ },
253
+ "categories": {
254
+ "terms": {
255
+ "category": "Category",
256
+ "categories": "Categories"
257
+ },
258
+ "menus": {
259
+ "categories": {
260
+ "title": "Categories",
261
+ "description": "Manage project categories"
262
+ }
263
+ },
264
+ "entities": {
265
+ "project-management": {
266
+ "title": "Category",
267
+ "plural": "Categories",
268
+ "fields": {
269
+ "parent": {
270
+ "title": "Parent Category"
271
+ }
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "queries": {
277
+ "shared": {
278
+ "status": "Status",
279
+ "project-type": "Project Type",
280
+ "employee": "Employee",
281
+ "project": "Project",
282
+ "projects": "Projects"
283
+ },
284
+ "reports": {
285
+ "projects-by-status": {
286
+ "title": "Projects by Status",
287
+ "description": "Project portfolio counts grouped by status.",
288
+ "fields": {
289
+ "project-count": "Project Count"
290
+ }
291
+ },
292
+ "member-workload": {
293
+ "title": "Member Workload",
294
+ "description": "Number of projects per employee with project list context.",
295
+ "fields": {
296
+ "project-count": "Project Count"
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
@@ -0,0 +1,301 @@
1
+ {
2
+ "module": {
3
+ "title": "مدیریت پروژه",
4
+ "description": "مدیریت پروژه‌ها، وظایف و منابع",
5
+ "menus": {
6
+ "root": {
7
+ "title": "مدیریت پروژه",
8
+ "description": "مدیریت پروژه‌ها، وظایف و منابع"
9
+ }
10
+ },
11
+ "permissions": {
12
+ "title": "مدیریت پروژه",
13
+ "description": "دسترسی به قابلیت‌های مدیریت پروژه",
14
+ "project": {
15
+ "manage": {
16
+ "title": "مدیریت پروژه",
17
+ "description": "مشاهده و مدیریت پروژه‌ها"
18
+ }
19
+ },
20
+ "project-type": {
21
+ "manage": {
22
+ "title": "مدیریت نوع پروژه",
23
+ "description": "پیکربندی انواع پروژه"
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "projects": {
29
+ "terms": {
30
+ "title": "پروژه",
31
+ "plural": "پروژه‌ها",
32
+ "projectName": "عنوان",
33
+ "projectNo": "شماره پروژه",
34
+ "description": "توضیحات",
35
+ "projectTypeId": "نوع پروژه",
36
+ "startDate": "تاریخ شروع",
37
+ "endDate": "تاریخ پایان",
38
+ "duedate": "تاریخ سررسید",
39
+ "actualStartDate": "شروع واقعی",
40
+ "actualEndDate": "پایان واقعی",
41
+ "projectWeight": "وزن پروژه",
42
+ "customerId": "مشتری",
43
+ "location": "موقعیت",
44
+ "locationAssignmentId": "موقعیت",
45
+ "contactAssignmentId": "مخاطب"
46
+ },
47
+ "groups": {
48
+ "basic-information": "اطلاعات پایه",
49
+ "organization-parties": "سازمان / طرف‌ها",
50
+ "schedule": "زمان‌بندی",
51
+ "project-status": "وضعیت پروژه",
52
+ "customer-profile": "پروفایل مشتری"
53
+ },
54
+ "project-types": {
55
+ "title": "نوع پروژه",
56
+ "plural": "انواع پروژه"
57
+ },
58
+ "project-type-categories": {
59
+ "title": "دسته نوع پروژه",
60
+ "plural": "دسته‌های نوع پروژه"
61
+ },
62
+ "project-type-allowed-task-types": {
63
+ "title": "نوع وظیفه مجاز",
64
+ "plural": "انواع وظیفه مجاز"
65
+ },
66
+ "project-type-role-types": {
67
+ "title": "نوع نقش",
68
+ "plural": "انواع نقش",
69
+ "projectTypeId": "نوع پروژه",
70
+ "description": "توضیحات"
71
+ },
72
+ "task-type": {
73
+ "individual-title": "نوع وظیفه",
74
+ "plural-title": "انواع وظیفه",
75
+ "configuration": "پیکربندی",
76
+ "allowed-context-types": "انواع زمینه مجاز",
77
+ "form-template": "قالب فرم",
78
+ "features": {
79
+ "title": "ویژگی‌ها",
80
+ "fields": {
81
+ "title": {
82
+ "title": "عنوان",
83
+ "description": "عنوان نوع وظیفه",
84
+ "placeholder": "عنوان را وارد کنید"
85
+ },
86
+ "description": {
87
+ "title": "توضیحات"
88
+ },
89
+ "default-status": "وضعیت پیش‌فرض"
90
+ }
91
+ }
92
+ },
93
+ "project-members": {
94
+ "title": "عضو",
95
+ "plural": "اعضا",
96
+ "emlployeeId": "عضو",
97
+ "projectTypeRoleTypeId": "نقش"
98
+ },
99
+ "tasks": {
100
+ "title": "وظیفه",
101
+ "plural": "وظایف",
102
+ "startDate": "تاریخ شروع",
103
+ "endDate": "تاریخ پایان",
104
+ "parentTaskId": "وظیفه والد",
105
+ "supervisorId": "سرپرست",
106
+ "referenceType": "نوع مرجع",
107
+ "referenceId": "referenceId"
108
+ },
109
+ "search-commands": {
110
+ "create-project": {
111
+ "title": "ایجاد پروژه",
112
+ "description": "ایجاد یک پروژه جدید"
113
+ },
114
+ "create-project-type": {
115
+ "title": "ایجاد نوع پروژه",
116
+ "description": "ایجاد یک نوع پروژه جدید"
117
+ }
118
+ },
119
+ "entities": {
120
+ "project": {
121
+ "components": {
122
+ "meta-data-form": {
123
+ "title": "فیلدهای ویژه نوع"
124
+ }
125
+ },
126
+ "related-entities": {
127
+ "task-start": {
128
+ "title": "شروع وظیفه"
129
+ }
130
+ }
131
+ }
132
+ },
133
+ "messages": {
134
+ "task-type-not-configured": "برای این نوع وظیفه جریان کار تعریف نشده است.",
135
+ "date-on-or-after-start-date": "باید در همان روز شروع یا بعد از آن باشد.",
136
+ "date-on-or-after-actual-start-date": "باید در همان روز شروع واقعی یا بعد از آن باشد."
137
+ },
138
+ "site-inspection": {
139
+ "setup": {
140
+ "title": "شروع بازرسی سایت",
141
+ "questionnaire": "پرسشنامه",
142
+ "assignee": "محول به",
143
+ "sign-offs": "بازبینان تأیید (اختیاری)",
144
+ "sign-off-help": "یک یا چند مدیر یا سرپرست انتخاب کنید. ترتیب انتخاب، ترتیب بازبینی است. برای رد شدن از تأیید خالی بگذارید."
145
+ },
146
+ "tasks": {
147
+ "board-title": "بازرسی سایت",
148
+ "conduct": {
149
+ "description": "پرسشنامه را باز کنید و در محل تکمیل کنید. برای ادامه بعداً از «ذخیره پیش‌نویس» در پرسشنامه استفاده کنید."
150
+ },
151
+ "sign-off": {
152
+ "description": "پرسشنامه ارسال‌شده را بررسی کنید، سپس تأیید یا رد کنید."
153
+ },
154
+ "actions": {
155
+ "open-questionnaire": "باز کردن پرسشنامه",
156
+ "review": "بررسی"
157
+ }
158
+ },
159
+ "messages": {
160
+ "setup-cancelled": "راه‌اندازی بازرسی سایت لغو شد.",
161
+ "setup-failed": "شروع بازرسی سایت ممکن نشد. پرسشنامه، مسئول و اعضای پروژه را بررسی کنید.",
162
+ "sign-off": "قبل از بستن، این بازرسی سایت را تأیید کنید.",
163
+ "rejection": "این بازرسی سایت را رد کنید و دلیل را ثبت کنید.",
164
+ "completed": "بازرسی سایت تکمیل شد.",
165
+ "rejected": "بازرسی سایت در مرحله تأیید رد شد."
166
+ }
167
+ },
168
+ "toolbox-talk": {
169
+ "setup": {
170
+ "title": "شروع Toolbox Talk",
171
+ "questionnaire": "پرسشنامه",
172
+ "assignee": "محول به",
173
+ "sign-offs": "بازبینان تأیید (اختیاری)",
174
+ "sign-off-help": "یک یا چند مدیر یا سرپرست انتخاب کنید. ترتیب انتخاب، ترتیب بازبینی است. برای رد شدن از تأیید خالی بگذارید."
175
+ },
176
+ "tasks": {
177
+ "board-title": "Toolbox Talk",
178
+ "conduct": {
179
+ "description": "پرسشنامه را باز کنید و جلسه Toolbox Talk را تکمیل کنید. برای ادامه بعداً از «ذخیره پیش‌نویس» در پرسشنامه استفاده کنید."
180
+ },
181
+ "sign-off": {
182
+ "description": "پرسشنامه ارسال‌شده را بررسی کنید، سپس تأیید یا رد کنید."
183
+ },
184
+ "actions": {
185
+ "open-questionnaire": "باز کردن پرسشنامه",
186
+ "review": "بررسی"
187
+ }
188
+ },
189
+ "messages": {
190
+ "setup-cancelled": "راه‌اندازی Toolbox Talk لغو شد.",
191
+ "setup-failed": "شروع Toolbox Talk ممکن نشد. پرسشنامه، مسئول و اعضای پروژه را بررسی کنید.",
192
+ "sign-off": "قبل از بستن، این Toolbox Talk را تأیید کنید.",
193
+ "rejection": "این Toolbox Talk را رد کنید و دلیل را ثبت کنید.",
194
+ "completed": "Toolbox Talk تکمیل شد.",
195
+ "rejected": "Toolbox Talk در مرحله تأیید رد شد."
196
+ }
197
+ },
198
+ "swms": {
199
+ "setup": {
200
+ "title": "شروع تکمیل SWMS",
201
+ "safety-plan": "طرح ایمنی SWMS منتشرشده",
202
+ "safety-plan-help": "یک طرح SWMS منتشرشده را برای کپی در این کار انتخاب کنید.",
203
+ "assignee": "محول به",
204
+ "sign-offs": "کاربران مطالعه و تأیید",
205
+ "sign-off-help": "مدیران یا سرپرستانی را که به کار SWMS جدا نیاز دارند انتخاب کنید. این کارهای فرزند همزمان با کار اصلی در وضعیت اولیه ساخته می‌شوند و پس از تأیید مسئول اصلی به محول‌شده تغییر می‌کنند. اگر فقط مسئول کافی است، خالی بگذارید."
206
+ },
207
+ "tasks": {
208
+ "board-title": "SWMS",
209
+ "draft": {
210
+ "description": "طرح ایمنی را مشاهده کنید. ذخیرهٔ پیش‌نویس کار را نزد شما نگه می‌دارد. ارسال، کار را به افراد انتخاب‌شده محول می‌کند."
211
+ },
212
+ "assigned": {
213
+ "description": "طرح ایمنی را مشاهده کنید. قفل آن را فقط‌خواندنی می‌کند. تأیید، فرم امضا را باز می‌کند."
214
+ },
215
+ "locked": {
216
+ "description": "این SWMS قفل و فقط‌خواندنی است. تأیید فرم امضا را باز می‌کند. پس از تأیید شما، این کار تأییدشده می‌شود و کارهای کاربران مطالعه و تأیید به وضعیت محول‌شده می‌روند."
217
+ },
218
+ "sign-off": {
219
+ "description": "طرح ایمنی را مشاهده کنید و فقط کار خود را تأیید کنید. کار اصلی SWMS تا تکمیل توسط مسئول باز می‌ماند."
220
+ },
221
+ "complete": {
222
+ "description": "این SWMS تأیید شده است. برای بایگانی، تکمیل کار را انتخاب کنید."
223
+ },
224
+ "actions": {
225
+ "open-safety-plan": "مشاهده طرح ایمنی",
226
+ "save-draft": "ذخیره پیش‌نویس",
227
+ "submit": "ارسال",
228
+ "lock": "قفل",
229
+ "sign-off": "تأیید",
230
+ "complete-job": "تکمیل کار"
231
+ }
232
+ },
233
+ "messages": {
234
+ "setup-cancelled": "راه‌اندازی SWMS لغو شد.",
235
+ "setup-failed": "شروع SWMS ممکن نشد. طرح منتشرشده، مسئول و اعضای پروژه را بررسی کنید.",
236
+ "sign-off": "قبل از بایگانی، این SWMS را تأیید کنید.",
237
+ "sign-off-tasks-failed": "ساخت یا محول کردن کارهای تأیید ممکن نشد.",
238
+ "completed": "کار SWMS تکمیل و بایگانی شد."
239
+ }
240
+ },
241
+ "catalog-scopes": {
242
+ "pm": {
243
+ "title": "مدیریت پروژه",
244
+ "description": "جریان‌های کار و کاتالوگ‌های مرتبط با وظایف پروژه"
245
+ }
246
+ },
247
+ "meeting-participants": {
248
+ "states": {
249
+ "initial": "اولیه"
250
+ }
251
+ }
252
+ },
253
+ "categories": {
254
+ "terms": {
255
+ "category": "دسته",
256
+ "categories": "دسته‌ها"
257
+ },
258
+ "menus": {
259
+ "categories": {
260
+ "title": "دسته‌ها",
261
+ "description": "مدیریت دسته‌های پروژه"
262
+ }
263
+ },
264
+ "entities": {
265
+ "project-management": {
266
+ "title": "دسته",
267
+ "plural": "دسته‌ها",
268
+ "fields": {
269
+ "parent": {
270
+ "title": "دسته والد"
271
+ }
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "queries": {
277
+ "shared": {
278
+ "status": "وضعیت",
279
+ "project-type": "نوع پروژه",
280
+ "employee": "کارمند",
281
+ "project": "پروژه",
282
+ "projects": "پروژه‌ها"
283
+ },
284
+ "reports": {
285
+ "projects-by-status": {
286
+ "title": "پروژه‌ها بر اساس وضعیت",
287
+ "description": "تعداد پروژه‌ها گروه‌بندی‌شده بر اساس وضعیت.",
288
+ "fields": {
289
+ "project-count": "تعداد پروژه"
290
+ }
291
+ },
292
+ "member-workload": {
293
+ "title": "بار کاری اعضا",
294
+ "description": "تعداد پروژه‌ها برای هر کارمند به همراه فهرست پروژه‌ها.",
295
+ "fields": {
296
+ "project-count": "تعداد پروژه"
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex-platform/module-project-management-client",
3
- "version": "0.0.54",
3
+ "version": "0.0.56",
4
4
  "sideEffects": false,
5
5
  "peerDependencies": {
6
- "@acorex-platform/module-data-management-client": "0.0.54",
6
+ "@acorex-platform/module-data-management-client": "0.0.56",
7
7
  "@angular/common": "^21.0.0 || ^22.0.0",
8
8
  "@angular/core": "^21.0.0 || ^22.0.0"
9
9
  },