@inseefr/lunatic 2.0.0-v2 → 2.0.1-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.
Files changed (64) hide show
  1. package/lib/components/button/lunatic-button.js +5 -1
  2. package/lib/components/checkbox/checkbox-boolean/checkbox-boolean.js +4 -2
  3. package/lib/components/checkbox/checkbox-boolean/lunatic-checkbox-boolean.js +2 -1
  4. package/lib/components/checkbox/checkbox-group/checkbox-group.js +7 -7
  5. package/lib/components/checkbox/checkbox-group/checkbox.scss +1 -0
  6. package/lib/components/checkbox/checkbox-group/lunatic-checkbox-group.js +3 -2
  7. package/lib/components/checkbox/checkbox-one/lunatic-checkbox-one.js +5 -2
  8. package/lib/components/checkbox/commons/checkbox-option.js +12 -3
  9. package/lib/components/checkbox/commons/checkbox-option.scss +3 -0
  10. package/lib/components/commons/components/combo-box/combo-box.js +1 -1
  11. package/lib/components/commons/components/combo-box/combo-box.scss +0 -10
  12. package/lib/components/commons/components/combo-box/selection/label-selection.js +1 -1
  13. package/lib/components/commons/components/errors/errors.js +26 -6
  14. package/lib/components/commons/components/fieldset.scss +2 -0
  15. package/lib/components/commons/components/orchestrated-component.js +4 -2
  16. package/lib/components/commons/create-row-orchestrator.js +4 -2
  17. package/lib/components/datepicker/datepicker.js +4 -1
  18. package/lib/components/datepicker/lunatic-datepicker.js +4 -2
  19. package/lib/components/declarations/declarations.js +5 -1
  20. package/lib/components/dropdown/lunatic-dropdown.js +3 -2
  21. package/lib/components/filter-description/component.js +4 -1
  22. package/lib/components/input/lunatic-input.js +3 -1
  23. package/lib/components/input-number/lunatic-input-number.js +4 -2
  24. package/lib/components/loop/block-for-loop/block-for-loop.js +7 -6
  25. package/lib/components/loop/block-for-loop/row.js +5 -3
  26. package/lib/components/loop/roster-for-loop/roster-for-loop.js +5 -5
  27. package/lib/components/loop/roster-for-loop/row.js +5 -3
  28. package/lib/components/modal-controls/modal-controls.scss +8 -30
  29. package/lib/components/pairwise/index.js +0 -8
  30. package/lib/components/pairwise/links/{links-orchestrator.js → orchestrator.js} +0 -0
  31. package/lib/components/pairwise/links/pairwise-links.js +5 -7
  32. package/lib/components/radio/lunatic-radio-group.js +3 -2
  33. package/lib/components/radio/radio-group.js +3 -5
  34. package/lib/components/radio/radio-option.js +6 -2
  35. package/lib/components/radio/radio.scss +3 -1
  36. package/lib/components/sequence/sequence.js +4 -1
  37. package/lib/components/subsequence/subsequence.js +4 -1
  38. package/lib/components/suggester/check-store.js +1 -6
  39. package/lib/components/suggester/lunatic-suggester.js +2 -1
  40. package/lib/components/table/lunatic-table.js +5 -2
  41. package/lib/components/textarea/lunatic-textarea.js +3 -1
  42. package/lib/stories/pairwise/data.json +13 -0
  43. package/lib/stories/pairwise/{links/links.json → links.json} +90 -24
  44. package/lib/stories/pairwise/{links/pairwise-links.stories.js → pairwise-links.stories.js} +3 -3
  45. package/lib/stories/questionnaires-test/controls/V2_Controles_BouclesLiees_PasPageFin.json +13 -52
  46. package/lib/stories/questionnaires-test/controls/boucles-n.json +74 -444
  47. package/lib/stories/questionnaires-test/controls/controls.stories.js +8 -8
  48. package/lib/use-lunatic/commons/get-errors-without-empty-value.js +31 -0
  49. package/lib/use-lunatic/commons/index.js +8 -0
  50. package/lib/use-lunatic/initial-state.js +1 -0
  51. package/lib/use-lunatic/reducer/reduce-go-next-page.js +16 -9
  52. package/lib/use-lunatic/reducer/reduce-go-previous-page.js +2 -1
  53. package/lib/use-lunatic/reducer/reduce-handle-change/reduce-handle-change.js +8 -1
  54. package/lib/use-lunatic/reducer/validate-controls/create-controls-reducer.js +21 -11
  55. package/lib/use-lunatic/reducer/validate-controls/create-modal-controls-reducer.js +19 -7
  56. package/lib/use-lunatic/reducer/validate-controls/validation-utils.js +5 -3
  57. package/package.json +2 -2
  58. package/lib/components/checkbox/checkbox-group/checkbox-option.js +0 -57
  59. package/lib/components/checkbox/checkbox.scss +0 -1
  60. package/lib/components/pairwise/block/index.js +0 -15
  61. package/lib/components/pairwise/block/pairwise-block.js +0 -17
  62. package/lib/stories/pairwise/block/block.json +0 -3
  63. package/lib/stories/pairwise/block/pairwise-block.stories.js +0 -36
  64. package/lib/stories/pairwise/links/data.json +0 -12
