@acorex-platform/module-common-client 0.0.30 → 0.0.33
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.
- package/fesm2022/{acorex-platform-module-common-client-acorex-platform-module-common-client-CkeshVWo.mjs → acorex-platform-module-common-client-acorex-platform-module-common-client-DsCvUxSh.mjs} +90 -37
- package/fesm2022/acorex-platform-module-common-client-acorex-platform-module-common-client-DsCvUxSh.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-common-client-archive-entity.command-BZgNdxFS.mjs → acorex-platform-module-common-client-archive-entity.command-QmrPzKy_.mjs} +5 -7
- package/fesm2022/acorex-platform-module-common-client-archive-entity.command-QmrPzKy_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-common-client-archive-entity.command.util-BVrK8ZGy.mjs → acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-common-client-archive-entity.command.util-BVrK8ZGy.mjs.map → acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-common-client-bulk-archive-entity.command-EIlMyuII.mjs → acorex-platform-module-common-client-bulk-archive-entity.command-BfINUGph.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-common-client-bulk-archive-entity.command-EIlMyuII.mjs.map → acorex-platform-module-common-client-bulk-archive-entity.command-BfINUGph.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-common-client-bulk-restore-archive-entity.command-C8T0gUAH.mjs → acorex-platform-module-common-client-bulk-restore-archive-entity.command-CGy1Kdon.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-common-client-bulk-restore-archive-entity.command-C8T0gUAH.mjs.map → acorex-platform-module-common-client-bulk-restore-archive-entity.command-CGy1Kdon.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs → acorex-platform-module-common-client-clone-entity.command-DgVI86z3.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs.map → acorex-platform-module-common-client-clone-entity.command-DgVI86z3.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-common-client-contracts-entities-record-lock.mjs +135 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entities-record-lock.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entities-version-entry.mjs +205 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entities-version-entry.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entities-version-stream.mjs +118 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entities-version-stream.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-acorex-platform-module-common-client-contracts-entity-catalog-C2WFbRne.mjs +61 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-acorex-platform-module-common-client-contracts-entity-catalog-C2WFbRne.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-record-lock.entity-CY6jfaD7.mjs +95 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-record-lock.entity-CY6jfaD7.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-version-entry.entity-DCBxAIMJ.mjs +165 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-version-entry.entity-DCBxAIMJ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-version-stream.entity-DbSB34vz.mjs +78 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog-version-stream.entity-DbSB34vz.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog.mjs +2 -0
- package/fesm2022/acorex-platform-module-common-client-contracts-entity-catalog.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-common-client-local-entities.mjs +31 -0
- package/fesm2022/acorex-platform-module-common-client-local-entities.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-common-client-restore-archive-entity.command-Dr1GcC8a.mjs → acorex-platform-module-common-client-restore-archive-entity.command-Dx8CIcWc.mjs} +5 -6
- package/fesm2022/acorex-platform-module-common-client-restore-archive-entity.command-Dx8CIcWc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-common-client-search-popup.component-DH0OQYoQ.mjs → acorex-platform-module-common-client-search-popup.component-D9gce0xf.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-common-client-search-popup.component-DH0OQYoQ.mjs.map → acorex-platform-module-common-client-search-popup.component-D9gce0xf.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-common-client-timeline-version-history-popup.component-BqTLeGtG.mjs → acorex-platform-module-common-client-timeline-version-history-popup.component-Dg-TrXGF.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-common-client-timeline-version-history-popup.component-BqTLeGtG.mjs.map → acorex-platform-module-common-client-timeline-version-history-popup.component-Dg-TrXGF.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-common-client.mjs +1 -1
- package/package.json +21 -1
- package/types/acorex-platform-module-common-client-contracts-entities-record-lock.d.ts +5 -0
- package/types/acorex-platform-module-common-client-contracts-entities-version-entry.d.ts +5 -0
- package/types/acorex-platform-module-common-client-contracts-entities-version-stream.d.ts +5 -0
- package/types/acorex-platform-module-common-client-contracts-entity-catalog.d.ts +10 -0
- package/types/acorex-platform-module-common-client-local-entities.d.ts +12 -0
- package/fesm2022/acorex-platform-module-common-client-acorex-platform-module-common-client-CkeshVWo.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-common-client-archive-entity.command-BZgNdxFS.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-common-client-restore-archive-entity.command-Dr1GcC8a.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, Injectable } from '@angular/core';
|
|
4
|
-
import { A as AXPArchiveEntityCommandHelper, n as normalizeArchiveSingleInput, b as buildArchivePatch, a as buildArchiveRefreshMeta } from './acorex-platform-module-common-client-archive-entity.command.util-
|
|
4
|
+
import { A as AXPArchiveEntityCommandHelper, n as normalizeArchiveSingleInput, b as buildArchivePatch, a as buildArchiveRefreshMeta } from './acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs';
|
|
5
5
|
|
|
6
6
|
class AXPArchiveEntityCommand {
|
|
7
7
|
constructor() {
|
|
@@ -29,17 +29,15 @@ class AXPArchiveEntityCommand {
|
|
|
29
29
|
await this.helper.applyPatch(context.refType, context.refId, patch);
|
|
30
30
|
const meta = buildArchiveRefreshMeta(entityDefinition, context.rowData);
|
|
31
31
|
this.helper.dispatchArchived(context.refType, context.refId, meta);
|
|
32
|
+
loadingDialog.close();
|
|
32
33
|
await this.helper.showSuccessToast('@general:workflow.entity-archived', '@general:workflow.entity-archived-body');
|
|
33
|
-
return { success: true, kind: 'object', data: undefined };
|
|
34
|
+
return { success: true, kind: 'object', data: undefined, metadata: { refresh: false } };
|
|
34
35
|
}
|
|
35
36
|
catch (error) {
|
|
37
|
+
loadingDialog.close();
|
|
36
38
|
await this.helper.showErrorToastFor(error, '@general:messages.generic.error.description');
|
|
37
|
-
// Omit message so toast middleware does not double-fire after showErrorToastFor.
|
|
38
39
|
return { success: false };
|
|
39
40
|
}
|
|
40
|
-
finally {
|
|
41
|
-
loadingDialog.close();
|
|
42
|
-
}
|
|
43
41
|
}
|
|
44
42
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPArchiveEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
43
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPArchiveEntityCommand, providedIn: 'root' }); }
|
|
@@ -50,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
50
48
|
}] });
|
|
51
49
|
|
|
52
50
|
export { AXPArchiveEntityCommand };
|
|
53
|
-
//# sourceMappingURL=acorex-platform-module-common-client-archive-entity.command-
|
|
51
|
+
//# sourceMappingURL=acorex-platform-module-common-client-archive-entity.command-QmrPzKy_.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-common-client-archive-entity.command-QmrPzKy_.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/archive-entity.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPArchiveEntityCommandHelper } from './archive-entity.command.helper';\nimport { buildArchivePatch, buildArchiveRefreshMeta, normalizeArchiveSingleInput } from './archive-entity.command.util';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPArchiveEntityCommand implements AXPCommand<AXPContextData, void> {\n private readonly helper = inject(AXPArchiveEntityCommandHelper);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: AXPContextData): AXPCommandExecuteResultPromise<void> {\n const context = normalizeArchiveSingleInput(input);\n if (!context) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const confirmed = await this.helper.confirm(\n '@general:actions.archive.confirm.title',\n '@general:actions.archive.confirm.message',\n );\n if (!confirmed) {\n return { success: false };\n }\n\n const loadingDialog = this.helper.showLoading(\n await this.translationService.translateAsync('@general:actions.archive.confirm.processing'),\n 'Archiving...',\n );\n\n try {\n const entityDefinition = await this.helper.resolveEntity(context.refType);\n const patch = buildArchivePatch(true);\n await this.helper.applyPatch(context.refType, context.refId, patch);\n\n const meta = buildArchiveRefreshMeta(entityDefinition, context.rowData);\n this.helper.dispatchArchived(context.refType, context.refId, meta);\n loadingDialog.close();\n await this.helper.showSuccessToast(\n '@general:workflow.entity-archived',\n '@general:workflow.entity-archived-body',\n );\n\n return { success: true, kind: 'object', data: undefined, metadata: { refresh: false } };\n } catch (error) {\n loadingDialog.close();\n await this.helper.showErrorToastFor(error, '@general:messages.generic.error.description');\n return { success: false };\n }\n }\n}\n"],"names":[],"mappings":";;;;;MASa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AA8CnE,IAAA;IA5CC,MAAM,OAAO,CAAC,KAAqB,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC5F,iBAAA;aACF;QACH;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,wCAAwC,EACxC,0CAA0C,CAC3C;QACD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3B;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAC3C,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,6CAA6C,CAAC,EAC3F,cAAc,CACf;AAED,QAAA,IAAI;AACF,YAAA,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;AACzE,YAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC;AACrC,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;YAEnE,MAAM,IAAI,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC;AACvE,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;YAClE,aAAa,CAAC,KAAK,EAAE;YACrB,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAChC,mCAAmC,EACnC,wCAAwC,CACzC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzF;QAAE,OAAO,KAAK,EAAE;YACd,aAAa,CAAC,KAAK,EAAE;YACrB,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,6CAA6C,CAAC;AACzF,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3B;IACF;8GA/CW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
|
|
@@ -7,7 +7,7 @@ import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/cor
|
|
|
7
7
|
import { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';
|
|
8
8
|
import * as i0 from '@angular/core';
|
|
9
9
|
import { inject, Injectable } from '@angular/core';
|
|
10
|
-
import { A as AXP_ENTITY_ARCHIVE_OVERRIDES } from './acorex-platform-module-common-client-acorex-platform-module-common-client-
|
|
10
|
+
import { A as AXP_ENTITY_ARCHIVE_OVERRIDES } from './acorex-platform-module-common-client-acorex-platform-module-common-client-DsCvUxSh.mjs';
|
|
11
11
|
import { resolveEntityActionRef, resolveEntityActionBulkRef } from '@acorex-platform/framework-shared/runtime';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -153,4 +153,4 @@ function buildArchiveRefreshMeta(entityDefinition, rowData) {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
export { AXPArchiveEntityCommandHelper as A, buildArchiveRefreshMeta as a, buildArchivePatch as b, normalizeArchiveBulkInput as c, normalizeArchiveSingleInput as n };
|
|
156
|
-
//# sourceMappingURL=acorex-platform-module-common-client-archive-entity.command.util-
|
|
156
|
+
//# sourceMappingURL=acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-common-client-archive-entity.command.util-BVrK8ZGy.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/archive-entity.command.helper.ts","../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/archive-entity.command.util.ts"],"sourcesContent":["import { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport {\n AXPCommonSettings,\n AXPSettingsService,\n extractRequestErrorInfo,\n platformErrorI18nKey,\n throwIfCommandFailed,\n} from '@acorex-platform/framework-client/common';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXP_ENTITY_ARCHIVE_OVERRIDES } from '../archive-entity.override';\n\n/**\n * Injectable helper for archive commands: confirmation UI, persistence, toasts, and refresh events.\n * Pure input/patch logic lives in {@link archive-entity.command.util}.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPArchiveEntityCommandHelper {\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly dialogService = inject(AXDialogService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n private readonly archiveOverrides = inject(AXP_ENTITY_ARCHIVE_OVERRIDES, { optional: true }) ?? [];\n\n async resolveEntity(refType: string): Promise<AXPEntity> {\n const [moduleName, entityName] = refType.split('.');\n return this.entityRegistry.resolve(moduleName, entityName);\n }\n\n async applyPatch(refType: string, refId: string, patch: AXPContextData): Promise<void> {\n const override = this.archiveOverrides.find((entry) => entry.refType === refType);\n if (override) {\n const archived = patch['isArchived'] === true;\n if (archived) {\n await override.archive(refId);\n } else {\n await override.restore(refId);\n }\n return;\n }\n\n const entityDefinition = await this.resolveEntity(refType);\n const updateExec = entityDefinition.commands?.update?.execute as\n | ((payload: AXPContextData) => Promise<unknown>)\n | undefined;\n\n if (!updateExec) {\n throw new Error('Entity does not support update operation');\n }\n\n const result = await updateExec({ id: refId, ...patch });\n throwIfCommandFailed(result);\n }\n\n async confirm(titleKey: string, messageKey: string, messageParams?: AXPContextData): Promise<boolean> {\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync(titleKey),\n await this.translationService.translateAsync(messageKey, { params: messageParams }),\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n return dialogResult.result === true;\n }\n\n showLoading(title: string, status: string) {\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n status,\n });\n }\n\n async showSuccessToast(titleKey: string, contentKey?: string): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync(titleKey),\n content: contentKey ? await this.translationService.translateAsync(contentKey) : undefined,\n });\n }\n\n async showErrorToastFor(error: unknown, fallbackKey: string): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n const info = extractRequestErrorInfo(error);\n const contentKey =\n platformErrorI18nKey(info?.code) ??\n (typeof info?.message === 'string' && info.message.startsWith('@')\n ? info.message\n : null) ??\n fallbackKey;\n const content = contentKey.startsWith('@')\n ? await this.translationService.translateAsync(contentKey)\n : contentKey;\n\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content,\n closeButton: true,\n timeOut: 6000,\n timeOutProgress: true,\n });\n }\n\n dispatchArchived(refType: string, id: string, meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, meta as Record<string, unknown> | undefined);\n }\n\n dispatchUnarchived(refType: string, id: string, meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, meta as Record<string, unknown> | undefined);\n }\n\n dispatchBulkArchived(refType: string, ids: string[], meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, { refreshType: 'bulk-archive', ...(meta ?? {}) });\n }\n\n dispatchBulkUnarchived(refType: string, ids: string[], meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, { refreshType: 'bulk-unarchive', ...(meta ?? {}) });\n }\n}\n","import type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityActionBulkRef, resolveEntityActionRef } from '@acorex-platform/framework-shared/runtime';\n\nexport const DEFAULT_ARCHIVE_FIELD = 'isArchived';\nexport const ARCHIVE_TIMESTAMP_FIELD = 'archivedAt';\n\nexport interface AXPArchiveCommandContext {\n refId: string;\n refType: string;\n rowData?: AXPContextData;\n}\n\nexport interface AXPBulkArchiveCommandContext {\n refType: string;\n ids: string[];\n rows: AXPContextData[];\n}\n\nexport function normalizeArchiveSingleInput(input: AXPContextData): AXPArchiveCommandContext | null {\n const resolved = resolveEntityActionRef(input);\n if (!resolved) {\n return null;\n }\n\n return {\n refId: resolved.refId,\n refType: resolved.refType,\n rowData: resolved.rowData as AXPContextData | undefined,\n };\n}\n\nexport function normalizeArchiveBulkInput(input: AXPContextData): AXPBulkArchiveCommandContext | null {\n const resolved = resolveEntityActionBulkRef(input);\n if (!resolved) {\n return null;\n }\n\n return {\n refType: resolved.refType,\n ids: resolved.ids,\n rows: resolved.rows as AXPContextData[],\n };\n}\n\nexport function buildArchivePatch(archived: boolean): AXPContextData {\n if (archived) {\n return { [DEFAULT_ARCHIVE_FIELD]: true, [ARCHIVE_TIMESTAMP_FIELD]: new Date() };\n }\n return { [DEFAULT_ARCHIVE_FIELD]: false, [ARCHIVE_TIMESTAMP_FIELD]: null };\n}\n\nexport function buildArchiveRefreshMeta(\n entityDefinition: AXPEntity,\n rowData?: AXPContextData,\n): AXPContextData {\n const meta: AXPContextData = {};\n if (entityDefinition.parentKey && rowData?.[entityDefinition.parentKey] != null) {\n meta['refreshTargetId'] = rowData[entityDefinition.parentKey];\n }\n return meta;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/archive-entity.command.helper.ts","../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/archive-entity.command.util.ts"],"sourcesContent":["import { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport {\n AXPCommonSettings,\n AXPSettingsService,\n extractRequestErrorInfo,\n platformErrorI18nKey,\n throwIfCommandFailed,\n} from '@acorex-platform/framework-client/common';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXP_ENTITY_ARCHIVE_OVERRIDES } from '../archive-entity.override';\n\n/**\n * Injectable helper for archive commands: confirmation UI, persistence, toasts, and refresh events.\n * Pure input/patch logic lives in {@link archive-entity.command.util}.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPArchiveEntityCommandHelper {\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly dialogService = inject(AXDialogService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n private readonly archiveOverrides = inject(AXP_ENTITY_ARCHIVE_OVERRIDES, { optional: true }) ?? [];\n\n async resolveEntity(refType: string): Promise<AXPEntity> {\n const [moduleName, entityName] = refType.split('.');\n return this.entityRegistry.resolve(moduleName, entityName);\n }\n\n async applyPatch(refType: string, refId: string, patch: AXPContextData): Promise<void> {\n const override = this.archiveOverrides.find((entry) => entry.refType === refType);\n if (override) {\n const archived = patch['isArchived'] === true;\n if (archived) {\n await override.archive(refId);\n } else {\n await override.restore(refId);\n }\n return;\n }\n\n const entityDefinition = await this.resolveEntity(refType);\n const updateExec = entityDefinition.commands?.update?.execute as\n | ((payload: AXPContextData) => Promise<unknown>)\n | undefined;\n\n if (!updateExec) {\n throw new Error('Entity does not support update operation');\n }\n\n const result = await updateExec({ id: refId, ...patch });\n throwIfCommandFailed(result);\n }\n\n async confirm(titleKey: string, messageKey: string, messageParams?: AXPContextData): Promise<boolean> {\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync(titleKey),\n await this.translationService.translateAsync(messageKey, { params: messageParams }),\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n return dialogResult.result === true;\n }\n\n showLoading(title: string, status: string) {\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n status,\n });\n }\n\n async showSuccessToast(titleKey: string, contentKey?: string): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync(titleKey),\n content: contentKey ? await this.translationService.translateAsync(contentKey) : undefined,\n });\n }\n\n async showErrorToastFor(error: unknown, fallbackKey: string): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n const info = extractRequestErrorInfo(error);\n const contentKey =\n platformErrorI18nKey(info?.code) ??\n (typeof info?.message === 'string' && info.message.startsWith('@')\n ? info.message\n : null) ??\n fallbackKey;\n const content = contentKey.startsWith('@')\n ? await this.translationService.translateAsync(contentKey)\n : contentKey;\n\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content,\n closeButton: true,\n timeOut: 6000,\n timeOutProgress: true,\n });\n }\n\n dispatchArchived(refType: string, id: string, meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, meta as Record<string, unknown> | undefined);\n }\n\n dispatchUnarchived(refType: string, id: string, meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, meta as Record<string, unknown> | undefined);\n }\n\n dispatchBulkArchived(refType: string, ids: string[], meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, { refreshType: 'bulk-archive', ...(meta ?? {}) });\n }\n\n dispatchBulkUnarchived(refType: string, ids: string[], meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, { refreshType: 'bulk-unarchive', ...(meta ?? {}) });\n }\n}\n","import type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityActionBulkRef, resolveEntityActionRef } from '@acorex-platform/framework-shared/runtime';\n\nexport const DEFAULT_ARCHIVE_FIELD = 'isArchived';\nexport const ARCHIVE_TIMESTAMP_FIELD = 'archivedAt';\n\nexport interface AXPArchiveCommandContext {\n refId: string;\n refType: string;\n rowData?: AXPContextData;\n}\n\nexport interface AXPBulkArchiveCommandContext {\n refType: string;\n ids: string[];\n rows: AXPContextData[];\n}\n\nexport function normalizeArchiveSingleInput(input: AXPContextData): AXPArchiveCommandContext | null {\n const resolved = resolveEntityActionRef(input);\n if (!resolved) {\n return null;\n }\n\n return {\n refId: resolved.refId,\n refType: resolved.refType,\n rowData: resolved.rowData as AXPContextData | undefined,\n };\n}\n\nexport function normalizeArchiveBulkInput(input: AXPContextData): AXPBulkArchiveCommandContext | null {\n const resolved = resolveEntityActionBulkRef(input);\n if (!resolved) {\n return null;\n }\n\n return {\n refType: resolved.refType,\n ids: resolved.ids,\n rows: resolved.rows as AXPContextData[],\n };\n}\n\nexport function buildArchivePatch(archived: boolean): AXPContextData {\n if (archived) {\n return { [DEFAULT_ARCHIVE_FIELD]: true, [ARCHIVE_TIMESTAMP_FIELD]: new Date() };\n }\n return { [DEFAULT_ARCHIVE_FIELD]: false, [ARCHIVE_TIMESTAMP_FIELD]: null };\n}\n\nexport function buildArchiveRefreshMeta(\n entityDefinition: AXPEntity,\n rowData?: AXPContextData,\n): AXPContextData {\n const meta: AXPContextData = {};\n if (entityDefinition.parentKey && rowData?.[entityDefinition.parentKey] != null) {\n meta['refreshTargetId'] = rowData[entityDefinition.parentKey];\n }\n return meta;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { AXTranslationService } from '@acorex/core/translation';
|
|
|
3
3
|
import { AXPEntityBulkPatchPerformService } from '@acorex-platform/framework-client/layout/entity';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { inject, Injectable } from '@angular/core';
|
|
6
|
-
import { A as AXPArchiveEntityCommandHelper, c as normalizeArchiveBulkInput, b as buildArchivePatch } from './acorex-platform-module-common-client-archive-entity.command.util-
|
|
6
|
+
import { A as AXPArchiveEntityCommandHelper, c as normalizeArchiveBulkInput, b as buildArchivePatch } from './acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs';
|
|
7
7
|
|
|
8
8
|
class AXPBulkArchiveEntityCommand {
|
|
9
9
|
constructor() {
|
|
@@ -51,7 +51,7 @@ class AXPBulkArchiveEntityCommand {
|
|
|
51
51
|
}
|
|
52
52
|
// Dialog already presented — omit message to avoid toast middleware double-fire.
|
|
53
53
|
return result.success
|
|
54
|
-
? { success: true, kind: 'object', data: data }
|
|
54
|
+
? { success: true, kind: 'object', data: data, metadata: { refresh: false } }
|
|
55
55
|
: { success: false, message: result.message };
|
|
56
56
|
}
|
|
57
57
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBulkArchiveEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
63
63
|
}] });
|
|
64
64
|
|
|
65
65
|
export { AXPBulkArchiveEntityCommand };
|
|
66
|
-
//# sourceMappingURL=acorex-platform-module-common-client-bulk-archive-entity.command-
|
|
66
|
+
//# sourceMappingURL=acorex-platform-module-common-client-bulk-archive-entity.command-BfINUGph.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-common-client-bulk-archive-entity.command-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-common-client-bulk-archive-entity.command-BfINUGph.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/bulk-archive-entity.command.ts"],"sourcesContent":["import { runtimeCommandPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult, type AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityBulkPatchPerformService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPBulkCommandResultData } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPArchiveEntityCommandHelper } from './archive-entity.command.helper';\nimport { buildArchivePatch, normalizeArchiveBulkInput } from './archive-entity.command.util';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPBulkArchiveEntityCommand\n implements AXPCommand<AXPContextData, AXPBulkCommandResultData>\n{\n private readonly helper = inject(AXPArchiveEntityCommandHelper);\n private readonly translationService = inject(AXTranslationService);\n private readonly bulkPatch = inject(AXPEntityBulkPatchPerformService);\n\n async execute(\n input: AXPContextData,\n ): AXPCommandExecuteResultPromise<AXPBulkCommandResultData> {\n const context = normalizeArchiveBulkInput(input);\n if (!context) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const confirmed = await this.helper.confirm(\n '@general:actions.bulk-archive.confirm.title',\n '@general:actions.bulk-archive.confirm.message',\n { count: context.ids.length },\n );\n if (!confirmed) {\n return { success: false };\n }\n\n const result = await this.bulkPatch.perform({\n entity: context.refType,\n ids: context.ids,\n patch: buildArchivePatch(true),\n loadingTitleKey: '@general:actions.bulk-archive.confirm.processing',\n successTitleKey: '@general:workflow.entity-bulk-archived',\n successBodyKey: '@general:workflow.entity-bulk-archived-body',\n partialTitleKey: '@general:workflow.bulk.partial-title',\n partialBodyKey: '@general:workflow.bulk.partial-body',\n partialBodyWithReasonKey: '@general:workflow.bulk.partial-body-with-reason',\n failTitleKey: '@general:workflow.bulk.fail-title',\n failBodyKey: '@general:workflow.bulk.fail-body',\n failBodyWithReasonKey: '@general:workflow.bulk.fail-body-with-reason',\n });\n\n const data = runtimeCommandPayloadData(result);\n if ((data?.succeeded ?? 0) > 0) {\n this.helper.dispatchBulkArchived(context.refType, context.ids, {\n failedIds: (data?.results ?? [])\n .filter((item: { success: boolean; id: string }) => !item.success)\n .map((item: { success: boolean; id: string }) => item.id),\n totalProcessed: data?.succeeded,\n totalFailed: data?.failed,\n });\n }\n\n // Dialog already presented — omit message to avoid toast middleware double-fire.\n return result.success\n ? { success: true, kind: 'object' as const, data: data!, metadata: { refresh: false } }\n : { success: false, message: result.message };\n }\n}\n"],"names":[],"mappings":";;;;;;;MAYa,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC9C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gCAAgC,CAAC;AAuDtE,IAAA;IArDC,MAAM,OAAO,CACX,KAAqB,EAAA;AAErB,QAAA,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,uCAAuC,CAAC;AAC5F,iBAAA;aACF;QACH;QAEA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACzC,6CAA6C,EAC7C,+CAA+C,EAC/C,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAC9B;QACD,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3B;QAEA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC1C,MAAM,EAAE,OAAO,CAAC,OAAO;YACvB,GAAG,EAAE,OAAO,CAAC,GAAG;AAChB,YAAA,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC;AAC9B,YAAA,eAAe,EAAE,kDAAkD;AACnE,YAAA,eAAe,EAAE,wCAAwC;AACzD,YAAA,cAAc,EAAE,6CAA6C;AAC7D,YAAA,eAAe,EAAE,sCAAsC;AACvD,YAAA,cAAc,EAAE,qCAAqC;AACrD,YAAA,wBAAwB,EAAE,iDAAiD;AAC3E,YAAA,YAAY,EAAE,mCAAmC;AACjD,YAAA,WAAW,EAAE,kCAAkC;AAC/C,YAAA,qBAAqB,EAAE,8CAA8C;AACtE,SAAA,CAAC;AAEF,QAAA,MAAM,IAAI,GAAG,yBAAyB,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;AAC7D,gBAAA,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;qBAC5B,MAAM,CAAC,CAAC,IAAsC,KAAK,CAAC,IAAI,CAAC,OAAO;qBAChE,GAAG,CAAC,CAAC,IAAsC,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC3D,cAAc,EAAE,IAAI,EAAE,SAAS;gBAC/B,WAAW,EAAE,IAAI,EAAE,MAAM;AAC1B,aAAA,CAAC;QACJ;;QAGA,OAAO,MAAM,CAAC;cACV,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAiB,EAAE,IAAI,EAAE,IAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AACrF,cAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;IACjD;8GA3DW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
|
|
@@ -3,7 +3,7 @@ import { AXTranslationService } from '@acorex/core/translation';
|
|
|
3
3
|
import { AXPEntityBulkPatchPerformService } from '@acorex-platform/framework-client/layout/entity';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { inject, Injectable } from '@angular/core';
|
|
6
|
-
import { A as AXPArchiveEntityCommandHelper, c as normalizeArchiveBulkInput, b as buildArchivePatch } from './acorex-platform-module-common-client-archive-entity.command.util-
|
|
6
|
+
import { A as AXPArchiveEntityCommandHelper, c as normalizeArchiveBulkInput, b as buildArchivePatch } from './acorex-platform-module-common-client-archive-entity.command.util-fd533YPY.mjs';
|
|
7
7
|
|
|
8
8
|
class AXPBulkRestoreArchiveEntityCommand {
|
|
9
9
|
constructor() {
|
|
@@ -50,7 +50,7 @@ class AXPBulkRestoreArchiveEntityCommand {
|
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
return result.success
|
|
53
|
-
? { success: true, kind: 'object', data: data }
|
|
53
|
+
? { success: true, kind: 'object', data: data, metadata: { refresh: false } }
|
|
54
54
|
: { success: false, message: result.message };
|
|
55
55
|
}
|
|
56
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBulkRestoreArchiveEntityCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -62,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
62
62
|
}] });
|
|
63
63
|
|
|
64
64
|
export { AXPBulkRestoreArchiveEntityCommand };
|
|
65
|
-
//# sourceMappingURL=acorex-platform-module-common-client-bulk-restore-archive-entity.command-
|
|
65
|
+
//# sourceMappingURL=acorex-platform-module-common-client-bulk-restore-archive-entity.command-CGy1Kdon.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-common-client-bulk-restore-archive-entity.command-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-common-client-bulk-restore-archive-entity.command-CGy1Kdon.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/archive-plugin/commands/bulk-restore-archive-entity.command.ts"],"sourcesContent":["import { runtimeCommandPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult, type AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityBulkPatchPerformService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPBulkCommandResultData } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPArchiveEntityCommandHelper } from './archive-entity.command.helper';\nimport { buildArchivePatch, normalizeArchiveBulkInput } from './archive-entity.command.util';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPBulkRestoreArchiveEntityCommand\n implements AXPCommand<AXPContextData, AXPBulkCommandResultData>\n{\n private readonly helper = inject(AXPArchiveEntityCommandHelper);\n private readonly translationService = inject(AXTranslationService);\n private readonly bulkPatch = inject(AXPEntityBulkPatchPerformService);\n\n async execute(\n input: AXPContextData,\n ): AXPCommandExecuteResultPromise<AXPBulkCommandResultData> {\n const context = normalizeArchiveBulkInput(input);\n if (!context) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const confirmed = await this.helper.confirm(\n '@general:actions.bulk-restore-archive.confirm.title',\n '@general:actions.bulk-restore-archive.confirm.message',\n { count: context.ids.length },\n );\n if (!confirmed) {\n return { success: false };\n }\n\n const result = await this.bulkPatch.perform({\n entity: context.refType,\n ids: context.ids,\n patch: buildArchivePatch(false),\n loadingTitleKey: '@general:actions.bulk-restore-archive.confirm.processing',\n successTitleKey: '@general:workflow.entity-bulk-unarchived',\n successBodyKey: '@general:workflow.entity-bulk-unarchived-body',\n partialTitleKey: '@general:workflow.bulk.partial-title',\n partialBodyKey: '@general:workflow.bulk.partial-body',\n partialBodyWithReasonKey: '@general:workflow.bulk.partial-body-with-reason',\n failTitleKey: '@general:workflow.bulk.fail-title',\n failBodyKey: '@general:workflow.bulk.fail-body',\n failBodyWithReasonKey: '@general:workflow.bulk.fail-body-with-reason',\n });\n\n const data = runtimeCommandPayloadData(result);\n if ((data?.succeeded ?? 0) > 0) {\n this.helper.dispatchBulkUnarchived(context.refType, context.ids, {\n failedIds: (data?.results ?? [])\n .filter((item: { success: boolean; id: string }) => !item.success)\n .map((item: { success: boolean; id: string }) => item.id),\n totalProcessed: data?.succeeded,\n totalFailed: data?.failed,\n });\n }\n\n return result.success\n ? { success: true, kind: 'object' as const, data: data!, metadata: { refresh: false } }\n : { success: false, message: result.message };\n }\n}"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { AXPSettingsService, AXPCommonSettings } from '@acorex-platform/framewor
|
|
|
8
8
|
import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';
|
|
9
9
|
import { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';
|
|
10
10
|
import { resolveEntityActionRef } from '@acorex-platform/framework-shared/runtime';
|
|
11
|
-
import { t as toVariableName, i as isValidVariableName } from './acorex-platform-module-common-client-acorex-platform-module-common-client-
|
|
11
|
+
import { t as toVariableName, i as isValidVariableName } from './acorex-platform-module-common-client-acorex-platform-module-common-client-DsCvUxSh.mjs';
|
|
12
12
|
|
|
13
13
|
class AXPCloneEntityCommandHelper {
|
|
14
14
|
constructor() {
|
|
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
223
223
|
}] });
|
|
224
224
|
|
|
225
225
|
export { AXPCloneEntityCommand };
|
|
226
|
-
//# sourceMappingURL=acorex-platform-module-common-client-clone-entity.command-
|
|
226
|
+
//# sourceMappingURL=acorex-platform-module-common-client-clone-entity.command-DgVI86z3.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-common-client-clone-entity.command-rTasIhWx.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/clone-plugin/commands/clone-entity.command.helper.ts","../../../../libs/modules/common/client/src/lib/features/clone-plugin/clone-identifier-fields.util.ts","../../../../libs/modules/common/client/src/lib/features/clone-plugin/commands/clone-entity.command.util.ts","../../../../libs/modules/common/client/src/lib/features/clone-plugin/commands/clone-entity.command.ts"],"sourcesContent":["import { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCloneEntityCommandHelper {\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly dialogService = inject(AXDialogService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async resolveEntity(refType: string): Promise<AXPEntity> {\n const [moduleName, entityName] = refType.split('.');\n return this.entityRegistry.resolve(moduleName, entityName);\n }\n\n async fetchEntityData(refType: string, refId: string): Promise<AXPContextData> {\n const entityDefinition = await this.resolveEntity(refType);\n\n if (entityDefinition.queries?.byKey) {\n const queryExec = entityDefinition.queries.byKey.execute as\n | ((id: string) => Promise<AXPContextData>)\n | undefined;\n\n if (!queryExec) {\n throw new Error('Entity byKey query is not executable');\n }\n\n return queryExec(refId);\n }\n\n return { id: refId };\n }\n\n async createEntity(refType: string, data: AXPContextData): Promise<string> {\n const entityDefinition = await this.resolveEntity(refType);\n const createExec = entityDefinition.commands?.create?.execute as\n | ((payload: AXPContextData) => Promise<string>)\n | undefined;\n\n if (!createExec) {\n throw new Error('Entity does not support create operation');\n }\n\n return createExec(data);\n }\n\n async confirm(titleKey: string, messageKey: string, messageParams?: AXPContextData): Promise<boolean> {\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync(titleKey),\n await this.translationService.translateAsync(messageKey, { params: messageParams }),\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n return dialogResult.result === true;\n }\n\n showLoading(title: string, status: string) {\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n status,\n });\n }\n\n async showSuccessToast(titleKey: string, contentKey?: string): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync(titleKey),\n content: contentKey ? await this.translationService.translateAsync(contentKey) : undefined,\n });\n }\n\n dispatchCloned(refType: string, _originalId: string, newId: string, meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, {\n ...(meta as Record<string, unknown> | undefined),\n highlightRowId: newId,\n resetPagination: true,\n });\n }\n}\n","import type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { isValidVariableName, toVariableName } from '../../validations/utils/variable-name.util';\nimport { AXPDerivedNameExtension } from '../derived-name-plugin/derived-name.plugin';\n\n//#region ---- Constants ----\n\nexport const CLONE_TITLE_SUFFIX = ' (Copy)';\nexport const CLONE_CODE_SUFFIX = '_copy';\n\n//#endregion\n\n//#region ---- Clone Identifier Field Preparation ----\n\n/**\n * Adjusts common identifier fields after cloning.\n * Uses entity metadata (derived-name plugin, variable-name validation) to pick a safe strategy.\n */\nexport function prepareCloneIdentifierFields(\n clonedData: AXPContextData,\n entityDefinition: AXPEntity,\n): void {\n const derivedName = (entityDefinition as { extensions?: { derivedName?: AXPDerivedNameExtension } }).extensions\n ?.derivedName;\n const properties = entityDefinition.properties ?? [];\n\n const propertyHasVariableNameRule = (fieldName: string): boolean =>\n properties.some(\n (prop) =>\n prop.name === fieldName && prop.validations?.some((validation) => validation.rule === 'variable-name'),\n );\n\n const title = clonedData['title'];\n if (typeof title === 'string' && title.trim()) {\n clonedData['title'] = `${title.trim()}${CLONE_TITLE_SUFFIX}`;\n }\n\n if (Object.prototype.hasOwnProperty.call(clonedData, 'name')) {\n clonedData['name'] = resolveClonedName(clonedData, derivedName, propertyHasVariableNameRule('name'));\n }\n\n const code = clonedData['code'];\n if (typeof code === 'string' && code.trim()) {\n clonedData['code'] = `${code.trim()}${CLONE_CODE_SUFFIX}`;\n }\n}\n\nfunction resolveClonedName(\n clonedData: AXPContextData,\n derivedName: AXPDerivedNameExtension | undefined,\n hasVariableNameValidation: boolean,\n): string {\n const sourceField = derivedName?.sourceField ?? 'title';\n const sourceValue = clonedData[sourceField];\n\n if (derivedName || hasVariableNameValidation) {\n const fromSource = toVariableName(sourceValue);\n if (fromSource) {\n return fromSource;\n }\n }\n\n const currentName = clonedData['name'];\n if (typeof currentName === 'string' && currentName.trim()) {\n const suffixed = `${currentName.trim()}${CLONE_CODE_SUFFIX}`;\n if (isValidVariableName(suffixed)) {\n return suffixed;\n }\n\n const fromTitle = toVariableName(clonedData['title']);\n if (fromTitle) {\n return fromTitle;\n }\n\n return toVariableName(currentName, 'clone');\n }\n\n return toVariableName(clonedData['title'], 'clone');\n}\n\n//#endregion\n","import type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityActionRef } from '@acorex-platform/framework-shared/runtime';\n\nimport { prepareCloneIdentifierFields } from '../clone-identifier-fields.util';\n\nexport interface AXPCloneCommandContext {\n refId: string;\n refType: string;\n rowData?: AXPContextData;\n}\n\nexport function normalizeCloneInput(input: AXPContextData): AXPCloneCommandContext | null {\n const resolved = resolveEntityActionRef(input);\n if (!resolved) {\n return null;\n }\n\n return {\n refId: resolved.refId,\n refType: resolved.refType,\n rowData: resolved.rowData as AXPContextData | undefined,\n };\n}\n\nexport function prepareClonedData(originalData: AXPContextData, entityDefinition: AXPEntity): AXPContextData {\n const clonedData = { ...originalData };\n\n delete clonedData['id'];\n delete clonedData['createdAt'];\n delete clonedData['updatedAt'];\n delete clonedData['createdBy'];\n delete clonedData['updatedBy'];\n delete clonedData['version'];\n delete clonedData['isArchived'];\n delete clonedData['archivedAt'];\n delete clonedData['isDisabled'];\n delete clonedData['disabledAt'];\n\n prepareCloneIdentifierFields(clonedData, entityDefinition);\n\n if (clonedData['isActive'] !== undefined) {\n clonedData['isActive'] = true;\n }\n if (clonedData['status'] !== undefined) {\n clonedData['status'] = 'draft';\n }\n\n return clonedData;\n}\n\nexport function buildCloneRefreshMeta(\n entityDefinition: AXPEntity,\n clonedData: AXPContextData,\n): AXPContextData {\n const meta: AXPContextData = {};\n if (entityDefinition.parentKey && clonedData[entityDefinition.parentKey] != null) {\n meta['refreshTargetId'] = clonedData[entityDefinition.parentKey];\n }\n return meta;\n}\n","import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult, type AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPCloneEntityCommandHelper } from './clone-entity.command.helper';\nimport {\n buildCloneRefreshMeta,\n normalizeCloneInput,\n prepareClonedData,\n} from './clone-entity.command.util';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCloneEntityCommand implements AXPCommand<AXPContextData, { newId: string }> {\n private readonly helper = inject(AXPCloneEntityCommandHelper);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: AXPContextData): AXPCommandExecuteResultPromise<{ newId: string }> {\n const context = normalizeCloneInput(input);\n if (!context) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const confirmed = await this.helper.confirm(\n '@general:actions.clone.confirm.title',\n '@general:actions.clone.confirm.message',\n );\n if (!confirmed) {\n return { success: false };\n }\n\n const loadingDialog = this.helper.showLoading(\n await this.translationService.translateAsync('@general:actions.clone.confirm.processing'),\n 'Cloning...',\n );\n\n try {\n const entityDefinition = await this.helper.resolveEntity(context.refType);\n const originalData = await this.helper.fetchEntityData(context.refType, context.refId);\n const clonedData = prepareClonedData(originalData, entityDefinition);\n const newId = await this.helper.createEntity(context.refType, clonedData);\n\n const meta = buildCloneRefreshMeta(entityDefinition, clonedData);\n this.helper.dispatchCloned(context.refType, context.refId, newId, meta);\n await this.helper.showSuccessToast('@general:workflow.entity-cloned', '@general:workflow.entity-cloned-body');\n\n return { success: true, kind: 'object', data: { newId } };\n } catch (error) {\n console.error('Clone operation failed:', error);\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : 'Clone operation failed',\n },\n };\n } finally {\n loadingDialog.close();\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-common-client-clone-entity.command-DgVI86z3.mjs","sources":["../../../../libs/modules/common/client/src/lib/features/clone-plugin/commands/clone-entity.command.helper.ts","../../../../libs/modules/common/client/src/lib/features/clone-plugin/clone-identifier-fields.util.ts","../../../../libs/modules/common/client/src/lib/features/clone-plugin/commands/clone-entity.command.util.ts","../../../../libs/modules/common/client/src/lib/features/clone-plugin/commands/clone-entity.command.ts"],"sourcesContent":["import { AXDialogService } from '@acorex/components/dialog';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityDefinitionRegistryService } from '@acorex-platform/framework-client/layout/entity';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCloneEntityCommandHelper {\n private readonly entityRegistry = inject(AXPEntityDefinitionRegistryService);\n private readonly dialogService = inject(AXDialogService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly toastService = inject(AXToastService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async resolveEntity(refType: string): Promise<AXPEntity> {\n const [moduleName, entityName] = refType.split('.');\n return this.entityRegistry.resolve(moduleName, entityName);\n }\n\n async fetchEntityData(refType: string, refId: string): Promise<AXPContextData> {\n const entityDefinition = await this.resolveEntity(refType);\n\n if (entityDefinition.queries?.byKey) {\n const queryExec = entityDefinition.queries.byKey.execute as\n | ((id: string) => Promise<AXPContextData>)\n | undefined;\n\n if (!queryExec) {\n throw new Error('Entity byKey query is not executable');\n }\n\n return queryExec(refId);\n }\n\n return { id: refId };\n }\n\n async createEntity(refType: string, data: AXPContextData): Promise<string> {\n const entityDefinition = await this.resolveEntity(refType);\n const createExec = entityDefinition.commands?.create?.execute as\n | ((payload: AXPContextData) => Promise<string>)\n | undefined;\n\n if (!createExec) {\n throw new Error('Entity does not support create operation');\n }\n\n return createExec(data);\n }\n\n async confirm(titleKey: string, messageKey: string, messageParams?: AXPContextData): Promise<boolean> {\n const dialogResult = await this.dialogService.confirm(\n await this.translationService.translateAsync(titleKey),\n await this.translationService.translateAsync(messageKey, { params: messageParams }),\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n return dialogResult.result === true;\n }\n\n showLoading(title: string, status: string) {\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n status,\n });\n }\n\n async showSuccessToast(titleKey: string, contentKey?: string): Promise<void> {\n const enabled = await this.settingsService.get<boolean>(AXPCommonSettings.EnableOperationToasts);\n if (!enabled) {\n return;\n }\n\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync(titleKey),\n content: contentKey ? await this.translationService.translateAsync(contentKey) : undefined,\n });\n }\n\n dispatchCloned(refType: string, _originalId: string, newId: string, meta?: AXPContextData): void {\n this.entityEvents.publishLayoutRefresh(refType, {\n ...(meta as Record<string, unknown> | undefined),\n highlightRowId: newId,\n resetPagination: true,\n });\n }\n}\n","import type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { isValidVariableName, toVariableName } from '../../validations/utils/variable-name.util';\nimport { AXPDerivedNameExtension } from '../derived-name-plugin/derived-name.plugin';\n\n//#region ---- Constants ----\n\nexport const CLONE_TITLE_SUFFIX = ' (Copy)';\nexport const CLONE_CODE_SUFFIX = '_copy';\n\n//#endregion\n\n//#region ---- Clone Identifier Field Preparation ----\n\n/**\n * Adjusts common identifier fields after cloning.\n * Uses entity metadata (derived-name plugin, variable-name validation) to pick a safe strategy.\n */\nexport function prepareCloneIdentifierFields(\n clonedData: AXPContextData,\n entityDefinition: AXPEntity,\n): void {\n const derivedName = (entityDefinition as { extensions?: { derivedName?: AXPDerivedNameExtension } }).extensions\n ?.derivedName;\n const properties = entityDefinition.properties ?? [];\n\n const propertyHasVariableNameRule = (fieldName: string): boolean =>\n properties.some(\n (prop) =>\n prop.name === fieldName && prop.validations?.some((validation) => validation.rule === 'variable-name'),\n );\n\n const title = clonedData['title'];\n if (typeof title === 'string' && title.trim()) {\n clonedData['title'] = `${title.trim()}${CLONE_TITLE_SUFFIX}`;\n }\n\n if (Object.prototype.hasOwnProperty.call(clonedData, 'name')) {\n clonedData['name'] = resolveClonedName(clonedData, derivedName, propertyHasVariableNameRule('name'));\n }\n\n const code = clonedData['code'];\n if (typeof code === 'string' && code.trim()) {\n clonedData['code'] = `${code.trim()}${CLONE_CODE_SUFFIX}`;\n }\n}\n\nfunction resolveClonedName(\n clonedData: AXPContextData,\n derivedName: AXPDerivedNameExtension | undefined,\n hasVariableNameValidation: boolean,\n): string {\n const sourceField = derivedName?.sourceField ?? 'title';\n const sourceValue = clonedData[sourceField];\n\n if (derivedName || hasVariableNameValidation) {\n const fromSource = toVariableName(sourceValue);\n if (fromSource) {\n return fromSource;\n }\n }\n\n const currentName = clonedData['name'];\n if (typeof currentName === 'string' && currentName.trim()) {\n const suffixed = `${currentName.trim()}${CLONE_CODE_SUFFIX}`;\n if (isValidVariableName(suffixed)) {\n return suffixed;\n }\n\n const fromTitle = toVariableName(clonedData['title']);\n if (fromTitle) {\n return fromTitle;\n }\n\n return toVariableName(currentName, 'clone');\n }\n\n return toVariableName(clonedData['title'], 'clone');\n}\n\n//#endregion\n","import type { AXPContextData } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntity } from '@acorex-platform/framework-shared/entity';\nimport { resolveEntityActionRef } from '@acorex-platform/framework-shared/runtime';\n\nimport { prepareCloneIdentifierFields } from '../clone-identifier-fields.util';\n\nexport interface AXPCloneCommandContext {\n refId: string;\n refType: string;\n rowData?: AXPContextData;\n}\n\nexport function normalizeCloneInput(input: AXPContextData): AXPCloneCommandContext | null {\n const resolved = resolveEntityActionRef(input);\n if (!resolved) {\n return null;\n }\n\n return {\n refId: resolved.refId,\n refType: resolved.refType,\n rowData: resolved.rowData as AXPContextData | undefined,\n };\n}\n\nexport function prepareClonedData(originalData: AXPContextData, entityDefinition: AXPEntity): AXPContextData {\n const clonedData = { ...originalData };\n\n delete clonedData['id'];\n delete clonedData['createdAt'];\n delete clonedData['updatedAt'];\n delete clonedData['createdBy'];\n delete clonedData['updatedBy'];\n delete clonedData['version'];\n delete clonedData['isArchived'];\n delete clonedData['archivedAt'];\n delete clonedData['isDisabled'];\n delete clonedData['disabledAt'];\n\n prepareCloneIdentifierFields(clonedData, entityDefinition);\n\n if (clonedData['isActive'] !== undefined) {\n clonedData['isActive'] = true;\n }\n if (clonedData['status'] !== undefined) {\n clonedData['status'] = 'draft';\n }\n\n return clonedData;\n}\n\nexport function buildCloneRefreshMeta(\n entityDefinition: AXPEntity,\n clonedData: AXPContextData,\n): AXPContextData {\n const meta: AXPContextData = {};\n if (entityDefinition.parentKey && clonedData[entityDefinition.parentKey] != null) {\n meta['refreshTargetId'] = clonedData[entityDefinition.parentKey];\n }\n return meta;\n}\n","import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult, type AXPContextData } from '@acorex-platform/framework-shared/core';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXPCloneEntityCommandHelper } from './clone-entity.command.helper';\nimport {\n buildCloneRefreshMeta,\n normalizeCloneInput,\n prepareClonedData,\n} from './clone-entity.command.util';\n\n@Injectable({ providedIn: 'root' })\nexport class AXPCloneEntityCommand implements AXPCommand<AXPContextData, { newId: string }> {\n private readonly helper = inject(AXPCloneEntityCommandHelper);\n private readonly translationService = inject(AXTranslationService);\n\n async execute(input: AXPContextData): AXPCommandExecuteResultPromise<{ newId: string }> {\n const context = normalizeCloneInput(input);\n if (!context) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const confirmed = await this.helper.confirm(\n '@general:actions.clone.confirm.title',\n '@general:actions.clone.confirm.message',\n );\n if (!confirmed) {\n return { success: false };\n }\n\n const loadingDialog = this.helper.showLoading(\n await this.translationService.translateAsync('@general:actions.clone.confirm.processing'),\n 'Cloning...',\n );\n\n try {\n const entityDefinition = await this.helper.resolveEntity(context.refType);\n const originalData = await this.helper.fetchEntityData(context.refType, context.refId);\n const clonedData = prepareClonedData(originalData, entityDefinition);\n const newId = await this.helper.createEntity(context.refType, clonedData);\n\n const meta = buildCloneRefreshMeta(entityDefinition, clonedData);\n this.helper.dispatchCloned(context.refType, context.refId, newId, meta);\n await this.helper.showSuccessToast('@general:workflow.entity-cloned', '@general:workflow.entity-cloned-body');\n\n return { success: true, kind: 'object', data: { newId } };\n } catch (error) {\n console.error('Clone operation failed:', error);\n return {\n success: false,\n message: {\n text: error instanceof Error ? error.message : 'Clone operation failed',\n },\n };\n } finally {\n loadingDialog.close();\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
|
|
2
|
+
import { createAllQueryView } from '@acorex-platform/framework-shared/entity';
|
|
3
|
+
|
|
4
|
+
const config = {
|
|
5
|
+
i18n: 'common',
|
|
6
|
+
module: 'Common',
|
|
7
|
+
};
|
|
8
|
+
const RootConfig = {
|
|
9
|
+
config,
|
|
10
|
+
module: {
|
|
11
|
+
route: 'common',
|
|
12
|
+
name: config.module,
|
|
13
|
+
title: '@general:common.module.title',
|
|
14
|
+
icon: 'fa-light fa-file-invoice',
|
|
15
|
+
},
|
|
16
|
+
entities: {
|
|
17
|
+
recordLock: {
|
|
18
|
+
name: 'RecordLock',
|
|
19
|
+
title: 'Record Lock',
|
|
20
|
+
titlePlural: 'Record Locks',
|
|
21
|
+
icon: 'fa-light fa-lock',
|
|
22
|
+
source: `${config.module}.RecordLock`,
|
|
23
|
+
},
|
|
24
|
+
versionStream: {
|
|
25
|
+
name: 'VersionStream',
|
|
26
|
+
title: 'Version Stream',
|
|
27
|
+
titlePlural: 'Version Streams',
|
|
28
|
+
icon: 'fa-light fa-code-branch',
|
|
29
|
+
source: `${config.module}.VersionStream`,
|
|
30
|
+
},
|
|
31
|
+
versionEntry: {
|
|
32
|
+
name: 'VersionEntry',
|
|
33
|
+
title: 'Version Entry',
|
|
34
|
+
titlePlural: 'Version Entries',
|
|
35
|
+
icon: 'fa-light fa-clock-rotate-left',
|
|
36
|
+
source: `${config.module}.VersionEntry`,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//#region ---- Record lock entity (edit locks) ----
|
|
42
|
+
async function factoryRecordLock() {
|
|
43
|
+
const entityDef = {
|
|
44
|
+
module: RootConfig.module.name,
|
|
45
|
+
name: RootConfig.entities.recordLock.name,
|
|
46
|
+
title: RootConfig.entities.recordLock.title,
|
|
47
|
+
icon: RootConfig.entities.recordLock.icon,
|
|
48
|
+
formats: {
|
|
49
|
+
individual: RootConfig.entities.recordLock.title,
|
|
50
|
+
plural: RootConfig.entities.recordLock.titlePlural,
|
|
51
|
+
searchResult: {
|
|
52
|
+
title: '{{ refType }} / {{ refId }}',
|
|
53
|
+
description: '{{ type }}',
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
groups: [{ id: 'overview', title: 'Overview' }],
|
|
57
|
+
properties: [
|
|
58
|
+
{
|
|
59
|
+
name: 'id',
|
|
60
|
+
title: 'ID',
|
|
61
|
+
groupId: 'overview',
|
|
62
|
+
schema: {
|
|
63
|
+
dataType: 'uuid',
|
|
64
|
+
visible: false,
|
|
65
|
+
nullable: false,
|
|
66
|
+
readonly: true,
|
|
67
|
+
unique: { enabled: true },
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'refId',
|
|
72
|
+
title: 'Reference Id',
|
|
73
|
+
groupId: 'overview',
|
|
74
|
+
schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'refType',
|
|
78
|
+
title: 'Reference Type',
|
|
79
|
+
groupId: 'overview',
|
|
80
|
+
schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'type',
|
|
84
|
+
title: 'Lock Type',
|
|
85
|
+
groupId: 'overview',
|
|
86
|
+
schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: 'date',
|
|
90
|
+
title: 'Lock Date',
|
|
91
|
+
groupId: 'overview',
|
|
92
|
+
schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'expireAt',
|
|
96
|
+
title: 'Expires At',
|
|
97
|
+
groupId: 'overview',
|
|
98
|
+
schema: {
|
|
99
|
+
dataType: 'datetime',
|
|
100
|
+
interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'datetime' } },
|
|
101
|
+
readonly: true,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'lockedBy',
|
|
106
|
+
title: 'Locked By',
|
|
107
|
+
groupId: 'overview',
|
|
108
|
+
schema: { dataType: 'object', interface: { type: 'json' }, readonly: true },
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
columns: [
|
|
112
|
+
{ name: 'refType' },
|
|
113
|
+
{ name: 'refId' },
|
|
114
|
+
{ name: 'type' },
|
|
115
|
+
{ name: 'expireAt' },
|
|
116
|
+
],
|
|
117
|
+
interfaces: {
|
|
118
|
+
master: {
|
|
119
|
+
list: {
|
|
120
|
+
actions: [],
|
|
121
|
+
views: [createAllQueryView({})],
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
return entityDef;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Generated bundle index. Do not edit.
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
export { factoryRecordLock };
|
|
135
|
+
//# sourceMappingURL=acorex-platform-module-common-client-contracts-entities-record-lock.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-common-client-contracts-entities-record-lock.mjs","sources":["../../../../libs/modules/common/contracts/src/root-config.ts","../../../../libs/modules/common/contracts/src/entities/record-lock/record-lock.entity.ts","../../../../libs/modules/common/contracts/src/acorex-platform-module-common-client-contracts-entities-record-lock.ts"],"sourcesContent":["const config = {\n i18n: 'common',\n module: 'Common',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'common',\n name: config.module,\n title: '@general:common.module.title',\n icon: 'fa-light fa-file-invoice',\n },\n entities: {\n recordLock: {\n name: 'RecordLock',\n title: 'Record Lock',\n titlePlural: 'Record Locks',\n icon: 'fa-light fa-lock',\n source: `${config.module}.RecordLock`,\n },\n versionStream: {\n name: 'VersionStream',\n title: 'Version Stream',\n titlePlural: 'Version Streams',\n icon: 'fa-light fa-code-branch',\n source: `${config.module}.VersionStream`,\n },\n versionEntry: {\n name: 'VersionEntry',\n title: 'Version Entry',\n titlePlural: 'Version Entries',\n icon: 'fa-light fa-clock-rotate-left',\n source: `${config.module}.VersionEntry`,\n },\n },\n} as const;\n","import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity, createAllQueryView } from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- Record lock entity (edit locks) ----\n\nexport async function factoryRecordLock(): Promise<AXPEntity | null> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.recordLock.name,\n title: RootConfig.entities.recordLock.title,\n icon: RootConfig.entities.recordLock.icon,\n formats: {\n individual: RootConfig.entities.recordLock.title,\n plural: RootConfig.entities.recordLock.titlePlural,\n searchResult: {\n title: '{{ refType }} / {{ refId }}',\n description: '{{ type }}',\n },\n },\n groups: [{ id: 'overview', title: 'Overview' }],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'overview',\n schema: {\n dataType: 'uuid',\n visible: false,\n nullable: false,\n readonly: true,\n unique: { enabled: true },\n },\n },\n {\n name: 'refId',\n title: 'Reference Id',\n groupId: 'overview',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },\n },\n {\n name: 'refType',\n title: 'Reference Type',\n groupId: 'overview',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },\n },\n {\n name: 'type',\n title: 'Lock Type',\n groupId: 'overview',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },\n },\n {\n name: 'date',\n title: 'Lock Date',\n groupId: 'overview',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text }, readonly: true },\n },\n {\n name: 'expireAt',\n title: 'Expires At',\n groupId: 'overview',\n schema: {\n dataType: 'datetime',\n interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'datetime' } },\n readonly: true,\n },\n },\n {\n name: 'lockedBy',\n title: 'Locked By',\n groupId: 'overview',\n schema: { dataType: 'object', interface: { type: 'json' }, readonly: true },\n },\n ],\n columns: [\n { name: 'refType' },\n { name: 'refId' },\n { name: 'type' },\n { name: 'expireAt' },\n ],\n interfaces: {\n master: {\n list: {\n actions: [],\n views: [createAllQueryView({})],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.record-lock';\n"],"names":[],"mappings":"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"}
|