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 04d5728ea68 kie-issues#1020: Adds missing features from previous #2244
(#2253)
04d5728ea68 is described below
commit 04d5728ea68eaf2bd8d62fbbaffc4dea27fadc8f
Author: Luiz João Motta <[email protected]>
AuthorDate: Mon Apr 22 10:45:34 2024 -0300
kie-issues#1020: Adds missing features from previous #2244 (#2253)
---
packages/dmn-editor/src/dataTypes/Constraints.tsx | 60 +++++++++++-----------
.../dmn-editor/src/dataTypes/DataTypePanel.tsx | 5 +-
packages/dmn-editor/src/dataTypes/DataTypeSpec.ts | 9 +++-
3 files changed, 39 insertions(+), 35 deletions(-)
diff --git a/packages/dmn-editor/src/dataTypes/Constraints.tsx
b/packages/dmn-editor/src/dataTypes/Constraints.tsx
index 32f96a75c37..8f3579b6d4f 100644
--- a/packages/dmn-editor/src/dataTypes/Constraints.tsx
+++ b/packages/dmn-editor/src/dataTypes/Constraints.tsx
@@ -30,7 +30,7 @@ import { ConstraintsRange, isRange } from
"./ConstraintsRange";
import { KIE__tConstraintType } from
"@kie-tools/dmn-marshaller/dist/schemas/kie-1_0/ts-gen/types";
import { EditItemDefinition } from "./DataTypes";
import { ToggleGroup, ToggleGroupItem } from
"@patternfly/react-core/dist/js/components/ToggleGroup";
-import { canHaveConstraints, constrainableBuiltInFeelTypes } from
"./DataTypeSpec";
+import { constrainableBuiltInFeelTypes } from "./DataTypeSpec";
import moment from "moment";
import { TextInput } from
"@patternfly/react-core/dist/js/components/TextInput";
import { ConstraintDate } from "./ConstraintComponents/ConstraintDate";
@@ -252,17 +252,16 @@ export const constraintTypeHelper = (typeRef:
DmnBuiltInDataType): TypeHelper =>
export function useConstraint({
constraint,
itemDefinition,
- isEnumDisabled,
- isRangeDisabled,
+ isCollectionConstraintEnable,
}: {
constraint: DMN15__tUnaryTests | undefined;
itemDefinition: DMN15__tItemDefinition;
- isEnumDisabled: boolean;
- isRangeDisabled: boolean;
+ isCollectionConstraintEnable: boolean;
}) {
const constraintValue = useMemo(() => constraint?.text.__$$text,
[constraint?.text.__$$text]);
-
const kieConstraintType = useMemo(() =>
constraint?.["@_kie:constraintType"], [constraint]);
+ const isCollection = useMemo(() => itemDefinition["@_isCollection"] ??
false, [itemDefinition]);
+ const itemDefinitionId = useMemo(() => itemDefinition["@_id"],
[itemDefinition]);
const typeRef: DmnBuiltInDataType = useMemo(
() => (itemDefinition?.typeRef?.__$$text as DmnBuiltInDataType) ??
DmnBuiltInDataType.Undefined,
@@ -270,17 +269,21 @@ export function useConstraint({
);
const isConstraintEnum = useMemo(
- () => (isEnumDisabled ? undefined : isEnum(constraintValue,
constraintTypeHelper(typeRef).check)),
- [constraintValue, isEnumDisabled, typeRef]
+ () =>
+ isCollection === true && isCollectionConstraintEnable === true //
collection doesn't support enumeration constraint
+ ? undefined
+ : isEnum(constraintValue, constraintTypeHelper(typeRef).check),
+ [constraintValue, isCollectionConstraintEnable, isCollection, typeRef]
);
const isConstraintRange = useMemo(
- () => (isRangeDisabled ? undefined : isRange(constraintValue,
constraintTypeHelper(typeRef).check)),
- [constraintValue, isRangeDisabled, typeRef]
+ () =>
+ isCollection === true && isCollectionConstraintEnable === true //
collection doesn't support range constraint
+ ? undefined
+ : isRange(constraintValue, constraintTypeHelper(typeRef).check),
+ [constraintValue, isCollectionConstraintEnable, isCollection, typeRef]
);
- const itemDefinitionId = useMemo(() => itemDefinition["@_id"],
[itemDefinition]);
-
const enumToKieConstraintType: (selection: ConstraintsType) =>
KIE__tConstraintType | undefined = useCallback(
(selection) => {
switch (selection) {
@@ -302,11 +305,16 @@ export function useConstraint({
const enabledConstraints = constrainableBuiltInFeelTypes.get(typeRef);
return {
enumeration:
- !isEnumDisabled && (enabledConstraints ??
[]).includes(enumToKieConstraintType(ConstraintsType.ENUMERATION)!),
- range: !isRangeDisabled && (enabledConstraints ??
[]).includes(enumToKieConstraintType(ConstraintsType.RANGE)!),
- expression: (enabledConstraints ??
[]).includes(enumToKieConstraintType(ConstraintsType.EXPRESSION)!),
+ !(isCollection === true && isCollectionConstraintEnable === true) &&
+ (enabledConstraints ??
[]).includes(enumToKieConstraintType(ConstraintsType.ENUMERATION)!),
+ range:
+ !(isCollection === true && isCollectionConstraintEnable === true) &&
+ (enabledConstraints ??
[]).includes(enumToKieConstraintType(ConstraintsType.RANGE)!),
+ expression:
+ (isCollection === true && isCollectionConstraintEnable === true) ||
+ (enabledConstraints ??
[]).includes(enumToKieConstraintType(ConstraintsType.EXPRESSION)!),
};
- }, [enumToKieConstraintType, isEnumDisabled, isRangeDisabled, typeRef]);
+ }, [typeRef, isCollection, isCollectionConstraintEnable,
enumToKieConstraintType]);
const selectedConstraint = useMemo<ConstraintsType>(() => {
if (isConstraintEnabled.enumeration && kieConstraintType ===
"enumeration") {
@@ -365,8 +373,6 @@ export function ConstraintsFromAllowedValuesAttribute({
isReadonly,
itemDefinition,
editItemDefinition,
- isEnumDisabled,
- isRangeDisabled,
}: {
isReadonly: boolean;
itemDefinition: DMN15__tItemDefinition;
@@ -388,8 +394,7 @@ export function ConstraintsFromAllowedValuesAttribute({
} = useConstraint({
constraint: allowedValues,
itemDefinition,
- isEnumDisabled: isEnumDisabled ?? false,
- isRangeDisabled: isRangeDisabled ?? false,
+ isCollectionConstraintEnable: false, // allowedValues doesn't support
constraint to the collection itself
});
const onConstraintChange = useCallback(
@@ -480,15 +485,11 @@ export function ConstraintsFromTypeConstraintAttribute({
itemDefinition,
editItemDefinition,
defaultsToAllowedValues,
- isEnumDisabled,
- isRangeDisabled,
}: {
isReadonly: boolean;
itemDefinition: DMN15__tItemDefinition;
editItemDefinition: EditItemDefinition;
defaultsToAllowedValues: boolean;
- isEnumDisabled?: boolean;
- isRangeDisabled?: boolean;
}) {
const typeConstraint = useMemo(
() =>
@@ -510,8 +511,7 @@ export function ConstraintsFromTypeConstraintAttribute({
} = useConstraint({
constraint: typeConstraint,
itemDefinition,
- isEnumDisabled: isEnumDisabled ?? false,
- isRangeDisabled: isRangeDisabled ?? false,
+ isCollectionConstraintEnable: true, // typeConstraint enables to add a
constraint to the collection itself
});
const onConstraintChange = useCallback(
@@ -627,7 +627,9 @@ export function Constraints({
}) {
return (
<>
- {!canHaveConstraints(itemDefinition) ? (
+ {isConstraintEnabled.expression === false &&
+ isConstraintEnabled.enumeration === false &&
+ isConstraintEnabled.range === false ? (
<p
style={{
padding: "10px",
@@ -654,7 +656,7 @@ export function Constraints({
buttonId={ConstraintsType.EXPRESSION}
isSelected={selectedConstraint === ConstraintsType.EXPRESSION}
onChange={onToggleGroupChange}
- isDisabled={isReadonly}
+ isDisabled={isReadonly || !isConstraintEnabled.expression}
/>
<ToggleGroupItem
text={ConstraintsType.ENUMERATION}
@@ -703,7 +705,7 @@ export function Constraints({
value={constraintValue}
savedValue={constraintValue}
onSave={onConstraintChange}
- isDisabled={false}
+ isDisabled={!isConstraintEnabled.expression}
/>
)}
{selectedConstraint === ConstraintsType.NONE && (
diff --git a/packages/dmn-editor/src/dataTypes/DataTypePanel.tsx
b/packages/dmn-editor/src/dataTypes/DataTypePanel.tsx
index fbaf41153f4..9279932c753 100644
--- a/packages/dmn-editor/src/dataTypes/DataTypePanel.tsx
+++ b/packages/dmn-editor/src/dataTypes/DataTypePanel.tsx
@@ -109,6 +109,7 @@ export function DataTypePanel({
...itemDefinition.allowedValues,
}
: undefined;
+ itemDefinition.allowedValues = undefined;
}
});
},
@@ -357,10 +358,8 @@ export function DataTypePanel({
typeRef={resolvedTypeRef}
onChange={changeTypeRef}
/>
-
<br />
<br />
-
{dataType.itemDefinition["@_isCollection"] === true ? (
<>
<Title size={"md"} headingLevel="h4">
@@ -371,8 +370,6 @@ export function DataTypePanel({
itemDefinition={dataType.itemDefinition}
editItemDefinition={editItemDefinition}
defaultsToAllowedValues={false}
- isEnumDisabled={true}
- isRangeDisabled={true}
/>
<br />
<br />
diff --git a/packages/dmn-editor/src/dataTypes/DataTypeSpec.ts
b/packages/dmn-editor/src/dataTypes/DataTypeSpec.ts
index 46f53a92178..1525d4ccec3 100644
--- a/packages/dmn-editor/src/dataTypes/DataTypeSpec.ts
+++ b/packages/dmn-editor/src/dataTypes/DataTypeSpec.ts
@@ -75,6 +75,10 @@ export function getNewItemDefinition(partial?:
Partial<DMN15__tItemDefinition>)
};
}
+export function isCollection(itemDefinition: DMN15__tItemDefinition) {
+ return itemDefinition["@_isCollection"] ?? false;
+}
+
export function isStruct(itemDefinition: DMN15__tItemDefinition) {
return !itemDefinition.typeRef && !!itemDefinition.itemComponent;
}
@@ -94,8 +98,9 @@ export const constrainableBuiltInFeelTypes = new
Map<DmnBuiltInDataType, KIE__tC
export function canHaveConstraints(itemDefinition: DMN15__tItemDefinition) {
return (
- !isStruct(itemDefinition) &&
- (constrainableBuiltInFeelTypes.get(itemDefinition.typeRef?.__$$text as
DmnBuiltInDataType)?.length ?? 0) > 0
+ isCollection(itemDefinition) ||
+ (!isStruct(itemDefinition) &&
+ (constrainableBuiltInFeelTypes.get(itemDefinition.typeRef?.__$$text as
DmnBuiltInDataType)?.length ?? 0) > 0)
);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]