This is an automated email from the ASF dual-hosted git repository.
tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push:
new 43d4e5aa97c kie-issues#891: DMN Editor: Removing a Decision from a
Decision Service (#3211)
43d4e5aa97c is described below
commit 43d4e5aa97c18ef8d2bf96833b590b5098202bee
Author: Aswathi <[email protected]>
AuthorDate: Sat Aug 2 01:01:54 2025 +0530
kie-issues#891: DMN Editor: Removing a Decision from a Decision Service
(#3211)
---
packages/dmn-editor/src/diagram/Diagram.tsx | 26 +++++++++++++
.../decision-removed-from-decision-service.png | Bin 0 -> 28905 bytes
.../decision-removed-from-decision-service.png | Bin 0 -> 29607 bytes
.../decision-removed-from-decision-service.png | Bin 0 -> 31186 bytes
.../drds/modelDecisionServicesInDrds.spec.ts | 41 +++++++++++++++++++--
5 files changed, 64 insertions(+), 3 deletions(-)
diff --git a/packages/dmn-editor/src/diagram/Diagram.tsx
b/packages/dmn-editor/src/diagram/Diagram.tsx
index 78fddf9df4c..24056ccd4b1 100644
--- a/packages/dmn-editor/src/diagram/Diagram.tsx
+++ b/packages/dmn-editor/src/diagram/Diagram.tsx
@@ -922,6 +922,32 @@ export const Diagram = React.forwardRef<DiagramRef, {
container: React.RefObject
dsShape["dc:Bounds"]["@_y"] =
(parentShape["dc:Bounds"]?.["@_y"] ?? 0) +
relativePosinCurrentDS.y;
}
+ // Remove decision from decision service
+ let isInside = true;
+ if (
+ node.data.shape["dc:Bounds"] &&
+ parentShape &&
+ parentShape["dc:Bounds"] &&
+ !parentShape["@_isCollapsed"]
+ ) {
+ isInside =
+ node.data.shape["dc:Bounds"]["@_x"] >=
parentShape["dc:Bounds"]["@_x"] &&
+ node.data.shape["dc:Bounds"]["@_y"] >=
parentShape!["dc:Bounds"]["@_y"] &&
+ node.data.shape["dc:Bounds"]!["@_x"] +
node.data.shape["dc:Bounds"]["@_width"] <=
+ parentShape["dc:Bounds"]["@_x"] +
parentShape!["dc:Bounds"]["@_width"] &&
+ node.data.shape["dc:Bounds"]["@_y"] +
node.data.shape["dc:Bounds"]["@_height"] <=
+ parentShape["dc:Bounds"]["@_y"] +
parentShape!["dc:Bounds"]["@_height"];
+ }
+ const { diagramElements } = addOrGetDrd({
+ definitions: state.dmn.model.definitions,
+ drdIndex: i,
+ });
+ const dmnShapeIndex = (diagramElements ?? []).findIndex(
+ (d) => d["@_dmnElementRef"] ===
dsShape?.["@_dmnElementRef"]
+ );
+ if (dmnShapeIndex >= 0 && !isInside) {
+ diagramElements?.splice(dmnShapeIndex, 1);
+ }
}
}
}
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-removed-from-decision-service.png
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-removed-from-decision-service.png
new file mode 100644
index 00000000000..c9e93fdff5d
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-removed-from-decision-service.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-removed-from-decision-service.png
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-removed-from-decision-service.png
new file mode 100644
index 00000000000..bca99a443f0
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-removed-from-decision-service.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-removed-from-decision-service.png
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-removed-from-decision-service.png
new file mode 100644
index 00000000000..95e42c9abcf
Binary files /dev/null and
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-removed-from-decision-service.png
differ
diff --git
a/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
b/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
index 8fd2bf489ca..8e9fd218e37 100644
--- a/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
+++ b/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
@@ -491,13 +491,48 @@ test.describe("Model Decision Services - DRD", () => {
await
expect(diagram.get()).toHaveScreenshot("decision_added_to_decision_service_collapsedDS.png");
});
- test("891 remove node from DS, check its removed form DS in all DRDs", async
({ drds }) => {
- test.skip(true,
"https://github.com/apache/incubator-kie-issues/issues/891");
+ test("Removing node from Decision Service removes from all DRDs", async ({
+ drds,
+ nodes,
+ drgNodes,
+ palette,
+ diagram,
+ }) => {
test.info().annotations.push({
type: TestAnnotations.REGRESSION,
description: "https://github.com/apache/incubator-kie-issues/issues/891",
});
- // TODO, question, isn't this the same as 889 - syncing depiction of DS in
all DRDs?
+ await drds.toggle();
+ await drds.create({ name: "First DRD" });
+ await drgNodes.toggle();
+
+ await palette.dragNewNode({
+ type: NodeType.DECISION_SERVICE,
+ targetPosition: { x: 400, y: 200 },
+ thenRenameTo: "DS1",
+ });
+ await expect(nodes.get({ name: "DS1" })).toBeAttached();
+ await palette.dragNewNode({
+ type: NodeType.DECISION,
+ targetPosition: { x: 200, y: 200 },
+ thenRenameTo: "D1",
+ });
+ await expect(nodes.get({ name: "D1" })).toBeAttached();
+ await nodes.move({ name: "D1", targetPosition: { x: 500, y: 300 } });
+ await expect(nodes.get({ name: "D1" })).toBeAttached();
+
+ await drds.toggle();
+ await drds.create({ name: "Second DRD" });
+ await drgNodes.dragNode({ name: "DS1", targetPosition: { x: 400, y: 200 }
});
+ await expect(nodes.get({ name: "DS1" })).toBeAttached();
+ await nodes.move({ name: "D1", targetPosition: { x: 700, y: 500 } });
+ await drgNodes.toggle();
+
+ await drds.toggle();
+ await drds.navigateTo({ name: "First DRD" });
+ await drds.toggle();
+ await expect(nodes.get({ name: "D1" })).not.toBeAttached();
+ await
expect(diagram.get()).toHaveScreenshot("decision_removed_from_decision_service.png");
});
test("893 collapsed external DS, synced in all DRDs", async ({ drds }) => {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]