@inseefr/lunatic 0.4.6-v2 → 0.4.9-v2
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/lib/components/input-number/input-number.js +1 -1
- package/lib/components/loop/block-for-loop/block-for-loop.js +46 -1
- package/lib/components/loop/{roster-for-loop → commons}/handle-row-button.js +0 -0
- package/lib/components/loop/roster-for-loop/roster-for-loop.js +14 -4
- package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees_PasPageFin.json +5 -5
- package/lib/stories/utils/orchestrator.js +0 -3
- package/lib/use-lunatic/commons/execute-expression/create-execute-expression.js +30 -11
- package/lib/use-lunatic/reducer/reduce-go-next-page.js +4 -1
- package/lib/use-lunatic/reducer/reduce-go-previous-page.js +4 -1
- package/lib/use-lunatic/reducer/reduce-go-to-page.js +1 -0
- package/lib/use-lunatic/reducer/reduce-on-init.js +4 -2
- package/package.json +2 -2
|
@@ -33,7 +33,7 @@ function InputNumber(_ref) {
|
|
|
33
33
|
var valueEffective = value !== null && value !== void 0 ? value : '';
|
|
34
34
|
var handleChange = (0, _react.useCallback)(function (e) {
|
|
35
35
|
var val = e.target.valueAsNumber;
|
|
36
|
-
onChange(val);
|
|
36
|
+
onChange(isNaN(val) ? null : val);
|
|
37
37
|
}, [onChange]);
|
|
38
38
|
return /*#__PURE__*/_react["default"].createElement("input", {
|
|
39
39
|
className: (0, _classnames["default"])('lunatic-input', {
|
|
@@ -15,6 +15,10 @@ var _declarations = require("../../declarations");
|
|
|
15
15
|
|
|
16
16
|
var _blockForLoopOchestrator = _interopRequireDefault(require("./block-for-loop-ochestrator"));
|
|
17
17
|
|
|
18
|
+
var _handleRowButton = _interopRequireDefault(require("../commons/handle-row-button"));
|
|
19
|
+
|
|
20
|
+
var _i18n = _interopRequireDefault(require("../../../i18n"));
|
|
21
|
+
|
|
18
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
23
|
|
|
20
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -27,6 +31,14 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
27
31
|
|
|
28
32
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
29
33
|
|
|
34
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
35
|
+
|
|
36
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
37
|
+
|
|
38
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
39
|
+
|
|
40
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
41
|
+
|
|
30
42
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
31
43
|
|
|
32
44
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -42,6 +54,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
42
54
|
function BlockForLoop(_ref) {
|
|
43
55
|
var declarations = _ref.declarations,
|
|
44
56
|
id = _ref.id,
|
|
57
|
+
label = _ref.label,
|
|
45
58
|
lines = _ref.lines,
|
|
46
59
|
components = _ref.components,
|
|
47
60
|
handleChange = _ref.handleChange,
|
|
@@ -90,6 +103,30 @@ function BlockForLoop(_ref) {
|
|
|
90
103
|
setNbRows(min);
|
|
91
104
|
}
|
|
92
105
|
}, [min, max, iterations]);
|
|
106
|
+
var addRow = (0, _react.useCallback)(function () {
|
|
107
|
+
if (nbRows < max) {
|
|
108
|
+
setNbRows(nbRows + 1);
|
|
109
|
+
}
|
|
110
|
+
}, [max, nbRows]);
|
|
111
|
+
var removeRow = (0, _react.useCallback)(function () {
|
|
112
|
+
if (nbRows > 1) {
|
|
113
|
+
var newNbRows = nbRows - 1;
|
|
114
|
+
setNbRows(newNbRows);
|
|
115
|
+
Object.entries(valueMap).forEach(function (_ref2) {
|
|
116
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
117
|
+
k = _ref3[0],
|
|
118
|
+
v = _ref3[1];
|
|
119
|
+
|
|
120
|
+
var newValue = v.reduce(function (acc, e, i) {
|
|
121
|
+
if (i < newNbRows) return [].concat(_toConsumableArray(acc), [e]);
|
|
122
|
+
return acc;
|
|
123
|
+
}, []);
|
|
124
|
+
handleChange({
|
|
125
|
+
name: k
|
|
126
|
+
}, newValue);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}, [nbRows, handleChange, valueMap]);
|
|
93
130
|
var handleChangeLoop = (0, _react.useCallback)(function (response, value, args) {
|
|
94
131
|
if (!paginatedLoop) {
|
|
95
132
|
var v = valueMap[response.name];
|
|
@@ -129,7 +166,15 @@ function BlockForLoop(_ref) {
|
|
|
129
166
|
declarations: declarations,
|
|
130
167
|
id: id,
|
|
131
168
|
custom: custom
|
|
132
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
169
|
+
}), min && max && min !== max && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_handleRowButton["default"], {
|
|
170
|
+
onClick: addRow,
|
|
171
|
+
disabled: nbRows === max,
|
|
172
|
+
custom: custom
|
|
173
|
+
}, label || _i18n["default"].DEFAULT_BUTTON_ADD), /*#__PURE__*/_react["default"].createElement(_handleRowButton["default"], {
|
|
174
|
+
onClick: removeRow,
|
|
175
|
+
disabled: nbRows === 1,
|
|
176
|
+
custom: custom
|
|
177
|
+
}, _i18n["default"].DEFAULT_BUTTON_REMOVE)), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
|
|
133
178
|
errors: errors
|
|
134
179
|
}));
|
|
135
180
|
}
|
|
File without changes
|
|
@@ -15,7 +15,7 @@ var _rosterTable = _interopRequireDefault(require("./roster-table"));
|
|
|
15
15
|
|
|
16
16
|
var _commons = require("../../commons");
|
|
17
17
|
|
|
18
|
-
var _handleRowButton = _interopRequireDefault(require("
|
|
18
|
+
var _handleRowButton = _interopRequireDefault(require("../commons/handle-row-button"));
|
|
19
19
|
|
|
20
20
|
var _i18n = _interopRequireDefault(require("../../../i18n"));
|
|
21
21
|
|
|
@@ -45,6 +45,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
45
45
|
|
|
46
46
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
47
47
|
|
|
48
|
+
var DEFAULT_MIN_ROWS = 0;
|
|
48
49
|
var DEFAULT_MAX_ROWS = 12;
|
|
49
50
|
|
|
50
51
|
function getTableLength(value) {
|
|
@@ -72,6 +73,7 @@ function RosterforLoop(_ref) {
|
|
|
72
73
|
management = _ref.management,
|
|
73
74
|
custom = _ref.custom,
|
|
74
75
|
errors = _ref.errors;
|
|
76
|
+
var min = (lines === null || lines === void 0 ? void 0 : lines.min) || DEFAULT_MIN_ROWS;
|
|
75
77
|
var max = (lines === null || lines === void 0 ? void 0 : lines.max) || DEFAULT_MAX_ROWS;
|
|
76
78
|
|
|
77
79
|
var _useState = (0, _react.useState)(false),
|
|
@@ -95,6 +97,14 @@ function RosterforLoop(_ref) {
|
|
|
95
97
|
setNbRows(nbRows + 1);
|
|
96
98
|
}
|
|
97
99
|
}, [max, nbRows]);
|
|
100
|
+
var handleChangeLoop = (0, _react.useCallback)(function (response, value, args) {
|
|
101
|
+
var v = valueMap[response.name];
|
|
102
|
+
v[args.index] = value;
|
|
103
|
+
handleChange(response, v, {
|
|
104
|
+
loop: true,
|
|
105
|
+
length: nbRows
|
|
106
|
+
});
|
|
107
|
+
}, [handleChange, nbRows, valueMap]);
|
|
98
108
|
var removeRow = (0, _react.useCallback)(function () {
|
|
99
109
|
if (nbRows > 1) {
|
|
100
110
|
var newNbRows = nbRows - 1;
|
|
@@ -130,7 +140,7 @@ function RosterforLoop(_ref) {
|
|
|
130
140
|
nbRows: nbRows,
|
|
131
141
|
executeExpression: executeExpression,
|
|
132
142
|
header: headers,
|
|
133
|
-
handleChange:
|
|
143
|
+
handleChange: handleChangeLoop,
|
|
134
144
|
valueMap: valueMap,
|
|
135
145
|
management: management,
|
|
136
146
|
missing: missing,
|
|
@@ -140,7 +150,7 @@ function RosterforLoop(_ref) {
|
|
|
140
150
|
declarations: declarations,
|
|
141
151
|
id: id,
|
|
142
152
|
custom: custom
|
|
143
|
-
}), /*#__PURE__*/_react["default"].createElement(_handleRowButton["default"], {
|
|
153
|
+
}), min && max && min !== max && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_handleRowButton["default"], {
|
|
144
154
|
onClick: addRow,
|
|
145
155
|
disabled: nbRows === max,
|
|
146
156
|
custom: custom
|
|
@@ -148,7 +158,7 @@ function RosterforLoop(_ref) {
|
|
|
148
158
|
onClick: removeRow,
|
|
149
159
|
disabled: nbRows === 1,
|
|
150
160
|
custom: custom
|
|
151
|
-
}, _i18n["default"].DEFAULT_BUTTON_REMOVE), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
|
|
161
|
+
}, _i18n["default"].DEFAULT_BUTTON_REMOVE)), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
|
|
152
162
|
errors: errors
|
|
153
163
|
}));
|
|
154
164
|
}
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"id": "l14vfucm-CI-0",
|
|
54
54
|
"criticality": "WARN",
|
|
55
55
|
"control": {
|
|
56
|
-
"value": "not(
|
|
56
|
+
"value": "not(Q1 > 3)",
|
|
57
57
|
"type": "VTL"
|
|
58
58
|
},
|
|
59
59
|
"errorMessage": { "value": "\"Supérieur à 3\"", "type": "VTL|MD" },
|
|
@@ -81,8 +81,8 @@
|
|
|
81
81
|
"bindingDependencies": ["Q1", "Q2"],
|
|
82
82
|
"loopDependencies": ["Q1"],
|
|
83
83
|
"lines": {
|
|
84
|
-
"min": { "value": "
|
|
85
|
-
"max": { "value": "
|
|
84
|
+
"min": { "value": "nvl(Q1,0)", "type": "VTL" },
|
|
85
|
+
"max": { "value": "nvl(Q1,0)", "type": "VTL" }
|
|
86
86
|
},
|
|
87
87
|
"components": [
|
|
88
88
|
{
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
"id": "l5ggzuuo-CI-0",
|
|
192
192
|
"criticality": "WARN",
|
|
193
193
|
"control": {
|
|
194
|
-
"value": "not(
|
|
194
|
+
"value": "not(nvl(Q3,0) > nvl(Q4,0))",
|
|
195
195
|
"type": "VTL"
|
|
196
196
|
},
|
|
197
197
|
"errorMessage": { "value": "\"Q3 > Q4\"", "type": "VTL|MD" },
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
"cleaning": {},
|
|
362
362
|
"resizing": {
|
|
363
363
|
"Q1": {
|
|
364
|
-
"size": "
|
|
364
|
+
"size": "nvl(Q1,0)",
|
|
365
365
|
"variables": ["Q2", "Q3", "Q4", "Q5"]
|
|
366
366
|
}
|
|
367
367
|
}
|
|
@@ -137,9 +137,6 @@ function OrchestratorForStories(_ref2) {
|
|
|
137
137
|
var errors = getErrors();
|
|
138
138
|
var modalErrors = getModalErrors();
|
|
139
139
|
var currentErrors = getCurrentErrors();
|
|
140
|
-
console.log('errors: ', errors);
|
|
141
|
-
console.log('modalErrors: ', modalErrors);
|
|
142
|
-
console.log('currentErrors: ', currentErrors);
|
|
143
140
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
144
141
|
className: "container"
|
|
145
142
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -122,6 +122,25 @@ function createExecuteExpression(variables, features) {
|
|
|
122
122
|
|
|
123
123
|
pushToLazy(name);
|
|
124
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
*
|
|
127
|
+
* @param {*} variables
|
|
128
|
+
* @param {*} iteration
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
function setLoopBindings(variables, iteration) {
|
|
133
|
+
Object.entries(bindings).forEach(function (_ref3) {
|
|
134
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
135
|
+
k = _ref4[0],
|
|
136
|
+
v = _ref4[1];
|
|
137
|
+
|
|
138
|
+
var _variables$k = variables[k],
|
|
139
|
+
type = _variables$k.type,
|
|
140
|
+
value = _variables$k.value;
|
|
141
|
+
if (!Array.isArray(v) && type === _constants.COLLECTED && Array.isArray(value)) bindings[k] = value[iteration];
|
|
142
|
+
});
|
|
143
|
+
}
|
|
125
144
|
|
|
126
145
|
function getVariablesAndCach(expression) {
|
|
127
146
|
if (tokensMap.has(expression)) {
|
|
@@ -163,9 +182,9 @@ function createExecuteExpression(variables, features) {
|
|
|
163
182
|
return {};
|
|
164
183
|
}
|
|
165
184
|
|
|
166
|
-
function resolveUseContext(name,
|
|
167
|
-
var iteration =
|
|
168
|
-
linksIterations =
|
|
185
|
+
function resolveUseContext(name, _ref5) {
|
|
186
|
+
var iteration = _ref5.iteration,
|
|
187
|
+
linksIterations = _ref5.linksIterations;
|
|
169
188
|
var value = bindings[name];
|
|
170
189
|
|
|
171
190
|
if ([_constants.X_AXIS, _constants.Y_AXIS].includes(name) && linksIterations !== undefined) {
|
|
@@ -195,13 +214,13 @@ function createExecuteExpression(variables, features) {
|
|
|
195
214
|
return (0, _vtl["default"])(value);
|
|
196
215
|
}
|
|
197
216
|
|
|
198
|
-
function fillVariablesValues(map,
|
|
199
|
-
var iteration =
|
|
200
|
-
linksIterations =
|
|
201
|
-
return Object.entries(map).reduce(function (sub,
|
|
202
|
-
var
|
|
203
|
-
name =
|
|
204
|
-
_ =
|
|
217
|
+
function fillVariablesValues(map, _ref6) {
|
|
218
|
+
var iteration = _ref6.iteration,
|
|
219
|
+
linksIterations = _ref6.linksIterations;
|
|
220
|
+
return Object.entries(map).reduce(function (sub, _ref7) {
|
|
221
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
222
|
+
name = _ref8[0],
|
|
223
|
+
_ = _ref8[1];
|
|
205
224
|
|
|
206
225
|
return _objectSpread(_objectSpread({}, sub), {}, _defineProperty({}, name, resolveUseContext(name, {
|
|
207
226
|
iteration: iteration,
|
|
@@ -257,7 +276,7 @@ function createExecuteExpression(variables, features) {
|
|
|
257
276
|
return memoized;
|
|
258
277
|
}
|
|
259
278
|
|
|
260
|
-
return [execute, updateBindings];
|
|
279
|
+
return [execute, updateBindings, setLoopBindings];
|
|
261
280
|
}
|
|
262
281
|
|
|
263
282
|
var _default = createExecuteExpression;
|
|
@@ -157,7 +157,9 @@ function validateChange(state) {
|
|
|
157
157
|
function reduceGoNextPage(state) {
|
|
158
158
|
var pages = state.pages,
|
|
159
159
|
isInLoop = state.isInLoop,
|
|
160
|
-
pager = state.pager
|
|
160
|
+
pager = state.pager,
|
|
161
|
+
setLoopBindings = state.setLoopBindings,
|
|
162
|
+
variables = state.variables;
|
|
161
163
|
var iteration = pager.iteration,
|
|
162
164
|
nbIterations = pager.nbIterations,
|
|
163
165
|
subPage = pager.subPage,
|
|
@@ -169,6 +171,7 @@ function reduceGoNextPage(state) {
|
|
|
169
171
|
}
|
|
170
172
|
|
|
171
173
|
if (isInLoop && subPage === nbSubPages - 1 && iteration < nbIterations - 1) {
|
|
174
|
+
setLoopBindings(variables, iteration + 1);
|
|
172
175
|
return validateChange(reduceNextIteration(state));
|
|
173
176
|
}
|
|
174
177
|
|
|
@@ -124,7 +124,9 @@ function validateChange(state) {
|
|
|
124
124
|
function reduceGoPreviousPage(state) {
|
|
125
125
|
var pages = state.pages,
|
|
126
126
|
pager = state.pager,
|
|
127
|
-
isInLoop = state.isInLoop
|
|
127
|
+
isInLoop = state.isInLoop,
|
|
128
|
+
setLoopBindings = state.setLoopBindings,
|
|
129
|
+
variables = state.variables;
|
|
128
130
|
var iteration = pager.iteration,
|
|
129
131
|
subPage = pager.subPage; // dans une boucle et l'itération courante n'est pas finie
|
|
130
132
|
|
|
@@ -134,6 +136,7 @@ function reduceGoPreviousPage(state) {
|
|
|
134
136
|
|
|
135
137
|
|
|
136
138
|
if (isInLoop && subPage === 0 && iteration > 0) {
|
|
139
|
+
setLoopBindings(variables, iteration - 1);
|
|
137
140
|
return validateChange(goPreviousIteration(state));
|
|
138
141
|
}
|
|
139
142
|
|
|
@@ -50,6 +50,7 @@ function reduceGoToPage(state, action) {
|
|
|
50
50
|
}); // TODO: fix when redirect to loop component
|
|
51
51
|
// How to calculate nbSubPages & nbIterations?
|
|
52
52
|
// How to calculate lazy variables we need?
|
|
53
|
+
// Handle setLoopBindings with the good iteration
|
|
53
54
|
|
|
54
55
|
return validateChange(state);
|
|
55
56
|
}
|
|
@@ -204,9 +204,10 @@ function reduceOnInit(state, action) {
|
|
|
204
204
|
var variables = createVariables(source, data); // map des variables
|
|
205
205
|
|
|
206
206
|
var _createExecuteExpress = (0, _commons.createExecuteExpression)(variables, features),
|
|
207
|
-
_createExecuteExpress2 = _slicedToArray(_createExecuteExpress,
|
|
207
|
+
_createExecuteExpress2 = _slicedToArray(_createExecuteExpress, 3),
|
|
208
208
|
executeExpression = _createExecuteExpress2[0],
|
|
209
|
-
updateBindings = _createExecuteExpress2[1]
|
|
209
|
+
updateBindings = _createExecuteExpress2[1],
|
|
210
|
+
setLoopBindings = _createExecuteExpress2[2];
|
|
210
211
|
|
|
211
212
|
var pages = (0, _commons.checkLoops)((0, _commons.createMapPages)(source));
|
|
212
213
|
var maxPage = source.maxPage,
|
|
@@ -241,6 +242,7 @@ function reduceOnInit(state, action) {
|
|
|
241
242
|
pager: pager,
|
|
242
243
|
executeExpression: executeExpression,
|
|
243
244
|
updateBindings: updateBindings,
|
|
245
|
+
setLoopBindings: setLoopBindings,
|
|
244
246
|
handleChange: handleChange,
|
|
245
247
|
preferences: preferences,
|
|
246
248
|
management: management,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inseefr/lunatic",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9-v2",
|
|
4
4
|
"workersVersion": "0.2.4-experimental",
|
|
5
5
|
"description": "Library of questionnaire components",
|
|
6
6
|
"repository": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"library"
|
|
49
49
|
],
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@inseefr/trevas": "^0.1.
|
|
51
|
+
"@inseefr/trevas": "^0.1.15",
|
|
52
52
|
"@inseefr/vtl-2.0-antlr-tools": "^0.1.0-bundle",
|
|
53
53
|
"antlr4": "4.8.0",
|
|
54
54
|
"classnames": "^2.3.1",
|