@@ -9,11 +9,11 @@ exports["default"] = void 0;
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var _linksOrchestrator = _interopRequireDefault(require("./links-orchestrator"));
12
+ var _orchestrator = _interopRequireDefault(require("./orchestrator"));
13
13
 
14
14
  var _declarations = require("../../declarations");
15
15
 
16
- var _commons = require("../../commons");
16
+ var _nothingToDisplay = _interopRequireDefault(require("../../commons/components/nothing-to-display"));
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
19
 
@@ -41,7 +41,7 @@ var PairwiseLinks = function PairwiseLinks(_ref) {
41
41
  var handleChangeLinks = (0, _react.useCallback)(function (response, value, args) {
42
42
  handleChange(response, value, args);
43
43
  }, [handleChange]);
44
- if (nbRows > 0) return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_declarations.DeclarationsBeforeText, {
44
+ if (nbRows > 1) return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_declarations.DeclarationsBeforeText, {
45
45
  declarations: declarations,
46
46
  id: id,
47
47
  custom: custom
@@ -49,7 +49,7 @@ var PairwiseLinks = function PairwiseLinks(_ref) {
49
49
  declarations: declarations,
50
50
  id: id,
51
51
  custom: custom
52
- }), /*#__PURE__*/_react["default"].createElement(_linksOrchestrator["default"], {
52
+ }), /*#__PURE__*/_react["default"].createElement(_orchestrator["default"], {
53
53
  id: id,
54
54
  components: components,
55
55
  handleChange: handleChangeLinks,
@@ -67,10 +67,8 @@ var PairwiseLinks = function PairwiseLinks(_ref) {
67
67
  declarations: declarations,
68
68
  id: id,
69
69
  custom: custom
70
- }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
71
- errors: errors
72
70
  }));
73
- return null;
71
+ return /*#__PURE__*/_react["default"].createElement(_nothingToDisplay["default"], null);
74
72
  };
75
73
 
76
74
  var _default = PairwiseLinks;
@@ -31,11 +31,12 @@ function LunaticRadioGroup(props) {
31
31
  checkboxStyle: checkboxStyle,
32
32
  custom: custom
33
33
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
34
- errors: errors
34
+ errors: errors,
35
+ activeId: id
35
36
  }));
36
37
  }
37
38
 
