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 73f1b37b2b9 NO-ISSUE: DMN Editor: Fix copy/paste expression using 
logic type selector (#2401)
73f1b37b2b9 is described below

commit 73f1b37b2b9a01d429b26091665a4540291acaf7
Author: Luiz João Motta <[email protected]>
AuthorDate: Wed Jun 5 15:30:23 2024 -0300

    NO-ISSUE: DMN Editor: Fix copy/paste expression using logic type selector 
(#2401)
---
 .../ExpressionDefinitionLogicTypeSelector.tsx      |  7 +++--
 .../stunner-editors-dmn-loader/src/gwtToBee.ts     | 32 ++++++++++++----------
 2 files changed, 23 insertions(+), 16 deletions(-)

diff --git 
a/packages/boxed-expression-component/src/expressions/ExpressionDefinitionRoot/ExpressionDefinitionLogicTypeSelector.tsx
 
b/packages/boxed-expression-component/src/expressions/ExpressionDefinitionRoot/ExpressionDefinitionLogicTypeSelector.tsx
index 85ce74868c7..466a7ea4a8c 100644
--- 
a/packages/boxed-expression-component/src/expressions/ExpressionDefinitionRoot/ExpressionDefinitionLogicTypeSelector.tsx
+++ 
b/packages/boxed-expression-component/src/expressions/ExpressionDefinitionRoot/ExpressionDefinitionLogicTypeSelector.tsx
@@ -77,6 +77,7 @@ export interface ExpressionDefinitionLogicTypeSelectorProps {
 
 const DEFAULT_LOGIC_TYPE_SELECTOR_HEIGHT = 550;
 const LOGIC_TYPE_SELECTOR_BOTTOM_MARGIN = 5;
+const PASTE_MENU_ITEM_ID = "paste";
 
 export function ExpressionDefinitionLogicTypeSelector({
   expression,
@@ -174,9 +175,10 @@ export function ExpressionDefinitionLogicTypeSelector({
 
   const selectLogicType = useCallback(
     (mouseEvent: React.MouseEvent, itemId?: string | number) => {
-      onLogicTypeSelected(itemId as BoxedExpression["__$$element"] | 
undefined);
+      if (itemId !== PASTE_MENU_ITEM_ID) {
+        onLogicTypeSelected(itemId as BoxedExpression["__$$element"] | 
undefined);
+      }
       setCurrentlyOpenContextMenu(undefined);
-      setPasteExpressionError("");
       setVisibleHelp("");
       setOpen(false);
       mouseEvent.stopPropagation();
@@ -581,6 +583,7 @@ export function ExpressionDefinitionLogicTypeSelector({
               })}
               <Divider style={{ padding: "16px" }} />
               <MenuItem
+                itemId={PASTE_MENU_ITEM_ID}
                 className={pasteExpressionError ? "paste-from-clipboard-error" 
: ""}
                 description={pasteExpressionError ? "Paste operation was not 
successful" : ""}
                 onClick={pasteExpression}
diff --git a/packages/stunner-editors-dmn-loader/src/gwtToBee.ts 
b/packages/stunner-editors-dmn-loader/src/gwtToBee.ts
index 2497f14c38d..e84fb8a17da 100644
--- a/packages/stunner-editors-dmn-loader/src/gwtToBee.ts
+++ b/packages/stunner-editors-dmn-loader/src/gwtToBee.ts
@@ -31,7 +31,7 @@ import {
   GwtExpressionDefinitionLogicType,
 } from "./types";
 import { DMN15_SPEC } from 
"@kie-tools/dmn-marshaller/dist/schemas/dmn-1_5/Dmn15Spec";
-import { BoxedExpression } from 
"@kie-tools/boxed-expression-component/dist/api";
+import { BoxedExpression, DmnBuiltInDataType } from 
"@kie-tools/boxed-expression-component/dist/api";
 
 /** Converts a GwtExpressionDefinition to a BoxedExpression. This convertion is
  *  necessary for historical reasons, as the Boxed Expression Editor was
@@ -48,7 +48,7 @@ export function gwtToBee(expression: GwtExpressionDefinition, 
__widths: Map<stri
         __$$element: "context",
         "@_id": expression.id,
         "@_label": expression.name,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         contextEntry: [
           ...expression.contextEntries.map((e) => {
             __widths.set(expression.id, expression.entryInfoWidth ? 
[expression.entryInfoWidth] : []);
@@ -57,7 +57,7 @@ export function gwtToBee(expression: GwtExpressionDefinition, 
__widths: Map<stri
               expression: gwtToBee(e.entryExpression, __widths)!,
               variable: {
                 "@_name": e.entryInfo.name,
-                "@_typeRef": e.entryInfo.dataType,
+                "@_typeRef": normalizeTypeRef(e.entryInfo.dataType),
               },
             };
           }),
@@ -77,7 +77,7 @@ export function gwtToBee(expression: GwtExpressionDefinition, 
__widths: Map<stri
         __$$element: "decisionTable",
         "@_id": expression.id,
         "@_label": expression.name,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         "@_hitPolicy": expression.hitPolicy,
         "@_aggregation": (() => {
           switch (expression.aggregation) {
@@ -102,7 +102,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
             "@_id": s.id,
             inputExpression: {
               "@_id": s.idLiteralExpression,
-              "@_typeRef": s.dataType,
+              "@_typeRef": normalizeTypeRef(s.dataType),
               text: { __$$text: s.name }, // This is really bad... `s.name` is 
actually an expression. Will be addressed by 
https://github.com/apache/incubator-kie-issues/issues/455
             },
           };
@@ -115,7 +115,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
           return {
             "@_id": o.id,
             "@_name": o.name,
-            "@_typeRef": o.dataType,
+            "@_typeRef": normalizeTypeRef(o.dataType),
           };
         }),
         annotation: (expression.annotations ?? []).map((a) => {
@@ -142,11 +142,11 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
         "@_id": expression.id,
         "@_label": expression.name,
         "@_kind": expression.functionKind,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         formalParameter: expression.formalParameters.map((p) => ({
           "@_id": p.id,
           "@_name": p.name,
-          "@_typeRef": p.dataType,
+          "@_typeRef": normalizeTypeRef(p.dataType),
         })),
         expression:
           expression.functionKind === FunctionExpressionDefinitionKind.Feel
@@ -212,7 +212,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
         __$$element: "invocation",
         "@_id": expression.id,
         "@_label": expression.name,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         expression: {
           __$$element: "literalExpression",
           "@_id": expression.invokedFunction.id,
@@ -226,7 +226,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
             parameter: {
               "@_id": e.entryInfo.id,
               "@_name": e.entryInfo.name,
-              "@_typeRef": e.entryInfo.dataType,
+              "@_typeRef": normalizeTypeRef(e.entryInfo.dataType),
             },
           };
         }),
@@ -237,7 +237,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
         __$$element: "list",
         "@_id": expression.id,
         "@_label": expression.name,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         expression: expression.items.map((i) => gwtToBee(i, __widths)!),
       };
     case GwtExpressionDefinitionLogicType.Literal:
@@ -246,7 +246,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
         __$$element: "literalExpression",
         "@_id": expression.id,
         "@_label": expression.name,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         text: { __$$text: expression.content ?? "" },
       };
     case GwtExpressionDefinitionLogicType.Relation:
@@ -255,7 +255,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
         __$$element: "relation",
         "@_id": expression.id,
         "@_label": expression.name,
-        "@_typeRef": expression.dataType,
+        "@_typeRef": normalizeTypeRef(expression.dataType),
         row: (expression.rows ?? []).map((r) => {
           return {
             "@_id": r.id,
@@ -271,7 +271,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
           return {
             "@_id": c.id,
             "@_name": c.name,
-            "@_typeRef": c.dataType,
+            "@_typeRef": normalizeTypeRef(c.dataType),
           };
         }),
       };
@@ -279,3 +279,7 @@ export function gwtToBee(expression: 
GwtExpressionDefinition, __widths: Map<stri
       throw new Error(`Unknown logicType for expression: '${(expression as 
any).logicType}'`);
   }
 }
+
+function normalizeTypeRef(dataType: DmnBuiltInDataType) {
+  return dataType === DmnBuiltInDataType.Undefined ? undefined : dataType;
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to