@defra/forms-model 3.0.479 → 3.0.481
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/conditions/index.js +1 -1
- package/dist/module/conditions/index.js.map +1 -1
- package/dist/module/conditions/migration.js +50 -35
- package/dist/module/conditions/migration.js.map +1 -1
- package/dist/module/conditions/types.js.map +1 -1
- package/dist/module/form/form-definition/index.js +29 -19
- package/dist/module/form/form-definition/index.js.map +1 -1
- package/dist/types/conditions/index.d.ts +1 -1
- package/dist/types/conditions/index.d.ts.map +1 -1
- package/dist/types/conditions/migration.d.ts +7 -6
- package/dist/types/conditions/migration.d.ts.map +1 -1
- package/dist/types/conditions/types.d.ts +9 -20
- package/dist/types/conditions/types.d.ts.map +1 -1
- package/dist/types/form/form-definition/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/schemas/form-definition-v2-schema.json +43 -5
- package/src/conditions/index.ts +1 -0
- package/src/conditions/migration.ts +56 -50
- package/src/conditions/types.ts +12 -27
- package/src/form/form-definition/index.ts +48 -77
@@ -7,6 +7,6 @@ export { ConditionGroup } from "./condition-group.js";
|
|
7
7
|
export { ConditionsModel } from "./condition-model.js";
|
8
8
|
export { ConditionGroupDef } from "./condition-group-def.js";
|
9
9
|
export { getConditionV2, hasConditionField, hasConditionGroup, hasConditionName, hasNestedCondition, isDuplicateCondition, toExpression, toPresentationString } from "./helpers.js";
|
10
|
-
export { convertConditionWrapperFromV2, isConditionBooleanValueDataV2, isConditionDateValueDataV2, isConditionListItemRefValueDataV2, isConditionNumberValueDataV2, isConditionStringValueDataV2, isConditionWrapper, isConditionWrapperV2 } from "./migration.js";
|
10
|
+
export { convertConditionWrapperFromV2, isConditionBooleanValueDataV2, isConditionDateValueDataV2, isConditionListItemRefValueDataV2, isConditionNumberValueDataV2, isConditionRelativeDateValueDataV2, isConditionStringValueDataV2, isConditionWrapper, isConditionWrapperV2 } from "./migration.js";
|
11
11
|
export { ConditionType, Coordinator, DateDirections, DateUnits, Operator, OperatorName } from "./enums.js";
|
12
12
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["absoluteDateOperatorNames","getExpression","getOperatorNames","relativeDateOperatorNames","ConditionValue","RelativeDateValue","conditionValueFrom","ConditionField","Condition","ConditionRef","ConditionGroup","ConditionsModel","ConditionGroupDef","getConditionV2","hasConditionField","hasConditionGroup","hasConditionName","hasNestedCondition","isDuplicateCondition","toExpression","toPresentationString","convertConditionWrapperFromV2","isConditionBooleanValueDataV2","isConditionDateValueDataV2","isConditionListItemRefValueDataV2","isConditionNumberValueDataV2","isConditionStringValueDataV2","isConditionWrapper","isConditionWrapperV2","ConditionType","Coordinator","DateDirections","DateUnits","Operator","OperatorName"],"sources":["../../../src/conditions/index.ts"],"sourcesContent":["export {\n absoluteDateOperatorNames,\n getExpression,\n getOperatorNames,\n relativeDateOperatorNames\n} from '~/src/conditions/condition-operators.js'\n\nexport {\n ConditionValue,\n RelativeDateValue,\n conditionValueFrom\n} from '~/src/conditions/condition-values.js'\n\nexport { ConditionField } from '~/src/conditions/condition-field.js'\nexport { Condition } from '~/src/conditions/condition.js'\nexport { ConditionRef } from '~/src/conditions/condition-ref.js'\nexport { ConditionGroup } from '~/src/conditions/condition-group.js'\nexport { ConditionsModel } from '~/src/conditions/condition-model.js'\nexport { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nexport {\n getConditionV2,\n hasConditionField,\n hasConditionGroup,\n hasConditionName,\n hasNestedCondition,\n isDuplicateCondition,\n toExpression,\n toPresentationString\n} from '~/src/conditions/helpers.js'\n\nexport {\n convertConditionWrapperFromV2,\n isConditionBooleanValueDataV2,\n isConditionDateValueDataV2,\n isConditionListItemRefValueDataV2,\n isConditionNumberValueDataV2,\n isConditionStringValueDataV2,\n isConditionWrapper,\n isConditionWrapperV2,\n type RuntimeFormModel\n} from '~/src/conditions/migration.js'\n\nexport {\n ConditionType,\n Coordinator,\n DateDirections,\n DateUnits,\n Operator,\n OperatorName\n} from '~/src/conditions/enums.js'\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,aAAa,EACbC,gBAAgB,EAChBC,yBAAyB;AAG3B,SACEC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB;AAGpB,SAASC,cAAc;AACvB,SAASC,SAAS;AAClB,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SACEC,cAAc,EACdC,iBAAiB,EACjBC,iBAAiB,EACjBC,gBAAgB,EAChBC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAY,EACZC,oBAAoB;AAGtB,SACEC,6BAA6B,EAC7BC,6BAA6B,EAC7BC,0BAA0B,EAC1BC,iCAAiC,EACjCC,4BAA4B,EAC5BC,4BAA4B,EAC5BC,kBAAkB,EAClBC,oBAAoB;AAItB,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,YAAY","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["absoluteDateOperatorNames","getExpression","getOperatorNames","relativeDateOperatorNames","ConditionValue","RelativeDateValue","conditionValueFrom","ConditionField","Condition","ConditionRef","ConditionGroup","ConditionsModel","ConditionGroupDef","getConditionV2","hasConditionField","hasConditionGroup","hasConditionName","hasNestedCondition","isDuplicateCondition","toExpression","toPresentationString","convertConditionWrapperFromV2","isConditionBooleanValueDataV2","isConditionDateValueDataV2","isConditionListItemRefValueDataV2","isConditionNumberValueDataV2","isConditionRelativeDateValueDataV2","isConditionStringValueDataV2","isConditionWrapper","isConditionWrapperV2","ConditionType","Coordinator","DateDirections","DateUnits","Operator","OperatorName"],"sources":["../../../src/conditions/index.ts"],"sourcesContent":["export {\n absoluteDateOperatorNames,\n getExpression,\n getOperatorNames,\n relativeDateOperatorNames\n} from '~/src/conditions/condition-operators.js'\n\nexport {\n ConditionValue,\n RelativeDateValue,\n conditionValueFrom\n} from '~/src/conditions/condition-values.js'\n\nexport { ConditionField } from '~/src/conditions/condition-field.js'\nexport { Condition } from '~/src/conditions/condition.js'\nexport { ConditionRef } from '~/src/conditions/condition-ref.js'\nexport { ConditionGroup } from '~/src/conditions/condition-group.js'\nexport { ConditionsModel } from '~/src/conditions/condition-model.js'\nexport { ConditionGroupDef } from '~/src/conditions/condition-group-def.js'\nexport {\n getConditionV2,\n hasConditionField,\n hasConditionGroup,\n hasConditionName,\n hasNestedCondition,\n isDuplicateCondition,\n toExpression,\n toPresentationString\n} from '~/src/conditions/helpers.js'\n\nexport {\n convertConditionWrapperFromV2,\n isConditionBooleanValueDataV2,\n isConditionDateValueDataV2,\n isConditionListItemRefValueDataV2,\n isConditionNumberValueDataV2,\n isConditionRelativeDateValueDataV2,\n isConditionStringValueDataV2,\n isConditionWrapper,\n isConditionWrapperV2,\n type RuntimeFormModel\n} from '~/src/conditions/migration.js'\n\nexport {\n ConditionType,\n Coordinator,\n DateDirections,\n DateUnits,\n Operator,\n OperatorName\n} from '~/src/conditions/enums.js'\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,aAAa,EACbC,gBAAgB,EAChBC,yBAAyB;AAG3B,SACEC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB;AAGpB,SAASC,cAAc;AACvB,SAASC,SAAS;AAClB,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SACEC,cAAc,EACdC,iBAAiB,EACjBC,iBAAiB,EACjBC,gBAAgB,EAChBC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAY,EACZC,oBAAoB;AAGtB,SACEC,6BAA6B,EAC7BC,6BAA6B,EAC7BC,0BAA0B,EAC1BC,iCAAiC,EACjCC,4BAA4B,EAC5BC,kCAAkC,EAClCC,4BAA4B,EAC5BC,kBAAkB,EAClBC,oBAAoB;AAItB,SACEC,aAAa,EACbC,WAAW,EACXC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,YAAY","ignoreList":[]}
|
@@ -1,18 +1,21 @@
|
|
1
1
|
import { ConditionType } from "./enums.js";
|
2
|
-
export function isConditionListItemRefValueDataV2(
|
3
|
-
return
|
2
|
+
export function isConditionListItemRefValueDataV2(condition) {
|
3
|
+
return condition.type === ConditionType.ListItemRef;
|
4
4
|
}
|
5
|
-
export function isConditionStringValueDataV2(
|
6
|
-
return
|
5
|
+
export function isConditionStringValueDataV2(condition) {
|
6
|
+
return condition.type === ConditionType.StringValue;
|
7
7
|
}
|
8
|
-
export function isConditionBooleanValueDataV2(
|
9
|
-
return
|
8
|
+
export function isConditionBooleanValueDataV2(condition) {
|
9
|
+
return condition.type === ConditionType.BooleanValue;
|
10
10
|
}
|
11
|
-
export function isConditionNumberValueDataV2(
|
12
|
-
return
|
11
|
+
export function isConditionNumberValueDataV2(condition) {
|
12
|
+
return condition.type === ConditionType.NumberValue;
|
13
13
|
}
|
14
|
-
export function isConditionDateValueDataV2(
|
15
|
-
return
|
14
|
+
export function isConditionDateValueDataV2(condition) {
|
15
|
+
return condition.type === ConditionType.DateValue;
|
16
|
+
}
|
17
|
+
export function isConditionRelativeDateValueDataV2(condition) {
|
18
|
+
return condition.type === ConditionType.RelativeDate;
|
16
19
|
}
|
17
20
|
function getListItem(model, listId, itemId) {
|
18
21
|
const foundList = model.getListById(listId);
|
@@ -25,7 +28,8 @@ function getListItem(model, listId, itemId) {
|
|
25
28
|
}
|
26
29
|
return item;
|
27
30
|
}
|
28
|
-
function createConditionValueDataFromListItemRefV2(
|
31
|
+
function createConditionValueDataFromListItemRefV2(condition, model) {
|
32
|
+
const value = condition.value;
|
29
33
|
const refValue = getListItem(model, value.listId, value.itemId);
|
30
34
|
return {
|
31
35
|
display: refValue.text,
|
@@ -33,31 +37,40 @@ function createConditionValueDataFromListItemRefV2(value, model) {
|
|
33
37
|
value: refValue.value.toString()
|
34
38
|
};
|
35
39
|
}
|
36
|
-
function createConditionValueDataFromStringOrDateValueDataV2(
|
40
|
+
function createConditionValueDataFromStringOrDateValueDataV2(condition) {
|
37
41
|
return {
|
38
42
|
type: ConditionType.Value,
|
39
|
-
value:
|
40
|
-
display:
|
43
|
+
value: condition.value,
|
44
|
+
display: condition.value
|
41
45
|
};
|
42
46
|
}
|
43
|
-
function createConditionValueDataFromStringValueDataV2(
|
44
|
-
return createConditionValueDataFromStringOrDateValueDataV2(
|
47
|
+
function createConditionValueDataFromStringValueDataV2(condition) {
|
48
|
+
return createConditionValueDataFromStringOrDateValueDataV2(condition);
|
49
|
+
}
|
50
|
+
function createConditionValueDataFromDateValueDataV2(condition) {
|
51
|
+
return createConditionValueDataFromStringOrDateValueDataV2(condition);
|
45
52
|
}
|
46
|
-
function
|
47
|
-
|
53
|
+
function createConditionValueDataFromRelativeDateValueDataV2(condition) {
|
54
|
+
const value = condition.value;
|
55
|
+
return {
|
56
|
+
type: ConditionType.RelativeDate,
|
57
|
+
period: value.period.toString(),
|
58
|
+
unit: value.unit,
|
59
|
+
direction: value.direction
|
60
|
+
};
|
48
61
|
}
|
49
|
-
function createConditionValueDataFromNumberValueDataV2(
|
62
|
+
function createConditionValueDataFromNumberValueDataV2(condition) {
|
50
63
|
return {
|
51
64
|
type: ConditionType.Value,
|
52
|
-
value:
|
53
|
-
display:
|
65
|
+
value: condition.value.toString(),
|
66
|
+
display: condition.value.toString()
|
54
67
|
};
|
55
68
|
}
|
56
|
-
function createConditionValueDataFromBooleanValueDataV2(
|
69
|
+
function createConditionValueDataFromBooleanValueDataV2(condition) {
|
57
70
|
return {
|
58
71
|
type: ConditionType.Value,
|
59
|
-
value:
|
60
|
-
display:
|
72
|
+
value: condition.value.toString(),
|
73
|
+
display: condition.value ? 'Yes' : 'No'
|
61
74
|
};
|
62
75
|
}
|
63
76
|
function isConditionDataV2(condition) {
|
@@ -69,18 +82,20 @@ function convertConditionDataV2(model, condition, coordinator) {
|
|
69
82
|
throw Error('Component not found');
|
70
83
|
}
|
71
84
|
let newValue;
|
72
|
-
if (isConditionListItemRefValueDataV2(condition
|
73
|
-
newValue = createConditionValueDataFromListItemRefV2(condition
|
74
|
-
} else if (isConditionStringValueDataV2(condition
|
75
|
-
newValue = createConditionValueDataFromStringValueDataV2(condition
|
76
|
-
} else if (isConditionBooleanValueDataV2(condition
|
77
|
-
newValue = createConditionValueDataFromBooleanValueDataV2(condition
|
78
|
-
} else if (isConditionNumberValueDataV2(condition
|
79
|
-
newValue = createConditionValueDataFromNumberValueDataV2(condition
|
80
|
-
} else if (isConditionDateValueDataV2(condition
|
81
|
-
newValue = createConditionValueDataFromDateValueDataV2(condition
|
85
|
+
if (isConditionListItemRefValueDataV2(condition)) {
|
86
|
+
newValue = createConditionValueDataFromListItemRefV2(condition, model);
|
87
|
+
} else if (isConditionStringValueDataV2(condition)) {
|
88
|
+
newValue = createConditionValueDataFromStringValueDataV2(condition);
|
89
|
+
} else if (isConditionBooleanValueDataV2(condition)) {
|
90
|
+
newValue = createConditionValueDataFromBooleanValueDataV2(condition);
|
91
|
+
} else if (isConditionNumberValueDataV2(condition)) {
|
92
|
+
newValue = createConditionValueDataFromNumberValueDataV2(condition);
|
93
|
+
} else if (isConditionDateValueDataV2(condition)) {
|
94
|
+
newValue = createConditionValueDataFromDateValueDataV2(condition);
|
95
|
+
} else if (isConditionRelativeDateValueDataV2(condition)) {
|
96
|
+
newValue = createConditionValueDataFromRelativeDateValueDataV2(condition);
|
82
97
|
} else {
|
83
|
-
|
98
|
+
throw Error('Unsupported condition type');
|
84
99
|
}
|
85
100
|
return {
|
86
101
|
field: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"migration.js","names":["ConditionType","isConditionListItemRefValueDataV2","value","type","ListItemRef","isConditionStringValueDataV2","StringValue","isConditionBooleanValueDataV2","BooleanValue","isConditionNumberValueDataV2","NumberValue","isConditionDateValueDataV2","DateValue","getListItem","model","listId","itemId","foundList","getListById","Error","item","items","find","id","createConditionValueDataFromListItemRefV2","refValue","display","text","Value","toString","createConditionValueDataFromStringOrDateValueDataV2","createConditionValueDataFromStringValueDataV2","createConditionValueDataFromDateValueDataV2","createConditionValueDataFromNumberValueDataV2","createConditionValueDataFromBooleanValueDataV2","isConditionDataV2","condition","convertConditionDataV2","coordinator","component","getComponentById","componentId","newValue","field","name","title","operator","convertConditionRefDataFromV2","refCondition","getConditionById","conditionId","conditionName","displayName","conditionDisplayName","isConditionWrapperV2","wrapper","Array","isArray","isConditionWrapper","convertConditionWrapperFromV2","conditionWrapper","length","newConditionWrapper","conditions","map","index","newCondition","undefined"],"sources":["../../../src/conditions/migration.ts"],"sourcesContent":["import {\n type ComponentDef,\n type ConditionalComponentType\n} from '~/src/components/types.js'\nimport { ConditionType, type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionBooleanValueDataV2,\n type ConditionData,\n type ConditionDataV2,\n type ConditionDateValueDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionNumberValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionStringValueDataV2,\n type ConditionValueData,\n type ConditionValueDataV2\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\n type ConditionWrapperV2,\n type List\n} from '~/src/form/form-definition/types.js'\n\nexport function isConditionListItemRefValueDataV2(\n value: ConditionValueDataV2\n): value is ConditionListItemRefValueDataV2 {\n return value.type === ConditionType.ListItemRef\n}\n\nexport function isConditionStringValueDataV2(\n value: ConditionValueDataV2\n): value is ConditionStringValueDataV2 {\n return value.type === ConditionType.StringValue\n}\n\nexport function isConditionBooleanValueDataV2(\n value: ConditionValueDataV2\n): value is ConditionBooleanValueDataV2 {\n return value.type === ConditionType.BooleanValue\n}\n\nexport function isConditionNumberValueDataV2(\n value: ConditionValueDataV2\n): value is ConditionNumberValueDataV2 {\n return value.type === ConditionType.NumberValue\n}\n\nexport function isConditionDateValueDataV2(\n value: ConditionValueDataV2\n): value is ConditionDateValueDataV2 {\n return value.type === ConditionType.DateValue\n}\n\nfunction getListItem(model: RuntimeFormModel, listId: string, itemId: string) {\n const foundList = model.getListById(listId)\n\n if (!foundList) {\n throw Error('List not found')\n }\n\n const item = foundList.items.find((item) => item.id === itemId)\n\n if (!item) {\n throw Error('List item not found')\n }\n\n return item\n}\n\nfunction createConditionValueDataFromListItemRefV2(\n value: ConditionListItemRefValueDataV2,\n model: RuntimeFormModel\n): ConditionValueData {\n const refValue = getListItem(model, value.listId, value.itemId)\n\n return {\n display: refValue.text,\n type: ConditionType.Value,\n value: refValue.value.toString()\n }\n}\n\nfunction createConditionValueDataFromStringOrDateValueDataV2(\n value: ConditionStringValueDataV2 | ConditionDateValueDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: value.value,\n display: value.value\n }\n}\n\nfunction createConditionValueDataFromStringValueDataV2(\n value: ConditionStringValueDataV2\n): ConditionValueData {\n return createConditionValueDataFromStringOrDateValueDataV2(value)\n}\n\nfunction createConditionValueDataFromDateValueDataV2(\n value: ConditionDateValueDataV2\n): ConditionValueData {\n return createConditionValueDataFromStringOrDateValueDataV2(value)\n}\n\nfunction createConditionValueDataFromNumberValueDataV2(\n value: ConditionNumberValueDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: value.value.toString(),\n display: value.value.toString()\n }\n}\n\nfunction createConditionValueDataFromBooleanValueDataV2(\n value: ConditionBooleanValueDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: value.value.toString(),\n display: value.value ? 'Yes' : 'No'\n }\n}\n\nfunction isConditionDataV2(\n condition: ConditionDataV2 | ConditionRefDataV2\n): condition is ConditionDataV2 {\n return 'componentId' in condition\n}\n\nfunction convertConditionDataV2(\n model: RuntimeFormModel,\n condition: ConditionDataV2,\n coordinator: Coordinator | undefined\n): ConditionData {\n const component = model.getComponentById(condition.componentId)\n\n if (!component) {\n throw Error('Component not found')\n }\n\n let newValue\n if (isConditionListItemRefValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromListItemRefV2(condition.value, model)\n } else if (isConditionStringValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromStringValueDataV2(condition.value)\n } else if (isConditionBooleanValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromBooleanValueDataV2(condition.value)\n } else if (isConditionNumberValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromNumberValueDataV2(condition.value)\n } else if (isConditionDateValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromDateValueDataV2(condition.value)\n } else {\n newValue = condition.value\n }\n\n return {\n field: {\n name: component.name,\n type: component.type as ConditionalComponentType /** @todo fix this */,\n display: component.title\n },\n operator: condition.operator,\n value: newValue,\n coordinator\n }\n}\n\nfunction convertConditionRefDataFromV2(\n model: RuntimeFormModel,\n condition: ConditionRefDataV2,\n coordinator: Coordinator | undefined\n): ConditionRefData {\n const refCondition = model.getConditionById(condition.conditionId)\n\n if (!refCondition) {\n throw Error('Component not found')\n }\n\n return {\n conditionName: refCondition.displayName,\n conditionDisplayName: refCondition.displayName,\n coordinator\n }\n}\n\nexport function isConditionWrapperV2(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapperV2 {\n return Array.isArray((wrapper as ConditionWrapperV2).items)\n}\n\nexport function isConditionWrapper(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapper {\n return !isConditionWrapperV2(wrapper)\n}\n\nexport function convertConditionWrapperFromV2(\n conditionWrapper: ConditionWrapperV2,\n model: RuntimeFormModel\n): ConditionWrapper {\n let coordinator\n\n if (conditionWrapper.items.length > 1 && !conditionWrapper.coordinator) {\n throw new Error('Coordinator is required for multiple conditions')\n } else {\n coordinator = conditionWrapper.coordinator\n }\n\n const newConditionWrapper: ConditionWrapper = {\n name: conditionWrapper.id,\n displayName: conditionWrapper.displayName,\n value: {\n name: conditionWrapper.id,\n conditions: conditionWrapper.items.map((condition, index) => {\n let newCondition: ConditionData | ConditionRefData\n\n if (isConditionDataV2(condition)) {\n newCondition = convertConditionDataV2(\n model,\n condition,\n index > 0 ? coordinator : undefined\n )\n } else {\n newCondition = convertConditionRefDataFromV2(\n model,\n condition,\n index > 0 ? coordinator : undefined\n )\n }\n\n return newCondition\n })\n }\n }\n\n return newConditionWrapper\n}\n\nexport interface RuntimeFormModel {\n getListById: (listId: string) => List | undefined\n getComponentById: (componentId: string) => ComponentDef | undefined\n getConditionById: (conditionId: string) => ConditionWrapperV2 | undefined\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"migration.js","names":["ConditionType","isConditionListItemRefValueDataV2","condition","type","ListItemRef","isConditionStringValueDataV2","StringValue","isConditionBooleanValueDataV2","BooleanValue","isConditionNumberValueDataV2","NumberValue","isConditionDateValueDataV2","DateValue","isConditionRelativeDateValueDataV2","RelativeDate","getListItem","model","listId","itemId","foundList","getListById","Error","item","items","find","id","createConditionValueDataFromListItemRefV2","value","refValue","display","text","Value","toString","createConditionValueDataFromStringOrDateValueDataV2","createConditionValueDataFromStringValueDataV2","createConditionValueDataFromDateValueDataV2","createConditionValueDataFromRelativeDateValueDataV2","period","unit","direction","createConditionValueDataFromNumberValueDataV2","createConditionValueDataFromBooleanValueDataV2","isConditionDataV2","convertConditionDataV2","coordinator","component","getComponentById","componentId","newValue","field","name","title","operator","convertConditionRefDataFromV2","refCondition","getConditionById","conditionId","conditionName","displayName","conditionDisplayName","isConditionWrapperV2","wrapper","Array","isArray","isConditionWrapper","convertConditionWrapperFromV2","conditionWrapper","length","newConditionWrapper","conditions","map","index","newCondition","undefined"],"sources":["../../../src/conditions/migration.ts"],"sourcesContent":["import {\n type ComponentDef,\n type ConditionalComponentType\n} from '~/src/components/types.js'\nimport { ConditionType, type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionValueData,\n type RelativeDateValueData,\n type RelativeDateValueDataV2\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\n type ConditionWrapperV2,\n type List\n} from '~/src/form/form-definition/types.js'\n\nexport function isConditionListItemRefValueDataV2(condition: ConditionDataV2) {\n return condition.type === ConditionType.ListItemRef\n}\n\nexport function isConditionStringValueDataV2(condition: ConditionDataV2) {\n return condition.type === ConditionType.StringValue\n}\n\nexport function isConditionBooleanValueDataV2(condition: ConditionDataV2) {\n return condition.type === ConditionType.BooleanValue\n}\n\nexport function isConditionNumberValueDataV2(condition: ConditionDataV2) {\n return condition.type === ConditionType.NumberValue\n}\n\nexport function isConditionDateValueDataV2(condition: ConditionDataV2) {\n return condition.type === ConditionType.DateValue\n}\n\nexport function isConditionRelativeDateValueDataV2(condition: ConditionDataV2) {\n return condition.type === ConditionType.RelativeDate\n}\n\nfunction getListItem(model: RuntimeFormModel, listId: string, itemId: string) {\n const foundList = model.getListById(listId)\n\n if (!foundList) {\n throw Error('List not found')\n }\n\n const item = foundList.items.find((item) => item.id === itemId)\n\n if (!item) {\n throw Error('List item not found')\n }\n\n return item\n}\n\nfunction createConditionValueDataFromListItemRefV2(\n condition: ConditionDataV2,\n model: RuntimeFormModel\n): ConditionValueData {\n const value = condition.value as ConditionListItemRefValueDataV2\n const refValue = getListItem(model, value.listId, value.itemId)\n\n return {\n display: refValue.text,\n type: ConditionType.Value,\n value: refValue.value.toString()\n }\n}\n\nfunction createConditionValueDataFromStringOrDateValueDataV2(\n condition: ConditionDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: condition.value as string,\n display: condition.value as string\n }\n}\n\nfunction createConditionValueDataFromStringValueDataV2(\n condition: ConditionDataV2\n): ConditionValueData {\n return createConditionValueDataFromStringOrDateValueDataV2(condition)\n}\n\nfunction createConditionValueDataFromDateValueDataV2(\n condition: ConditionDataV2\n): ConditionValueData {\n return createConditionValueDataFromStringOrDateValueDataV2(condition)\n}\n\nfunction createConditionValueDataFromRelativeDateValueDataV2(\n condition: ConditionDataV2\n): RelativeDateValueData {\n const value = condition.value as RelativeDateValueDataV2\n return {\n type: ConditionType.RelativeDate,\n period: value.period.toString(),\n unit: value.unit,\n direction: value.direction\n }\n}\n\nfunction createConditionValueDataFromNumberValueDataV2(\n condition: ConditionDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: (condition.value as number).toString(),\n display: (condition.value as number).toString()\n }\n}\n\nfunction createConditionValueDataFromBooleanValueDataV2(\n condition: ConditionDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: (condition.value as boolean).toString(),\n display: (condition.value as boolean) ? 'Yes' : 'No'\n }\n}\n\nfunction isConditionDataV2(\n condition: ConditionDataV2 | ConditionRefDataV2\n): condition is ConditionDataV2 {\n return 'componentId' in condition\n}\n\nfunction convertConditionDataV2(\n model: RuntimeFormModel,\n condition: ConditionDataV2,\n coordinator: Coordinator | undefined\n): ConditionData {\n const component = model.getComponentById(condition.componentId)\n\n if (!component) {\n throw Error('Component not found')\n }\n\n let newValue\n if (isConditionListItemRefValueDataV2(condition)) {\n newValue = createConditionValueDataFromListItemRefV2(condition, model)\n } else if (isConditionStringValueDataV2(condition)) {\n newValue = createConditionValueDataFromStringValueDataV2(condition)\n } else if (isConditionBooleanValueDataV2(condition)) {\n newValue = createConditionValueDataFromBooleanValueDataV2(condition)\n } else if (isConditionNumberValueDataV2(condition)) {\n newValue = createConditionValueDataFromNumberValueDataV2(condition)\n } else if (isConditionDateValueDataV2(condition)) {\n newValue = createConditionValueDataFromDateValueDataV2(condition)\n } else if (isConditionRelativeDateValueDataV2(condition)) {\n newValue = createConditionValueDataFromRelativeDateValueDataV2(condition)\n } else {\n throw Error('Unsupported condition type')\n }\n\n return {\n field: {\n name: component.name,\n type: component.type as ConditionalComponentType /** @todo fix this */,\n display: component.title\n },\n operator: condition.operator,\n value: newValue,\n coordinator\n }\n}\n\nfunction convertConditionRefDataFromV2(\n model: RuntimeFormModel,\n condition: ConditionRefDataV2,\n coordinator: Coordinator | undefined\n): ConditionRefData {\n const refCondition = model.getConditionById(condition.conditionId)\n\n if (!refCondition) {\n throw Error('Component not found')\n }\n\n return {\n conditionName: refCondition.displayName,\n conditionDisplayName: refCondition.displayName,\n coordinator\n }\n}\n\nexport function isConditionWrapperV2(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapperV2 {\n return Array.isArray((wrapper as ConditionWrapperV2).items)\n}\n\nexport function isConditionWrapper(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapper {\n return !isConditionWrapperV2(wrapper)\n}\n\nexport function convertConditionWrapperFromV2(\n conditionWrapper: ConditionWrapperV2,\n model: RuntimeFormModel\n): ConditionWrapper {\n let coordinator\n\n if (conditionWrapper.items.length > 1 && !conditionWrapper.coordinator) {\n throw new Error('Coordinator is required for multiple conditions')\n } else {\n coordinator = conditionWrapper.coordinator\n }\n\n const newConditionWrapper: ConditionWrapper = {\n name: conditionWrapper.id,\n displayName: conditionWrapper.displayName,\n value: {\n name: conditionWrapper.id,\n conditions: conditionWrapper.items.map((condition, index) => {\n let newCondition: ConditionData | ConditionRefData\n\n if (isConditionDataV2(condition)) {\n newCondition = convertConditionDataV2(\n model,\n condition,\n index > 0 ? coordinator : undefined\n )\n } else {\n newCondition = convertConditionRefDataFromV2(\n model,\n condition,\n index > 0 ? coordinator : undefined\n )\n }\n\n return newCondition\n })\n }\n }\n\n return newConditionWrapper\n}\n\nexport interface RuntimeFormModel {\n getListById: (listId: string) => List | undefined\n getComponentById: (componentId: string) => ComponentDef | undefined\n getConditionById: (conditionId: string) => ConditionWrapperV2 | undefined\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/conditions/types.ts"],"sourcesContent":["import {\n type ComponentDef,\n type ConditionalComponentType\n} from '~/src/components/types.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport {\n type ConditionType,\n type Coordinator,\n type DateDirections,\n type DateUnits,\n type OperatorName\n} from '~/src/conditions/enums.js'\n\nexport interface ConditionValueData {\n type: ConditionType.Value\n value: string\n display: string\n}\n\nexport interface
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/conditions/types.ts"],"sourcesContent":["import {\n type ComponentDef,\n type ConditionalComponentType\n} from '~/src/components/types.js'\nimport { type Condition } from '~/src/conditions/condition.js'\nimport {\n type ConditionType,\n type Coordinator,\n type DateDirections,\n type DateUnits,\n type OperatorName\n} from '~/src/conditions/enums.js'\n\nexport interface ConditionValueData {\n type: ConditionType.Value\n value: string\n display: string\n}\n\nexport interface RelativeDateValueData {\n type: ConditionType.RelativeDate\n period: string\n unit: DateUnits\n direction: DateDirections\n}\n\nexport interface ConditionListItemRefValueDataV2 {\n listId: string\n itemId: string\n}\n\nexport interface RelativeDateValueDataV2 {\n period: number\n unit: DateUnits\n direction: DateDirections\n}\n\nexport interface ConditionFieldData {\n name: string\n type: ConditionalComponentType\n display: string\n}\n\nexport interface ConditionData {\n field: ConditionFieldData\n operator: OperatorName\n value: ConditionValueData | RelativeDateValueData\n coordinator?: Coordinator\n}\n\nexport type ConditionValueDataV2 =\n | ConditionListItemRefValueDataV2\n | RelativeDateValueDataV2\n | string\n | boolean\n | number\n\nexport interface ConditionDataV2 {\n id: string\n componentId: string\n operator: OperatorName\n type: ConditionType\n value: ConditionValueDataV2\n}\n\nexport interface ConditionRefData {\n conditionName: string\n conditionDisplayName: string\n coordinator?: Coordinator\n}\n\nexport interface ConditionRefDataV2 {\n id: string\n conditionId: string\n}\n\nexport interface ConditionGroupData {\n conditions: (ConditionData | ConditionRefData | ConditionGroupData)[]\n}\n\nexport type ConditionGroupDataV2 = (ConditionDataV2 | ConditionRefDataV2)[]\n\nexport interface ConditionsModelData extends ConditionGroupData {\n name: string\n}\n\nexport interface OperatorDefinition {\n expression: (\n component: Pick<ComponentDef, 'type' | 'name'>,\n conditionValue: Condition['value']\n ) => string\n}\n\nexport type Conditionals = Record<OperatorName, OperatorDefinition>\n"],"mappings":"","ignoreList":[]}
|
@@ -2,6 +2,7 @@ import JoiDate from '@joi/date';
|
|
2
2
|
import JoiBase from 'joi';
|
3
3
|
import { v4 as uuidV4 } from 'uuid';
|
4
4
|
import { ComponentType } from "../../components/enums.js";
|
5
|
+
import { ConditionType, OperatorName } from "../../conditions/enums.js";
|
5
6
|
import { SchemaVersion } from "./types.js";
|
6
7
|
import { ControllerType } from "../../pages/enums.js";
|
7
8
|
import { hasComponents } from "../../pages/helpers.js";
|
@@ -39,24 +40,7 @@ const conditionValueSchema = Joi.object().description('Value specification for a
|
|
39
40
|
value: Joi.string().trim().required().description('The actual value to compare against'),
|
40
41
|
display: Joi.string().trim().required().description('Human-readable version of the value for display purposes')
|
41
42
|
});
|
42
|
-
const conditionStringValueDataSchemaV2 = Joi.object().description('String value specification for a condition').keys({
|
43
|
-
type: Joi.string().trim().valid('StringValue').required().description('Type of the condition value, should be "StringValue"'),
|
44
|
-
value: Joi.string().trim().required().description('The actual value to compare against')
|
45
|
-
});
|
46
|
-
const conditionBooleanValueDataSchemaV2 = Joi.object().description('Boolean value specification for a condition').keys({
|
47
|
-
type: Joi.string().trim().valid('BooleanValue').required().description('Type of the condition value, should be "BooleanValue"'),
|
48
|
-
value: Joi.boolean().required().description('The actual value to compare against')
|
49
|
-
});
|
50
|
-
const conditionNumberValueDataSchemaV2 = Joi.object().description('Number value specification for a condition').keys({
|
51
|
-
type: Joi.string().trim().valid('NumberValue').required().description('Type of the condition value, should be "NumberValue"'),
|
52
|
-
value: Joi.number().required().description('The actual value to compare against')
|
53
|
-
});
|
54
|
-
const conditionDateValueDataSchemaV2 = Joi.object().description('Date value specification for a condition').keys({
|
55
|
-
type: Joi.string().trim().valid('DateValue').required().description('Type of the condition value, should be "DateValue"'),
|
56
|
-
value: Joi.date().format('YYYY-MM-DD').raw().required().description('The actual value to compare against')
|
57
|
-
});
|
58
43
|
const conditionListItemRefDataSchemaV2 = Joi.object().description('List item ref specification for a condition').keys({
|
59
|
-
type: Joi.string().trim().valid('ListItemRef').required().description('Type of the condition value, should be "ListItemRef"'),
|
60
44
|
listId: Joi.string().trim().required().when('/lists', {
|
61
45
|
is: Joi.exist(),
|
62
46
|
then: Joi.valid(listIdRef)
|
@@ -66,6 +50,11 @@ const conditionListItemRefDataSchemaV2 = Joi.object().description('List item ref
|
|
66
50
|
then: Joi.valid(listItemIdRef)
|
67
51
|
}).required().description('The id of the list item')
|
68
52
|
});
|
53
|
+
const relativeDateValueDataSchemaV2 = Joi.object().description('Relative date specification for date-based conditions').keys({
|
54
|
+
period: Joi.number().integer().positive().required().description('Numeric amount of the time period, as a string'),
|
55
|
+
unit: Joi.string().trim().required().description('Time unit (e.g. days, weeks, months, years)'),
|
56
|
+
direction: Joi.string().trim().required().description('Temporal direction, either "past" or "future"')
|
57
|
+
});
|
69
58
|
const relativeDateValueDataSchema = Joi.object().description('Relative date specification for date-based conditions').keys({
|
70
59
|
type: Joi.string().trim().valid('RelativeDate').required().description('Type of the condition value, should be "RelativeDate"'),
|
71
60
|
period: Joi.string().trim().required().description('Numeric amount of the time period, as a string'),
|
@@ -96,8 +85,29 @@ export const conditionDataSchemaV2 = Joi.object().description('Condition definit
|
|
96
85
|
is: Joi.exist(),
|
97
86
|
then: Joi.valid(componentIdRefSchema)
|
98
87
|
}).description('Reference to the component id being evaluated in this condition'),
|
99
|
-
operator: Joi.string().trim().required().description('Comparison operator (equals, greaterThan, contains, etc.)'),
|
100
|
-
|
88
|
+
operator: Joi.string().trim().valid(...Object.values(OperatorName)).required().description('Comparison operator (equals, greaterThan, contains, etc.)'),
|
89
|
+
type: Joi.string().trim().valid(...Object.values(ConditionType)).required().description('Type of the condition value'),
|
90
|
+
value: Joi.any().required().description('The actual value to compare against').when('type', {
|
91
|
+
switch: [{
|
92
|
+
is: ConditionType.BooleanValue,
|
93
|
+
then: Joi.boolean()
|
94
|
+
}, {
|
95
|
+
is: ConditionType.StringValue,
|
96
|
+
then: Joi.string()
|
97
|
+
}, {
|
98
|
+
is: ConditionType.NumberValue,
|
99
|
+
then: Joi.number()
|
100
|
+
}, {
|
101
|
+
is: ConditionType.DateValue,
|
102
|
+
then: Joi.date().format('YYYY-MM-DD').raw()
|
103
|
+
}, {
|
104
|
+
is: ConditionType.ListItemRef,
|
105
|
+
then: conditionListItemRefDataSchemaV2
|
106
|
+
}, {
|
107
|
+
is: ConditionType.RelativeDate,
|
108
|
+
then: relativeDateValueDataSchemaV2
|
109
|
+
}]
|
110
|
+
}).description('Value to compare the field against, either fixed or relative date')
|
101
111
|
});
|
102
112
|
const conditionGroupSchema = Joi.object().description('Group of conditions combined with logical operators').keys({
|
103
113
|
conditions: Joi.array().items(Joi.alternatives().try(conditionSchema, conditionRefSchema, Joi.link('#conditionGroupSchema'))).description('Array of conditions or condition references in this group')
|