38
- var _default = (0, _commons.createLunaticComponent)(LunaticRadioGroup, {
39
+ var _default = (0, _commons.createLunaticComponent)((0, _commons.createCustomizableLunaticField)(LunaticRadioGroup), {
39
40
  // set it to true if you want to display a fieldset + legend on a component
40
41
  fieldset: true,
41
42
  inputId: 'lunatic-radio-group'
@@ -37,11 +37,9 @@ function Radio(_ref) {
37
37
  onClick: onClick,
38
38
  value: valueOption,
39
39
  onKeyDown: onKeyDown,
40
- checkboxStyle: checkboxStyle
41
- }), /*#__PURE__*/_react["default"].createElement(_commons.Label, {
42
- id: labelId,
43
- htmlFor: radioId
44
- }, label));
40
+ checkboxStyle: checkboxStyle,
41
+ label: label
42
+ }));
45
43
  });
46
44
  }
47
45
 
@@ -44,7 +44,8 @@ function RadioOption(_ref) {
44
44
  onKeyDown = _ref.onKeyDown,
45
45
  index = _ref.index,
46
46
  labelledBy = _ref.labelledBy,
47
- checkboxStyle = _ref.checkboxStyle;
47
+ checkboxStyle = _ref.checkboxStyle,
48
+ label = _ref.label;
48
49
  var spanEl = (0, _react.useRef)();
49
50
  var Icon = getIcon(checked, checkboxStyle);
50
51
  var tabIndex = checked ? '0' : '-1';
@@ -83,7 +84,10 @@ function RadioOption(_ref) {
83
84
  onKeyDown: handleKeyDown,
84
85
  "aria-labelledby": labelledBy,
85
86
  ref: spanEl
86
- }, /*#__PURE__*/_react["default"].createElement(Icon, null)));
87
+ }, /*#__PURE__*/_react["default"].createElement(Icon, null), /*#__PURE__*/_react["default"].createElement("span", {
88
+ id: labelledBy,
89
+ htmlFor: id
90
+ }, label)));
87
91
  }
88
92
 
89
93
  var _default = RadioOption;
@@ -59,6 +59,8 @@
59
59
  }
60
60
 
61
61
  .lunatic-radio-group-option {
62
- display: flex;
63
62
  align-items: center;
64
63
  }
64
+ .lunatic-input-radio {
65
+ display: flex;
66
+ }
@@ -11,6 +11,8 @@ var _declarations = require("../declarations");
11
11
 
12
12
  require("./sequence.scss");
13
13
 
14
+ var _commons = require("../commons");
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
17
 
16
18
  function Sequence(_ref) {
@@ -34,5 +36,6 @@ function Sequence(_ref) {
34
36
  }));
35
37
  }
36
38
 
37
- var _default = Sequence;
39
+ var _default = (0, _commons.createCustomizableLunaticField)(Sequence);
40
+
38
41
  exports["default"] = _default;
@@ -9,6 +9,8 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _declarations = require("../declarations");
11
11
 
12
+ var _commons = require("../commons");
13
+
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
15
 
14
16
  function Subsequence(_ref) {
@@ -31,5 +33,6 @@ function Subsequence(_ref) {
31
33
  }));
32
34
  }
33
35
 
34
- var _default = Subsequence;
36
+ var _default = (0, _commons.createCustomizableLunaticField)(Subsequence);
37
+
35
38
  exports["default"] = _default;
@@ -142,12 +142,7 @@ function CheckStore(_ref) {
142
142
 
143
143
  return /*#__PURE__*/_react["default"].createElement("div", {
144
144
  className: "lunatic-suggester-unvailable"
145
- }, "Le store ", storeName, " n'est pas disponible.", /*#__PURE__*/_react["default"].createElement("button", {
146
- disabled: disabled,
147
- onClick: function onClick() {
148
- return setRefresh(true);
149
- }
150
- }, "Refresh"));
145
+ }, "La suggestion sur liste n'est pas possible sur votre navigateur, vous pouvez passer la question en appuyant sur Enregistrer et Continuer");
151
146
  }
152
147
 
153
148
  var _default = CheckStore;
@@ -51,7 +51,8 @@ function LunaticSuggester(props) {
51
51
  value: value,
52
52
  custom: custom
53
53
  }), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
54
- errors: errors
54
+ errors: errors,
55
+ activeId: id
55
56
  }));
56
57
  }
57
58
 
@@ -69,9 +69,12 @@ function LunaticTable(_ref) {
69
69
  handleChange: handleChange,
70
70
  iteration: iteration,
71
71
  nbRows: nbRows,
72
- valueMap: value
73
- })), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
72
+ valueMap: value //TODO propagate
73
+ ,
74
74
  errors: errors
75
+ })), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
76
+ errors: errors,
77
+ activeId: id
75
78
  }));
76
79
  }
77
80
 
@@ -25,8 +25,10 @@ var LunaticTextarea = function LunaticTextarea(_ref) {
25
25
  var errors = _ref.errors,
26
26
  props = _objectWithoutProperties(_ref, _excluded);
27
27
 
28
+ var id = props.id;
28
29
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_textarea["default"], props), /*#__PURE__*/_react["default"].createElement(_commons.Errors, {
29
- errors: errors
30
+ errors: errors,
31
+ activeId: id
30
32
  }));
31
33
  };
32
34
 
@@ -0,0 +1,13 @@
1
+ {
2
+ "COLLECTED": {
3
+ "PRENOM": { "COLLECTED": ["Dad", "Mom", "Unknow"] },
4
+ "AGE": { "COLLECTED": [30, 29, 5] },
5
+ "LINKS": {
6
+ "COLLECTED": [
7
+ [null, "1", "16"],
8
+ ["1", null, "16"],
9
+ ["16", "16", null]
10
+ ]
11
+ }
12
+ }
13
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "maxPage": "3",
2
+ "maxPage": "5",
3
3
  "components": [
4
4
  {
5
5
  "id": "seq",
@@ -37,13 +37,33 @@
37
37
  }
38
38
  ]
39
39
  },
40
+ {
41
+ "id": "age-loop",
42
+ "componentType": "Loop",
43
+ "paginatedLoop": true,
44
+ "iterations": { "value": "count(PRENOM)", "type": "VTL" },
45
+ "page": "2",
46
+ "maxPage": "1",
47
+ "conditionFilter": { "value": "true", "type": "VTL" },
48
+ "loopDependencies": ["PRENOM"],
49
+ "components": [
50
+ {
51
+ "id": "age-quest",
52
+ "label": { "value": "\"Âge de \" || PRENOM", "type": "VTL|MD" },
53
+ "conditionFilter": { "type": "VTL", "value": "true" },
54
+ "componentType": "InputNumber",
55
+ "page": "2.1",
56
+ "response": { "name": "AGE" }
57
+ }
58
+ ]
59
+ },
40
60
  {
41
61
  "id": "pariwise-links",
42
62
  "componentType": "PairwiseLinks",
43
63
  "conditionFilter": { "value": "true" },
44
64
  "xAxisIterations": { "value": "count(PRENOM)", "type": "VTL" },
45
65
  "yAxisIterations": { "value": "count(PRENOM)", "type": "VTL" },
46
- "page": "2",
66
+ "page": "3",
47
67
  "components": [
48
68
  {
49
69
  "componentType": "Dropdown",
@@ -57,44 +77,80 @@
57
77
  "name": "LINKS"
58
78
  },
59
79
  "options": [
60
- { "value": "1", "label": "Conjoint" },
61
- { "value": "2", "label": "Mère, père" },
62
- { "value": "3", "label": "Fille, fils" },
80
+ { "value": "1", "label": "\"Conjoint\"" },
81
+ { "value": "2", "label": "\"Mère, père\"" },
82
+ { "value": "3", "label": "\"Fille, fils\"" },
63
83
  {
64
84
  "value": "4",
65
- "label": "Belle-mère, beau-père, conjoint du parent"
85
+ "label": "\"Belle-mère, beau-père, conjoint du parent\""
66
86
  },
67
87
  {
68
88
  "value": "5",
69
- "label": "Belle-mère, beau-père, parent du conjoint"
89
+ "label": "\"Belle-mère, beau-père, parent du conjoint\""
70
90
  },
71
- { "value": "6", "label": "Enfant du conjoint" },
72
- { "value": "7", "label": "Conjoint d’un enfant" },
73
- { "value": "8", "label": "Sœur, frère (y compris demi et quasi)" },
74
- { "value": "9", "label": "Grand-parent" },
75
- { "value": "10", "label": "Petit-enfant" },
76
- { "value": "11", "label": "Tante, oncle" },
77
- { "value": "12", "label": "Cousin(e)" },
78
- { "value": "13", "label": "Nièce, neveu" },
79
- { "value": "14", "label": "Belle-sœur, beau-frère" },
80
- { "value": "15", "label": "Enfant placé" },
81
- { "value": "16", "label": "Autre" }
91
+ { "value": "6", "label": "\"Enfant du conjoint\"" },
92
+ { "value": "7", "label": "\"Conjoint d’un enfant\"" },
93
+ {
94
+ "value": "8",
95
+ "label": "\"Sœur, frère (y compris demi et quasi)\""
96
+ },
97
+ { "value": "9", "label": "\"Grand-parent\"" },
98
+ { "value": "10", "label": "\"Petit-enfant\"" },
99
+ { "value": "11", "label": "\"Tante, oncle\"" },
100
+ { "value": "12", "label": "\"Cousin(e)\"" },
101
+ { "value": "13", "label": "\"Nièce, neveu\"" },
102
+ { "value": "14", "label": "\"Belle-sœur, beau-frère\"" },
103
+ { "value": "15", "label": "\"Enfant placé\"" },
104
+ { "value": "16", "label": "\"Autre\"" }
82
105
  ]
83
106
  }
84
107
  ]
85
108
  },
86
109
  {
87
110
  "id": "pariwise-block",
88
- "componentType": "PairwiseBlock",
89
- "conditionFilter": { "value": "true" },
90
- "page": "3"
91
- }
111
+ "componentType": "Loop",
112
+ "paginatedLoop": true,
113
+ "iterations": { "value": "count(PRENOM)", "type": "VTL" },
114
+ "page": "4",
115
+ "maxPage": "1",
116
+ "conditionFilter": { "value": "true", "type": "VTL" },
117
+ "loopDependencies": ["PRENOM"],
118
+ "components": [
119
+ {
120
+ "componentType": "Textarea",
121
+ "page": "4.1",
122
+ "label": {
123
+ "value": "PRENOM || \", why do you live without your parents?\"",
124
+ "type": "VTL|MD"
125
+ },
126
+ "conditionFilter": {
127
+ "value": "\"3\" not_in LINKS and AGE < 18",
128
+ "type": "VTL"
129
+ },
130
+ "id": "why",
131
+ "response": {
132
+ "name": "WHY"
133
+ }
134
+ }
135
+ ]
136
+ },
137
+ { "componentType": "Sequence", "label": "\"END\"", "page": 5 }
92
138
  ],
