@inseefr/lunatic 3.13.5-rc.3 → 3.13.5
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/components/Duration/getDurationFromValue.d.ts +2 -2
- package/components/Duration/getDurationFromValue.js +7 -6
- package/components/Duration/getDurationFromValue.js.map +1 -1
- package/esm/components/Duration/getDurationFromValue.d.ts +2 -2
- package/esm/components/Duration/getDurationFromValue.js +7 -6
- package/esm/components/Duration/getDurationFromValue.js.map +1 -1
- package/esm/hooks/useMultimode.js +21 -10
- package/esm/hooks/useMultimode.js.map +1 -1
- package/esm/use-lunatic/commons/compile-controls.d.ts +5 -0
- package/esm/use-lunatic/commons/compile-controls.js +6 -1
- package/esm/use-lunatic/commons/compile-controls.js.map +1 -1
- package/esm/use-lunatic/commons/compile-controls.spec.d.ts +1 -0
- package/esm/use-lunatic/commons/compile-controls.spec.js +121 -0
- package/esm/use-lunatic/commons/compile-controls.spec.js.map +1 -0
- package/esm/utils/getArticulationState.js +12 -6
- package/esm/utils/getArticulationState.js.map +1 -1
- package/hooks/useMultimode.js +20 -8
- package/hooks/useMultimode.js.map +1 -1
- package/package.json +11 -1
- package/src/components/Duration/getDurationFromValue.ts +10 -6
- package/src/hooks/useMultimode.ts +27 -13
- package/src/stories/questionnaires/SRCV/data.json +116 -0
- package/src/stories/questionnaires/SRCV/source.json +69256 -0
- package/src/stories/questionnaires/SRCV/srcv.stories.tsx +23 -0
- package/src/use-lunatic/commons/compile-controls.spec.ts +136 -0
- package/src/use-lunatic/commons/compile-controls.ts +7 -1
- package/src/utils/getArticulationState.ts +16 -8
- package/tsconfig.build.tsbuildinfo +1 -1
- package/use-lunatic/commons/compile-controls.d.ts +5 -0
- package/use-lunatic/commons/compile-controls.js +6 -0
- package/use-lunatic/commons/compile-controls.js.map +1 -1
- package/use-lunatic/commons/compile-controls.spec.d.ts +1 -0
- package/use-lunatic/commons/compile-controls.spec.js +123 -0
- package/use-lunatic/commons/compile-controls.spec.js.map +1 -0
- package/utils/getArticulationState.js +12 -6
- package/utils/getArticulationState.js.map +1 -1
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { LunaticError, LunaticReducerState } from '../type';
|
|
2
|
+
import { type ComponentDefinition, type InterpretedComponent } from './component';
|
|
2
3
|
export type StateForControls = Pick<LunaticReducerState, 'pager' | 'pages' | 'isInLoop' | 'executeExpression'>;
|
|
4
|
+
/**
|
|
5
|
+
* Figure out the number of iterations of a component.
|
|
6
|
+
*/
|
|
7
|
+
export declare function computeIterations(component: InterpretedComponent | ComponentDefinition, executeExpression: LunaticReducerState['executeExpression']): number;
|
|
3
8
|
/**
|
|
4
9
|
* Check controls for currently visible components and output errors.
|
|
5
10
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeIterations = computeIterations;
|
|
3
4
|
exports.compileControls = compileControls;
|
|
4
5
|
const fill_component_expressions_1 = require("./fill-components/fill-component-expressions");
|
|
5
6
|
const check_roundabout_control_1 = require("../reducer/controls/check-roundabout-control");
|
|
@@ -63,12 +64,17 @@ function checkControls(controls, executeExpression, pager) {
|
|
|
63
64
|
* Figure out the number of iterations of a component.
|
|
64
65
|
*/
|
|
65
66
|
function computeIterations(component, executeExpression) {
|
|
67
|
+
// iterations is present and it's already computed, return the actual value (case of InterpretedComponent)
|
|
68
|
+
if ('iterations' in component && typeof component.iterations === 'number')
|
|
69
|
+
return component.iterations;
|
|
70
|
+
// iteratons is present and it's an expression, compute it
|
|
66
71
|
if ('iterations' in component &&
|
|
67
72
|
component.iterations &&
|
|
68
73
|
typeof component.iterations === 'object' &&
|
|
69
74
|
'value' in component.iterations) {
|
|
70
75
|
return executeExpression(component.iterations);
|
|
71
76
|
}
|
|
77
|
+
// Fallback to variable collectes by this component, return it's length
|
|
72
78
|
if ('response' in component) {
|
|
73
79
|
const value = executeExpression({
|
|
74
80
|
type: 'VTL',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-controls.js","sourceRoot":"","sources":["../../src/use-lunatic/commons/compile-controls.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"compile-controls.js","sourceRoot":"","sources":["../../src/use-lunatic/commons/compile-controls.ts"],"names":[],"mappings":";;AAqHA,8CAoCC;AAuGD,0CAgBC;AA3QD,6FAAwF;AACxF,2FAAsF;AACtF,+EAA0E;AAC1E,2EAAqE;AACrE,2CAQqB;AAOrB;;;GAGG;AACH,SAAS,eAAe,CACvB,KAAuB,EACvB,UAA0D,EAC1D,aAA8C;IAE9C,IAAI,MAAM,GAAG,aAAa,IAAK,EAAqC,CAAC;IAErE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,0CAA0C;QAC1C,IAAI,UAAU,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,eAAe,GAAG,aAAa,CACpC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAClD,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC;YACxC,CAAC;QACF,CAAC;QAED,kEAAkE;QAClE,IAAI,IAAA,iCAAqB,EAAC,SAAS,CAAC;YACnC,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEpD,+CAA+C;QAC/C,IAAI,IAAA,2BAAe,EAAC,SAAS,CAAC;YAC7B,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9C,mCAAmC;QACnC,IAAI,IAAA,+BAAmB,EAAC,SAAS,CAAC;YACjC,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACvB,KAAuB,EACvB,SAAyC,EACzC,MAAsC;IAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACxE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,oBAAoB,CAC5B,KAAK,EACL,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EACvC,MAAM,CACN,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CACjB,KAAuB,EACvB,SAAmC,EACnC,MAAsC;IAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IACxE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,oBAAoB,CAC5B,KAAK,EACL,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EACvC,MAAM,CACN,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CACrB,QAA0B,EAC1B,iBAA2D,EAC3D,KAAmC;IAEnC,OAAO,QAAQ;SACb,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO,IAAA,iDAAsB,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAA,qCAAgB,EAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAChC,SAAqD,EACrD,iBAA2D;IAE3D,0GAA0G;IAC1G,IAAI,YAAY,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ;QACxE,OAAO,SAAS,CAAC,UAAU,CAAC;IAC7B,0DAA0D;IAC1D,IACC,YAAY,IAAI,SAAS;QACzB,SAAS,CAAC,UAAU;QACpB,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ;QACxC,OAAO,IAAI,SAAS,CAAC,UAAU,EAC9B,CAAC;QACF,OAAO,iBAAiB,CAAS,SAAS,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,uEAAuE;IACvE,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC;YAC/B,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI;SAC9B,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,MAAM,CAAC;QACrB,CAAC;IACF,CAAC;IACD,+CAA+C;IAC/C,IAAI,YAAY,IAAI,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,CACd,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjC,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CACvC,CACD,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAC5B,KAAuB,EACvB,SAGiC,EACjC,MAAsC;IAEtC,mCAAmC;IACnC,IAAI,SAAS,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC;IACf,CAAC;IAED,qCAAqC;IACrC,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,6DAA6D;QAC7D,MAAM,cAAc,GAAG;YACtB,GAAG,KAAK,CAAC,KAAK;YACd,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,UAAU;SACxB,CAAC;QACF,yCAAyC;QACzC,IAAI,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvD,SAAS;QACV,CAAC;QAED,2EAA2E;QAC3E,IAAI,IAAA,iCAAqB,EAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjE,MAAM,mBAAmB,GAAG,KAAK,CAAC,iBAAiB,CAClD,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EACtD,cAAc,CACd,CAAC;YAEF,IAAI,mBAAmB,EAAE,CAAC;gBACzB,SAAS;YACV,CAAC;QACF,CAAC;QAED,uDAAuD;QACvD;QACC,+FAA+F;QAC/F,CAAC,iBAAiB,IAAI,SAAS;YAC9B,SAAS,CAAC,eAAe;YACzB,OAAO,SAAS,CAAC,eAAe,IAAI,QAAQ;YAC5C,OAAO,IAAI,SAAS,CAAC,eAAe;YACpC,CAAC,KAAK,CAAC,iBAAiB,CACvB,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EACvD,cAAc,CACd,CAAC;YACH,gFAAgF;YAChF,SAAS,CAAC,eAAe,KAAK,KAAK,EAClC,CAAC;YACF,SAAS;QACV,CAAC;QACD,MAAM,eAAe,GAAG,aAAa,CACpC,SAAS,CAAC,QAAQ,EAClB,KAAK,CAAC,iBAAiB,EACvB,cAAc,CACd,CAAC;QACF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC;QAClD,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAuC;IAChE,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IACD,mDAAmD;IACnD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;SACzC,IAAI,EAAE;SACN,IAAI,CACJ,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;QACrC,KAAK,CAAC,aAAa,KAAK,QAAQ,CACjC,CAAC;IACH,OAAO,aAAa,KAAK,SAAS,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAuB;IACtD,MAAM,UAAU,GAAG,IAAA,kDAAsB,EAAC,KAAK,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,UAAU;SAClC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,qDAAwB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAC9D,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACrB,IAAI,iBAAiB,IAAI,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,OAAO;QACN,aAAa;QACb,UAAU,EAAE,gBAAgB,CAAC,aAAa,CAAC;KAC3C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const compile_controls_1 = require("./compile-controls");
|
|
5
|
+
// Mock de la fonction executeExpression
|
|
6
|
+
const mockExecuteExpression = vitest_1.vi.fn();
|
|
7
|
+
(0, vitest_1.describe)('computeIterations', () => {
|
|
8
|
+
(0, vitest_1.beforeEach)(() => {
|
|
9
|
+
vitest_1.vi.resetAllMocks();
|
|
10
|
+
});
|
|
11
|
+
(0, vitest_1.it)('should return iterations directly if it is a number', () => {
|
|
12
|
+
const component = {
|
|
13
|
+
id: 'test',
|
|
14
|
+
componentType: 'Loop',
|
|
15
|
+
iterations: 5,
|
|
16
|
+
};
|
|
17
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(5);
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('should execute VTL expression for iterations if it is an object', () => {
|
|
20
|
+
const component = {
|
|
21
|
+
id: 'test',
|
|
22
|
+
componentType: 'Loop',
|
|
23
|
+
iterations: { type: 'VTL', value: 'count(ARRAY)' },
|
|
24
|
+
};
|
|
25
|
+
mockExecuteExpression.mockReturnValue(3);
|
|
26
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(3);
|
|
27
|
+
(0, vitest_1.expect)(mockExecuteExpression).toHaveBeenCalledWith({
|
|
28
|
+
type: 'VTL',
|
|
29
|
+
value: 'count(ARRAY)',
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('should return array length if component has a response with an array value', () => {
|
|
33
|
+
const component = {
|
|
34
|
+
id: 'test',
|
|
35
|
+
componentType: 'Question',
|
|
36
|
+
response: { name: 'ARRAY' },
|
|
37
|
+
};
|
|
38
|
+
mockExecuteExpression.mockReturnValue(['a', 'b', 'c', 'd']);
|
|
39
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(4);
|
|
40
|
+
(0, vitest_1.expect)(mockExecuteExpression).toHaveBeenCalledWith({
|
|
41
|
+
type: 'VTL',
|
|
42
|
+
value: 'ARRAY',
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.it)('should return 0 if response value is not an array', () => {
|
|
46
|
+
const component = {
|
|
47
|
+
id: 'test',
|
|
48
|
+
componentType: 'Question',
|
|
49
|
+
response: { name: 'VAR' },
|
|
50
|
+
};
|
|
51
|
+
mockExecuteExpression.mockReturnValue('not an array');
|
|
52
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(0);
|
|
53
|
+
});
|
|
54
|
+
(0, vitest_1.it)('should return max iterations of children if component has components', () => {
|
|
55
|
+
const component = {
|
|
56
|
+
id: 'parent',
|
|
57
|
+
componentType: 'Loop',
|
|
58
|
+
components: [
|
|
59
|
+
{ id: 'child1', componentType: 'Question', iterations: 2 },
|
|
60
|
+
{ id: 'child2', componentType: 'Question', iterations: 5 },
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(5);
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)('should return 0 if no iterations, response, or components are present', () => {
|
|
66
|
+
const component = {
|
|
67
|
+
id: 'test',
|
|
68
|
+
componentType: 'Question',
|
|
69
|
+
};
|
|
70
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(0);
|
|
71
|
+
});
|
|
72
|
+
(0, vitest_1.it)('should return 0 if iterations is null or undefined', () => {
|
|
73
|
+
const component1 = {
|
|
74
|
+
id: 'test1',
|
|
75
|
+
componentType: 'Loop',
|
|
76
|
+
iterations: null,
|
|
77
|
+
};
|
|
78
|
+
const component2 = {
|
|
79
|
+
id: 'test2',
|
|
80
|
+
componentType: 'Loop',
|
|
81
|
+
iterations: undefined,
|
|
82
|
+
};
|
|
83
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component1, mockExecuteExpression)).toBe(0);
|
|
84
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component2, mockExecuteExpression)).toBe(0);
|
|
85
|
+
});
|
|
86
|
+
(0, vitest_1.it)('should return 0 if all children have no iterations', () => {
|
|
87
|
+
const component = {
|
|
88
|
+
id: 'parent',
|
|
89
|
+
componentType: 'Loop',
|
|
90
|
+
components: [
|
|
91
|
+
{ id: 'child1', componentType: 'Question' },
|
|
92
|
+
{ id: 'child2', componentType: 'Question' },
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(0);
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.it)('should prioritize iterations over response if both are present', () => {
|
|
98
|
+
const component = {
|
|
99
|
+
id: 'test',
|
|
100
|
+
componentType: 'Loop',
|
|
101
|
+
iterations: 3,
|
|
102
|
+
response: { name: 'ARRAY' },
|
|
103
|
+
};
|
|
104
|
+
mockExecuteExpression.mockReturnValue(['a', 'b', 'c', 'd', 'e']);
|
|
105
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(3);
|
|
106
|
+
(0, vitest_1.expect)(mockExecuteExpression).not.toHaveBeenCalled();
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.it)('should prioritize iterations expression over response if both are present', () => {
|
|
109
|
+
const component = {
|
|
110
|
+
id: 'test',
|
|
111
|
+
componentType: 'Loop',
|
|
112
|
+
iterations: { type: 'VTL', value: 'count(ARRAY)' },
|
|
113
|
+
response: { name: 'ANOTHER_ARRAY' },
|
|
114
|
+
};
|
|
115
|
+
mockExecuteExpression.mockReturnValue(7);
|
|
116
|
+
(0, vitest_1.expect)((0, compile_controls_1.computeIterations)(component, mockExecuteExpression)).toBe(7);
|
|
117
|
+
(0, vitest_1.expect)(mockExecuteExpression).toHaveBeenCalledWith({
|
|
118
|
+
type: 'VTL',
|
|
119
|
+
value: 'count(ARRAY)',
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=compile-controls.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-controls.spec.js","sourceRoot":"","sources":["../../src/use-lunatic/commons/compile-controls.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const reducerInitializer_1 = require("../use-lunatic/reducer/reducerInitializer"
|
|
|
7
7
|
const array_1 = require("./array");
|
|
8
8
|
const number_1 = require("./number");
|
|
9
9
|
const component_1 = require("../use-lunatic/commons/component");
|
|
10
|
+
const cast_1 = require("./cast");
|
|
10
11
|
var ArticulationState;
|
|
11
12
|
(function (ArticulationState) {
|
|
12
13
|
ArticulationState[ArticulationState["COMPLETED"] = 1] = "COMPLETED";
|
|
@@ -45,18 +46,23 @@ var ArticulationState;
|
|
|
45
46
|
* - items define the field to extract from the roundabout data
|
|
46
47
|
*/
|
|
47
48
|
function getArticulationState(source, data) {
|
|
49
|
+
if (!source.articulation) {
|
|
50
|
+
return {
|
|
51
|
+
items: [],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
48
54
|
const roundabout = findComponentById(source.components, source.articulation.source);
|
|
49
|
-
const { variables } = (0, reducerInitializer_1.reducerInitializer)({ source, data });
|
|
50
|
-
const iterations = (0, number_1.forceInt)(variables.run(roundabout?.iterations.value ?? '0'));
|
|
51
|
-
const rows = (0, array_1.times)(iterations, (k) => source.articulation.items.map((item) => ({
|
|
52
|
-
label: item.label,
|
|
53
|
-
value: variables.run(item.value, { iteration: [k] }),
|
|
54
|
-
})));
|
|
55
55
|
if (!roundabout) {
|
|
56
56
|
return {
|
|
57
57
|
items: [],
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
|
+
const { variables } = (0, reducerInitializer_1.reducerInitializer)({ source, data });
|
|
61
|
+
const iterations = (0, cast_1.castNumber)(variables.run(roundabout.iterations.value ?? '0'));
|
|
62
|
+
const rows = (0, array_1.times)(iterations, (k) => source.articulation.items.map((item) => ({
|
|
63
|
+
label: item.label,
|
|
64
|
+
value: variables.run(item.value, { iteration: [k] }),
|
|
65
|
+
})));
|
|
60
66
|
return {
|
|
61
67
|
items: rows.map((row, k) => ({
|
|
62
68
|
cells: row,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getArticulationState.js","sourceRoot":"","sources":["../src/utils/getArticulationState.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"getArticulationState.js","sourceRoot":"","sources":["../src/utils/getArticulationState.ts"],"names":[],"mappings":";;;AAqEA,oDA6CC;AAED,8CAgBC;AA9HD,kFAA+E;AAE/E,mCAAgC;AAChC,qCAAoC;AACpC,gEAAyE;AACzE,iCAAoC;AAEpC,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC5B,mEAAa,CAAA;IACb,+DAAW,CAAA;IACX,wEAAgB,CAAA;AACjB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAqBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,oBAAoB,CACnC,MAAsD,EACtD,IAAiB;IAEjB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO;YACN,KAAK,EAAE,EAAE;SACT,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CACnC,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,YAAY,CAAC,MAAM,CAC1B,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO;YACN,KAAK,EAAE,EAAE;SACT,CAAC;IACH,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,uCAAkB,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAA,iBAAU,EAC5B,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,CACjD,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,aAAK,EAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CACpC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACxC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAc;KACjE,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACN,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,IAAA,iBAAQ,EACjB,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9C,iBAAiB,CAAC,WAAW,CAC9B;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI;gBACrB,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;gBACjC,CAAC,CAAC,GAAG,CAAY;SAClB,CAAC,CAAC;KACH,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAChC,UAAiC,EACjC,EAAU;IAEV,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,IAAA,iCAAqB,EAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,CAAC;QACV,CAAC;QACD,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC"}
|