@acorex/modules 21.0.0-next.55 → 21.0.0-next.57
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-modules-ai-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +1 -1
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-NPUjHz-F.mjs → acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs} +14 -14
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-NPUjHz-F.mjs.map → acorex-modules-auth-acorex-modules-auth-wfCSNwXC.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-h61xNtRT.mjs → acorex-modules-auth-app-chooser.component-BY281-Cl.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-h61xNtRT.mjs.map → acorex-modules-auth-app-chooser.component-BY281-Cl.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-DF5AHqYe.mjs → acorex-modules-auth-login.module-CjgYlyOv.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DF5AHqYe.mjs.map → acorex-modules-auth-login.module-CjgYlyOv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-00ZTMhc3.mjs → acorex-modules-auth-master.layout-Clx8QDYW.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-00ZTMhc3.mjs.map → acorex-modules-auth-master.layout-Clx8QDYW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-Ce5Fw8Qd.mjs → acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-Ce5Fw8Qd.mjs.map → acorex-modules-auth-oauth-callback.component-CGnGAPJ2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DQYCm8wg.mjs → acorex-modules-auth-password.component-8eEX0lRP.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DQYCm8wg.mjs.map → acorex-modules-auth-password.component-8eEX0lRP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CU0AY-Ia.mjs → acorex-modules-auth-password.component-CUxwThnN.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-CU0AY-Ia.mjs.map → acorex-modules-auth-password.component-CUxwThnN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CM4fRaWb.mjs → acorex-modules-auth-routes-CYLKJm9g.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CM4fRaWb.mjs.map → acorex-modules-auth-routes-CYLKJm9g.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BBztdcvq.mjs → acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-BBztdcvq.mjs.map → acorex-modules-auth-tenant-chooser.component-DDK1KW-8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-C9AafF86.mjs → acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-C9AafF86.mjs.map → acorex-modules-auth-two-factor.module-Iw2U7Cy5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-Qw2sgsEe.mjs → acorex-modules-auth-user-sessions.component-sKDANprs.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-Qw2sgsEe.mjs.map → acorex-modules-auth-user-sessions.component-sKDANprs.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-common-audit-info-column.component-SiqKcBMQ.mjs → acorex-modules-common-audit-info-column.component-MSYPMPZJ.mjs} +2 -2
- package/fesm2022/{acorex-modules-common-audit-info-column.component-SiqKcBMQ.mjs.map → acorex-modules-common-audit-info-column.component-MSYPMPZJ.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +1 -1
- package/fesm2022/{acorex-modules-conversation-acorex-modules-conversation-UNhA-qi5.mjs → acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs} +343 -1008
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-DlteA_jC.mjs.map +1 -0
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Be58gcns.mjs → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-assist-delegated-agent-detail-popup.component-Be58gcns.mjs.map → acorex-modules-conversation-assist-delegated-agent-detail-popup.component-BAgBuxlz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-comments-page.component-3XBLeMW8.mjs → acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-comments-page.component-3XBLeMW8.mjs.map → acorex-modules-conversation-comments-page.component-BrwP9l7M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CSu-lJuu.mjs → acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-send-assist-chat-message.command-CSu-lJuu.mjs.map → acorex-modules-conversation-send-assist-chat-message.command-BzKawEoN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-CyoncQB1.mjs → acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs} +2 -2
- package/fesm2022/{acorex-modules-conversation-start-assist-chat.command-CyoncQB1.mjs.map → acorex-modules-conversation-start-assist-chat.command-BUOGUMl0.mjs.map} +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-locale-management.mjs +27 -22
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-dev-tools.mjs +2 -2
- package/fesm2022/acorex-modules-platform-dev-tools.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Di6Sxtq3.mjs → acorex-modules-settings-management-acorex-modules-settings-management-B4Ee8USF.mjs} +6 -6
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Di6Sxtq3.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-B4Ee8USF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Bml5VZUT.mjs → acorex-modules-settings-management-permission-definition.provider-nNhEFyc-.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Bml5VZUT.mjs.map → acorex-modules-settings-management-permission-definition.provider-nNhEFyc-.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-lN-7sTpD.mjs → acorex-modules-settings-management-setting-page.component-CEvWwS_a.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-lN-7sTpD.mjs.map → acorex-modules-settings-management-setting-page.component-CEvWwS_a.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-D17G4RNQ.mjs → acorex-modules-settings-management-setting-view.component-C6ftmjuK.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-D17G4RNQ.mjs.map → acorex-modules-settings-management-setting-view.component-C6ftmjuK.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs → acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs} +2 -2
- package/fesm2022/{acorex-modules-task-management-acorex-modules-task-management-LQn5gZ6p.mjs.map → acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-task-management-task-board.page-BokG-G6Z.mjs → acorex-modules-task-management-task-board.page-B2xxXscG.mjs} +4 -4
- package/fesm2022/{acorex-modules-task-management-task-board.page-BokG-G6Z.mjs.map → acorex-modules-task-management-task-board.page-B2xxXscG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +1 -1
- package/fesm2022/{acorex-modules-workflow-management-index-BxqOP8AA.mjs → acorex-modules-workflow-management-index-RRzkvrNM.mjs} +102 -21
- package/fesm2022/acorex-modules-workflow-management-index-RRzkvrNM.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +2 -2
- package/package.json +2 -2
- package/types/acorex-modules-ai-management.d.ts +4 -0
- package/types/acorex-modules-conversation.d.ts +35 -198
- package/fesm2022/acorex-modules-conversation-acorex-modules-conversation-UNhA-qi5.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-index-BxqOP8AA.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { h as AXMPermissionsKeys, i as AXMSearchCommandProvider, j as AXMSettingProvider, k as AXMTaskBoardDefaultTaskPopoverComponent, e as AXMTaskBoardTaskPopoverOverlayService, l as AXMTaskBoardTaskPopoverShellComponent, m as AXMTaskManagementEntityProvider, o as AXMTaskManagementMenuProvider, p as AXMTaskManagementModule, q as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, r as AXM_TASK_VIEW_ALL_PERMISSION, s as AXPTaskBoardModule, d as AXPTaskBoardService, t as AXPTaskBoardShortcut, u as AXPTaskBoardShortcutViewComponent, v as AXPTaskBoardWidget, w as AXPTaskBoardWidgetViewComponent, x as AXPTaskPopoverComponent, y as AXPTaskTypeDataSourceDefinition, z as AXPWorkflowTaskProvider, B as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, C as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, D as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, E as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, T as TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH, f as TASK_BOARD_GRID_ROW_ACTION_ITEMS, F as TASK_BOARD_GRID_ROW_VIEW_ACTION, c as canViewAllTaskAssignees, g as filterTasksOverlappingRange, G as isTaskBoardUnassignedAssigneeId, H as matchesTaskBoardAssigneeFilter, I as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, J as resolveTaskPopoverComponent, K as taskAssignmentFactory, L as taskChecklistItemFactory, M as taskContextFactory, N as taskDependencyFactory, O as taskFactory, P as taskStatusFactory, Q as taskTemplateFactory, S as taskTypeFactory, U as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-
|
|
1
|
+
export { h as AXMPermissionsKeys, i as AXMSearchCommandProvider, j as AXMSettingProvider, k as AXMTaskBoardDefaultTaskPopoverComponent, e as AXMTaskBoardTaskPopoverOverlayService, l as AXMTaskBoardTaskPopoverShellComponent, m as AXMTaskManagementEntityProvider, o as AXMTaskManagementMenuProvider, p as AXMTaskManagementModule, q as AXM_TASK_BOARD_UNASSIGNED_ASSIGNEE_ID, r as AXM_TASK_VIEW_ALL_PERMISSION, s as AXPTaskBoardModule, d as AXPTaskBoardService, t as AXPTaskBoardShortcut, u as AXPTaskBoardShortcutViewComponent, v as AXPTaskBoardWidget, w as AXPTaskBoardWidgetViewComponent, x as AXPTaskPopoverComponent, y as AXPTaskTypeDataSourceDefinition, z as AXPWorkflowTaskProvider, B as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_BOARD, C as AXP_TASK_MANAGEMENT_DASHBOARD_SUB_SHORTCUT, D as AXP_TASK_MANAGEMENT_DASHBOARD_WIDGET_CATEGORY, E as AXP_WORKFLOW_TASK_PROVIDER, R as RootConfig, T as TASK_BOARD_GRID_ROW_ACTION_COLUMN_WIDTH, f as TASK_BOARD_GRID_ROW_ACTION_ITEMS, F as TASK_BOARD_GRID_ROW_VIEW_ACTION, c as canViewAllTaskAssignees, g as filterTasksOverlappingRange, G as isTaskBoardUnassignedAssigneeId, H as matchesTaskBoardAssigneeFilter, I as matchesTaskBoardAssigneeUserIdsFilter, n as normalizeTaskBoardAssigneeIds, J as resolveTaskPopoverComponent, K as taskAssignmentFactory, L as taskChecklistItemFactory, M as taskContextFactory, N as taskDependencyFactory, O as taskFactory, P as taskStatusFactory, Q as taskTemplateFactory, S as taskTypeFactory, U as timeLogFactory } from './acorex-modules-task-management-acorex-modules-task-management-CrybKNgo.mjs';
|
|
2
2
|
//# sourceMappingURL=acorex-modules-task-management.mjs.map
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, input, inject, NgZone, DestroyRef, viewChild, signal, computed, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
1
3
|
import { W as WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './acorex-modules-workflow-management-WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY-D6q__Ewd.mjs';
|
|
2
4
|
import * as i1 from '@acorex/cdk/accordion';
|
|
3
5
|
import { AXAccordionCdkModule } from '@acorex/cdk/accordion';
|
|
@@ -24,14 +26,54 @@ import { AXPCommandService } from '@acorex/platform/runtime';
|
|
|
24
26
|
import { AXPActivityDefinitionService } from '@acorex/platform/workflow';
|
|
25
27
|
import * as i1$1 from '@angular/common';
|
|
26
28
|
import { CommonModule } from '@angular/common';
|
|
27
|
-
import * as i0 from '@angular/core';
|
|
28
|
-
import { input, inject, NgZone, DestroyRef, viewChild, signal, computed, effect, untracked, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
|
|
29
29
|
import { FormsModule } from '@angular/forms';
|
|
30
30
|
import { cloneDeep, isEqual } from 'lodash-es';
|
|
31
31
|
import { RootConfig } from './acorex-modules-workflow-management.mjs';
|
|
32
32
|
import { WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND } from './acorex-modules-workflow-management-save-workflow-definition-activities.command-CGNwslcn.mjs';
|
|
33
33
|
|
|
34
|
+
//#region ---- Workflow Definition Activities Page Provider ----
|
|
35
|
+
class AXMWorkflowDefinitionActivitiesPageComponentProvider {
|
|
36
|
+
async components() {
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,
|
|
40
|
+
loader: () => Promise.resolve().then(function () { return workflowDefinitionActivitiesPage_component; }).then((m) => m.AXMWorkflowDefinitionActivitiesPageComponent),
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
45
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider }); }
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, decorators: [{
|
|
48
|
+
type: Injectable
|
|
49
|
+
}] });
|
|
50
|
+
|
|
51
|
+
//#region ---- Types ----
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region ---- Designer layout helpers ----
|
|
54
|
+
function isDesignerLayoutArranged(graph) {
|
|
55
|
+
return graph?.designer?.layoutArranged === true;
|
|
56
|
+
}
|
|
57
|
+
/** True when every activity has persisted designer node coordinates. */
|
|
58
|
+
function graphHasPersistedDesignerLayout(graph) {
|
|
59
|
+
const activities = graph?.activities ?? [];
|
|
60
|
+
if (activities.length === 0) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const nodes = graph?.designer?.nodes;
|
|
64
|
+
if (nodes == null || Object.keys(nodes).length === 0) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return activities.every((a) => {
|
|
68
|
+
const n = nodes[a.id];
|
|
69
|
+
return n != null && typeof n.x === 'number' && typeof n.y === 'number';
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
|
|
34
74
|
//#region ---- Imports ----
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region ---- Constants ----
|
|
35
77
|
const DEFAULT_NODE_W = 240;
|
|
36
78
|
const DEFAULT_NODE_H = 96;
|
|
37
79
|
const DESIGNER_GRID_SIZE = 20;
|
|
@@ -133,6 +175,9 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
|
|
|
133
175
|
//#endregion
|
|
134
176
|
//#region ---- State ----
|
|
135
177
|
this.baselineGraph = signal(null, ...(ngDevMode ? [{ debugName: "baselineGraph" }] : /* istanbul ignore next */ []));
|
|
178
|
+
/** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */
|
|
179
|
+
this.layoutArrangedFlag = signal(false, ...(ngDevMode ? [{ debugName: "layoutArrangedFlag" }] : /* istanbul ignore next */ []));
|
|
180
|
+
this.initialLayoutArrangeInFlight = false;
|
|
136
181
|
this.activityCatalogLoaded = signal(false, ...(ngDevMode ? [{ debugName: "activityCatalogLoaded" }] : /* istanbul ignore next */ []));
|
|
137
182
|
this.activityDefCache = signal({}, ...(ngDevMode ? [{ debugName: "activityDefCache" }] : /* istanbul ignore next */ []));
|
|
138
183
|
this.activitySelectItems = signal([], ...(ngDevMode ? [{ debugName: "activitySelectItems" }] : /* istanbul ignore next */ []));
|
|
@@ -368,6 +413,16 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
|
|
|
368
413
|
untracked(() => this.hydrateFromServerContext(ctx));
|
|
369
414
|
}
|
|
370
415
|
});
|
|
416
|
+
effect(() => {
|
|
417
|
+
const ctx = this.context();
|
|
418
|
+
const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;
|
|
419
|
+
const arranged = this.layoutArrangedFlag();
|
|
420
|
+
const activityCount = this.activities().length;
|
|
421
|
+
if (!id || arranged || activityCount === 0) {
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
untracked(() => void this.maybeApplyInitialArrangedLayout());
|
|
425
|
+
});
|
|
371
426
|
this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());
|
|
372
427
|
}
|
|
373
428
|
//#endregion
|
|
@@ -726,6 +781,7 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
|
|
|
726
781
|
gridSize: DESIGNER_GRID_SIZE,
|
|
727
782
|
});
|
|
728
783
|
this.syncDesignerLayoutFromModel(arranged);
|
|
784
|
+
this.layoutArrangedFlag.set(true);
|
|
729
785
|
this.recomputeDirty();
|
|
730
786
|
}
|
|
731
787
|
buildDesignerNodesForSave() {
|
|
@@ -744,12 +800,14 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
|
|
|
744
800
|
}
|
|
745
801
|
buildCurrentGraph() {
|
|
746
802
|
const base = this.baselineGraph();
|
|
803
|
+
const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);
|
|
747
804
|
return {
|
|
748
805
|
startActivityId: this.startActivityId(),
|
|
749
806
|
activities: this.activities().map((r) => instanceFromRow(r)),
|
|
750
807
|
connections: cloneDeep(this.connections()),
|
|
751
808
|
designer: {
|
|
752
809
|
...base?.designer,
|
|
810
|
+
layoutArranged: layoutArranged ? true : undefined,
|
|
753
811
|
nodes: this.buildDesignerNodesForSave(),
|
|
754
812
|
},
|
|
755
813
|
};
|
|
@@ -831,6 +889,7 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
|
|
|
831
889
|
try {
|
|
832
890
|
const graph = ctx?.['graph'] ?? emptyGraph();
|
|
833
891
|
this.baselineGraph.set(cloneDeep(graph));
|
|
892
|
+
this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));
|
|
834
893
|
this.initDesignerLayoutFromGraph(graph);
|
|
835
894
|
this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));
|
|
836
895
|
this.connections.set(cloneDeep(graph.connections ?? []));
|
|
@@ -852,11 +911,50 @@ class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComp
|
|
|
852
911
|
this.suppressAutoSave = false;
|
|
853
912
|
}
|
|
854
913
|
}
|
|
914
|
+
/**
|
|
915
|
+
* Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.
|
|
916
|
+
* Definitions that already have saved node positions are marked arranged without moving nodes.
|
|
917
|
+
*/
|
|
918
|
+
async maybeApplyInitialArrangedLayout() {
|
|
919
|
+
if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {
|
|
920
|
+
return;
|
|
921
|
+
}
|
|
922
|
+
const ctx = this.context();
|
|
923
|
+
const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;
|
|
924
|
+
if (!id) {
|
|
925
|
+
return;
|
|
926
|
+
}
|
|
927
|
+
if (this.activities().length === 0) {
|
|
928
|
+
return;
|
|
929
|
+
}
|
|
930
|
+
this.initialLayoutArrangeInFlight = true;
|
|
931
|
+
this.suppressAutoSave = true;
|
|
932
|
+
try {
|
|
933
|
+
const base = this.baselineGraph();
|
|
934
|
+
if (graphHasPersistedDesignerLayout(base ?? undefined)) {
|
|
935
|
+
this.layoutArrangedFlag.set(true);
|
|
936
|
+
this.recomputeDirty();
|
|
937
|
+
if (this.isDirty()) {
|
|
938
|
+
await this.handleSaveExecute({ silent: true });
|
|
939
|
+
}
|
|
940
|
+
return;
|
|
941
|
+
}
|
|
942
|
+
this.applyArrangedLayout();
|
|
943
|
+
if (this.isDirty()) {
|
|
944
|
+
await this.handleSaveExecute({ silent: true });
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
finally {
|
|
948
|
+
this.suppressAutoSave = false;
|
|
949
|
+
this.initialLayoutArrangeInFlight = false;
|
|
950
|
+
}
|
|
951
|
+
}
|
|
855
952
|
applyBaselineGraph() {
|
|
856
953
|
this.clearAutoSaveTimer();
|
|
857
954
|
this.suppressAutoSave = true;
|
|
858
955
|
try {
|
|
859
956
|
const base = this.baselineGraph();
|
|
957
|
+
this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));
|
|
860
958
|
this.initDesignerLayoutFromGraph(base ?? undefined);
|
|
861
959
|
const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));
|
|
862
960
|
this.activities.set(rows);
|
|
@@ -1186,22 +1284,5 @@ var workflowDefinitionActivitiesPage_component = /*#__PURE__*/Object.freeze({
|
|
|
1186
1284
|
AXMWorkflowDefinitionActivitiesPageComponent: AXMWorkflowDefinitionActivitiesPageComponent
|
|
1187
1285
|
});
|
|
1188
1286
|
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
async components() {
|
|
1192
|
-
return [
|
|
1193
|
-
{
|
|
1194
|
-
key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,
|
|
1195
|
-
loader: () => Promise.resolve().then(function () { return workflowDefinitionActivitiesPage_component; }).then((m) => m.AXMWorkflowDefinitionActivitiesPageComponent),
|
|
1196
|
-
},
|
|
1197
|
-
];
|
|
1198
|
-
}
|
|
1199
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1200
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider }); }
|
|
1201
|
-
}
|
|
1202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXMWorkflowDefinitionActivitiesPageComponentProvider, decorators: [{
|
|
1203
|
-
type: Injectable
|
|
1204
|
-
}] });
|
|
1205
|
-
|
|
1206
|
-
export { AXMWorkflowDefinitionActivitiesPageComponent, AXMWorkflowDefinitionActivitiesPageComponentProvider, WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY };
|
|
1207
|
-
//# sourceMappingURL=acorex-modules-workflow-management-index-BxqOP8AA.mjs.map
|
|
1287
|
+
export { AXMWorkflowDefinitionActivitiesPageComponent, AXMWorkflowDefinitionActivitiesPageComponentProvider, WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY, graphHasPersistedDesignerLayout, isDesignerLayoutArranged };
|
|
1288
|
+
//# sourceMappingURL=acorex-modules-workflow-management-index-RRzkvrNM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-workflow-management-index-RRzkvrNM.mjs","sources":["../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page-component.provider.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.types.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.ts","../../../../libs/modules/workflow-management/src/lib/features/workflow-definition-activities-page/workflow-definition-activities-page.component.html"],"sourcesContent":["import { AXPPageComponentDefinition, AXPPageComponentProvider } from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY } from './WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY';\n\n//#region ---- Workflow Definition Activities Page Provider ----\n\n@Injectable()\nexport class AXMWorkflowDefinitionActivitiesPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: WORKFLOW_DEFINITION_ACTIVITIES_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./workflow-definition-activities-page.component').then(\n (m) => m.AXMWorkflowDefinitionActivitiesPageComponent,\n ),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Types ----\n\nimport type { AXPWorkflowActivityPaletteItem } from '@acorex/modules/platform-management';\nimport type { AXPActivityDefinition, AXPWorkflowGraph } from '@acorex/platform/workflow';\n\nexport interface AXMWorkflowActivityEditorRow {\n id: string;\n name: string;\n inputs: Record<string, unknown>;\n extensions?: Record<string, unknown>;\n}\n\nexport interface AXMWorkflowActivitySelectItem {\n value: string;\n text: string;\n description: string;\n icon: string;\n categoryId: string;\n categoryTitle: string;\n}\n\nexport interface AXMWorkflowActivityPaletteGroup {\n id: string;\n title: string;\n items: AXPWorkflowActivityPaletteItem[];\n}\n\nexport interface AXMWorkflowActivityCatalogRow extends AXPActivityDefinition {\n id: string;\n}\n\nexport interface AXMWorkflowOutcomePortRow {\n port: string;\n label: string;\n}\n\nexport interface AXMWorkflowActivityNodeInfoRow {\n title: string;\n content: string;\n}\n\n/** Persisted coordinates for workflow designer nodes (see {@link AXPWorkflowGraph.designer}). */\nexport interface AXMWorkflowDesignerNodeLayout {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n//#endregion\n\n//#region ---- Designer layout helpers ----\n\nexport function isDesignerLayoutArranged(graph: AXPWorkflowGraph | null | undefined): boolean {\n return graph?.designer?.layoutArranged === true;\n}\n\n/** True when every activity has persisted designer node coordinates. */\nexport function graphHasPersistedDesignerLayout(graph: AXPWorkflowGraph | null | undefined): boolean {\n const activities = graph?.activities ?? [];\n if (activities.length === 0) {\n return false;\n }\n const nodes = graph?.designer?.nodes;\n if (nodes == null || Object.keys(nodes).length === 0) {\n return false;\n }\n return activities.every((a) => {\n const n = nodes[a.id];\n return n != null && typeof n.x === 'number' && typeof n.y === 'number';\n });\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXAccordionCdkModule } from '@acorex/cdk/accordion';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n arrangeWorkflowDiagram,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n type AXPWorkflowActivityPaletteItem,\n type AXPWorkflowDesignerActivation,\n type AXPWorkflowDiagramModel,\n type AXPWorkflowNode,\n} from '@acorex/modules/platform-management';\nimport {\n AXPActionMenuItem,\n AXPDataGenerator,\n AXPExecuteCommand,\n AXPExecuteCommandResult,\n type AXPMultiLanguageString,\n type AXPProperty,\n} from '@acorex/platform/core';\nimport {\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPPropertyViewerChangedEvent,\n AXPPropertyViewerComponent,\n AXPPropertyViewerTab,\n buildPropertyViewerTabsFromProperties,\n type AXPLayoutSideDetailPanelEmptyState,\n type AXPLayoutSideDetailPanelHeader,\n type AXPLayoutSideDetailPanelRow,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';\nimport { mapAXPPropertyToWidgetProperty, type AXPWidgetPropertyGroup } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport {\n AXPActivityDefinitionService,\n type AXPActivityDefinition,\n type AXPActivityDefinitionCategoryRef,\n type AXPActivityDefinitionQueryResult,\n type AXPConnection,\n type AXPWorkflowActivityInstance,\n type AXPWorkflowGraph,\n} from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n NgZone,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport { RootConfig } from '../../const';\nimport {\n SaveWorkflowDefinitionActivitiesInput,\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n} from '../../entities/workflow-definition/commands/save-workflow-definition-activities.command';\nimport {\n graphHasPersistedDesignerLayout,\n isDesignerLayoutArranged,\n type AXMWorkflowActivityCatalogRow,\n type AXMWorkflowActivityEditorRow,\n type AXMWorkflowActivityNodeInfoRow,\n type AXMWorkflowActivityPaletteGroup,\n type AXMWorkflowActivitySelectItem,\n type AXMWorkflowDesignerNodeLayout,\n type AXMWorkflowOutcomePortRow,\n} from './workflow-definition-activities-page.types';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DEFAULT_NODE_W = 240;\nconst DEFAULT_NODE_H = 96;\nconst DESIGNER_GRID_SIZE = 20;\n/** Debounce window before persisting designer edits (drag emits many modelChange events). */\nconst AUTO_SAVE_DEBOUNCE_MS = 500;\n\nconst DISCARD_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:Discard';\nconst ADD_STEP_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:AddStep';\nconst ARRANGE_LAYOUT_COMMAND = 'WorkflowManagement.WorkflowDefinition:Activities:ArrangeLayout';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_ID = 'workflow-management.activities.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_ID = 'workflow-management.activities.add-activity';\n\nconst TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.toggle-detail-panel';\n\nconst ADD_ACTIVITY_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.add-activity';\n\nconst ARRANGE_LAYOUT_ACTION_TITLE_KEY =\n '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.node-actions.arrange-layout';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeActivityDefinitionInputs(raw: unknown): AXPProperty[] {\n if (Array.isArray(raw)) {\n return raw as AXPProperty[];\n }\n if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n return Array.isArray(parsed) ? (parsed as AXPProperty[]) : [];\n } catch {\n return [];\n }\n }\n return [];\n}\n\nfunction portKey(port: string | null | undefined): string {\n return port == null || port === '' ? 'Done' : port;\n}\n\nfunction rowFromInstance(a: AXPWorkflowActivityInstance): AXMWorkflowActivityEditorRow {\n const inputs =\n a.inputs != null && typeof a.inputs === 'object' && !Array.isArray(a.inputs)\n ? { ...(a.inputs as Record<string, unknown>) }\n : {};\n const extRaw = a.extensions;\n const extensions =\n extRaw != null && typeof extRaw === 'object' && !Array.isArray(extRaw)\n ? { ...(extRaw as Record<string, unknown>) }\n : undefined;\n return {\n id: a.id,\n name: typeof a.name === 'string' ? a.name : '',\n inputs,\n ...(extensions != null && Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n}\n\nfunction instanceFromRow(r: AXMWorkflowActivityEditorRow): AXPWorkflowActivityInstance {\n const out: AXPWorkflowActivityInstance = { id: r.id, name: r.name, inputs: { ...r.inputs } };\n if (r.extensions != null && Object.keys(r.extensions).length > 0) {\n out.extensions = { ...r.extensions };\n }\n return out;\n}\n\nfunction emptyGraph(): AXPWorkflowGraph {\n return { startActivityId: '', activities: [], connections: [] };\n}\n\nfunction graphFingerprint(g: AXPWorkflowGraph | null): unknown {\n if (g == null) {\n return null;\n }\n return {\n startActivityId: g.startActivityId,\n activities: g.activities,\n connections: g.connections,\n designer: g.designer,\n };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-workflow-definition-activities-page',\n imports: [\n CommonModule,\n FormsModule,\n AXAccordionCdkModule,\n AXButtonModule,\n AXMenuModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSearchBoxModule,\n AXSelectBoxModule,\n AXTranslationModule,\n AXPLayoutFloatingZoomBarComponent,\n AXPLayoutSideDetailPanelComponent,\n AXPWorkflowDesignerComponent,\n AXPWorkflowPaletteItemDragDirective,\n ],\n host: {\n style: 'display: block; width: 100%; height: 100%;',\n },\n templateUrl: './workflow-definition-activities-page.component.html',\n styleUrl: './workflow-definition-activities-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXPPageLayoutBase, useExisting: AXMWorkflowDefinitionActivitiesPageComponent }],\n})\nexport class AXMWorkflowDefinitionActivitiesPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services ----\n\n private readonly commandService = inject(AXPCommandService);\n private readonly entityService = inject(AXPEntityService);\n private readonly activityDefService = inject(AXPActivityDefinitionService);\n private readonly mlResolver = inject(AXTranslationService);\n private readonly hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n\n //#endregion\n\n //#region ---- Auto-save ----\n\n private autoSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private autoSaveInFlight = false;\n private autoSavePending = false;\n private suppressAutoSave = false;\n\n //#region ---- View refs ----\n\n private readonly propertyViewerRef = viewChild(AXPPropertyViewerComponent);\n private readonly workflowDesignerRef = viewChild(AXPWorkflowDesignerComponent);\n private readonly contextMenu = viewChild(AXContextMenuComponent);\n\n //#endregion\n\n //#region ---- State ----\n\n private readonly baselineGraph = signal<AXPWorkflowGraph | null>(null);\n /** Persisted on `graph.designer.layoutArranged` after the first auto-arrange (or layout migration). */\n private readonly layoutArrangedFlag = signal(false);\n private initialLayoutArrangeInFlight = false;\n private readonly activityCatalogLoaded = signal(false);\n private readonly activityDefCache = signal<Record<string, AXPActivityDefinition>>({});\n\n protected readonly activitySelectItems = signal<AXMWorkflowActivitySelectItem[]>([]);\n protected readonly activities = signal<AXMWorkflowActivityEditorRow[]>([]);\n protected readonly connections = signal<AXPConnection[]>([]);\n protected readonly startActivityId = signal('');\n protected readonly selectedRowId = signal<string | null>(null);\n protected readonly viewerTabs = signal<AXPPropertyViewerTab[]>([]);\n protected readonly selectedActivityOutcomeRows = signal<AXMWorkflowOutcomePortRow[]>([]);\n protected readonly isDirty = signal(false);\n protected readonly backgroundPattern = signal<'line' | 'dots'>('dots');\n protected readonly zoomLevel = signal(100);\n protected readonly isFullscreen = signal(false);\n protected readonly isInfoPanelOpen = signal(false);\n protected readonly isPaletteOpen = signal(false);\n protected readonly paletteSearchTerm = signal('');\n\n /** Canvas layout keyed by activity instance id; kept in sync with designer `modelChange` and saved on `graph.designer`. */\n private readonly designerLayout = signal<Record<string, AXMWorkflowDesignerNodeLayout>>({});\n\n //#endregion\n\n //#region ---- Computed ----\n\n private readonly context = computed(() => this.rootContext() ?? {});\n\n protected readonly selectedRow = computed(() => this.activities().find((x) => x.id === this.selectedRowId()) ?? null);\n\n protected readonly startActivityItems = computed(() =>\n this.activities().map((r) => ({ value: r.id, text: this.formatActivityStepLabel(r) })),\n );\n\n protected readonly activitySelectOptions = computed<AXMWorkflowActivitySelectItem[]>(() => {\n const graphTitleByName = new Map<string, string>();\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n) {\n continue;\n }\n const ext = r.extensions;\n const dt = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (dt) {\n graphTitleByName.set(n, dt);\n }\n }\n const byValue = new Map<string, AXMWorkflowActivitySelectItem>();\n for (const x of this.activitySelectItems()) {\n byValue.set(x.value, {\n value: x.value,\n description: x.description,\n icon: x.icon,\n text: graphTitleByName.get(x.value) ?? x.text,\n categoryId: x.categoryId,\n categoryTitle: x.categoryTitle,\n });\n }\n for (const r of this.activities()) {\n const n = r.name?.trim();\n if (!n || byValue.has(n)) {\n continue;\n }\n byValue.set(n, {\n value: n,\n description: '',\n icon: '',\n text: graphTitleByName.get(n) ?? n,\n categoryId: 'uncategorized',\n categoryTitle: 'Uncategorized',\n });\n }\n return [...byValue.values()].sort((a, b) => a.text.localeCompare(b.text));\n });\n\n protected readonly paletteItems = computed<AXPWorkflowActivityPaletteItem[]>(() =>\n this.activitySelectOptions().map((x) => ({\n type: x.value,\n title: x.text,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n })),\n );\n\n protected readonly paletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const groupsById = new Map<string, AXMWorkflowActivityPaletteGroup>();\n for (const item of this.activitySelectOptions()) {\n const groupId = item.categoryId.trim() || 'uncategorized';\n const groupTitle = item.categoryTitle.trim() || 'Uncategorized';\n const existing = groupsById.get(groupId);\n const paletteItem: AXPWorkflowActivityPaletteItem = {\n type: item.value,\n title: item.text,\n description: item.description,\n icon: item.icon,\n shape: 'rounded-rectangle',\n size: { width: 230, height: 90 },\n inboundPorts: [{ side: 'left', ratio: 0.5, key: 'in', label: 'in' }],\n outboundPorts: [{ side: 'right', ratio: 0.5, key: 'Done', label: 'Done' }],\n data: { category: 'activity-definition' },\n };\n if (existing) {\n existing.items.push(paletteItem);\n continue;\n }\n groupsById.set(groupId, { id: groupId, title: groupTitle, items: [paletteItem] });\n }\n return [...groupsById.values()]\n .map((group) => ({\n ...group,\n items: [...group.items].sort((a, b) => a.title.localeCompare(b.title)),\n }))\n .sort((a, b) => a.title.localeCompare(b.title));\n });\n\n protected readonly filteredPaletteGroups = computed<AXMWorkflowActivityPaletteGroup[]>(() => {\n const searchTerm = this.paletteSearchTerm().trim().toLowerCase();\n const groups = this.paletteGroups();\n if (!searchTerm) {\n return groups;\n }\n return groups\n .map((group) => {\n const items = group.items.filter((item) => {\n const title = item.title?.toLowerCase() ?? '';\n const description = item.description?.toLowerCase() ?? '';\n return title.includes(searchTerm) || description.includes(searchTerm);\n });\n return { ...group, items };\n })\n .filter((group) => group.items.length > 0);\n });\n\n protected readonly designerModel = computed<AXPWorkflowDiagramModel>(() => {\n const rows = this.activities();\n const conns = this.connections();\n const cache = this.activityDefCache();\n const layout = this.designerLayout();\n const nodes = rows.map((r, i) => {\n const def = r.name ? cache[r.name] : undefined;\n const outcomes = this.buildOutcomeRows(r.id, r, def);\n const L = layout[r.id];\n const pos = L ? { x: L.x, y: L.y } : this.gridFallbackPosition(i);\n const size = L ? { width: L.width, height: L.height } : { width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n return {\n id: r.id,\n type: r.name,\n title: this.resolveNodeTitle(r),\n shape: 'rounded-rectangle' as const,\n size,\n position: pos,\n color: this.startActivityId() === r.id ? ('success' as const) : ('secondary' as const),\n inboundPorts: [\n { id: `${r.id}:in`, kind: 'inbound' as const, side: 'left' as const, ratio: 0.5, key: 'in', label: 'in' },\n ],\n outboundPorts: outcomes.map((o, oi, arr) => ({\n id: `${r.id}:out:${o.port}`,\n kind: 'outbound' as const,\n side: 'right' as const,\n ratio: arr.length === 1 ? 0.5 : (oi + 1) / (arr.length + 1),\n key: o.port,\n label: o.label,\n })),\n };\n });\n const outPortByKey = new Map<string, string>();\n for (const n of nodes) {\n for (const p of n.outboundPorts) {\n outPortByKey.set(`${n.id}:${portKey(p.key)}`, p.id);\n }\n }\n const connectors = conns\n .map((c, i) => {\n const sourcePortKey = portKey(c.source.port);\n const sourcePortId = outPortByKey.get(`${c.source.activtyName}:${sourcePortKey}`);\n if (!sourcePortId) {\n return null;\n }\n return {\n id: `c-${i}-${c.source.activtyName}-${c.target.activtyName}-${sourcePortKey}`,\n sourceNodeId: c.source.activtyName,\n sourcePortId,\n targetNodeId: c.target.activtyName,\n targetPortId: `${c.target.activtyName}:in`,\n };\n })\n .filter((x): x is NonNullable<typeof x> => x != null);\n return { nodes, connectors };\n });\n\n protected readonly selectedNodeInfoRows = computed<AXMWorkflowActivityNodeInfoRow[]>(() => {\n const selected = this.selectedRow();\n if (!selected) {\n return [];\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n return [\n { title: 'Title', content: this.resolveNodeTitle(selected) || '---' },\n { title: 'Type', content: selected.name || '---' },\n { title: 'Id', content: selected.id || '---' },\n { title: 'Category', content: selectOption?.categoryTitle || '---' },\n { title: 'Inputs', content: `${Object.keys(selected.inputs ?? {}).length}` },\n { title: 'Outcomes', content: `${this.selectedActivityOutcomeRows().length}` },\n ];\n });\n\n protected readonly workflowDetailPanelCopy = signal({\n panelTitle: 'Activity details',\n emptyMessage: 'Select a node to see details.',\n });\n\n protected readonly workflowDetailPanelHeader = computed((): AXPLayoutSideDetailPanelHeader | null => {\n const selected = this.selectedRow();\n if (selected == null) {\n return null;\n }\n const selectOption = this.activitySelectOptions().find((x) => x.value === selected.name);\n const iconGlyph = selectOption?.icon?.trim();\n return {\n primaryTitle: this.resolveNodeTitle(selected) || '---',\n icon: iconGlyph ? { iconClass: `fa-light fa-lg fa-fw ${iconGlyph}` } : undefined,\n };\n });\n\n protected readonly workflowDetailPanelRows = computed((): AXPLayoutSideDetailPanelRow[] => {\n if (this.selectedRow() == null) {\n return [];\n }\n return this.selectedNodeInfoRows().map((row) => ({\n label: row.title,\n value: row.content,\n }));\n });\n\n protected readonly workflowDetailPanelEmptyState = computed((): AXPLayoutSideDetailPanelEmptyState | null => {\n if (this.selectedRow() != null) {\n return null;\n }\n const copy = this.workflowDetailPanelCopy();\n return {\n primaryTitle: copy.panelTitle,\n message: copy.emptyMessage,\n icon: { iconClass: 'fa-solid fa-lg fa-fw fa-diagram-project' },\n };\n });\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n effect(() => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n untracked(() => this.hydrateFromServerContext(ctx as Record<string, unknown> | undefined));\n }\n });\n effect(() => {\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n const arranged = this.layoutArrangedFlag();\n const activityCount = this.activities().length;\n if (!id || arranged || activityCount === 0) {\n return;\n }\n untracked(() => void this.maybeApplyInitialArrangedLayout());\n });\n this.destroyRef.onDestroy(() => this.clearAutoSaveTimer());\n }\n\n //#endregion\n\n //#region ---- Page chrome / commands ----\n\n // override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n // const addTitle =\n // (await this.translateService.translateAsync(\n // '@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step',\n // )) || 'Add step';\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 // const addAction: AXPLayoutDetailsViewAction = {\n // title: addTitle,\n // icon: 'fa-light fa-plus',\n // zone: 'header',\n // priority: 'primary',\n // color: 'primary',\n // command: { name: ADD_STEP_COMMAND, options: {} },\n // };\n // const discardAction: AXPLayoutDetailsViewAction = {\n // title: discardTitle,\n // icon: 'fa-light fa-rotate-left',\n // zone: 'footer',\n // priority: 'secondary',\n // color: 'default',\n // visible: this.isDirty(),\n // command: { name: DISCARD_COMMAND, options: {} },\n // };\n // const saveAction: AXPLayoutDetailsViewAction = {\n // title: saveTitle,\n // icon: 'fa-light fa-floppy-disk',\n // zone: 'footer',\n // priority: 'primary',\n // color: 'primary',\n // visible: this.isDirty(),\n // command: { name: WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND, options: {} },\n // };\n // return [addAction, discardAction, saveAction];\n // }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const title = await this.mlResolver.translateAsync(ARRANGE_LAYOUT_ACTION_TITLE_KEY);\n return [\n {\n title,\n icon: 'fa-light fa-sitemap',\n command: { name: ARRANGE_LAYOUT_COMMAND, options: {} },\n disabled: this.activities().length === 0,\n },\n ];\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === DISCARD_COMMAND) {\n this.applyBaselineGraph();\n return;\n }\n if (command.name === ADD_STEP_COMMAND) {\n this.addStep();\n return;\n }\n if (command.name === ARRANGE_LAYOUT_COMMAND) {\n this.applyArrangedLayout();\n return;\n }\n if (command.name === WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND) {\n return this.handleSaveExecute() as unknown as Promise<void>;\n }\n }\n\n //#endregion\n\n //#region ---- Designer handlers ----\n\n protected onDesignerModelChange(model: AXPWorkflowDiagramModel): void {\n const previousNodeCount = this.activities().length;\n const oldById = new Map(this.activities().map((x) => [x.id, x]));\n const nextRows: AXMWorkflowActivityEditorRow[] = model.nodes.map((n) => {\n const prev = oldById.get(n.id);\n const title = n.title?.trim();\n const extensions = { ...(prev?.extensions ?? {}) };\n if (title) {\n extensions['displayTitle'] = title;\n } else {\n delete extensions['displayTitle'];\n }\n return {\n id: n.id,\n name: n.type?.trim() ? n.type : (prev?.name ?? ''),\n inputs: { ...(prev?.inputs ?? {}) },\n ...(Object.keys(extensions).length > 0 ? { extensions } : {}),\n };\n });\n const outgoingByPortId = new Map<string, string>();\n for (const n of model.nodes) {\n for (const p of n.outboundPorts) {\n outgoingByPortId.set(p.id, portKey(p.key));\n }\n }\n const nextConnections: AXPConnection[] = [];\n for (const c of model.connectors) {\n const pk = outgoingByPortId.get(c.sourcePortId);\n if (!pk) {\n continue;\n }\n nextConnections.push({\n source: { activtyName: c.sourceNodeId, port: pk === 'Done' ? null : pk },\n target: { activtyName: c.targetNodeId, port: null },\n });\n }\n this.activities.set(nextRows);\n this.connections.set(nextConnections);\n if (!nextRows.some((x) => x.id === this.startActivityId())) {\n this.startActivityId.set(nextRows[0]?.id ?? '');\n }\n if (!nextRows.some((x) => x.id === this.selectedRowId())) {\n this.selectedRowId.set(nextRows[0]?.id ?? null);\n }\n for (const r of nextRows) {\n void this.ensureDefinition(r.name);\n }\n this.syncDesignerLayoutFromModel(model);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n if (nextRows.length > previousNodeCount) {\n this.closePalette();\n }\n }\n\n protected onDesignerActivationChange(a: AXPWorkflowDesignerActivation | null): void {\n if (a?.kind !== 'node') {\n return;\n }\n this.selectedRowId.set(a.id);\n void this.refreshPropertyViewer();\n }\n\n //#region ---- Context Menu ----\n\n protected onDesignerNodeContextMenu(payload: { node: AXPWorkflowNode; event: MouseEvent }): void {\n const anchor =\n payload.event.currentTarget instanceof HTMLElement\n ? payload.event.currentTarget\n : payload.event.target instanceof HTMLElement\n ? payload.event.target.closest('.axp-workflow-designer__node')\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(payload.event.clientX, payload.event.clientY, anchor, [\n ADD_ACTIVITY_ACTION_ID,\n TOGGLE_DETAIL_PANEL_ACTION_ID,\n ]);\n }\n\n protected onDesignerSurfaceContextMenu(event: MouseEvent): void {\n if (event.target instanceof HTMLElement && event.target.closest('.axp-workflow-designer__node')) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const anchor =\n event.target instanceof HTMLElement\n ? (event.target.closest('.axp-workflow-designer__surface') ?? event.target)\n : null;\n if (!(anchor instanceof HTMLElement)) {\n return;\n }\n void this.openWorkflowContextMenuAt(event.clientX, event.clientY, anchor, [ADD_ACTIVITY_ACTION_ID]);\n }\n\n protected handleWorkflowContextMenuItemClick(e: AXContextMenuItemsClickEvent): void {\n if (e.item.name === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n this.toggleInfoPanel();\n return;\n }\n if (e.item.name === ADD_ACTIVITY_ACTION_ID) {\n this.openPalette();\n }\n }\n\n protected openPalette(): void {\n this.isPaletteOpen.set(true);\n this.paletteSearchTerm.set('');\n }\n\n protected closePalette(): void {\n this.isPaletteOpen.set(false);\n }\n\n private async openWorkflowContextMenuAt(\n clientX: number,\n clientY: number,\n targetElement: HTMLElement,\n actionIds: string[],\n ): Promise<void> {\n const items: AXMenuItem[] = [];\n for (const actionId of actionIds) {\n const item = await this.buildWorkflowContextMenuItem(actionId);\n if (item != null) {\n items.push(item);\n }\n }\n if (items.length === 0) {\n return;\n }\n const menu = this.contextMenu();\n if (menu == null) {\n return;\n }\n this.ngZone.run(() => {\n const openingEvent = {\n sender: menu,\n canceled: false,\n targetElement,\n items,\n } as AXContextMenuOpeningEvent;\n menu.showAt({ x: clientX, y: clientY }, targetElement, openingEvent);\n });\n }\n\n private async buildWorkflowContextMenuItem(actionId: string): Promise<AXMenuItem | null> {\n if (actionId === ADD_ACTIVITY_ACTION_ID) {\n return {\n name: ADD_ACTIVITY_ACTION_ID,\n text: (await this.translateService.translateAsync(ADD_ACTIVITY_ACTION_TITLE_KEY)) ?? 'Add Activity',\n icon: 'fa-light fa-plus',\n };\n }\n if (actionId === TOGGLE_DETAIL_PANEL_ACTION_ID) {\n return {\n name: TOGGLE_DETAIL_PANEL_ACTION_ID,\n text:\n (await this.translateService.translateAsync(TOGGLE_DETAIL_PANEL_ACTION_TITLE_KEY)) ?? 'Toggle Details Panel',\n icon: 'fa-light fa-sidebar',\n };\n }\n return null;\n }\n\n //#endregion\n\n protected onBackgroundPatternChange(event: Event): void {\n const value = (event.target as HTMLSelectElement).value;\n if (value === 'line' || value === 'dots') {\n this.backgroundPattern.set(value);\n }\n }\n\n protected onDesignerZoomChange(value: number): void {\n this.zoomLevel.set(this.clampZoomLevel(value));\n }\n\n protected onPaletteSearchChange(event: { value?: string | null } | null): void {\n this.paletteSearchTerm.set(event?.value ?? '');\n }\n\n protected zoomIn(): void {\n this.workflowDesignerRef()?.zoomIn();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomOut(): void {\n this.workflowDesignerRef()?.zoomOut();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? this.zoomLevel()));\n }\n\n protected zoomReset(): void {\n this.workflowDesignerRef()?.zoomReset();\n this.zoomLevel.set(this.clampZoomLevel(this.workflowDesignerRef()?.getZoomLevel() ?? 100));\n }\n\n protected toggleFullscreen(): void {\n const next = !this.isFullscreen();\n this.isFullscreen.set(next);\n const doc = globalThis.document;\n if (!doc) {\n return;\n }\n if (next) {\n void doc.documentElement.requestFullscreen?.();\n return;\n }\n void doc.exitFullscreen?.();\n }\n\n protected toggleInfoPanel(): void {\n this.isInfoPanelOpen.update((open) => !open);\n }\n\n protected onStartActivityChange(event: { value?: string | null }): void {\n this.startActivityId.set(event.value != null ? String(event.value) : '');\n this.recomputeDirty();\n }\n\n protected onSelectedActivityTypeChange(event: { value?: string | null }): void {\n const row = this.selectedRow();\n if (!row) {\n return;\n }\n const name = event.value != null ? String(event.value) : '';\n const rowId = row.id;\n this.activities.update((rows) =>\n rows.map((r) => (r.id !== rowId ? r : { ...r, name, inputs: {}, extensions: undefined })),\n );\n void this.ensureDefinition(name);\n void this.activityDefService.getActivityByName(name).then((def) => {\n const rowNow = this.activities().find((r) => r.id === rowId) ?? null;\n const allowed = new Set(this.buildOutcomeRows(rowId, rowNow, def).map((o) => o.port));\n this.pruneOutgoingConnections(rowId, allowed);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n });\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n protected onViewerChanged(ev: AXPPropertyViewerChangedEvent): void {\n if (ev.mode === 'init') {\n return;\n }\n const id = this.selectedRowId();\n if (id == null || ev.values == null) {\n return;\n }\n const inputs = (ev.values as { inputs?: Record<string, unknown> }).inputs ?? {};\n this.activities.update((rows) => rows.map((r) => (r.id === id ? { ...r, inputs: { ...inputs } } : r)));\n const sel = this.activities().find((r) => r.id === id);\n if (sel?.name?.trim()) {\n void this.activityDefService.getActivityByName(sel.name).then((def) => {\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(sel.id, sel, def));\n });\n }\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Graph persistence ----\n\n private gridFallbackPosition(index: number): { x: number; y: number } {\n return { x: 80 + (index % 4) * 320, y: 80 + Math.floor(index / 4) * 190 };\n }\n\n private clampZoomLevel(value: number): number {\n if (Number.isNaN(value)) {\n return 100;\n }\n return Math.max(20, Math.min(300, Math.round(value)));\n }\n\n private initDesignerLayoutFromGraph(graph: AXPWorkflowGraph | null | undefined): void {\n const activities = graph?.activities ?? [];\n const raw = graph?.designer?.nodes;\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n if (raw != null) {\n for (const [id, v] of Object.entries(raw)) {\n if (v != null && typeof v.x === 'number' && typeof v.y === 'number') {\n next[id] = {\n x: v.x,\n y: v.y,\n width: typeof v.width === 'number' && v.width > 0 ? v.width : DEFAULT_NODE_W,\n height: typeof v.height === 'number' && v.height > 0 ? v.height : DEFAULT_NODE_H,\n };\n }\n }\n }\n activities.forEach((a, i) => {\n if (!next[a.id]) {\n const p = this.gridFallbackPosition(i);\n next[a.id] = { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H };\n }\n });\n this.designerLayout.set(next);\n }\n\n private syncDesignerLayoutFromModel(model: AXPWorkflowDiagramModel): void {\n const next: Record<string, AXMWorkflowDesignerNodeLayout> = {};\n for (const n of model.nodes) {\n next[n.id] = {\n x: n.position.x,\n y: n.position.y,\n width: n.size.width > 0 ? n.size.width : DEFAULT_NODE_W,\n height: n.size.height > 0 ? n.size.height : DEFAULT_NODE_H,\n };\n }\n this.designerLayout.set(next);\n }\n\n /** Updates persisted node coordinates only (no activity/connection graph rewrite). */\n private applyArrangedLayout(): void {\n if (this.activities().length === 0) {\n return;\n }\n const startId = this.startActivityId().trim();\n const arranged = arrangeWorkflowDiagram(this.designerModel(), {\n startNodeId: startId.length > 0 ? startId : undefined,\n gridSize: DESIGNER_GRID_SIZE,\n });\n this.syncDesignerLayoutFromModel(arranged);\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n }\n\n private buildDesignerNodesForSave(): NonNullable<AXPWorkflowGraph['designer']>['nodes'] {\n const layout = this.designerLayout();\n const out: NonNullable<AXPWorkflowGraph['designer']>['nodes'] = {};\n for (const [id, L] of Object.entries(layout)) {\n out[id] = {\n x: L.x,\n y: L.y,\n nodeId: id,\n width: L.width,\n height: L.height,\n };\n }\n return out;\n }\n\n private buildCurrentGraph(): AXPWorkflowGraph {\n const base = this.baselineGraph();\n const layoutArranged = this.layoutArrangedFlag() || isDesignerLayoutArranged(base ?? undefined);\n return {\n startActivityId: this.startActivityId(),\n activities: this.activities().map((r) => instanceFromRow(r)),\n connections: cloneDeep(this.connections()),\n designer: {\n ...base?.designer,\n layoutArranged: layoutArranged ? true : undefined,\n nodes: this.buildDesignerNodesForSave(),\n },\n };\n }\n\n private recomputeDirty(): void {\n this.isDirty.set(!isEqual(graphFingerprint(this.buildCurrentGraph()), graphFingerprint(this.baselineGraph())));\n this.recompute();\n this.scheduleAutoSave();\n }\n\n private clearAutoSaveTimer(): void {\n if (this.autoSaveTimer != null) {\n clearTimeout(this.autoSaveTimer);\n this.autoSaveTimer = null;\n }\n }\n\n /** Debounced persist for designer moves, connections, arrange, and property edits. */\n private scheduleAutoSave(): void {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n this.clearAutoSaveTimer();\n this.autoSaveTimer = setTimeout(() => {\n this.autoSaveTimer = null;\n void this.runAutoSave();\n }, AUTO_SAVE_DEBOUNCE_MS);\n }\n\n private async runAutoSave(): Promise<void> {\n if (this.suppressAutoSave || !this.isDirty()) {\n return;\n }\n if (this.autoSaveInFlight) {\n this.autoSavePending = true;\n return;\n }\n this.autoSaveInFlight = true;\n try {\n await this.handleSaveExecute({ silent: true });\n } finally {\n this.autoSaveInFlight = false;\n if (this.autoSavePending) {\n this.autoSavePending = false;\n if (this.isDirty()) {\n this.scheduleAutoSave();\n }\n }\n }\n }\n\n private async handleSaveExecute(options?: { silent?: boolean }): Promise<AXPExecuteCommandResult> {\n this.clearAutoSaveTimer();\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return {\n success: false,\n message: { text: await this.translateService.translateAsync('@general:messages.entity.invalid-data') },\n };\n }\n const graph = this.buildCurrentGraph();\n const result = await this.commandService.execute<SaveWorkflowDefinitionActivitiesInput, unknown>(\n WORKFLOW_DEFINITION_ACTIVITIES_SAVE_COMMAND,\n { id, graph, silent: options?.silent },\n );\n const execResult = (result ?? { success: false }) as AXPExecuteCommandResult;\n if (execResult.success) {\n this.baselineGraph.set(cloneDeep(graph));\n this.isDirty.set(false);\n if (!options?.silent) {\n this.recompute();\n }\n }\n return execResult;\n }\n\n private hydrateFromServerContext(ctx: Record<string, unknown> | undefined): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const graph = (ctx?.['graph'] as AXPWorkflowGraph | undefined) ?? emptyGraph();\n this.baselineGraph.set(cloneDeep(graph));\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(graph));\n this.initDesignerLayoutFromGraph(graph);\n this.activities.set((graph.activities ?? []).map((a) => rowFromInstance(a)));\n this.connections.set(cloneDeep(graph.connections ?? []));\n let start = graph.startActivityId ?? '';\n const rows = this.activities();\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n void this.ensureActivityCatalogLoaded();\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n /**\n * Runs auto-arrange once per workflow definition, then persists `graph.designer.layoutArranged`.\n * Definitions that already have saved node positions are marked arranged without moving nodes.\n */\n private async maybeApplyInitialArrangedLayout(): Promise<void> {\n if (this.layoutArrangedFlag() || this.initialLayoutArrangeInFlight) {\n return;\n }\n const ctx = this.context();\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n if (!id) {\n return;\n }\n if (this.activities().length === 0) {\n return;\n }\n\n this.initialLayoutArrangeInFlight = true;\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n if (graphHasPersistedDesignerLayout(base ?? undefined)) {\n this.layoutArrangedFlag.set(true);\n this.recomputeDirty();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n return;\n }\n\n this.applyArrangedLayout();\n if (this.isDirty()) {\n await this.handleSaveExecute({ silent: true });\n }\n } finally {\n this.suppressAutoSave = false;\n this.initialLayoutArrangeInFlight = false;\n }\n }\n\n private applyBaselineGraph(): void {\n this.clearAutoSaveTimer();\n this.suppressAutoSave = true;\n try {\n const base = this.baselineGraph();\n this.layoutArrangedFlag.set(isDesignerLayoutArranged(base ?? undefined));\n this.initDesignerLayoutFromGraph(base ?? undefined);\n const rows = (base?.activities ?? []).map((a) => rowFromInstance(a));\n this.activities.set(rows);\n this.connections.set(cloneDeep(base?.connections ?? []));\n let start = base?.startActivityId ?? '';\n if (!start && rows.length > 0) {\n start = rows[0]!.id;\n }\n this.startActivityId.set(start);\n this.selectedRowId.set(rows[0]?.id ?? null);\n this.isDirty.set(false);\n for (const r of rows) {\n void this.ensureDefinition(r.name);\n }\n void this.refreshPropertyViewer();\n this.recompute();\n } finally {\n this.suppressAutoSave = false;\n }\n }\n\n private addStep(): void {\n const catalog = this.activitySelectOptions();\n const defaultName = catalog[0]?.value ?? '';\n const row: AXMWorkflowActivityEditorRow = { id: AXPDataGenerator.uuid(), name: defaultName, inputs: {} };\n this.activities.update((list) => [...list, row]);\n const idx = this.activities().length - 1;\n const p = this.gridFallbackPosition(idx);\n this.designerLayout.update((L) => ({\n ...L,\n [row.id]: { x: p.x, y: p.y, width: DEFAULT_NODE_W, height: DEFAULT_NODE_H },\n }));\n this.selectedRowId.set(row.id);\n if (!this.startActivityId() && row.id) {\n this.startActivityId.set(row.id);\n }\n void this.ensureDefinition(row.name);\n void this.refreshPropertyViewer();\n this.recomputeDirty();\n }\n\n //#endregion\n\n //#region ---- Outcomes & labels ----\n\n private formatActivityStepLabel(r: AXMWorkflowActivityEditorRow): string {\n const shortId = r.id.length >= 8 ? r.id.slice(0, 8) : r.id;\n const typePart = r.name?.trim() ? r.name : '…';\n return `${typePart} (${shortId})`;\n }\n\n protected resolveNodeTitle(r: AXMWorkflowActivityEditorRow): string {\n const ext = r.extensions;\n const display = ext && typeof ext['displayTitle'] === 'string' ? ext['displayTitle'].trim() : '';\n if (display) {\n return display;\n }\n return this.activitySelectOptions().find((x) => x.value === r.name)?.text ?? r.name;\n }\n\n private outcomeRowsFromRawDefinition(raw: unknown): AXMWorkflowOutcomePortRow[] {\n if (raw == null) {\n return [];\n }\n let items: unknown[] = [];\n if (Array.isArray(raw)) {\n items = raw;\n } else if (typeof raw === 'string' && raw.trim().length > 0) {\n try {\n const parsed = JSON.parse(raw) as unknown;\n items = Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n } else {\n return [];\n }\n const rows: AXMWorkflowOutcomePortRow[] = [];\n for (const item of items) {\n if (typeof item === 'string' && item.trim()) {\n rows.push({ port: item, label: item });\n continue;\n }\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n const o = item as Record<string, unknown>;\n const portVal = o['name'] ?? o['value'] ?? o['outcome'] ?? o['port'];\n if (typeof portVal !== 'string' || !portVal.trim()) {\n continue;\n }\n const titleRaw = o['title'];\n let label = portVal;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n label = titleRaw;\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n label = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? portVal;\n }\n rows.push({ port: portVal, label });\n }\n }\n return rows;\n }\n\n private outcomePortsFromConnections(activityId: string): string[] {\n const ports = new Set<string>();\n for (const c of this.connections()) {\n if (c.source.activtyName === activityId) {\n ports.add(portKey(c.source.port));\n }\n }\n return [...ports];\n }\n\n private outcomePortsFromTaskActions(inputs: Record<string, unknown>): string[] {\n const actions = inputs['actions'];\n if (actions == null) {\n return [];\n }\n let root: unknown = actions;\n if (typeof actions === 'string' && actions.trim().length > 0) {\n try {\n root = JSON.parse(actions) as unknown;\n } catch {\n return [];\n }\n }\n if (typeof root !== 'object' || root === null) {\n return [];\n }\n const names: string[] = [];\n const obj = root as Record<string, unknown>;\n for (const key of ['suffix', 'prefix'] as const) {\n const list = obj[key];\n if (!Array.isArray(list)) {\n continue;\n }\n for (const entry of list) {\n if (!entry || typeof entry !== 'object') {\n continue;\n }\n const cmd = (entry as Record<string, unknown>)['command'];\n if (cmd && typeof cmd === 'object') {\n const n = (cmd as Record<string, unknown>)['name'];\n if (typeof n === 'string' && n.trim()) {\n names.push(n);\n }\n }\n }\n }\n return names;\n }\n\n private buildOutcomeRows(\n activityId: string,\n row: AXMWorkflowActivityEditorRow | null,\n def?: AXPActivityDefinition,\n ): AXMWorkflowOutcomePortRow[] {\n const map = new Map<string, AXMWorkflowOutcomePortRow>();\n for (const o of this.outcomeRowsFromRawDefinition(def?.outcomes)) {\n map.set(o.port, o);\n }\n for (const p of this.outcomePortsFromConnections(activityId)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n if (row) {\n for (const p of this.outcomePortsFromTaskActions(row.inputs)) {\n if (!map.has(p)) {\n map.set(p, { port: p, label: p });\n }\n }\n }\n if (map.size === 0) {\n map.set('Done', { port: 'Done', label: 'Done' });\n }\n return [...map.values()].sort((a, b) => a.port.localeCompare(b.port));\n }\n\n private pruneOutgoingConnections(sourceActivityId: string, allowedPorts: Set<string>): void {\n this.connections.update((list) =>\n list.filter((c) => {\n if (c.source.activtyName !== sourceActivityId) {\n return true;\n }\n return allowedPorts.has(portKey(c.source.port));\n }),\n );\n }\n\n //#endregion\n\n //#region ---- Catalog & property viewer ----\n\n private async ensureActivityCatalogLoaded(): Promise<void> {\n if (this.activityCatalogLoaded()) {\n return;\n }\n try {\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.activityDefinition.name)\n .data<string, AXMWorkflowActivityCatalogRow>();\n const res = (await data.query({ skip: 0, take: 1000 })) as unknown as AXPActivityDefinitionQueryResult;\n const items = (res.items ?? [])\n .map((row) => {\n const n = row.name;\n const typeFallback = row.type;\n const valueKey =\n typeof n === 'string' && n.trim()\n ? n.trim()\n : typeof n === 'number'\n ? String(n)\n : typeof typeFallback === 'string' && typeFallback.trim()\n ? typeFallback.trim()\n : typeof typeFallback === 'number'\n ? String(typeFallback)\n : '';\n if (!valueKey) {\n return null;\n }\n const titleRaw = row.title;\n let text = valueKey;\n if (typeof titleRaw === 'string' && titleRaw.trim()) {\n text = titleRaw.trim();\n } else if (titleRaw != null && typeof titleRaw === 'object') {\n text = this.mlResolver.resolve(titleRaw as AXPMultiLanguageString) ?? valueKey;\n }\n\n const descriptionRaw = row.description;\n let description = descriptionRaw;\n if (typeof descriptionRaw === 'string' && descriptionRaw.trim()) {\n description = descriptionRaw.trim();\n } else if (descriptionRaw != null && typeof descriptionRaw === 'object') {\n description = this.mlResolver.resolve(descriptionRaw as AXPMultiLanguageString) ?? descriptionRaw;\n }\n const categoryRaw = row.category as AXPActivityDefinitionCategoryRef | undefined;\n const categoryTitleResolved =\n categoryRaw?.title != null\n ? (this.mlResolver.resolve(categoryRaw.title) ?? categoryRaw.name)\n : 'Uncategorized';\n const icon = row.icon;\n return {\n value: valueKey,\n text: String(text).trim() || valueKey,\n description: description,\n categoryId: categoryRaw?.id ?? 'uncategorized',\n categoryTitle: categoryTitleResolved,\n icon: icon,\n };\n })\n .filter((x): x is AXMWorkflowActivitySelectItem => x != null);\n items.sort((a, b) => a.text.localeCompare(b.text));\n this.activitySelectItems.set(items);\n } catch {\n this.activitySelectItems.set([]);\n } finally {\n this.activityCatalogLoaded.set(true);\n }\n }\n\n private async ensureDefinition(name: string): Promise<void> {\n if (!name?.trim()) {\n return;\n }\n if (this.activityDefCache()[name]) {\n return;\n }\n const def = await this.activityDefService.getActivityByName(name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [name]: def }));\n }\n }\n\n private async refreshPropertyViewer(): Promise<void> {\n const row = this.selectedRow();\n if (row == null || row.name.trim() === '') {\n this.viewerTabs.set([]);\n this.selectedActivityOutcomeRows.set([]);\n setTimeout(() => this.propertyViewerRef()?.initializeContext({ inputs: {} }), 0);\n return;\n }\n const def = await this.activityDefService.getActivityByName(row.name);\n if (def) {\n this.activityDefCache.update((c) => ({ ...c, [row.name]: def }));\n }\n const rowLatest = this.activities().find((r) => r.id === row.id) ?? row;\n this.selectedActivityOutcomeRows.set(this.buildOutcomeRows(row.id, rowLatest, def));\n const inputProps = normalizeActivityDefinitionInputs(def?.inputs);\n const group: AXPWidgetPropertyGroup = { name: 'activity-inputs', title: 'Inputs', order: 0 };\n const widgetProps = inputProps.map((p, index) =>\n mapAXPPropertyToWidgetProperty(p, {\n group,\n order: index,\n valuePathPrefix: 'inputs',\n resolveTitle: (prop) =>\n typeof prop.title === 'string' ? prop.title : (this.mlResolver.resolve(prop.title) ?? prop.name),\n resolveDescription: (prop) =>\n prop.description === undefined\n ? undefined\n : typeof prop.description === 'string'\n ? prop.description\n : this.mlResolver.resolve(prop.description),\n }),\n );\n this.viewerTabs.set(buildPropertyViewerTabsFromProperties(widgetProps));\n setTimeout(() => {\n const current = this.activities().find((r) => r.id === row.id);\n this.propertyViewerRef()?.initializeContext({ inputs: cloneDeep(current?.inputs ?? {}) });\n }, 0);\n }\n\n //#endregion\n\n //#region ---- Utilities ----\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout.recompute?.();\n }\n\n //#endregion\n}\n","<!-- <axp-page-toolbar>\n <axp-layout-suffix>\n <div class=\"axm-workflow-definition-activities__toolbar-group\">\n <ax-button>\n <ax-icon icon=\"fa-light fa-sliders\"></ax-icon>\n <ax-dropdown-panel>\n <div class=\"axm-workflow-definition-activities__appearance-panel\">\n <label class=\"axm-workflow-definition-activities__pattern-label\" for=\"background-pattern-select\"\n >Background Pattern</label\n >\n <select\n id=\"background-pattern-select\"\n class=\"axm-workflow-definition-activities__pattern-select\"\n [value]=\"backgroundPattern()\"\n (change)=\"onBackgroundPatternChange($event)\"\n >\n <option value=\"dots\">Dots</option>\n <option value=\"line\">Lines</option>\n </select>\n </div>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button (onClick)=\"toggleFullscreen()\">\n <ax-icon>\n <i class=\"fa-solid\" [class]=\"isFullscreen() ? 'fa-compress' : 'fa-expand'\"></i>\n </ax-icon>\n </ax-button>\n <ax-button (onClick)=\"toggleInfoPanel()\">\n <ax-icon [icon]=\"isInfoPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info'\"></ax-icon>\n </ax-button>\n </div>\n </axp-layout-suffix>\n </axp-page-toolbar> -->\n\n<div\n class=\"axm-workflow-definition-activities\"\n [class.axm-workflow-definition-activities--with-palette]=\"isPaletteOpen()\"\n [class.axm-workflow-definition-activities--with-info]=\"isInfoPanelOpen()\"\n>\n @if (isPaletteOpen()) {\n <aside class=\"axm-workflow-definition-activities__palette\">\n <div class=\"axm-workflow-definition-activities__palette-head\">\n <div class=\"axm-workflow-definition-activities__palette-head-row\">\n <h3 class=\"axm-workflow-definition-activities__title\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.add-step'\n | translate\n | async) ?? 'Activities'\n }}\n </h3>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"closePalette()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <p class=\"axm-workflow-definition-activities__palette-sub\">\n {{\n ('@workflow-management:workflow-definitions.entities.workflow-definition.pages.activities.connections.hint'\n | translate\n | async) ?? ''\n }}\n </p>\n <ax-search-box\n class=\"axm-workflow-definition-activities__palette-search ax-sm\"\n [value]=\"paletteSearchTerm()\"\n (onValueChanged)=\"onPaletteSearchChange($event)\"\n [placeholder]=\"'@general:search.title' | translate | async\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"axm-workflow-definition-activities__palette-list\">\n <div class=\"axm-workflow-definition-activities__accordion-group\" axAccordionGroup [accordion]=\"false\">\n @for (group of filteredPaletteGroups(); track group.id) {\n @if (group.items.length > 0) {\n <section\n class=\"axm-workflow-definition-activities__accordion-item\"\n axAccordionItem\n [isCollapsed]=\"false\"\n #acc=\"axAccordionItem\"\n >\n <header\n class=\"axm-workflow-definition-activities__accordion-header\"\n axAccordionItemHeader\n role=\"button\"\n >\n <div class=\"axm-workflow-definition-activities__accordion-header-main\">\n <span class=\"axm-workflow-definition-activities__accordion-title\">{{ group.title }}</span>\n </div>\n <span class=\"axm-workflow-definition-activities__accordion-chevron\">\n <i [class]=\"acc.isCollapsed() ? 'fa-light fa-chevron-down' : 'fa-light fa-chevron-up'\"></i>\n </span>\n </header>\n <div class=\"axm-workflow-definition-activities__accordion-content\" axAccordionItemContent>\n @for (item of group.items; track item.type) {\n <button\n type=\"button\"\n class=\"axm-workflow-definition-activities__palette-item\"\n [axpWorkflowPaletteItem]=\"item\"\n >\n <span class=\"axm-workflow-definition-activities__palette-item-icon\" aria-hidden=\"true\">\n <i [class]=\"'fa-light ' + item.icon\"></i>\n </span>\n <span class=\"axm-workflow-definition-activities__palette-item-body\">\n <span class=\"axm-workflow-definition-activities__palette-item-title\">{{ item.title }}</span>\n <span class=\"axm-workflow-definition-activities__palette-item-meta\">{{\n item.description\n }}</span>\n </span>\n </button>\n }\n </div>\n </section>\n }\n }\n </div>\n </div>\n </aside>\n }\n\n <div class=\"axm-workflow-definition-activities__main\">\n <section class=\"axm-workflow-definition-activities__canvas\" (contextmenu)=\"onDesignerSurfaceContextMenu($event)\">\n <axp-workflow-designer\n [model]=\"designerModel()\"\n [backgroundPattern]=\"backgroundPattern()\"\n (zoomChange)=\"onDesignerZoomChange($event)\"\n (modelChange)=\"onDesignerModelChange($event)\"\n (activationChange)=\"onDesignerActivationChange($event)\"\n (nodeContextMenu)=\"onDesignerNodeContextMenu($event)\"\n ></axp-workflow-designer>\n <ax-context-menu\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleWorkflowContextMenuItemClick($event)\"\n />\n <axp-layout-floating-zoom-bar\n [zoomLevel]=\"zoomLevel()\"\n (zoomIn)=\"zoomIn()\"\n (zoomOut)=\"zoomOut()\"\n (zoomReset)=\"zoomReset()\"\n />\n </section>\n </div>\n @if (isInfoPanelOpen()) {\n <axp-layout-side-detail-panel\n class=\"axm-workflow-definition-activities__info ax-sticky ax-top-0 ax-z-10 ax-max-h-full ax-flex-none\"\n [header]=\"workflowDetailPanelHeader()\"\n [rows]=\"workflowDetailPanelRows()\"\n [emptyState]=\"workflowDetailPanelEmptyState()\"\n (panelClose)=\"toggleInfoPanel()\"\n />\n }\n</div>\n"],"names":["i5","i6","i7"],"mappings":"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"}
|
|
@@ -3381,7 +3381,7 @@ class AXMWorkflowManagementModule {
|
|
|
3381
3381
|
multi: true,
|
|
3382
3382
|
},
|
|
3383
3383
|
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-Eh5DDK-V.mjs').then((m) => m.AXMWorkflowInstanceActivityInstancesPageComponentProvider)),
|
|
3384
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-
|
|
3384
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-RRzkvrNM.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
|
|
3385
3385
|
// Automation condition builder: default automation.rules(refType, refId); modules override for their refTypes
|
|
3386
3386
|
{
|
|
3387
3387
|
provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
|
|
@@ -3534,7 +3534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
3534
3534
|
multi: true,
|
|
3535
3535
|
},
|
|
3536
3536
|
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-Eh5DDK-V.mjs').then((m) => m.AXMWorkflowInstanceActivityInstancesPageComponentProvider)),
|
|
3537
|
-
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-
|
|
3537
|
+
provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-modules-workflow-management-index-RRzkvrNM.mjs').then((m) => m.AXMWorkflowDefinitionActivitiesPageComponentProvider)),
|
|
3538
3538
|
// Automation condition builder: default automation.rules(refType, refId); modules override for their refTypes
|
|
3539
3539
|
{
|
|
3540
3540
|
provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/modules",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.57",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/platform": "21.0.0-next.
|
|
5
|
+
"@acorex/platform": "21.0.0-next.57",
|
|
6
6
|
"@angular/service-worker": "^20.0.0",
|
|
7
7
|
"d3": "^7.0.0",
|
|
8
8
|
"html2canvas": "^1.0.0",
|
|
@@ -325,6 +325,10 @@ interface AXPAiEngineRunOptions {
|
|
|
325
325
|
planningMode?: 'off' | 'once' | 'when-needed';
|
|
326
326
|
includeRules?: string[];
|
|
327
327
|
excludeRules?: string[];
|
|
328
|
+
/** Adds delegated specialists for this run only (AiAgent catalog `id` or programmatic `name`). */
|
|
329
|
+
includeAgents?: string[];
|
|
330
|
+
/** Removes delegated specialists for this run (matches catalog `id` or `name`, case-insensitive). */
|
|
331
|
+
excludeAgents?: string[];
|
|
328
332
|
platformRuntimeContext?: AXPAiPlatformRuntimeContext | null;
|
|
329
333
|
outputContract?: AXPAiAgentOutputContract;
|
|
330
334
|
onRunEvent?: (event: AXPAiEngineRunEvent) => void;
|