This is an automated email from the ASF dual-hosted git repository.

kbowers 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 a4b69828cc6 kie-issues#1466: A Decision Table with a single output 
column shouldn't have a name (#2834)
a4b69828cc6 is described below

commit a4b69828cc6da0197244f2b59651d20c2385ab06
Author: Kusuma04-dev <[email protected]>
AuthorDate: Mon Feb 3 14:36:42 2025 +0530

    kie-issues#1466: A Decision Table with a single output column shouldn't 
have a name (#2834)
    
    Co-authored-by: chinnamatli kusumalatha 
<[email protected]>
---
 .../DecisionTableExpression.tsx                    | 25 ++++++++--
 .../boxedExpressions/getDefaultBoxedExpression.tsx |  2 +-
 .../DecisionTableOutputHeaderCell.tsx              | 53 ++++++++++++----------
 .../checkDecisionTableCellsDataType.spec.ts        | 53 ++++------------------
 4 files changed, 61 insertions(+), 72 deletions(-)

diff --git 
a/packages/boxed-expression-component/src/expressions/DecisionTableExpression/DecisionTableExpression.tsx
 
b/packages/boxed-expression-component/src/expressions/DecisionTableExpression/DecisionTableExpression.tsx
index ec9cf39be4b..4816741e791 100644
--- 
a/packages/boxed-expression-component/src/expressions/DecisionTableExpression/DecisionTableExpression.tsx
+++ 
b/packages/boxed-expression-component/src/expressions/DecisionTableExpression/DecisionTableExpression.tsx
@@ -76,7 +76,6 @@ enum DecisionTableColumnType {
   OutputClause = "output",
   Annotation = "annotation",
 }
-
 export const DECISION_TABLE_INPUT_DEFAULT_VALUE = "-";
 export const DECISION_TABLE_OUTPUT_DEFAULT_VALUE = "";
 export const DECISION_TABLE_ANNOTATION_DEFAULT_VALUE = "";
@@ -777,7 +776,15 @@ export function DecisionTableExpression({
               });
             }
 
-            const nextOutputColumns = [...(prev.output ?? [])];
+            const nextOutputColumns = [
+              ...(prev.output ?? []).map((outputColumn, index) => {
+                const outputCopy = { ...outputColumn };
+                if (outputCopy["@_name"] === undefined) {
+                  outputCopy["@_name"] = `Output-${index + 1}`;
+                }
+                return outputCopy;
+              }),
+            ];
             for (/* Add new columns */ let i = 0; i < 
outputColumnsToAdd.length; i++) {
               nextOutputColumns.splice(localIndexInsideGroup + i, 0, 
outputColumnsToAdd[i]);
             }
