@acorex-platform/module-asset-management-client 0.0.20

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-asset-management-client.mjs","sources":["../../../../libs/modules/asset-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/asset-management/client/src/lib/manifest.ts","../../../../libs/modules/asset-management/client/src/lib/middlewares/asset-system-type-has-child.middleware.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-rental-history/asset-rental-history.validation.ts","../../../../libs/modules/asset-management/client/src/lib/middlewares/asset-rental-history-party.middleware.ts","../../../../libs/modules/asset-management/client/src/lib/middlewares/index.ts","../../../../libs/modules/asset-management/client/src/lib/asset-management.module.ts","../../../../libs/modules/asset-management/client/src/lib/feature-definition.provider.ts","../../../../libs/modules/asset-management/client/src/lib/menu.provider.ts","../../../../libs/modules/asset-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/asset-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-status.provider.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-rental-history/create-asset-rental-history-rent.commands.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-type-section-builder/asset-type-section-builder.types.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-type-section-builder/asset-type-section-builder.component.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-type-section-builder/asset-type-section-builder.component.html","../../../../libs/modules/asset-management/client/src/lib/features/asset-type-section-builder/save-asset-type-components.command.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-type-section-builder/asset-type-section-builder-page.component.ts","../../../../libs/modules/asset-management/client/src/lib/features/asset-type-section-builder/asset-type-section-builder-page-component.provider.ts","../../../../libs/modules/asset-management/client/src/lib/services/asset-operational-status.service.ts","../../../../libs/modules/asset-management/client/src/lib/services/asset-operational-status.types.ts","../../../../libs/modules/asset-management/client/src/lib/features/index.ts","../../../../libs/modules/asset-management/client/src/acorex-platform-module-asset-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport type {\n AXPCatalogScopeDefinition,\n AXPCatalogScopeDefinitionProvider,\n} from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { ASSET_CATALOG_SCOPE_BOOKING } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst QUESTIONNAIRE = 'AssessmentManagement.Questionnaire';\nconst QUESTION_BANK_ITEM = 'AssessmentManagement.QuestionBankItem';\nconst WORKFLOW_DEFINITION = 'WorkflowManagement.WorkflowDefinition';\n\nconst ASSET_CATALOG_TARGETS = [QUESTIONNAIRE, QUESTION_BANK_ITEM, WORKFLOW_DEFINITION] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMAssetManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: ASSET_CATALOG_SCOPE_BOOKING,\n title: '@asset-management:catalog-scopes.booking.title',\n description: '@asset-management:catalog-scopes.booking.description',\n targets: [...ASSET_CATALOG_TARGETS],\n icon: 'fa-light fa-calendar-check',\n cssClass: 'primary-surface',\n order: 25,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Asset Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const AssetManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n type: 'domain',\n domain: 'asset-maintenance',\n required: false,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","//#region ---- Imports ----\n\nimport { AXPEntityStorageMiddleware } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface AssetSystemTypeListItemLike {\n childrenCount?: number;\n hasChild?: boolean;\n}\n\n//#endregion\n\n//#region ---- Asset System Type Has Child Middleware ----\n\n/**\n * Enriches AssetSystemType query results with `hasChild` for hierarchical tree views.\n * Uses `childrenCount` from the storage query pipeline when available.\n */\nexport const assetSystemTypeHasChildMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['query', 'queryAll'],\n entity: `${RootConfig.module.name}.${RootConfig.entities.assetSystemType.name}`,\n order: 10,\n },\n\n execute: async (ctx, next) => {\n await next();\n\n if (!ctx.result?.items?.length) {\n return;\n }\n\n ctx.result = {\n ...ctx.result,\n items: (ctx.result.items as AssetSystemTypeListItemLike[]).map((item) => ({\n ...item,\n hasChild: (item.childrenCount ?? 0) > 0,\n })),\n };\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXMAssetManagementAssetRentalHistoryEntityModel } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Persist validation ----\n\nfunction hasPartyId(value: unknown): boolean {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nexport function assertRentalPartyForDirection(\n data: Pick<\n AXMAssetManagementAssetRentalHistoryEntityModel,\n 'rentalDirection' | 'rentedToId' | 'rentedFromId'\n >,\n): void {\n if (data.rentalDirection === 'rentTo' && !hasPartyId(data.rentedToId)) {\n throw new Error(\n '@asset-management:assetRentalHistories.entities.assetRentalHistory.validations.rented-to-required',\n );\n }\n\n if (data.rentalDirection === 'rentFrom' && !hasPartyId(data.rentedFromId)) {\n throw new Error(\n '@asset-management:assetRentalHistories.entities.assetRentalHistory.validations.rented-from-required',\n );\n }\n\n if (!hasPartyId(data.rentedToId) && !hasPartyId(data.rentedFromId)) {\n throw new Error(\n '@asset-management:assetRentalHistories.entities.assetRentalHistory.validations.rental-party-required',\n );\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPEntityStorageMiddleware,\n AXPMiddlewareAbortError,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\nimport { assertRentalPartyForDirection } from '../features/asset-rental-history/asset-rental-history.validation';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype RentalPartyData = {\n rentalDirection?: 'rentTo' | 'rentFrom';\n rentedToId?: string | null;\n rentedFromId?: string | null;\n rentedTo?: unknown;\n rentedFrom?: unknown;\n};\n\n//#endregion\n\n//#region ---- Asset Rental History Party Middleware ----\n\n/**\n * Ensures the supplier party matching rentalDirection is set, and clears the opposite party.\n */\nexport const assetRentalHistoryPartyMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create', 'update'],\n entity: `${RootConfig.module.name}.${RootConfig.entities.assetRentalHistory.name}`,\n order: 8,\n },\n\n execute: async (ctx, next) => {\n if (!ctx.data || typeof ctx.data !== 'object') {\n await next();\n return;\n }\n\n const incoming = ctx.data as RentalPartyData;\n let previous: RentalPartyData = (ctx.previous ?? {}) as RentalPartyData;\n\n if (ctx.op === 'update' && ctx.id != null && !ctx.previous) {\n previous = (await ctx.backend.getOne(ctx.entityName, ctx.id).catch(() => ({}))) as RentalPartyData;\n }\n\n const merged: RentalPartyData = {\n ...previous,\n ...incoming,\n };\n\n if (merged.rentalDirection === 'rentTo') {\n incoming.rentedFromId = null;\n incoming.rentedFrom = undefined;\n merged.rentedFromId = null;\n merged.rentedFrom = undefined;\n } else if (merged.rentalDirection === 'rentFrom') {\n incoming.rentedToId = null;\n incoming.rentedTo = undefined;\n merged.rentedToId = null;\n merged.rentedTo = undefined;\n }\n\n try {\n assertRentalPartyForDirection(merged as never);\n } catch (error) {\n throw new AXPMiddlewareAbortError(\n error instanceof Error ? error.message : String(error),\n {\n code: 'RENTAL_PARTY_REQUIRED',\n status: 400,\n },\n );\n }\n\n await next();\n },\n};\n\n//#endregion\n","//#region ---- Middleware Exports ----\n\nexport { assetSystemTypeHasChildMiddleware } from './asset-system-type-has-child.middleware';\nexport { assetRentalHistoryPartyMiddleware } from './asset-rental-history-party.middleware';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_FEATURE_DEFINITION_PROVIDER,\n AXP_MODULE_MANIFEST_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';\nimport { AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';\nimport { provideCommand, provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\n// import { AXMAssetManagementInspectionEntityModule } from '@acorex-platform/module-asset-management-client/contracts';\nimport { AXMAssetManagementCommandKeys } from '@acorex-platform/module-asset-management-client/contracts';\nimport { AXMAssetManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AssetManagementManifest } from './manifest';\nimport { assetSystemTypeHasChildMiddleware, assetRentalHistoryPartyMiddleware } from './middlewares';\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [],\n providers: [\n\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: AssetManagementManifest,\n multi: true,\n },\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMAssetManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n\n // Feature Definition Provider (lazy-loaded)\n provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () =>\n import('./feature-definition.provider').then((m) => m.AXMAssetManagementFeatureDefinitionProvider),\n ),\n // Permission Definition Provider (lazy-loaded)\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMAssetManagementPermissionDefinitionProvider),\n ),\n // Menu Provider (lazy-loaded)\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMAssetManagementMenuProvider),\n ),\n // Entity Provider (lazy-loaded)\n \n // Search Provider (lazy-loaded)\n provideLazyProvider(AXP_SEARCH_PROVIDER, () =>\n import('./search-command.provider').then((m) => m.AXMAssetManagementSearchCommandProvider),\n ),\n provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () =>\n import('./features/asset-type-section-builder').then((m) => m.AXMAssetTypeComponentsPageComponentProvider),\n ),\n provideCommand('AssetType:Components:Save', () =>\n import('./features/asset-type-section-builder/save-asset-type-components.command').then(\n (m) => m.AXMSaveAssetTypeComponentsCommand,\n ),\n ),\n provideCommand(AXMAssetManagementCommandKeys.AssetRentalHistory.RentFrom, () =>\n import('./features/asset-rental-history/create-asset-rental-history-rent.commands').then(\n (m) => m.AXMCreateAssetRentalHistoryRentFromCommand,\n ),\n ),\n provideCommand(AXMAssetManagementCommandKeys.AssetRentalHistory.RentTo, () =>\n import('./features/asset-rental-history/create-asset-rental-history-rent.commands').then(\n (m) => m.AXMCreateAssetRentalHistoryRentToCommand,\n ),\n ),\n provideCommandSetups([\n {\n key: AXMAssetManagementCommandKeys.WorkflowActivity.RecalculateOperationalStatus,\n command: () =>\n import('./features/workflows/recalculate-asset-operational-status.activity').then(\n (c) => c.RecalculateAssetOperationalStatusActivity,\n ),\n },\n ]),\n // provideLazyProvider(AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, () =>\n // import('./features/asset-status.rules').then((m) => m.AXMAssetManagementAssetStatusRulesExpressionScopeProvider),\n // ),\n // Status Providers\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/asset-status.provider').then((m) => m.AXMAssetManagementAssetStatusProvider),\n ),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/asset-rental-history-status.provider').then(\n (m) => m.AXMAssetManagementAssetRentalHistoryStatusProvider,\n ),\n ),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/asset-lifecycle.provider').then((m) => m.AXMAssetManagementAssetLifecycleStatusProvider),\n ),\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: assetSystemTypeHasChildMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: assetRentalHistoryPartyMiddleware,\n multi: true,\n },\n ],\n})\nexport class AXMAssetManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPFeatureDefinitionProvider,\n AXPFeatureDefinitionProviderContext,\n} from '@acorex-platform/framework-client/core';\nimport { AXMAssetManagementFeatureKeys } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Feature Definition Provider ----\n\n/**\n * Asset Management Feature Definition Provider.\n * Provides feature definitions for the Asset Management module.\n */\nexport class AXMAssetManagementFeatureDefinitionProvider implements AXPFeatureDefinitionProvider {\n async provide(context: AXPFeatureDefinitionProviderContext): Promise<void> {\n // Asset Management feature\n context.addFeature(AXMAssetManagementFeatureKeys.AssetManagement, {\n title: '@asset-management:features.asset-management.title',\n description: '@asset-management:features.asset-management.description',\n defaultValue: true,\n type: 'boolean',\n });\n\n // // Advanced Maintenance feature\n // context.addFeature(AXMAssetManagementFeatureKeys.AdvancedMaintenance, {\n // title: '@asset-management:features.advanced-maintenance.title',\n // description: '@asset-management:features.advanced-maintenance.description',\n // defaultValue: false,\n // type: 'boolean',\n // });\n\n // // Maintenance Scheduling feature\n // context.addFeature(AXMAssetManagementFeatureKeys.MaintenanceScheduling, {\n // title: '@asset-management:features.maintenance-scheduling.title',\n // description: '@asset-management:features.maintenance-scheduling.description',\n // defaultValue: true,\n // type: 'boolean',\n // });\n\n // // Inspection Workflow feature\n // context.addFeature(AXMAssetManagementFeatureKeys.InspectionWorkflow, {\n // title: '@asset-management:features.inspection-workflow.title',\n // description: '@asset-management:features.inspection-workflow.description',\n // defaultValue: true,\n // type: 'boolean',\n // });\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPAssetsMaintenancePermissionKeys\n} from '@acorex-platform/module-asset-management-client/contracts';\nimport { AXMAssetManagementMenuKeys } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\n/**\n * Asset Management Menu Provider.\n * Provides menu items for the Asset Management module with permission and feature checks.\n */\nexport class AXMAssetManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPAssetsMaintenancePermissionKeys;\n const PLAN_EQUIPMENT_MENU_KEY = 'Configuration:Menu:PlantEquipment';\n\n context.find(AXPCommonMenuKeys.PlantEquipment).addItems([\n {\n name: AXMAssetManagementMenuKeys.Assets,\n text: '@asset-management:assets.menus.root.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.asset.name),\n priority: 2,\n icon: RootConfig.entities.asset.icon,\n policy: {\n features: [module.name],\n permissions: [keys.MaintainAssets],\n },\n },\n {\n name: AXMAssetManagementMenuKeys.AssetSystems,\n text: '@asset-management:assetSystems.menus.root.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.assetSystem.name),\n priority: 3,\n icon: RootConfig.entities.assetSystem.icon,\n policy: {\n features: [module.name],\n permissions: [keys.MaintainAssets],\n },\n },\n ]);\n\n const mainAssetsMaintenanceDivider = context.find(\n AXMAssetManagementMenuKeys.MainPlanEquipmentAssetsMaintenanceDivider,\n );\n if (!mainAssetsMaintenanceDivider.exists) {\n context.find(AXPCommonMenuKeys.PlantEquipment).addItems([\n {\n name: AXMAssetManagementMenuKeys.MainPlanEquipmentAssetsMaintenanceDivider,\n text: '',\n type: 'break',\n priority: 10,\n },\n ]);\n }\n\n const planEquipmentMenu = context.find(PLAN_EQUIPMENT_MENU_KEY);\n if (!planEquipmentMenu.exists) {\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: PLAN_EQUIPMENT_MENU_KEY,\n priority: 9000,\n text: '@general:menus.plan-equipment.title',\n icon: module.icon,\n },\n ]);\n }\n\n context.find(PLAN_EQUIPMENT_MENU_KEY).addItems([\n {\n name: AXMAssetManagementMenuKeys.AssetTypes,\n text: '@asset-management:assetTypes.menus.root.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.assetType.name),\n priority: 2,\n icon: RootConfig.entities.assetType.icon,\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n {\n name: AXMAssetManagementMenuKeys.AssetSystemTypes,\n text: '@asset-management:assetSystemTypes.menus.root.title',\n path: this.entityService.createPath(module.name, RootConfig.entities.assetSystemType.name),\n priority: 3,\n icon: RootConfig.entities.assetSystemType.icon,\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n ]);\n\n const planEquipmentAssetsMaintenanceDivider = context.find(\n AXMAssetManagementMenuKeys.PlanEquipmentAssetsMaintenanceDivider,\n );\n if (!planEquipmentAssetsMaintenanceDivider.exists) {\n context.find(PLAN_EQUIPMENT_MENU_KEY).addItems([\n {\n name: AXMAssetManagementMenuKeys.PlanEquipmentAssetsMaintenanceDivider,\n text: '',\n type: 'break',\n priority: 10,\n },\n ]);\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 AXPAssetsMaintenancePermissionKeys\n} from '@acorex-platform/module-asset-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ----- Permission Definition Provider -----\n\n/**\n * Registers Assets & Maintenance capabilities owned by asset-management.\n */\n@Injectable()\nexport class AXMAssetManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPAssetsMaintenancePermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:assets-maintenance.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.AssetsMaintenance.Root, `${G}.assets-maintenance.title`, `${G}.assets-maintenance.description`, { order: 70 });\n\n context\n .addGroup(\n groups.AssetsMaintenance.Assets,\n `${G}.assets-maintenance-assets.title`,\n `${G}.assets-maintenance-assets.description`,\n { parent: groups.AssetsMaintenance.Root, order: 10 },\n )\n .addPermission(keys.Access, `${P}.access.title`, `${P}.access.description`)\n .endPermission()\n .addPermission(keys.MaintainAssets, `${P}.maintain-assets.title`, `${P}.maintain-assets.description`)\n .endPermission()\n .addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nexport class AXMAssetManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-asset',\n group: 'command',\n title: '@asset-management:assets.search.create-asset.title',\n icon: RootConfig.entities.asset.icon,\n description: '@asset-management:assets.search.create-asset.description',\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(`${RootConfig.module.name}.${RootConfig.entities.asset.name}`, {\n name: RootConfig.entities.asset.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.asset.title,\n }),\n },\n },\n ];\n}\n\n//#endregion\n","import { AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\nimport { AXStyleColorType } from '@acorex/cdk/common';\n\nimport { AXM_ASSET_STATUS_DEFINITION_KEY, AXMAssetStatus } from '@acorex-platform/module-asset-management-client/contracts';\n\nexport class AXMAssetManagementAssetStatusProvider extends AXPStatusProvider {\n readonly key = AXM_ASSET_STATUS_DEFINITION_KEY;\n\n readonly statuses = [\n {\n name: AXMAssetStatus.Available,\n title: '@asset-management:assets.states.available',\n icon: 'fa-light fa-circle-check',\n color: 'success' as AXStyleColorType,\n order: 1,\n isInitial: true,\n isFinal: false,\n generateView: true,\n },\n {\n name: AXMAssetStatus.Assigned,\n title: '@asset-management:assets.states.assigned',\n icon: 'fa-light fa-user-check',\n color: 'info' as AXStyleColorType,\n order: 2,\n isInitial: false,\n isFinal: false,\n generateView: true,\n },\n {\n name: AXMAssetStatus.UnderMaintenanceInspection,\n title: '@asset-management:assets.states.under-maintenance',\n icon: 'fa-light fa-toolbox',\n color: 'warning' as AXStyleColorType,\n order: 3,\n isInitial: false,\n isFinal: false,\n generateView: true,\n },\n {\n name: AXMAssetStatus.OutOfService,\n title: '@asset-management:assets.states.out-of-service',\n icon: 'fa-light fa-triangle-exclamation',\n color: 'danger' as AXStyleColorType,\n order: 4,\n isInitial: false,\n isFinal: false,\n generateView: true,\n },\n {\n name: AXMAssetStatus.Lost,\n title: '@asset-management:assets.states.lost',\n icon: 'fa-light fa-magnifying-glass-minus',\n color: 'danger' as AXStyleColorType,\n order: 5,\n isInitial: false,\n isFinal: false,\n generateView: true,\n },\n ];\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXMAssetStatus.Available,\n to: AXMAssetStatus.Assigned,\n title: '@asset-management:assets.transitions.assign',\n },\n {\n from: AXMAssetStatus.Assigned,\n to: AXMAssetStatus.Available,\n title: '@asset-management:assets.transitions.unassign',\n },\n\n {\n from: AXMAssetStatus.Available,\n to: AXMAssetStatus.UnderMaintenanceInspection,\n title: '@asset-management:assets.transitions.start-maintenance',\n },\n {\n from: AXMAssetStatus.Assigned,\n to: AXMAssetStatus.UnderMaintenanceInspection,\n title: '@asset-management:assets.transitions.start-maintenance',\n },\n {\n from: AXMAssetStatus.OutOfService,\n to: AXMAssetStatus.UnderMaintenanceInspection,\n title: '@asset-management:assets.transitions.start-maintenance',\n },\n\n {\n from: AXMAssetStatus.UnderMaintenanceInspection,\n to: AXMAssetStatus.Available,\n title: '@asset-management:assets.transitions.release-as-available',\n },\n {\n from: AXMAssetStatus.UnderMaintenanceInspection,\n to: AXMAssetStatus.Assigned,\n title: '@asset-management:assets.transitions.restore-assignment',\n },\n {\n from: AXMAssetStatus.UnderMaintenanceInspection,\n to: AXMAssetStatus.OutOfService,\n title: '@asset-management:assets.transitions.keep-out-of-service',\n },\n\n {\n from: AXMAssetStatus.Available,\n to: AXMAssetStatus.OutOfService,\n title: '@asset-management:assets.transitions.mark-out-of-service',\n },\n {\n from: AXMAssetStatus.Assigned,\n to: AXMAssetStatus.OutOfService,\n title: '@asset-management:assets.transitions.mark-out-of-service',\n },\n {\n from: AXMAssetStatus.OutOfService,\n to: AXMAssetStatus.Available,\n title: '@asset-management:assets.transitions.restore-service',\n },\n {\n from: AXMAssetStatus.OutOfService,\n to: AXMAssetStatus.Assigned,\n title: '@asset-management:assets.transitions.restore-service',\n },\n\n {\n from: AXMAssetStatus.Available,\n to: AXMAssetStatus.Lost,\n title: '@asset-management:assets.transitions.mark-lost',\n },\n {\n from: AXMAssetStatus.Assigned,\n to: AXMAssetStatus.Lost,\n title: '@asset-management:assets.transitions.mark-lost',\n },\n {\n from: AXMAssetStatus.OutOfService,\n to: AXMAssetStatus.Lost,\n title: '@asset-management:assets.transitions.mark-lost',\n },\n {\n from: AXMAssetStatus.UnderMaintenanceInspection,\n to: AXMAssetStatus.Lost,\n title: '@asset-management:assets.transitions.mark-lost',\n },\n\n {\n from: AXMAssetStatus.Lost,\n to: AXMAssetStatus.Available,\n title: '@asset-management:assets.transitions.found',\n },\n {\n from: AXMAssetStatus.Lost,\n to: AXMAssetStatus.Assigned,\n title: '@asset-management:assets.transitions.found',\n },\n {\n from: AXMAssetStatus.Lost,\n to: AXMAssetStatus.OutOfService,\n title: '@asset-management:assets.transitions.found-out-of-service',\n },\n ];\n // readonly transitions: AXPStatusTransition[] = [\n // {\n // from: AXMAssetStatus.Available,\n // to: AXMAssetStatus.Assigned,\n // title: '@asset-management:assets.transitions.assign',\n // },\n // {\n // from: AXMAssetStatus.Assigned,\n // to: AXMAssetStatus.Available,\n // title: '@asset-management:assets.transitions.unassign',\n // },\n // {\n // from: AXMAssetStatus.Assigned,\n // to: AXMAssetStatus.UnderMaintenanceInspection,\n // title: '@asset-management:assets.transitions.start-maintenance',\n // },\n // {\n // from: AXMAssetStatus.Assigned,\n // to: AXMAssetStatus.OutOfService,\n // title: '@asset-management:assets.transitions.mark-out-of-service',\n // },\n // {\n // from: AXMAssetStatus.Available,\n // to: AXMAssetStatus.UnderMaintenanceInspection,\n // title: '@asset-management:assets.transitions.start-maintenance',\n // },\n // {\n // from: AXMAssetStatus.OutOfService,\n // to: AXMAssetStatus.UnderMaintenanceInspection,\n // title: '@asset-management:assets.transitions.start-maintenance',\n // },\n // {\n // from: AXMAssetStatus.UnderMaintenanceInspection,\n // to: AXMAssetStatus.Available,\n // title: '@asset-management:assets.transitions.complete-maintenance',\n // },\n // {\n // from: AXMAssetStatus.Available,\n // to: AXMAssetStatus.OutOfService,\n // title: '@asset-management:assets.transitions.mark-out-of-service',\n // },\n // {\n // from: AXMAssetStatus.OutOfService,\n // to: AXMAssetStatus.Available,\n // title: '@asset-management:assets.transitions.restore-service',\n // },\n // {\n // from: AXMAssetStatus.Available,\n // to: AXMAssetStatus.Lost,\n // title: '@asset-management:assets.transitions.mark-lost',\n // },\n // {\n // from: AXMAssetStatus.Assigned,\n // to: AXMAssetStatus.Lost,\n // title: '@asset-management:assets.transitions.mark-lost',\n // },\n // {\n // from: AXMAssetStatus.Lost,\n // to: AXMAssetStatus.Available,\n // title: '@asset-management:assets.transitions.found',\n // },\n // ];\n\n readonly defaultStatus = AXMAssetStatus.Available;\n}\n","//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { merge } from 'lodash';\nimport { AXMAssetManagementCommandKeys } from '@acorex-platform/module-asset-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\ntype AXMAssetRentalHistoryRentDirection = 'rentFrom' | 'rentTo';\n\nconst rentalHistorySharedCreateFields = [\n 'rentalDirection',\n 'createdDate',\n 'startDate',\n 'monthlyRent',\n 'expectedReturnDate',\n 'actualReturnDate',\n 'status',\n 'description',\n] as const;\n\nexport interface CreateAssetRentalHistoryRentCommandInput {\n data?: Record<string, unknown>;\n options?: Record<string, unknown>;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction buildRentCreateOptions(\n direction: AXMAssetRentalHistoryRentDirection,\n): Record<string, unknown> {\n const isRentFrom = direction === 'rentFrom';\n\n return {\n includeProperties: [\n ...rentalHistorySharedCreateFields,\n isRentFrom ? 'rentedFromId' : 'rentedToId',\n ],\n excludeProperties: [isRentFrom ? 'rentedToId' : 'rentedFromId'],\n decoration: {\n header: {\n title: isRentFrom\n ? '@asset-management:assetRentalHistories.entities.assetRentalHistory.actions.rent-from.dialog-title'\n : '@asset-management:assetRentalHistories.entities.assetRentalHistory.actions.rent-to.dialog-title',\n },\n },\n process: {\n redirect: false,\n canCreateNewOne: true,\n },\n };\n}\n\n//#endregion\n\n//#region ---- Commands ----\n\n@Injectable({ providedIn: 'root' })\nabstract class AXMCreateAssetRentalHistoryRentCommandBase\n implements AXPCommand<CreateAssetRentalHistoryRentCommandInput, unknown>\n{\n protected readonly commandService = inject(AXPCommandService);\n\n protected abstract readonly rentalDirection: AXMAssetRentalHistoryRentDirection;\n\n async execute(\n input: CreateAssetRentalHistoryRentCommandInput,\n ): AXPCommandExecuteResultPromise<unknown> {\n const seedData = this.resolveSeedData(input);\n const createOptions = buildRentCreateOptions(this.rentalDirection);\n\n const result = await this.commandService.execute('Entity:Create', {\n entity: RootConfig.entities.assetRentalHistory.source,\n entityInfo: {\n name: RootConfig.entities.assetRentalHistory.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.assetRentalHistory.title,\n },\n data: seedData,\n options: createOptions,\n \n });\n\n return result ?? { success: false };\n }\n\n private resolveSeedData(\n input: CreateAssetRentalHistoryRentCommandInput,\n ): Record<string, unknown> {\n const ctx = input;\n const options = (input.options ?? ctx.options ?? {}) as Record<\n string,\n unknown\n >;\n const process = (options['process'] ?? {}) as Record<string, unknown>;\n const processData = process['data'];\n const contextData = ctx.data ?? input.data ?? {};\n\n return merge(\n {},\n typeof contextData === 'object' &&\n contextData !== null &&\n !Array.isArray(contextData)\n ? contextData\n : {},\n typeof processData === 'object' &&\n processData !== null &&\n !Array.isArray(processData)\n ? processData\n : {},\n { rentalDirection: this.rentalDirection },\n );\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMCreateAssetRentalHistoryRentFromCommand extends AXMCreateAssetRentalHistoryRentCommandBase {\n static readonly commandKey =\n AXMAssetManagementCommandKeys.AssetRentalHistory.RentFrom;\n\n protected override readonly rentalDirection = 'rentFrom' as const;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMCreateAssetRentalHistoryRentToCommand extends AXMCreateAssetRentalHistoryRentCommandBase {\n static readonly commandKey =\n AXMAssetManagementCommandKeys.AssetRentalHistory.RentTo;\n\n protected override readonly rentalDirection = 'rentTo' as const;\n}\n\n//#endregion\n","import {AXPDataGenerator} from '@acorex-platform/framework-client/core';\n\nimport {type AXPMultiLanguageString} from '@acorex-platform/framework-shared/core';\n\nimport type {\n AXMAssetTypeSectionBuilderItemValue,\n AXMAssetTypeSectionBuilderSectionValue,\n AXMAssetTypeSectionBuilderValue,\n} from '@acorex-platform/module-asset-management-client/contracts';\n\nexport function normalizeAssetTypeBuilderLocalizedField(\n value: unknown,\n fallback: string,\n): string | AXPMultiLanguageString {\n if (value == null || value === '') {\n return fallback;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n return trimmed || fallback;\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n const record = value as Record<string, unknown>;\n const anyLocaleText = Object.values(record).some(\n (v) => typeof v === 'string' && String(v).trim() !== '',\n );\n if (anyLocaleText) {\n return value as AXPMultiLanguageString;\n }\n }\n return fallback;\n}\n\nexport function createAssetTypeSectionBuilderDefaultValue(assetTypeId?: string): AXMAssetTypeSectionBuilderValue {\n return {\n sections: [\n {\n id: AXPDataGenerator.uuid(),\n code: 1,\n title: 'New Section',\n assetTypeId: assetTypeId ?? '',\n description: '',\n items: [],\n },\n ],\n };\n}\n\nexport function normalizeAssetTypeSectionBuilderValue(\n value: unknown,\n assetTypeId?: string,\n): AXMAssetTypeSectionBuilderValue {\n if (!value || typeof value !== 'object') {\n return createAssetTypeSectionBuilderDefaultValue(assetTypeId);\n }\n\n const raw = value as { sections?: unknown[] };\n if (!Array.isArray(raw.sections) || raw.sections.length === 0) {\n return createAssetTypeSectionBuilderDefaultValue(assetTypeId);\n }\n\n return {\n sections: raw.sections.map((section, sectionIndex) => {\n const sectionData = (section ?? {}) as Partial<AXMAssetTypeSectionBuilderSectionValue>;\n const id = typeof sectionData.id === 'string' && sectionData.id ? sectionData.id : AXPDataGenerator.uuid();\n const sectionItems = Array.isArray(sectionData.items) ? sectionData.items : [];\n\n return {\n id,\n code: typeof sectionData.code === 'number' ? sectionData.code : sectionIndex + 1,\n title: normalizeAssetTypeBuilderLocalizedField(sectionData.title, `Section ${sectionIndex + 1}`),\n assetTypeId:\n typeof sectionData.assetTypeId === 'string' && sectionData.assetTypeId\n ? sectionData.assetTypeId\n : assetTypeId ?? '',\n description: normalizeAssetTypeBuilderLocalizedField(sectionData.description, ''),\n items: sectionItems.map((item, itemIndex) => {\n const itemData = (item ?? {}) as Partial<AXMAssetTypeSectionBuilderItemValue>;\n const rawAt = itemData.assetType;\n const assetTypeIdFromRef =\n rawAt &&\n typeof rawAt === 'object' &&\n typeof (rawAt as { id?: unknown }).id === 'string' &&\n String((rawAt as { id: string }).id).trim()\n ? String((rawAt as { id: string }).id).trim()\n : '';\n const normalizedAssetTypeId =\n typeof itemData.assetTypeId === 'string' && itemData.assetTypeId.trim()\n ? itemData.assetTypeId.trim()\n : assetTypeIdFromRef || (assetTypeId ?? '');\n const assetTypeRef =\n rawAt && typeof rawAt === 'object'\n ? {\n id:\n typeof (rawAt as { id?: string }).id === 'string' && String((rawAt as { id: string }).id).trim()\n ? String((rawAt as { id: string }).id).trim()\n : normalizedAssetTypeId,\n name: normalizeAssetTypeBuilderLocalizedField((rawAt as { name?: unknown }).name, ''),\n }\n : {\n id: normalizedAssetTypeId,\n name: '',\n };\n return {\n id: typeof itemData.id === 'string' && itemData.id ? itemData.id : AXPDataGenerator.uuid(),\n assetTypeSectionId:\n typeof itemData.assetTypeSectionId === 'string' && itemData.assetTypeSectionId\n ? itemData.assetTypeSectionId\n : id,\n assetTypeSectionComponentId:\n typeof itemData.assetTypeSectionComponentId === 'string' && itemData.assetTypeSectionComponentId\n ? itemData.assetTypeSectionComponentId\n : undefined,\n assetTypeId: normalizedAssetTypeId,\n assetType: assetTypeRef,\n assetTypeSection: itemData.assetTypeSection,\n roleName: normalizeAssetTypeBuilderLocalizedField(itemData.roleName, ''),\n count: typeof itemData.count === 'number' ? itemData.count : 1,\n hasMaintenance: itemData.hasMaintenance === true,\n assetId: typeof itemData.assetId === 'string' && itemData.assetId ? itemData.assetId : undefined,\n asset:\n itemData.asset && typeof itemData.asset === 'object'\n ? {\n id:\n typeof (itemData.asset as { id?: unknown }).id === 'string'\n ? ((itemData.asset as { id: string }).id ?? '')\n : '',\n code:\n typeof (itemData.asset as { code?: unknown }).code === 'string'\n ? (itemData.asset as { code: string }).code\n : undefined,\n title: normalizeAssetTypeBuilderLocalizedField(\n (itemData.asset as { title?: unknown }).title,\n '',\n ),\n }\n : undefined,\n };\n }),\n };\n }),\n };\n}\n\nexport type {\n AXMAssetTypeSectionBuilderItemValue,\n AXMAssetTypeSectionBuilderSectionValue,\n AXMAssetTypeSectionBuilderValue,\n} from '@acorex-platform/module-asset-management-client/contracts';\n","import {AXPDataGenerator} from '@acorex-platform/framework-client/core';\nimport {type AXPMultiLanguageString, AXPWidgetsCatalog} from '@acorex-platform/framework-shared/core';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport {\n AXPDynamicFormDefinition,\n AXPDynamicFormFieldDefinition,\n AXPDynamicFormGroupDefinition,\n AXPLayoutBuilderService,\n} from '@acorex-platform/framework-client/layout/builder';\nimport {\n AXPBuilderItem,\n AXPBuilderItemViewModel,\n AXPBuilderSection,\n AXPBuilderValue,\n AXPStandardSectionItemsBuilderComponent,\n AXPStandardSectionItemsBuilderConfig,\n} from '@acorex-platform/framework-client/layout/components';\n\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\nimport {\n AXMAssetTypeSectionBuilderItemValue,\n AXMAssetTypeSectionBuilderValue,\n normalizeAssetTypeBuilderLocalizedField,\n normalizeAssetTypeSectionBuilderValue,\n} from './asset-type-section-builder.types';\n\ninterface AssetTypeSectionBuilderComponentDialogValue {\n assetTypeId: string;\n assetType: {\n id: string;\n name: string;\n };\n roleName: string;\n count: number;\n hasMaintenance: boolean;\n}\n\ninterface AssetTypeSectionBuilderAssetLinkDialogValue {\n assetId: string;\n assetTypeId: string;\n asset: {\n id: string;\n code: string;\n title: string;\n };\n}\n\ninterface AssetTypeSectionDialogValue {\n code: number;\n title: string;\n description: string;\n}\n\n@Component({\n selector: 'axm-asset-type-section-builder',\n templateUrl: './asset-type-section-builder.component.html',\n styleUrl: './asset-type-section-builder.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPStandardSectionItemsBuilderComponent,\n ],\n})\nexport class AXMAssetTypeSectionBuilderComponent {\n readonly value = input<AXMAssetTypeSectionBuilderValue | null | undefined>(null);\n readonly assetTypeId = input<string | undefined>(undefined);\n readonly options = input<Record<string, unknown>>({});\n\n readonly valueChange = output<AXMAssetTypeSectionBuilderValue>();\n\n private readonly standardRef = viewChild(AXPStandardSectionItemsBuilderComponent);\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly translationService = inject(AXTranslationService);\n private readonly disabledSectionPrompt =\n false as unknown as AXPStandardSectionItemsBuilderConfig['promptEditSection'];\n private readonly disabledAddSectionPrompt: NonNullable<AXPStandardSectionItemsBuilderConfig['promptAddSection']> =\n async () => null;\n\n protected readonly builderValue = signal<AXPBuilderValue>({ sections: [] });\n\n protected readonly standardConfig = computed<AXPStandardSectionItemsBuilderConfig>(() => ({\n mapItemToView: (item, _section) => this.mapItemToView(item),\n promptAddSection: this.allowAddSection() ? (value) => this.promptAddSection(value) : this.disabledAddSectionPrompt,\n promptEditSection: this.allowEditSection()\n ? (section, value) => this.promptEditSection(section, value)\n : this.disabledSectionPrompt,\n promptAddItems: this.allowAddItems() ? (sectionId, value) => this.promptAddItems(sectionId, value) : undefined,\n promptEditItem: (item, sectionId, value) =>\n this.linkAssetMode()\n ? this.promptEditLinkedAssetItem(item, sectionId, value)\n : this.promptEditItem(item, sectionId, value),\n confirmRemoveSection: this.linkAssetMode() ? async () => false : undefined,\n confirmRemoveItem: this.linkAssetMode()\n ? (item, sectionId) => this.confirmRemoveLinkedAssetItem(item, sectionId)\n : undefined,\n showSectionTechnicalName: false,\n allowReorderSections: this.allowReorderSections(),\n minSectionCount: this.allowAddSection() ? 1 : Number.MAX_SAFE_INTEGER,\n texts: {\n addSection: '@asset-management:assetTypeSections.entities.assetTypeSection.actions.add-section.title',\n addItem: '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.actions.add-item.title',\n },\n }));\n\n protected readonly hideHeaderActions = computed<boolean>(\n () => (this.options()['hideHeaderActions'] as boolean) === true,\n );\n protected readonly allowAddSection = computed<boolean>(\n () => (this.options()['allowAddSection'] as boolean) !== false,\n );\n protected readonly allowEditSection = computed<boolean>(() => {\n if (this.linkAssetMode()) {\n return false;\n }\n return (this.options()['allowEditSection'] as boolean) !== false;\n });\n protected readonly allowAddItems = computed<boolean>(() => (this.options()['allowAddItems'] as boolean) !== false);\n protected readonly allowReorderSections = computed<boolean>(() => {\n const option = this.options()['allowReorderSections'];\n return typeof option === 'boolean' ? option : true;\n });\n protected readonly readonly = computed<boolean>(() => (this.options()['readonly'] as boolean) === true);\n protected readonly linkAssetMode = computed<boolean>(() => (this.options()['linkAssetMode'] as boolean) === true);\n\n #syncValueToBuilder = effect(() => {\n const normalized = normalizeAssetTypeSectionBuilderValue(this.value(), this.assetTypeId());\n this.builderValue.set(this.toBuilderValue(normalized));\n });\n\n async addSection(): Promise<void> {\n await this.standardRef()?.addSection();\n }\n\n /** Aligns section-items baseline to persisted value after save. */\n syncAfterSave(value: AXMAssetTypeSectionBuilderValue): void {\n const normalized = normalizeAssetTypeSectionBuilderValue(value, this.assetTypeId());\n this.builderValue.set(this.toBuilderValue(normalized));\n queueMicrotask(() => this.standardRef()?.markClean());\n }\n\n /** Re-applies the current `[value]` input and clears builder dirty state after discard. */\n resetAfterDiscard(): void {\n const normalized = normalizeAssetTypeSectionBuilderValue(this.value(), this.assetTypeId());\n this.builderValue.set(this.toBuilderValue(normalized));\n queueMicrotask(() => this.standardRef()?.markClean());\n }\n\n protected onBuilderValueChange(next: AXPBuilderValue): void {\n this.builderValue.set(next);\n const value = this.fromBuilderValue(next);\n this.valueChange.emit(value);\n }\n\n private async promptAddSection(value: AXPBuilderValue): Promise<Record<string, unknown> | null> {\n const seed: AssetTypeSectionDialogValue = {\n code: this.getNextSectionCode(value),\n title: '',\n description: '',\n };\n const dialogValue = await this.promptSectionForm('create', seed, value);\n if (!dialogValue) return null;\n\n const sectionId = AXPDataGenerator.uuid();\n return {\n id: sectionId,\n name: sectionId,\n code: dialogValue.code,\n title: dialogValue.title,\n description: dialogValue.description,\n };\n }\n\n private async promptEditSection(\n section: AXPBuilderSection,\n value: AXPBuilderValue,\n ): Promise<Record<string, unknown> | null> {\n const seed: AssetTypeSectionDialogValue = {\n code: Number(section['code'] ?? 0) || this.getNextSectionCode(value),\n title: this.resolveLocalizedTextForDialog(section['title']),\n description: this.resolveLocalizedTextForDialog(section['description']),\n };\n const dialogValue = await this.promptSectionForm('edit', seed, value, section.id);\n if (!dialogValue) return null;\n\n return {\n ...section,\n code: dialogValue.code,\n title: dialogValue.title,\n description: dialogValue.description,\n };\n }\n\n private async promptSectionForm(\n mode: 'create' | 'edit',\n seed: AssetTypeSectionDialogValue,\n value: AXPBuilderValue,\n currentSectionId?: string,\n ): Promise<AssetTypeSectionDialogValue | null> {\n const title =\n mode === 'create'\n ? (await this.translationService.translateAsync(\n '@asset-management:assetTypeSections.entities.assetTypeSection.actions.add-section.title',\n )) || 'Add Section'\n : (await this.translationService.translateAsync('@general:actions.edit.title')) || 'Edit';\n\n const result = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean; value?: AssetTypeSectionDialogValue }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ ...seed })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(this.buildSectionFormDefinition());\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n\n const context = dialogRef.context() as Partial<AssetTypeSectionDialogValue>;\n const code = Number(context.code ?? 0);\n const titleValue = String(context.title ?? '').trim();\n const description = String(context.description ?? '');\n\n if (!Number.isFinite(code) || code <= 0 || !titleValue) {\n return { success: false };\n }\n\n if (this.isDuplicateSectionCode(value, code, currentSectionId)) {\n return { success: false };\n }\n\n return { success: true, kind: 'object', value: {\n code,\n title: titleValue,\n description,\n },\n };\n });\n })\n .show();\n\n return result?.success && result.value ? result.value : null;\n }\n\n private isDuplicateSectionCode(value: AXPBuilderValue, code: number, currentSectionId?: string): boolean {\n return value.sections.some((section) => {\n if (currentSectionId && section.id === currentSectionId) return false;\n const sectionCode = Number(section['code'] ?? 0);\n return Number.isFinite(sectionCode) && sectionCode === code;\n });\n }\n\n private getNextSectionCode(value: AXPBuilderValue): number {\n const maxCode = value.sections.reduce((max, section) => {\n const sectionCode = Number(section['code'] ?? 0);\n if (!Number.isFinite(sectionCode)) return max;\n return Math.max(max, sectionCode);\n }, 0);\n return maxCode + 1;\n }\n\n private mapItemToView(item: AXPBuilderItem): AXPBuilderItemViewModel {\n const roleName = this.resolveLocalizedTextForDialog(item['roleName'] ?? '');\n const assetTypeName = this.resolveLocalizedTextForDialog(\n (item['assetType'] as { name?: unknown } | undefined)?.name ?? '',\n );\n const count = Number(item['count'] ?? 0);\n const hasMaintenance = item['hasMaintenance'] === true;\n\n const linkedAsset = item['asset'] as { code?: unknown; title?: unknown } | undefined;\n const linkedAssetCode = typeof linkedAsset?.code === 'string' ? linkedAsset.code : '';\n const linkedAssetTitle = this.resolveLocalizedTextForDialog(linkedAsset?.title ?? '');\n\n if (this.linkAssetMode()) {\n const hasLinkedAsset = !!item['assetId'];\n const linkedAssetName =\n linkedAssetTitle || '@asset-management:assets.entities.asset.components.asset-component.no-link';\n const linkedAssetDisplay = linkedAssetCode ? `${linkedAssetName} (${linkedAssetCode})` : linkedAssetName;\n return {\n icon: hasLinkedAsset ? 'fa-light fa-link' : 'fa-light fa-link-slash',\n iconTone: hasLinkedAsset ? 'easy' : 'hard',\n title: roleName,\n name: linkedAssetDisplay,\n badges: [\n {\n text: hasLinkedAsset\n ? '@asset-management:assets.entities.asset.components.asset-component.assigned'\n : '@asset-management:assets.entities.asset.components.asset-component.unassigned',\n variant: hasLinkedAsset ? 'success' : 'warning',\n },\n ...(hasLinkedAsset && linkedAssetTitle\n ? [\n {\n text: linkedAssetTitle,\n variant: 'neutral' as const,\n },\n ]\n : []),\n {\n text: assetTypeName,\n variant: 'neutral',\n },\n ],\n };\n }\n\n return {\n icon: 'fa-light fa-cube',\n title: roleName,\n name: assetTypeName,\n badges: [\n {\n text: `x${count}`,\n variant: 'neutral',\n },\n ...(hasMaintenance\n ? [\n {\n text: '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.fields.hasMaintenance.title',\n variant: 'success' as const,\n },\n ]\n : []),\n ],\n };\n }\n\n private async promptAddItems(sectionId: string, value: AXPBuilderValue): Promise<AXPBuilderItem[] | null> {\n const section = value.sections.find((item) => item.id === sectionId);\n if (!section) return null;\n\n const itemValue = await this.promptItemForm('create');\n if (!itemValue) return null;\n\n const nextOrder = section.items.length;\n const id = AXPDataGenerator.uuid();\n\n return [\n {\n id,\n order: nextOrder,\n name: itemValue.assetType.name,\n roleName: itemValue.roleName,\n count: itemValue.count,\n hasMaintenance: itemValue.hasMaintenance,\n assetType: itemValue.assetType,\n assetTypeSectionId: section.id,\n assetTypeId: itemValue.assetTypeId || this.assetTypeId() || '',\n } as AXPBuilderItem,\n ];\n }\n\n private async promptEditItem(\n item: AXPBuilderItem,\n _sectionId: string,\n _value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n const dialogValue = await this.promptItemForm('edit', {\n assetTypeId: String(item['assetTypeId'] ?? this.assetTypeId() ?? ''),\n assetType: (item['assetType'] as AssetTypeSectionBuilderComponentDialogValue['assetType'] | undefined) ?? {\n id: String(item['assetTypeId'] ?? this.assetTypeId() ?? ''),\n name: '',\n },\n roleName: this.resolveLocalizedTextForDialog(item['roleName'] ?? item['name'] ?? ''),\n count: Number(item['count'] ?? 1),\n hasMaintenance: item['hasMaintenance'] === true,\n });\n if (!dialogValue) return null;\n\n return {\n ...item,\n name: dialogValue.assetType.name,\n roleName: dialogValue.roleName,\n count: dialogValue.count,\n hasMaintenance: dialogValue.hasMaintenance,\n assetTypeId: dialogValue.assetTypeId,\n assetType: dialogValue.assetType,\n };\n }\n\n private async promptEditLinkedAssetItem(\n item: AXPBuilderItem,\n _sectionId: string,\n _value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n const seed: AssetTypeSectionBuilderAssetLinkDialogValue = {\n assetId: String(item['assetId'] ?? ''),\n assetTypeId: String(item['assetTypeId'] ?? '').trim(),\n asset: (item['asset'] as AssetTypeSectionBuilderAssetLinkDialogValue['asset'] | undefined) ?? {\n id: '',\n code: '',\n title: '',\n },\n };\n const result = await this.promptLinkAssetForm(seed);\n if (!result) {\n return null;\n }\n return {\n ...item,\n assetId: result.assetId || undefined,\n asset: result.assetId ? result.asset : undefined,\n };\n }\n\n private async promptLinkAssetForm(\n seed: AssetTypeSectionBuilderAssetLinkDialogValue,\n ): Promise<AssetTypeSectionBuilderAssetLinkDialogValue | null> {\n const title =\n (await this.translationService.translateAsync(\n '@asset-management:assets.entities.asset.components.asset-component.actions.edit.title',\n )) || 'Edit Component Asset';\n const result = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean; value?: AssetTypeSectionBuilderAssetLinkDialogValue }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ ...seed })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(this.buildLinkAssetFormDefinition());\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as Partial<AssetTypeSectionBuilderAssetLinkDialogValue>;\n const assetId = String(context.assetId ?? '').trim();\n const asset = context.asset ?? { id: assetId, code: '', title: '' };\n return { success: true, kind: 'object', value: {\n assetId,\n assetTypeId: String(context.assetTypeId ?? ''),\n asset: {\n id: String(asset.id ?? assetId),\n code: String(asset.code ?? ''),\n title: String(asset.title ?? ''),\n },\n },\n };\n });\n })\n .show();\n return result?.success && result.value ? result.value : null;\n }\n\n private async confirmRemoveLinkedAssetItem(item: AXPBuilderItem, sectionId: string): Promise<boolean> {\n const hasLinkedAsset = typeof item['assetId'] === 'string' && item['assetId'].length > 0;\n if (!hasLinkedAsset) {\n return false;\n }\n\n const deleteTitle =\n (await this.translationService.translateAsync(\n '@asset-management:assets.entities.asset.components.asset-component.actions.delete.title',\n )) || 'Remove Component Asset';\n const linkedAsset = item['asset'] as { title?: unknown; code?: unknown } | undefined;\n const linkedAssetTitle = this.resolveLocalizedTextForDialog(linkedAsset?.title ?? '');\n const linkedAssetCode = typeof linkedAsset?.code === 'string' ? linkedAsset.code : '';\n const assetDisplay = linkedAssetTitle || linkedAssetCode || String(item['assetId'] ?? '');\n const assetLabel = `${assetDisplay}${linkedAssetCode && linkedAssetTitle ? ` (${linkedAssetCode})` : ''}`;\n const deleteResult = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean }>((dialog) => {\n dialog\n .setTitle(deleteTitle)\n .setMessage('@general:workflow.confirm-delete')\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ assetLabel })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(this.buildRemoveLinkedAssetFormDefinition());\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').custom({\n title: '@general:actions.delete.title',\n color: 'danger',\n command: {\n name: 'delete',\n options: {\n validate: false,\n },\n },\n });\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() !== 'delete') {\n return { success: false };\n }\n return { success: true, kind: 'object', data: undefined };\n });\n })\n .show();\n\n if (deleteResult?.success === true) {\n this.unlinkLinkedAssetItem(item.id, sectionId);\n }\n\n // Prevent structural row removal; only unlink asset assignment.\n return false;\n }\n\n private buildRemoveLinkedAssetFormDefinition(): AXPDynamicFormDefinition {\n const group: AXPDynamicFormGroupDefinition = {\n name: 'unlink-asset',\n title: '@asset-management:assets.entities.asset.components.asset-component.title',\n parameters: [\n {\n path: 'assetLabel',\n title: '@asset-management:assets.entities.asset.title',\n widget: {\n path: 'assetLabel',\n type: AXPWidgetsCatalog.text,\n options: {\n disabled: true,\n },\n },\n },\n ],\n };\n return { groups: [group] };\n }\n\n private unlinkLinkedAssetItem(itemId: string, sectionId: string): void {\n const nextValue: AXPBuilderValue = {\n sections: this.builderValue().sections.map((section) => {\n if (section.id !== sectionId) {\n return section;\n }\n return {\n ...section,\n items: section.items.map((item) => {\n if (item.id !== itemId) {\n return item;\n }\n return {\n ...item,\n assetId: undefined,\n asset: undefined,\n };\n }),\n };\n }),\n };\n this.onBuilderValueChange(nextValue);\n }\n\n private async promptItemForm(\n mode: 'create' | 'edit',\n seed?: AssetTypeSectionBuilderComponentDialogValue,\n ): Promise<AssetTypeSectionBuilderComponentDialogValue | null> {\n const defaultSeed: AssetTypeSectionBuilderComponentDialogValue = seed ?? {\n assetTypeId: '',\n assetType: {\n id: '',\n name: '',\n },\n roleName: '',\n count: 1,\n hasMaintenance: false,\n };\n const title =\n mode === 'create'\n ? (await this.translationService.translateAsync(\n '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.actions.add-item.title',\n )) || 'Add Component'\n : (await this.translationService.translateAsync('@general:actions.edit.title')) || 'Edit';\n\n const formDefinition = this.buildItemFormDefinition();\n const result = await this.layoutBuilder\n .create()\n .dialog<{ success: boolean; value?: AssetTypeSectionBuilderComponentDialogValue }>((dialog) => {\n dialog\n .setTitle(title)\n .setSize('sm')\n .setCloseButton(true)\n .setContext({ ...defaultSeed })\n .content((layout) => {\n layout.mode('edit');\n layout.dynamicForm(formDefinition);\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');\n })\n .onAction((dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n const context = dialogRef.context() as Partial<AssetTypeSectionBuilderComponentDialogValue>;\n const assetTypeId = String(context.assetTypeId ?? '').trim();\n const assetType = context.assetType;\n const roleName = String(context.roleName ?? '').trim();\n const count = Number(context.count ?? 0);\n const hasMaintenance = context.hasMaintenance === true;\n\n if (!assetTypeId) {\n return { success: false };\n }\n\n return { success: true, kind: 'object', value: {\n assetTypeId,\n assetType: {\n id: String(assetType?.id ?? assetTypeId),\n name: String(assetType?.name ?? ''),\n },\n roleName,\n count: Number.isFinite(count) && count > 0 ? count : 1,\n hasMaintenance,\n },\n };\n });\n })\n .show();\n\n return result?.success && result.value ? result.value : null;\n }\n\n private buildItemFormDefinition(): AXPDynamicFormDefinition {\n const excludedAssetTypeId = this.assetTypeId();\n const group: AXPDynamicFormGroupDefinition = {\n name: 'component',\n title: '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.title',\n parameters: [\n {\n path: 'assetTypeId',\n title: '@asset-management:assetTypes.entities.assetType.title',\n widget: {\n path: 'assetTypeId',\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.assetType.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n multiple: false,\n expose: [\n { source: 'id', target: 'assetType.id' },\n { source: 'title', target: 'assetType.name' },\n { source: 'hasMaintenance', target: 'hasMaintenance' },\n ],\n ...(excludedAssetTypeId\n ? {\n filter: { field: 'id', operator: { type: 'notEqual' }, value: excludedAssetTypeId },\n }\n : {}),\n validations: [{ rule: 'required' }],\n },\n },\n },\n this.toFieldDefinition(\n 'hasMaintenance',\n '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.fields.hasMaintenance.title',\n AXPWidgetsCatalog.toggle,\n ),\n this.toFieldDefinition(\n 'count',\n '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.fields.count.title',\n AXPWidgetsCatalog.number,\n [{ rule: 'required' }],\n ),\n this.toFieldDefinition(\n 'roleName',\n '@asset-management:assetTypeSectionComponents.entities.assetTypeSectionComponent.fields.roleName.title',\n AXPWidgetsCatalog.largeText,\n ),\n ],\n };\n\n return { groups: [group] };\n }\n\n private buildSectionFormDefinition(): AXPDynamicFormDefinition {\n const group: AXPDynamicFormGroupDefinition = {\n name: 'section',\n title: '@asset-management:assetTypeSections.entities.assetTypeSection.title',\n parameters: [\n this.toFieldDefinition(\n 'code',\n '@asset-management:assetTypeSections.entities.assetTypeSection.fields.code.title',\n AXPWidgetsCatalog.number,\n [{ rule: 'required' }],\n ),\n this.toFieldDefinition(\n 'title',\n '@asset-management:assetTypeSections.entities.assetTypeSection.fields.title.title',\n AXPWidgetsCatalog.text,\n [{ rule: 'required' }],\n ),\n this.toFieldDefinition(\n 'description',\n '@asset-management:assetTypeSections.entities.assetTypeSection.fields.description.title',\n AXPWidgetsCatalog.largeText,\n ),\n ],\n };\n\n return { groups: [group] };\n }\n\n private buildLinkAssetFormDefinition(): AXPDynamicFormDefinition {\n const currentAssetId = this.options()['mainAssetId'];\n const filters: Array<Record<string, unknown>> = [\n ...(typeof currentAssetId === 'string' && currentAssetId\n ? [{ field: 'id', operator: { type: 'notEqual' }, value: currentAssetId }]\n : []),\n {\n field: 'assetTypeId',\n operator: { type: 'equal' },\n value: \"{{ context.eval('assetTypeId') }}\",\n },\n ];\n const group: AXPDynamicFormGroupDefinition = {\n name: 'asset-link',\n title: '@asset-management:assets.entities.asset.title',\n parameters: [\n {\n path: 'assetId',\n title: '@asset-management:assets.entities.asset.title',\n widget: {\n path: 'assetId',\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.asset.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'lookup',\n allowSearch: true,\n hasClearButton: true,\n columns: ['code', 'title', 'assetTypeId', 'statusId', 'locationId'],\n expose: [\n { source: 'id', target: 'asset.id' },\n { source: 'code', target: 'asset.code' },\n { source: 'title', target: 'asset.title' },\n ],\n filter: filters.length === 1 ? filters[0] : { logic: 'and', filters },\n validations: [{ rule: 'required' }],\n },\n },\n },\n ],\n };\n return { groups: [group] };\n }\n\n private toFieldDefinition(\n path: string,\n title: string,\n widgetType: string,\n validations: Array<{ rule: string }> = [],\n ): AXPDynamicFormFieldDefinition {\n return {\n path,\n title,\n widget: {\n path,\n type: widgetType,\n ...(validations.length > 0 ? { options: { validations } } : {}),\n },\n };\n }\n\n private toBuilderValue(value: AXMAssetTypeSectionBuilderValue): AXPBuilderValue {\n return {\n sections: value.sections.map((section) => ({\n id: section.id,\n order: section.code - 1,\n name: section.id,\n code: section.code,\n title: section.title,\n description: section.description,\n items: section.items.map((item, itemIndex) => ({\n id: item.id,\n order: itemIndex,\n name: this.resolveLocalizedTextForDialog(item.assetType?.name ?? ''),\n assetType: item.assetType,\n roleName: item.roleName,\n count: item.count,\n hasMaintenance: item.hasMaintenance,\n assetTypeId: item.assetTypeId,\n assetTypeSectionId: item.assetTypeSectionId || section.id,\n assetTypeSectionComponentId: item.assetTypeSectionComponentId || item.id,\n assetId: item.assetId,\n asset: item.asset,\n })),\n })) as AXPBuilderSection[],\n };\n }\n\n private fromBuilderValue(value: AXPBuilderValue): AXMAssetTypeSectionBuilderValue {\n const assetTypeId = this.assetTypeId() ?? '';\n\n return {\n sections: value.sections.map((section, sectionIndex) => {\n const sectionId = section.id || AXPDataGenerator.uuid();\n const sectionCodeRaw = Number(section['code'] ?? sectionIndex + 1);\n const sectionCode = Number.isFinite(sectionCodeRaw) && sectionCodeRaw > 0 ? sectionCodeRaw : sectionIndex + 1;\n return {\n id: sectionId,\n code: sectionCode,\n title: normalizeAssetTypeBuilderLocalizedField(section['title'], `Section ${sectionCode}`),\n assetTypeId,\n description: normalizeAssetTypeBuilderLocalizedField(section['description'], ''),\n items: section.items.map((item) => this.mapBuilderItemToDomain(item, sectionId, assetTypeId)),\n };\n }),\n };\n }\n\n private mapBuilderItemToDomain(\n item: AXPBuilderItem,\n sectionId: string,\n assetTypeId: string,\n ): AXMAssetTypeSectionBuilderItemValue {\n const rawAt = item['assetType'] as { id?: string; name?: unknown } | undefined;\n const normalizedAssetTypeId = (() => {\n const fromField = typeof item['assetTypeId'] === 'string' ? String(item['assetTypeId']).trim() : '';\n if (fromField) return fromField;\n const fromRef = typeof rawAt?.id === 'string' ? String(rawAt.id).trim() : '';\n if (fromRef) return fromRef;\n return String(assetTypeId ?? '');\n })();\n return {\n id: item.id || AXPDataGenerator.uuid(),\n assetTypeSectionId: String(item['assetTypeSectionId'] ?? sectionId),\n assetTypeId: normalizedAssetTypeId,\n assetType: {\n id: String(rawAt?.id ?? normalizedAssetTypeId),\n name: normalizeAssetTypeBuilderLocalizedField(rawAt?.name, ''),\n },\n roleName: normalizeAssetTypeBuilderLocalizedField(item['roleName'], ''),\n count: Number(item['count'] ?? 1),\n hasMaintenance: item['hasMaintenance'] === true,\n assetTypeSectionComponentId: String(item['assetTypeSectionComponentId'] ?? ''),\n assetId: typeof item['assetId'] === 'string' ? item['assetId'] : undefined,\n asset:\n item['asset'] && typeof item['asset'] === 'object'\n ? {\n id: String((item['asset'] as { id?: unknown }).id ?? ''),\n code:\n typeof (item['asset'] as { code?: unknown }).code === 'string'\n ? ((item['asset'] as { code: string }).code ?? '')\n : undefined,\n title: normalizeAssetTypeBuilderLocalizedField((item['asset'] as { title?: unknown }).title, ''),\n }\n : undefined,\n };\n }\n\n private resolveLocalizedTextForDialog(value: unknown): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n return resolveMultiLanguageString(value as AXPMultiLanguageString, this.translationService.getActiveLang());\n }\n}\n","<div class=\"axm-asset-type-section-builder\">\n @if (!readonly() && !hideHeaderActions() && allowAddSection()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button\n class=\"ax-sm\"\n [text]=\"'@asset-management:assetTypeSections.entities.assetTypeSection.actions.add-section.title' | translate | async\"\n [color]=\"'primary'\"\n (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"block min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\" />\n</div>\n","import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\n\nexport const ASSET_TYPE_COMPONENTS_SAVE_COMMAND = 'AssetType:Components:Save';\n\nexport interface SaveAssetTypeComponentsInput {\n id: string;\n entity?: string;\n field?: string;\n value: unknown;\n name?: unknown;\n title?: unknown;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMSaveAssetTypeComponentsCommand implements AXPCommand<SaveAssetTypeComponentsInput, unknown> {\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: SaveAssetTypeComponentsInput): AXPCommandExecuteResultPromise<unknown> {\n const id = input?.id;\n const entityRef = input?.entity || `${RootConfig.module.name}.${RootConfig.entities.assetType.name}`;\n const field = input?.field || 'components';\n const value = input?.value ?? { sections: [] };\n\n if (!id) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n try {\n const payload: Record<string, unknown> = { [field]: value };\n const isAssetTypeComponentsUpdate =\n entityRef === `${RootConfig.module.name}.${RootConfig.entities.assetType.name}` && field === 'components';\n if (isAssetTypeComponentsUpdate) {\n payload['name'] = this.ensureLatinName(input.name, {\n fallback: input.title,\n id,\n });\n }\n await this.entityService.withEntity(entityRef).data().update(id, payload);\n\n return { success: true, kind: 'object',\n data: { id, field, value },\n message: {\n text: await this.translationService.translateAsync('@general:messages.generic.success.description'),\n },\n };\n } catch (error) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync('@general:messages.generic.error.description');\n\n return {\n success: false,\n message: {\n text: message,\n },\n };\n }\n }\n\n private ensureLatinName(raw: unknown, context?: { fallback?: unknown; id?: string }): string {\n const fromRaw = this.toLatinIdentifier(raw);\n if (fromRaw) {\n return fromRaw;\n }\n\n const fromTitle = this.toLatinIdentifier(context?.fallback);\n if (fromTitle) {\n return fromTitle;\n }\n\n const fromId = this.toLatinIdentifier(context?.id);\n if (fromId) {\n return fromId;\n }\n\n return 'asset_type';\n }\n\n private toLatinIdentifier(value: unknown): string {\n if (typeof value !== 'string') {\n return '';\n }\n\n return value\n .replace(/[^A-Za-z0-9_-]+/g, '_')\n .replace(/^_+|_+$/g, '')\n .replace(/_{2,}/g, '_');\n }\n}\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPLayoutDetailsViewAction } from '@acorex-platform/framework-client/layout/views';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { cloneDeep, get, isEqual } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-asset-management-client/contracts';\nimport type { AXMAssetManagementAssetComponentEntityModel } from '@acorex-platform/module-asset-management-client/contracts';\nimport { AXMAssetTypeSectionBuilderComponent } from './asset-type-section-builder.component';\nimport {\n normalizeAssetTypeBuilderLocalizedField,\n type AXMAssetTypeSectionBuilderValue,\n} from './asset-type-section-builder.types';\nimport { ASSET_TYPE_COMPONENTS_SAVE_COMMAND } from './save-asset-type-components.command';\n\nconst ASSET_TYPE_SECTIONS_ADD_SECTION_COMMAND = 'AssetType:Sections:AddSection';\nconst ASSET_TYPE_SECTIONS_DISCARD_COMMAND = 'AssetType:Sections:Discard';\nconst ASSET_TYPE_SECTIONS_SAVE_COMMAND = 'AssetType:Sections:Save';\n\n@Component({\n selector: 'axm-asset-type-section-builder-page',\n standalone: true,\n imports: [AXMAssetTypeSectionBuilderComponent],\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMAssetTypeSectionBuilderPageComponent,\n },\n ],\n template: `\n <axm-asset-type-section-builder\n #builderRef\n [value]=\"committedValue()\"\n [assetTypeId]=\"sourceRecordId()\"\n [options]=\"builderOptions()\"\n (valueChange)=\"onValueChange($event)\"\n />\n `,\n host: {\n '[class.axp-page-layout-base]': 'true',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMAssetTypeSectionBuilderPageComponent extends AXPPageLayoutBaseComponent {\n /** Default `{}`: required inputs throw (NG0950) if read before `AXPPageComponentRendererDirective` calls `setInput` after `createComponent`. */\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n protected readonly builderRef = viewChild<AXMAssetTypeSectionBuilderComponent>('builderRef');\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n private readonly baselineValue = signal<AXMAssetTypeSectionBuilderValue | null | undefined>(null);\n protected readonly committedValue = signal<AXMAssetTypeSectionBuilderValue | null | undefined>(null);\n private readonly config = computed(() => ({\n ...((this.pageConfig() ?? {}) as Record<string, unknown>),\n ...((this.options() ?? {}) as Record<string, unknown>),\n }));\n\n protected readonly fieldName = computed(() => {\n const field = this.readStringConfig('field');\n return field || 'components';\n });\n protected readonly sourceFieldName = computed(() => {\n const field = this.readStringConfig('sourceField');\n return field || this.fieldName();\n });\n protected readonly sourceIdPath = computed(() => {\n const path = this.readStringConfig('sourceIdPath');\n return path || 'id';\n });\n protected readonly targetIdPath = computed(() => {\n const path = this.readStringConfig('targetIdPath');\n return path || this.sourceIdPath();\n });\n protected readonly sourceEntityRef = computed(() => {\n const entity = this.readStringConfig('sourceEntity');\n return entity || `${RootConfig.module.name}.${RootConfig.entities.assetType.name}`;\n });\n protected readonly targetEntityRef = computed(() => {\n const entity = this.readStringConfig('targetEntity');\n return entity || this.sourceEntityRef();\n });\n\n protected readonly context = computed(() => this.rootContext());\n protected readonly sourceRecordId = computed(() => {\n const id = get(this.context(), this.sourceIdPath());\n return typeof id === 'string' ? id : undefined;\n });\n protected readonly targetRecordId = computed(() => {\n const id = get(this.context(), this.targetIdPath());\n return typeof id === 'string' ? id : undefined;\n });\n protected readonly readonly = computed(() => this.readBooleanConfig('readonly'));\n protected readonly linkAssetMode = computed(() => this.readBooleanConfig('linkAssetMode'));\n protected readonly allowAddSection = computed(() => this.readBooleanConfig('allowAddSection', true));\n protected readonly allowAddItems = computed(() => this.readBooleanConfig('allowAddItems', true));\n protected readonly allowEditSection = computed(() => this.readBooleanConfig('allowEditSection', true));\n protected readonly allowReorderSections = computed(() => this.readBooleanConfig('allowReorderSections', true));\n protected readonly builderOptions = computed(() => ({\n hideHeaderActions: true,\n readonly: this.readonly(),\n linkAssetMode: this.linkAssetMode(),\n mainAssetId: this.targetRecordId(),\n allowAddSection: this.allowAddSection(),\n allowEditSection: this.allowEditSection(),\n allowAddItems: this.allowAddItems(),\n allowReorderSections: this.allowReorderSections(),\n }));\n\n protected readonly isDirty = computed(() => {\n const baseline = this.baselineValue();\n const committed = this.committedValue();\n return !isEqual(baseline ?? null, committed ?? null);\n });\n\n #syncFromContext = effect((onCleanup) => {\n const ctx = this.context();\n const id = this.sourceRecordId();\n const value = get(ctx, this.fieldName()) as AXMAssetTypeSectionBuilderValue | null | undefined;\n const linkedFromContext = get(ctx, this.fieldName()) as AXMAssetManagementAssetComponentEntityModel[] | null | undefined;\n const sourceValue = get(ctx, this.sourceFieldName()) as AXMAssetTypeSectionBuilderValue | null | undefined;\n const sourceField = this.sourceFieldName();\n const immediateValue = this.linkAssetMode()\n ? this.buildLinkedAssetValue(\n sourceValue ?? null,\n this.pickPersistedComponentLinks(linkedFromContext, undefined),\n )\n : (value ?? null);\n this.baselineValue.set(immediateValue);\n this.committedValue.set(immediateValue);\n untracked(() => this.recompute());\n\n if (!id) {\n return;\n }\n\n let cancelled = false;\n const sourceEntityRef = this.sourceEntityRef();\n const targetEntityRef = this.targetEntityRef();\n const targetRecordId = this.targetRecordId();\n const linkMode = this.linkAssetMode();\n const fieldName = this.fieldName();\n const shouldFetchPersistedLinksFromTarget =\n linkMode &&\n typeof targetRecordId === 'string' &&\n targetRecordId.length > 0 &&\n targetEntityRef !== sourceEntityRef;\n\n const load = async (): Promise<void> => {\n try {\n const [sourceRecord, targetRecord] = await Promise.all([\n this.entityService.withEntity(sourceEntityRef).data().byKey(id),\n shouldFetchPersistedLinksFromTarget\n ? this.entityService.withEntity(targetEntityRef).data().byKey(targetRecordId)\n : Promise.resolve(null),\n ]);\n if (cancelled) return;\n\n const fallbackValue = get(sourceRecord as unknown as Record<string, unknown>, sourceField) as\n | AXMAssetTypeSectionBuilderValue\n | null\n | undefined;\n\n const recordLinksUnknown: unknown =\n linkMode && shouldFetchPersistedLinksFromTarget\n ? get(targetRecord as unknown as Record<string, unknown>, fieldName)\n : linkMode\n ? get(sourceRecord as unknown as Record<string, unknown>, fieldName)\n : undefined;\n\n const resolved = linkMode\n ? this.buildLinkedAssetValue(\n sourceValue ?? fallbackValue ?? null,\n this.pickPersistedComponentLinks(linkedFromContext, recordLinksUnknown),\n )\n : this.hasSections(value)\n ? value\n : (fallbackValue ?? null);\n this.baselineValue.set(resolved);\n this.committedValue.set(resolved);\n untracked(() => this.recompute());\n } catch {\n if (cancelled) return;\n this.baselineValue.set(immediateValue);\n this.committedValue.set(immediateValue);\n untracked(() => this.recompute());\n }\n };\n\n void load();\n\n onCleanup(() => {\n cancelled = true;\n });\n });\n\n protected onValueChange(value: AXMAssetTypeSectionBuilderValue): void {\n this.committedValue.set(value);\n this.updateRootContextField(\n this.fieldName(),\n this.linkAssetMode() ? this.toAssetComponentValue(value) : value,\n );\n this.recompute();\n }\n\n override getWizardStepContext(): Record<string, unknown> | null {\n const field = this.fieldName();\n const value = this.committedValue();\n if (!field || value == null) {\n return null;\n }\n const ctxValue = this.linkAssetMode() ? this.toAssetComponentValue(value) : value;\n return { [field]: cloneDeep(ctxValue) };\n }\n\n override hasUnsavedChanges(): boolean {\n return this.isDirty();\n }\n\n override async getPrimaryMenuItems(): Promise<AXPLayoutDetailsViewAction[]> {\n if (this.readonly()) {\n return [];\n }\n\n const addSectionTitle =\n (await this.translateService.translateAsync(\n '@asset-management:assetTypeSections.entities.assetTypeSection.actions.add-section.title',\n )) || 'Add Section';\n const discardTitle = (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle = (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n return [\n ...(this.allowAddSection()\n ? [\n {\n title: addSectionTitle,\n icon: 'fa-light fa-layer-group',\n zone: 'header' as const,\n priority: 'primary' as const,\n color: 'primary' as const,\n command: { name: ASSET_TYPE_SECTIONS_ADD_SECTION_COMMAND, options: {} },\n },\n ]\n : []),\n {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer' as const,\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: { name: ASSET_TYPE_SECTIONS_DISCARD_COMMAND, options: {} },\n },\n {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer' as const,\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: { name: ASSET_TYPE_SECTIONS_SAVE_COMMAND, options: {} },\n },\n ];\n }\n\n override async execute(command: { name: string; options?: unknown }): Promise<void> {\n if (command.name === ASSET_TYPE_SECTIONS_ADD_SECTION_COMMAND) {\n await this.builderRef()?.addSection();\n return;\n }\n\n if (command.name === ASSET_TYPE_SECTIONS_DISCARD_COMMAND) {\n this.handleDiscard();\n return;\n }\n\n if (command.name !== ASSET_TYPE_SECTIONS_SAVE_COMMAND) return;\n\n await this.handleSave({ silent: false });\n }\n\n private async handleSave(options?: { silent?: boolean }): Promise<void> {\n const silent = options?.silent === true;\n const id = this.targetRecordId();\n const entity = this.targetEntityRef();\n const field = this.fieldName();\n const value = this.committedValue();\n\n if (!id || !entity || !field) {\n if (!silent) {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.error.title'),\n content: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n });\n }\n return;\n }\n\n const root = (this.rootContext() ?? {}) as Record<string, unknown>;\n const result = await this.commandService.execute(ASSET_TYPE_COMPONENTS_SAVE_COMMAND, {\n id,\n entity,\n field,\n value: this.linkAssetMode() ? this.toAssetComponentValue(value ?? { sections: [] }) : (value ?? { sections: [] }),\n name: root['name'],\n title: root['title'],\n });\n\n if (result?.success) {\n const saved = value ?? { sections: [] };\n this.baselineValue.set(saved);\n this.committedValue.set(saved);\n this.updateRootContextField(field, this.linkAssetMode() ? this.toAssetComponentValue(saved) : saved);\n this.builderRef()?.syncAfterSave(saved);\n this.recompute();\n if (!silent) {\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.generic.success.title'),\n content: await this.translateService.translateAsync('@general:messages.generic.success.description'),\n });\n }\n return;\n }\n\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.error.title'),\n content: await this.translateService.translateAsync('@general:messages.entity.update-failed'),\n });\n }\n\n protected override recompute(): void {\n super.recompute();\n const layout = this.hostPageLayout as unknown as { recompute?: () => void } | null | undefined;\n layout?.recompute?.();\n }\n\n private handleDiscard(): void {\n const baseline = this.baselineValue() ?? { sections: [] };\n const field = this.fieldName();\n this.committedValue.set(baseline);\n this.updateRootContextField(\n field,\n this.linkAssetMode() ? this.toAssetComponentValue(baseline) : baseline,\n );\n this.builderRef()?.resetAfterDiscard();\n this.recompute();\n }\n\n /** Keeps details-view `rootContext` in sync so sidebar navigation remounts with latest data. */\n private updateRootContextField(field: string, value: unknown): void {\n const ctx = this.rootContext() as Record<string, unknown> | undefined;\n if (!ctx || typeof ctx !== 'object') {\n return;\n }\n ctx[field] = cloneDeep(value);\n }\n\n private buildLinkedAssetValue(\n source: AXMAssetTypeSectionBuilderValue | null,\n links: AXMAssetManagementAssetComponentEntityModel[] | null,\n ): AXMAssetTypeSectionBuilderValue {\n if (!source || !Array.isArray(source.sections)) {\n return { sections: [] };\n }\n const groupedLinks = new Map<string, AXMAssetManagementAssetComponentEntityModel[]>();\n for (const link of links ?? []) {\n const key = String(link.assetTypeSectionComponentId ?? '');\n if (!key) continue;\n if (!groupedLinks.has(key)) groupedLinks.set(key, []);\n groupedLinks.get(key)!.push(link);\n }\n\n return {\n sections: source.sections.map((section) => ({\n ...section,\n items: (section.items ?? []).flatMap((item) => {\n const componentId = String(item.id ?? '');\n const count = Math.max(1, Number(item.count ?? 1));\n const existing = groupedLinks.get(componentId) ?? [];\n return Array.from({ length: count }).map((_, index) => {\n const linked = existing[index];\n return {\n ...item,\n id: `${componentId}__slot_${index + 1}`,\n count: 1,\n assetTypeSectionComponentId: componentId,\n roleName: this.withSlotSuffix(item.roleName, index + 1),\n assetId: linked?.assetId,\n asset: linked?.asset\n ? {\n id: linked.asset.id,\n code: linked.asset.code,\n title: linked.asset.title,\n }\n : undefined,\n };\n });\n }),\n })),\n };\n }\n\n private withSlotSuffix(value: unknown, slotIndex: number): string | AXPMultiLanguageString {\n const normalized = normalizeAssetTypeBuilderLocalizedField(value, '');\n const suffix = `#${slotIndex}`;\n if (typeof normalized === 'string') {\n const base = normalized.trim();\n return base ? `${base} ${suffix}` : suffix;\n }\n return Object.fromEntries(\n Object.entries(normalized).map(([locale, text]) => {\n const trimmed = typeof text === 'string' ? text.trim() : '';\n return [locale, trimmed ? `${trimmed} ${suffix}` : suffix];\n }),\n ) as AXPMultiLanguageString;\n }\n\n private toAssetComponentValue(value: AXMAssetTypeSectionBuilderValue): AXMAssetManagementAssetComponentEntityModel[] {\n const mainAssetId = this.targetRecordId() ?? '';\n return value.sections.flatMap((section) =>\n (section.items ?? [])\n .filter((item) => typeof item.assetId === 'string' && item.assetId)\n .map((item) => ({\n id: item.id,\n assetId: String(item.assetId),\n asset: {\n id: String(item.asset?.id ?? item.assetId),\n code: String(item.asset?.code ?? ''),\n title: String(item.asset?.title ?? ''),\n },\n mainAssetId,\n mainAsset: {\n id: mainAssetId,\n code: '',\n title: '',\n },\n assetTypeSectionComponentId: String(item.assetTypeSectionComponentId ?? ''),\n assetTypeSectionComponent: {\n id: String(item.assetTypeSectionComponentId ?? ''),\n code: String(item.assetTypeSectionId ?? ''),\n title: String(item.roleName ?? ''),\n assetTypeId: String(item.assetTypeId ?? ''),\n assetType: {\n id: String(\n (item.assetType as { id?: string } | undefined)?.id ?? String(item.assetTypeId ?? ''),\n ),\n name: (item.assetType as { name?: string | AXPMultiLanguageString } | undefined)?.name ?? '',\n },\n },\n })),\n );\n }\n\n private readStringConfig(key: string): string {\n const rootValue = this.config()[key];\n if (typeof rootValue === 'string') {\n return rootValue;\n }\n return '';\n }\n\n private readBooleanConfig(key: string, defaultValue = false): boolean {\n const rootValue = this.config()[key];\n if (typeof rootValue === 'boolean') {\n return rootValue;\n }\n return defaultValue;\n }\n\n private hasSections(value: AXMAssetTypeSectionBuilderValue | null | undefined): boolean {\n return !!value && Array.isArray(value.sections) && value.sections.length > 0;\n }\n\n /**\n * Prefer links loaded with the record (`byKey`). Context often holds `assetComponents: []` from a\n * partial row merge; `[] ?? serverLinks` would keep the empty array and hide persisted assignments.\n */\n private pickPersistedComponentLinks(\n contextLinks: AXMAssetManagementAssetComponentEntityModel[] | null | undefined,\n recordLinks: unknown,\n ): AXMAssetManagementAssetComponentEntityModel[] | null {\n if (recordLinks !== undefined) {\n return Array.isArray(recordLinks) ? recordLinks : [];\n }\n return Array.isArray(contextLinks) ? contextLinks : null;\n }\n}\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { ASSET_TYPE_COMPONENTS_PAGE_COMPONENT_KEY } from '@acorex-platform/module-asset-management-client/contracts';\n\n@Injectable()\nexport class AXMAssetTypeComponentsPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: ASSET_TYPE_COMPONENTS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./asset-type-section-builder-page.component').then((m) => m.AXMAssetTypeSectionBuilderPageComponent),\n },\n ];\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { AXMAssetLifecycleStatus } from '@acorex-platform/module-asset-management-client/contracts';\nimport { AXMAssetStatus } from '@acorex-platform/module-asset-management-client/contracts';\nimport type {\n AXMAssetOperationalStatusRecalculateContext,\n AXMAssetOperationalStatusRecalculateResult,\n AXMAssetOperationalStatusTrigger,\n} from './asset-operational-status.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst BLOCKING_WORK_ORDER_STATUSES = new Set(['in-progress', 'completed']);\n\nconst PROTECTED_LIFECYCLE_STATUSES = new Set([AXMAssetLifecycleStatus.Retired, AXMAssetLifecycleStatus.Disposed]);\n\nconst PROTECTED_OPERATIONAL_STATUSES = new Set([AXMAssetStatus.Lost]);\n//#endregion\n\n/**\n * Central policy for asset operational status changes driven by maintenance work orders.\n * Callers must not set `Asset.statusId` directly from workflows — use {@link recalculate} only.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMAssetOperationalStatusService {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async recalculate(\n assetIdRaw: string,\n trigger: AXMAssetOperationalStatusTrigger,\n context: AXMAssetOperationalStatusRecalculateContext = {},\n ): Promise<AXMAssetOperationalStatusRecalculateResult> {\n const assetId = assetIdRaw?.trim();\n\n if (!assetId) {\n return {\n assetId: '',\n previousStatusId: null,\n statusId: null,\n changed: false,\n reason: 'assetId is required',\n };\n }\n\n const asset = (await this.entityService.withEntity('AssetManagement', 'Asset').data().byKey(assetId)) as {\n id?: string;\n statusId?: AXMAssetStatus | string;\n lifecycleStatusId?: AXMAssetLifecycleStatus | string;\n statusBeforeInterruptionId?: AXMAssetStatus | string | null;\n } | null;\n\n if (!asset?.id) {\n return {\n assetId,\n previousStatusId: null,\n statusId: null,\n changed: false,\n reason: 'Asset not found',\n };\n }\n\n const previousStatusId = isString(asset.statusId) ? asset.statusId.trim() : null;\n\n const lifecycleStatusId = isString(asset.lifecycleStatusId) ? asset.lifecycleStatusId.trim() : null;\n\n if (lifecycleStatusId && PROTECTED_LIFECYCLE_STATUSES.has(lifecycleStatusId as AXMAssetLifecycleStatus)) {\n return {\n assetId,\n previousStatusId,\n statusId: previousStatusId,\n changed: false,\n reason: `${trigger}: asset lifecycle is protected`,\n };\n }\n\n if (previousStatusId && PROTECTED_OPERATIONAL_STATUSES.has(previousStatusId as AXMAssetStatus)) {\n return {\n assetId,\n previousStatusId,\n statusId: previousStatusId,\n changed: false,\n reason: `${trigger}: asset status is protected`,\n };\n }\n\n const maintenanceTypeId = await this.resolveMaintenanceTypeId(assetId, context);\n\n const shouldBlock = await this.shouldBlockAssetForMaintenance(assetId, maintenanceTypeId);\n\n let nextStatusId = previousStatusId;\n const update: { statusBeforeInterruptionId?: AXMAssetStatus | string | null } = {};\n\n if (trigger === 'work-started') {\n if (shouldBlock) {\n nextStatusId = AXMAssetStatus.UnderMaintenanceInspection;\n\n if (previousStatusId === AXMAssetStatus.Available || previousStatusId === AXMAssetStatus.Assigned) {\n update.statusBeforeInterruptionId = previousStatusId;\n }\n }\n }\n\n if (trigger === 'work-completed') {\n const hasBlockingWork = await this.hasBlockingWorkOrders(assetId);\n\n if (hasBlockingWork) {\n nextStatusId = AXMAssetStatus.UnderMaintenanceInspection;\n }\n\n // Do not release the asset here — completed work still awaits sign-off.\n }\n\n if (trigger === 'work-signed-off') {\n const hasBlockingWork = await this.hasBlockingWorkOrders(assetId);\n\n if (hasBlockingWork) {\n nextStatusId = AXMAssetStatus.UnderMaintenanceInspection;\n } else {\n nextStatusId = this.resolveRestoredStatus(asset);\n update.statusBeforeInterruptionId = null;\n }\n }\n\n const changed = !!nextStatusId && nextStatusId !== previousStatusId;\n const hasFieldUpdates = update.statusBeforeInterruptionId !== undefined;\n\n if ((changed && nextStatusId) || hasFieldUpdates) {\n await this.entityService\n .withEntity('AssetManagement', 'Asset')\n .data()\n .update(assetId, {\n ...update,\n ...(changed && nextStatusId ? { statusId: nextStatusId } : {}),\n } as never);\n }\n\n return {\n assetId,\n previousStatusId,\n statusId: nextStatusId,\n changed,\n reason: changed ? `${trigger}: status recalculated` : `${trigger}: status unchanged`,\n };\n }\n\n //#endregion\n\n //#region ---- Policy helpers ----\n\n private async resolveMaintenanceTypeId(\n assetId: string,\n context: AXMAssetOperationalStatusRecalculateContext,\n ): Promise<string> {\n const fromContext = context.maintenanceTypeId?.trim();\n if (fromContext) {\n return fromContext;\n }\n\n const workOrderId = context.workOrderId?.trim();\n if (workOrderId) {\n const workOrder = (await this.entityService\n .withEntity('MaintenanceManagement', 'WorkOrder')\n .data()\n .byKey(workOrderId)) as { maintenanceTypeId?: string } | null;\n const fromWorkOrder = workOrder?.maintenanceTypeId?.trim();\n if (fromWorkOrder) {\n return fromWorkOrder;\n }\n }\n\n const page = await this.entityService\n .withEntity('MaintenanceManagement', 'WorkOrder')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [\n { field: 'assetId', operator: { type: 'equal' }, value: assetId },\n { field: 'statusId', operator: { type: 'equal' }, value: 'in-progress' },\n ],\n },\n } as never);\n\n const row = defaultTo(get(page, 'items[0]'), null) as { maintenanceTypeId?: string } | null;\n return row?.maintenanceTypeId?.trim() ?? '';\n }\n\n /**\n * Inspection-like maintenance types keep the asset blocked under the combined operational status.\n * TODO: replace title/code heuristic with an explicit MaintenanceType classification field when available.\n */\n private async shouldBlockAssetForMaintenance(_assetId: string, maintenanceTypeId: string): Promise<boolean> {\n if (!maintenanceTypeId) {\n return true;\n }\n\n const maintenanceType = (await this.entityService\n .withEntity('MaintenanceManagement', 'MaintenanceType')\n .data()\n .byKey(maintenanceTypeId)) as { code?: string; title?: unknown } | null;\n\n if (!maintenanceType) {\n return true;\n }\n\n const code = maintenanceType.code?.toLowerCase() ?? '';\n const titleText = this.resolveDisplayText(maintenanceType.title).toLowerCase();\n const isInspection = code.includes('inspect') || titleText.includes('inspect');\n\n if (isInspection) {\n return true;\n }\n\n // Non-inspection maintenance that does not block the asset is not modeled yet.\n // TODO: honor MaintenanceType.blocksAsset (or equivalent) when introduced.\n return true;\n }\n\n private async hasBlockingWorkOrders(assetId: string): Promise<boolean> {\n const page = await this.entityService\n .withEntity('MaintenanceManagement', 'WorkOrder')\n .data()\n .query({\n skip: 0,\n take: 100,\n filter: {\n logic: 'and',\n filters: [{ field: 'assetId', operator: { type: 'equal' }, value: assetId }],\n },\n } as never);\n\n const items = defaultTo(get(page, 'items'), []) as Array<{ statusId?: string }>;\n return items.some((row) => {\n const statusId = row.statusId?.trim();\n return !!statusId && BLOCKING_WORK_ORDER_STATUSES.has(statusId);\n });\n }\n\n private resolveRestoredStatus(asset: {\n statusBeforeInterruptionId?: AXMAssetStatus | string | null;\n }): AXMAssetStatus {\n const saved = isString(asset.statusBeforeInterruptionId) ? asset.statusBeforeInterruptionId.trim() : null;\n if (saved) {\n return saved as AXMAssetStatus;\n }\n\n return AXMAssetStatus.Available;\n }\n\n private resolveDisplayText(value: unknown): string {\n if (isString(value)) {\n return value;\n }\n if (value && typeof value === 'object') {\n const record = value as Record<string, string>;\n return record['en-US'] ?? record['fa-IR'] ?? Object.values(record)[0] ?? '';\n }\n return '';\n }\n\n //#endregion\n}\n","//#region ---- Types ----\n\n/** Triggers consumed by {@link AXMAssetOperationalStatusService}. */\nexport type AXMAssetOperationalStatusTrigger = 'work-started' | 'work-completed' | 'work-signed-off';\n\nexport interface AXMAssetOperationalStatusRecalculateContext {\n workOrderId?: string;\n maintenanceTypeId?: string;\n}\n\nexport interface AXMAssetOperationalStatusRecalculateResult {\n assetId: string;\n previousStatusId: string | null;\n statusId: string | null;\n changed: boolean;\n reason?: string;\n}\n\n//#endregion\n","// export * from './asset-status.provider';\nexport * from './asset-status.provider';\nexport * from './asset-rental-history';\nexport * from './asset-type-section-builder';\nexport * from '../services/asset-operational-status.service';\nexport * from '../services/asset-operational-status.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/module-asset-management-client",
3
+ "version": "0.0.20",
4
+ "sideEffects": false,
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "module": "fesm2022/acorex-platform-module-asset-management-client.mjs",
13
+ "typings": "types/acorex-platform-module-asset-management-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-module-asset-management-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-module-asset-management-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-module-asset-management-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-module-asset-management-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }