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]