93
139
  "variables": [
94
140
  {
95
141
  "variableType": "COLLECTED",
96
142
  "name": "PRENOM",
97
- "componentRef": "loop-prenom",
143
+ "values": {
144
+ "PREVIOUS": [null],
145
+ "COLLECTED": [null],
146
+ "FORCED": [null],
147
+ "EDITED": [null],
148
+ "INPUTED": [null]
149
+ }
150
+ },
151
+ {
152
+ "variableType": "COLLECTED",
153
+ "name": "AGE",
98
154
  "values": {
99
155
  "PREVIOUS": [null],
100
156
  "COLLECTED": [null],
@@ -106,7 +162,6 @@
106
162
  {
107
163
  "variableType": "COLLECTED",
108
164
  "name": "LINKS",
109
- "componentRef": "loop-prenom",
110
165
  "values": {
111
166
  "PREVIOUS": [[null]],
112
167
  "COLLECTED": [[null]],
@@ -115,6 +170,17 @@
115
170
  "INPUTED": [[null]]
116
171
  }
117
172
  },
173
+ {
174
+ "variableType": "COLLECTED",
175
+ "name": "WHY",
176
+ "values": {
177
+ "PREVIOUS": [null],
178
+ "COLLECTED": [null],
179
+ "FORCED": [null],
180
+ "EDITED": [null],
181
+ "INPUTED": [null]
182
+ }
183
+ },
118
184
  {
119
185
  "variableType": "CALCULATED",
120
186
  "name": "xAxis",
@@ -7,18 +7,18 @@ exports["default"] = exports.Default = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _orchestrator = _interopRequireDefault(require("../../utils/orchestrator"));
10
+ var _orchestrator = _interopRequireDefault(require("../utils/orchestrator"));
11
11
 
12
12
  var _links = _interopRequireDefault(require("./links"));
13
13
 
14
14
  var _data = _interopRequireDefault(require("./data"));
15
15
 
16
- var _defaultArgTypes = _interopRequireDefault(require("../../utils/default-arg-types"));
16
+ var _defaultArgTypes = _interopRequireDefault(require("../utils/default-arg-types"));
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
19
 
20
20
  var stories = {
21
- title: 'Pairwise/Links',
21
+ title: 'Components/PairwiseLinks',
22
22
  component: _orchestrator["default"],
23
23
  argTypes: _defaultArgTypes["default"]
24
24
  };
@@ -120,19 +120,6 @@
120
120
  {
121
121
  "componentType": "InputNumber",
122
122
  "controls": [
123
- {
124
- "criticality": "ERROR",
125
- "errorMessage": {
126
- "type": "VTL|MD",
127
- "value": "\"Vous devez saisir un nombre.\""
128
- },
129
- "typeOfControl": "FORMAT",
130
- "control": {
131
- "type": "VTL",
132
- "value": "not(not(isnull(Q1)) and not(isNaN(Q1)))"
133
- },
134
- "id": "l14vfucm-formatNumber"
135
- },
136
123
  {
137
124
  "criticality": "ERROR",
138
125
  "errorMessage": {
@@ -142,9 +129,9 @@
142
129
  "typeOfControl": "FORMAT",
143
130
  "control": {
144
131
  "type": "VTL",
145
- "value": "not(not(isnull(Q1)) and (1>Q1 or 5<Q1)))"
132
+ "value": "not(not(isnull(Q1)) and (1>Q1 or 5<Q1))"
146
133
  },
147
- "id": "l14vfucm-formatBorneInfSup"
134
+ "id": "l14vfucm-format-borne-inf-sup"
148
135
  },
149
136
  {
150
137
  "criticality": "ERROR",
@@ -155,9 +142,9 @@
155
142
  "typeOfControl": "FORMAT",
156
143
  "control": {
157
144
  "type": "VTL",
158
- "value": "not(not(isnull(Q1)) and trunc(Q1,0)<>Q1)"
145
+ "value": "not(not(isnull(Q1)) and round(Q1,0)<>Q1)"
159
146
  },
160
- "id": "l14vfucm-formatDec"
147
+ "id": "l14vfucm-format-decimal"
161
148
  },
162
149
  {
163
150
  "bindingDependencies": ["Q1"],
@@ -306,19 +293,6 @@
306
293
  {
307
294
  "componentType": "InputNumber",
308
295
  "controls": [
309
- {
310
- "criticality": "ERROR",
311
- "errorMessage": {
312
- "type": "VTL|MD",
313
- "value": "\"Vous devez saisir un nombre.\""
314
- },
315
- "typeOfControl": "FORMAT",
316
- "control": {
317
- "type": "VTL",
318
- "value": "not(not(isnull(Q3)) and not(isNaN(Q3)))"
319
- },
320
- "id": "l5ggvqgj-formatNumber"
321
- },
322
296
  {
323
297
  "criticality": "ERROR",
324
298
  "errorMessage": {
@@ -328,9 +302,9 @@
328
302
  "typeOfControl": "FORMAT",
329
303
  "control": {
330
304
  "type": "VTL",
331
- "value": "not(not(isnull(Q3)) and (0>Q3 or 20<Q3)))"
305
+ "value": "not(not(isnull(Q3)) and (0>Q3 or 20<Q3))"
332
306
  },
333
- "id": "l5ggvqgj-formatBorneInfSup"
307
+ "id": "l5ggvqgj-format-borne-inf-sup"
334
308
  },
335
309
  {
336
310
  "criticality": "ERROR",
@@ -341,9 +315,9 @@
341
315
  "typeOfControl": "FORMAT",
342
316
  "control": {
343
317
  "type": "VTL",
344
- "value": "not(not(isnull(Q3)) and trunc(Q3,0)<>Q3)"
318
+ "value": "not(not(isnull(Q3)) and round(Q3,0)<>Q3)"
345
319
  },
346
- "id": "l5ggvqgj-formatDec"
320
+ "id": "l5ggvqgj-format-decimal"
347
321
  }
348
322
  ],
349
323
  "max": 20,
@@ -375,19 +349,6 @@
375
349
  {
376
350
  "componentType": "InputNumber",
377
351
  "controls": [
378
- {
379
- "criticality": "ERROR",
380
- "errorMessage": {
381
- "type": "VTL|MD",
382
- "value": "\"Vous devez saisir un nombre.\""
383
- },
384
- "typeOfControl": "FORMAT",
385
- "control": {
386
- "type": "VTL",
387
- "value": "not(not(isnull(Q4)) and not(isNaN(Q4)))"
388
- },
389
- "id": "l5ggzuuo-formatNumber"
390
- },
391
352
  {
392
353
  "criticality": "ERROR",
393
354
  "errorMessage": {
@@ -397,9 +358,9 @@
397
358
  "typeOfControl": "FORMAT",
398
359
  "control": {
399
360
  "type": "VTL",
400
- "value": "not(not(isnull(Q4)) and (0>Q4 or 20<Q4)))"
361
+ "value": "not(not(isnull(Q4)) and (0>Q4 or 20<Q4))"
401
362
  },
402
- "id": "l5ggzuuo-formatBorneInfSup"
363
+ "id": "l5ggzuuo-format-borne-inf-sup"
403
364
  },
404
365
  {
405
366
  "criticality": "ERROR",
@@ -410,9 +371,9 @@
410
371
  "typeOfControl": "FORMAT",
411
372
  "control": {
412
373
  "type": "VTL",
413
- "value": "not(not(isnull(Q4)) and trunc(Q4,0)<>Q4)"
374
+ "value": "not(not(isnull(Q4)) and round(Q4,0)<>Q4)"
414
375
  },
415
- "id": "l5ggzuuo-formatDec"
376
+ "id": "l5ggzuuo-format-decimal"
416
377
  },
417
378
  {
418
379
  "bindingDependencies": ["Q3", "Q4"],
@@ -565,7 +526,7 @@
565
526
  "lunaticModelVersion": "2.2.14-rc",
566
527
  "modele": "TESTCONTBOUCL",
567
528
  "enoCoreVersion": "2.3.10-controls-type",
568
- "generatingDate": "08-09-2022 12:16:00",
529
+ "generatingDate": "22-09-2022 11:21:08",
569
530
  "missing": false,
570
531
  "id": "l5gghitu",
571
532
  "maxPage": "8"