@@ -895,11 +902,21 @@ export function DecisionTableExpression({
           case DecisionTableColumnType.OutputClause:
             const newOutputs = [...(prev.output ?? [])];
             newOutputs.splice(localIndexInsideGroup, 1);
-
+            //Output name shouldn't be displayed when there is single output 
column(kie-issues#1466)
+            const updatedOutputForSingleOutputColumns = [
+              ...(newOutputs ?? []).map((outputColumn) => {
+                const outputCopy = { ...outputColumn };
+                if (newOutputs.length === 1) {
+                  outputCopy["@_name"] = undefined;
+                  outputCopy["@_typeRef"] = undefined;
+                }
+                return outputCopy;
+              }),
+            ];
             // Do not inline this variable for type safety. See 
https://github.com/microsoft/TypeScript/issues/241
             const retOutput: Normalized<BoxedDecisionTable> = {
               ...prev,
-              output: newOutputs,
+              output: updatedOutputForSingleOutputColumns,
               rule: [...(prev.rule ?? [])].map((rule) => {
                 const newOutputEntry = [...rule.outputEntry];
                 newOutputEntry.splice(localIndexInsideGroup, 1);
diff --git 
a/packages/dmn-editor/src/boxedExpressions/getDefaultBoxedExpression.tsx 
b/packages/dmn-editor/src/boxedExpressions/getDefaultBoxedExpression.tsx
index 0d2cb791a05..f1918d29bea 100644
--- a/packages/dmn-editor/src/boxedExpressions/getDefaultBoxedExpression.tsx
+++ b/packages/dmn-editor/src/boxedExpressions/getDefaultBoxedExpression.tsx
@@ -230,7 +230,7 @@ export function getDefaultBoxedExpression({
     return relationExpression;
   } else if (logicType === "decisionTable") {
     const singleOutputColumn = {
-      name: "Output-1",
+      name: undefined,
       typeRef: dataType?.feelName,
     };
     const singleInputColumn = {
diff --git 
a/packages/dmn-editor/src/propertiesPanel/BoxedExpressionPropertiesPanelComponents/DecisionTableOutputHeaderCell.tsx
 
b/packages/dmn-editor/src/propertiesPanel/BoxedExpressionPropertiesPanelComponents/DecisionTableOutputHeaderCell.tsx
index 46dca185da5..d3af1a086bd 100644
--- 
a/packages/dmn-editor/src/propertiesPanel/BoxedExpressionPropertiesPanelComponents/DecisionTableOutputHeaderCell.tsx
+++ 
b/packages/dmn-editor/src/propertiesPanel/BoxedExpressionPropertiesPanelComponents/DecisionTableOutputHeaderCell.tsx
@@ -45,7 +45,6 @@ export function DecisionTableOutputHeaderCell(props: {
   const activeDrgElementId = useDmnEditorStore((s) => 
s.boxedExpressionEditor.activeDrgElementId);
   const { dmnEditorRootElementRef } = useDmnEditor();
   const { externalModelsByNamespace } = useExternalModels();
-
   const node = useDmnEditorStore((s) =>
     s
       .computed(s)
@@ -172,29 +171,35 @@ export function DecisionTableOutputHeaderCell(props: {
           />
         </>
       )}
-      <NameField
-        alternativeFieldName={root?.output.length === 1 ? "Column Name" : 
undefined}
-        isReadOnly={props.isReadOnly}
-        id={cell["@_id"]!}
-        name={cell?.["@_name"] ?? ""}
-        getAllUniqueNames={getAllUniqueNames}
-        onChange={(newName) =>
-          updater((dmnObject) => {
-            dmnObject["@_name"] = newName;
-          })
-        }
-      />
-      <TypeRefField
-        alternativeFieldName={root?.output.length === 1 ? "Column Type" : 
undefined}
-        isReadOnly={cellMustHaveSameTypeAsRoot ? true : props.isReadOnly}
-        dmnEditorRootElementRef={dmnEditorRootElementRef}
-        typeRef={cellMustHaveSameTypeAsRoot ? root?.["@_typeRef"] : 
cell?.["@_typeRef"]}
-        onChange={(newTypeRef) =>
-          updater((dmnObject) => {
-            dmnObject["@_typeRef"] = newTypeRef;
-          })
-        }
-      />
+      {root?.output && root.output.length > 1 ? (
+        <NameField
+          isReadOnly={props.isReadOnly}
+          id={cell["@_id"]!}
+          name={cell?.["@_name"] ?? ""}
+          getAllUniqueNames={getAllUniqueNames}
+          onChange={(newName) =>
+            updater((dmnObject) => {
+              dmnObject["@_name"] = newName;
+            })
+          }
+        />
+      ) : (
+        ""
+      )}
+      {root?.output && root.output.length > 1 ? (
+        <TypeRefField
+          isReadOnly={cellMustHaveSameTypeAsRoot ? true : props.isReadOnly}
+          dmnEditorRootElementRef={dmnEditorRootElementRef}
+          typeRef={cellMustHaveSameTypeAsRoot ? root?.["@_typeRef"] : 
cell?.["@_typeRef"]}
+          onChange={(newTypeRef) =>
+            updater((dmnObject) => {
+              dmnObject["@_typeRef"] = newTypeRef;
+            })
+          }
+        />
+      ) : (
+        ""
+      )}
       {itemDefinition && (
         <FormGroup label="Constraint">
           <ConstraintsFromTypeConstraintAttribute
diff --git 
a/packages/dmn-editor/tests-e2e/checkDecisionTableCellsDataType.spec.ts 
b/packages/dmn-editor/tests-e2e/checkDecisionTableCellsDataType.spec.ts
index 570d86334b9..eed2797dc95 100644
--- a/packages/dmn-editor/tests-e2e/checkDecisionTableCellsDataType.spec.ts
+++ b/packages/dmn-editor/tests-e2e/checkDecisionTableCellsDataType.spec.ts
@@ -31,7 +31,7 @@ test.describe("Decision Table - Cells Data Type", () => {
       await nodes.edit({ name: DefaultNodeName.DECISION });
     });
 
-    test("Decision table output column type should match the expression header 
type and be in readonly mode - built-in type", async ({
+    test("Decision type should match expression header type and output column 
type should be hidden with a single output column - built-in type", async ({
       bee,
       beePropertiesPanel,
     }) => {
@@ -42,13 +42,11 @@ test.describe("Decision Table - Cells Data Type", () => {
         newDataType: DataType.DateTimeDuration,
       });
 
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toBeDisabled();
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(
-        DataType.DateTimeDuration
-      );
+      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).not.toBeAttached();
+      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getDataType()).toHaveValue(DataType.DateTimeDuration);
     });
 
-    test("Decision table output column type should match the expression header 
type and be in readonly mode - custom type", async ({
+    test("Decision type should match expression header type and output column 
type should be hidden with a single output column - custom type", async ({
       editor,
       dataTypes,
       bee,
@@ -65,11 +63,11 @@ test.describe("Decision Table - Cells Data Type", () => {
       await bee.expression.asDecisionTable().outputHeaderAt(0).select();
       await 
beePropertiesPanel.decisionTableOutputHeader.setExpressionCustomDataType({ 
newDataType: "testType" });
 
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toBeDisabled();
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^testType\s$/i);
+      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).not.toBeAttached();
+      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getDataType()).toHaveValue(/^testType\s$/i);
     });
 
-    test("Decision table output column with different type than expression 
header shouldn't be in readonly mode", async ({
+    test("Decision table output column type shouldn't be there after deleting 
one output column", async ({
       bee,
       beePropertiesPanel,
     }) => {
@@ -87,9 +85,8 @@ test.describe("Decision Table - Cells Data Type", () => {
       await 
bee.expression.asDecisionTable().outputHeaderAt(1).contextMenu.option("Delete").click();
       await bee.expression.asDecisionTable().outputHeaderAt(0).select();
 
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toBeEnabled();
+      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).not.toBeAttached();
       await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(DataType.Number);
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(DataType.Boolean);
     });
 
     test("Decision table fix output column with different type than expression 
header", async ({
@@ -110,15 +107,8 @@ test.describe("Decision Table - Cells Data Type", () => {
       await 
bee.expression.asDecisionTable().outputHeaderAt(1).contextMenu.option("Delete").click();
       await bee.expression.asDecisionTable().outputHeaderAt(0).select();
 
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toBeEnabled();
+      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).not.toBeAttached();
       await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(DataType.Number);
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(DataType.Boolean);
-
-      await beePropertiesPanel.decisionTableOutputHeader.setColumnDataType({ 
newDataType: DataType.Number });
-
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toBeDisabled();
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(DataType.Number);
-      await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(DataType.Number);
     });
   });
 });
@@ -183,8 +173,7 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
beePropertiesPanel.decisionTableOutputHeader.setExpressionDataType({ 
newDataType: dataType });
 
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(`${dataType}`);
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(`${dataType}`);
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toBeDisabled();
+        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).not.toBeAttached();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).not.toBeAttached();
       });
 
@@ -593,7 +582,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*enumType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*enumType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getEnumerationValueAt(0)).toHaveValue("foo");
@@ -625,7 +613,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*enumType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*enumType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getEnumerationValueAt(0)).toHaveValue("foo");
@@ -641,7 +628,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*enumType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*enumType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getEnumerationValueAt(0)).toHaveValue("foo");
@@ -673,7 +659,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*rangeType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*rangeType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
 
