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]