@@ -712,7 +697,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*rangeType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*rangeType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await expect(
@@ -731,7 +715,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*rangeType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*rangeType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await expect(
@@ -769,9 +752,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*expressionType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(
-          /^\s*expressionType\s$/i
-        );
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionConstraintValue()).toHaveText(">
 20");
@@ -801,9 +781,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*expressionType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(
-          /^\s*expressionType\s$/i
-        );
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionConstraintValue()).toHaveText(">
 20");
@@ -817,9 +794,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*expressionType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(
-          /^\s*expressionType\s$/i
-        );
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionConstraintValue()).toHaveText("<
 30");
@@ -845,7 +819,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*noneType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*noneType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getNoneConstraint()).toBeAttached();
@@ -871,7 +844,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*enumType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*enumType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getEnumerationValueAt(0)).toHaveValue("foo");
@@ -892,7 +864,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*rangeType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*rangeType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await expect(
@@ -921,9 +892,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*expressionType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(
-          /^\s*expressionType\s$/i
-        );
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionConstraintValue()).toHaveText(">
 20");
@@ -940,7 +908,6 @@ test.describe("Decision Table - Cells Data Type - 
Constraint", () => {
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getExpressionDataType()).toHaveValue(
           /^\s*noneType\s$/i
         );
-        await 
expect(beePropertiesPanel.decisionTableOutputHeader.getColumnDataType()).toHaveValue(/^\s*noneType\s$/i);
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getConstraintSection()).toBeAttached();
         await 
beePropertiesPanel.decisionTableOutputHeader.expectConstraintButtonsToBeDisabled();
         await 
expect(beePropertiesPanel.decisionTableOutputHeader.getNoneConstraint()).toBeAttached();


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

Reply via email to