@inseefr/lunatic 2.7.10 → 2.7.11
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/loop/constant.js +1 -1
- package/lib/components/radio/html/radio-option.js +5 -3
- package/lib/components/suggester/html/suggester.js +12 -7
- package/lib/components/summary/html/summary-responses.js +3 -5
- package/lib/src/components/suggester/html/suggester.d.ts +1 -0
- package/lib/src/components/suggester/searching/create-searching.d.ts +1 -0
- package/lib/stories/behaviour/cleaning/{test.stories.js → cleaning.stories.js} +10 -3
- package/lib/stories/behaviour/cleaning/source-loop.json +130 -0
- package/lib/stories/behaviour/resizing/{test.stories.js → resizing.stories.js} +8 -1
- package/lib/stories/behaviour/resizing/source-resizing-cleaning.json +171 -0
- package/lib/stories/component-set/data-loop.json +1 -1
- package/lib/stories/roundabout/source.json +25 -18
- package/lib/stories/suggester/simple.json +5 -2
- package/lib/use-lunatic/commons/fill-components/fill-specific-expression.js +2 -3
- package/lib/use-lunatic/commons/variables/lunatic-variables-store.js +1 -1
- package/lib/use-lunatic/use-lunatic.test.js +59 -7
- package/lib/use-lunatic/use-suggesters.js +10 -6
- package/lib/utils/store-tools/initStore.js +4 -3
- package/lib/utils/store-tools/open-or-create-store.js +3 -3
- package/lib/utils/suggester-workers/searching/searching.js +20 -10
- package/lib/utils/suggester-workers/searching/searching.worker.js +5 -1
- package/lib/utils/vtl.js +4 -4
- package/package.json +3 -3
- package/workers-release/lunatic-append-worker-0.3.0.js +1 -1
- package/workers-release/lunatic-search-worker-0.3.0.js +1 -1
|
@@ -7,6 +7,8 @@ var _source = _interopRequireDefault(require("../stories/overview/source.json"))
|
|
|
7
7
|
var _source2 = _interopRequireDefault(require("../stories/questionnaires/logement/source.json"));
|
|
8
8
|
var _source3 = _interopRequireDefault(require("../stories/questionnaires2023/simpsons/source.json"));
|
|
9
9
|
var _source4 = _interopRequireDefault(require("../stories/component-set/source.json"));
|
|
10
|
+
var _sourceLoop = _interopRequireDefault(require("../stories/behaviour/cleaning/source-loop.json"));
|
|
11
|
+
var _sourceResizingCleaning = _interopRequireDefault(require("../stories/behaviour/resizing/source-resizing-cleaning.json"));
|
|
10
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
13
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
12
14
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -31,7 +33,7 @@ var dataFromObject = function dataFromObject(o) {
|
|
|
31
33
|
};
|
|
32
34
|
(0, _vitest.describe)('use-lunatic()', function () {
|
|
33
35
|
var defaultParams = [_source3["default"], dataFromObject({}), {}];
|
|
34
|
-
(0, _vitest.it)('should initialize
|
|
36
|
+
(0, _vitest.it)('should initialize correctly', function () {
|
|
35
37
|
var _renderHook = (0, _reactHooks.renderHook)(function () {
|
|
36
38
|
return _useLunatic["default"].apply(void 0, defaultParams);
|
|
37
39
|
}),
|
|
@@ -168,12 +170,62 @@ var dataFromObject = function dataFromObject(o) {
|
|
|
168
170
|
});
|
|
169
171
|
});
|
|
170
172
|
});
|
|
173
|
+
(0, _vitest.describe)('cleaning', function () {
|
|
174
|
+
(0, _vitest.it)('should handle cleaning in a loop', function () {
|
|
175
|
+
var _renderHook10 = (0, _reactHooks.renderHook)(function () {
|
|
176
|
+
return (0, _useLunatic["default"])(_sourceLoop["default"], undefined, {});
|
|
177
|
+
}),
|
|
178
|
+
result = _renderHook10.result;
|
|
179
|
+
(0, _reactHooks.act)(function () {
|
|
180
|
+
result.current.onChange({
|
|
181
|
+
name: 'PRENOM'
|
|
182
|
+
}, ['John', 'Doe', 'Marc']);
|
|
183
|
+
result.current.onChange({
|
|
184
|
+
name: 'AGE'
|
|
185
|
+
}, [18, 18, 18]);
|
|
186
|
+
// Go in the first iteration
|
|
187
|
+
result.current.goNextPage();
|
|
188
|
+
result.current.goNextPage();
|
|
189
|
+
});
|
|
190
|
+
var expectCollectedAgeToEqual = function expectCollectedAgeToEqual(expectation) {
|
|
191
|
+
(0, _vitest.expect)(result.current.getData(false).COLLECTED.AGE.COLLECTED).toEqual(expectation);
|
|
192
|
+
};
|
|
193
|
+
expectCollectedAgeToEqual([18, 18, 18]);
|
|
194
|
+
(0, _reactHooks.act)(function () {
|
|
195
|
+
result.current.onChange({
|
|
196
|
+
name: 'HIDE_AGE'
|
|
197
|
+
}, true, {
|
|
198
|
+
iteration: [0]
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
expectCollectedAgeToEqual([null, 18, 18]);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
(0, _vitest.describe)('resizing', function () {
|
|
205
|
+
(0, _vitest.it)('should resize after cleaning', function () {
|
|
206
|
+
var spy = _vitest.vi.fn();
|
|
207
|
+
var _renderHook11 = (0, _reactHooks.renderHook)(function () {
|
|
208
|
+
return (0, _useLunatic["default"])(_sourceResizingCleaning["default"], undefined, {
|
|
209
|
+
onChange: spy
|
|
210
|
+
});
|
|
211
|
+
}),
|
|
212
|
+
result = _renderHook11.result;
|
|
213
|
+
result.current.onChange({
|
|
214
|
+
name: 'NB'
|
|
215
|
+
}, 3);
|
|
216
|
+
(0, _vitest.expect)(result.current.getData(true).COLLECTED.PRENOMS.COLLECTED).toEqual([null, null, null]);
|
|
217
|
+
result.current.onChange({
|
|
218
|
+
name: 'NB'
|
|
219
|
+
}, 2);
|
|
220
|
+
(0, _vitest.expect)(result.current.getData(true).COLLECTED.PRENOMS.COLLECTED).toEqual([null, null]);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
171
223
|
(0, _vitest.describe)('getComponents()', function () {
|
|
172
224
|
(0, _vitest.describe)('componentSet', function () {
|
|
173
|
-
var
|
|
225
|
+
var _renderHook12 = (0, _reactHooks.renderHook)(function () {
|
|
174
226
|
return (0, _useLunatic["default"])(_source4["default"], undefined, {});
|
|
175
227
|
}),
|
|
176
|
-
result =
|
|
228
|
+
result = _renderHook12.result;
|
|
177
229
|
var getComponents = function getComponents() {
|
|
178
230
|
return result.current.getComponents();
|
|
179
231
|
};
|
|
@@ -196,10 +248,10 @@ var dataFromObject = function dataFromObject(o) {
|
|
|
196
248
|
(0, _vitest.describe)('getData()', function () {
|
|
197
249
|
var hookRef;
|
|
198
250
|
(0, _vitest.beforeEach)(function () {
|
|
199
|
-
var
|
|
251
|
+
var _renderHook13 = (0, _reactHooks.renderHook)(function () {
|
|
200
252
|
return (0, _useLunatic["default"])(_source3["default"], undefined, {});
|
|
201
253
|
}),
|
|
202
|
-
result =
|
|
254
|
+
result = _renderHook13.result;
|
|
203
255
|
(0, _reactHooks.act)(function () {
|
|
204
256
|
result.current.onChange({
|
|
205
257
|
name: 'COMMENT'
|
|
@@ -245,12 +297,12 @@ var dataFromObject = function dataFromObject(o) {
|
|
|
245
297
|
(0, _vitest.describe)('getChangedData()', function () {
|
|
246
298
|
var hookRef;
|
|
247
299
|
(0, _vitest.beforeEach)(function () {
|
|
248
|
-
var
|
|
300
|
+
var _renderHook14 = (0, _reactHooks.renderHook)(function () {
|
|
249
301
|
return (0, _useLunatic["default"])(_source3["default"], undefined, {
|
|
250
302
|
trackChanges: true
|
|
251
303
|
});
|
|
252
304
|
}),
|
|
253
|
-
result =
|
|
305
|
+
result = _renderHook14.result;
|
|
254
306
|
hookRef = result;
|
|
255
307
|
});
|
|
256
308
|
(0, _vitest.it)('should return every value', function () {
|
|
@@ -90,9 +90,11 @@ function useSuggesters(_ref) {
|
|
|
90
90
|
|
|
91
91
|
// Index the data
|
|
92
92
|
(0, _react.useEffect)(function () {
|
|
93
|
-
var aborts =
|
|
93
|
+
var aborts = {
|
|
94
|
+
current: []
|
|
95
|
+
};
|
|
94
96
|
if (typeof getReferentiel === 'function' && Array.isArray(suggesters) && auto) {
|
|
95
|
-
suggesters.
|
|
97
|
+
var suggesterWorkers = suggesters.map( /*#__PURE__*/function () {
|
|
96
98
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(store) {
|
|
97
99
|
var name, current, isClean, data, _createAppendTask, _createAppendTask2, append, abort, result;
|
|
98
100
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
@@ -132,7 +134,7 @@ function useSuggesters(_ref) {
|
|
|
132
134
|
case 13:
|
|
133
135
|
data = _context.sent;
|
|
134
136
|
_createAppendTask = (0, _createAppendTask3.createAppendTask)(store, 1, nothing, workersBasePath), _createAppendTask2 = _slicedToArray(_createAppendTask, 2), append = _createAppendTask2[0], abort = _createAppendTask2[1];
|
|
135
|
-
aborts.push(abort);
|
|
137
|
+
aborts.current.push(abort);
|
|
136
138
|
_context.next = 18;
|
|
137
139
|
return append(data);
|
|
138
140
|
case 18:
|
|
@@ -163,11 +165,13 @@ function useSuggesters(_ref) {
|
|
|
163
165
|
return _ref3.apply(this, arguments);
|
|
164
166
|
};
|
|
165
167
|
}());
|
|
166
|
-
|
|
167
|
-
aborts.forEach(function (
|
|
168
|
-
return
|
|
168
|
+
var clearWorkers = function clearWorkers() {
|
|
169
|
+
return aborts.current.forEach(function (a) {
|
|
170
|
+
return a();
|
|
169
171
|
});
|
|
170
172
|
};
|
|
173
|
+
Promise.all(suggesterWorkers)["finally"](clearWorkers);
|
|
174
|
+
return clearWorkers;
|
|
171
175
|
}
|
|
172
176
|
}, [suggesters, auto, getReferentiel, status, workersBasePath]);
|
|
173
177
|
return getSuggesterStatus;
|
|
@@ -28,7 +28,7 @@ function _initStore() {
|
|
|
28
28
|
case 3:
|
|
29
29
|
db = _context.sent;
|
|
30
30
|
if (!db) {
|
|
31
|
-
_context.next =
|
|
31
|
+
_context.next = 16;
|
|
32
32
|
break;
|
|
33
33
|
}
|
|
34
34
|
_context.next = 7;
|
|
@@ -43,10 +43,11 @@ function _initStore() {
|
|
|
43
43
|
return (0, _insertEntity["default"])(db, _constantes["default"].STORE_INFO_NAME, storeInfo);
|
|
44
44
|
case 13:
|
|
45
45
|
c = _context.sent;
|
|
46
|
+
db.close();
|
|
46
47
|
return _context.abrupt("return", a && b && c);
|
|
47
|
-
case 15:
|
|
48
|
-
return _context.abrupt("return", false);
|
|
49
48
|
case 16:
|
|
49
|
+
return _context.abrupt("return", false);
|
|
50
|
+
case 17:
|
|
50
51
|
case "end":
|
|
51
52
|
return _context.stop();
|
|
52
53
|
}
|
|
@@ -9,14 +9,14 @@ var _getIdb = _interopRequireDefault(require("../idb-tools/get-idb"));
|
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
10
10
|
/* eslint-disable no-restricted-globals */
|
|
11
11
|
|
|
12
|
-
var IDB_REF = (0, _getIdb["default"])();
|
|
13
12
|
function openStorage(name) {
|
|
14
13
|
var idbVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
15
14
|
return new Promise(function (resolve, reject) {
|
|
16
|
-
|
|
15
|
+
var idb = (0, _getIdb["default"])();
|
|
16
|
+
if (!idb) {
|
|
17
17
|
reject('indexedDb not supported !');
|
|
18
18
|
}
|
|
19
|
-
var request =
|
|
19
|
+
var request = idb.open(name, idbVersion);
|
|
20
20
|
var db;
|
|
21
21
|
var doIt = true;
|
|
22
22
|
request.onupgradeneeded = function (e) {
|
|
@@ -83,14 +83,14 @@ function searching(_x3, _x4) {
|
|
|
83
83
|
}
|
|
84
84
|
function _searching() {
|
|
85
85
|
_searching = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(search, _ref2) {
|
|
86
|
-
var name, _ref2$version, version, _ref2$meloto, meloto, db, info, queryParser, max, order, parser, transaction, store, index,
|
|
86
|
+
var name, _ref2$version, version, _ref2$meloto, meloto, db, info, queryParser, max, order, parser, tokens, transaction, store, index, documents;
|
|
87
87
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
88
88
|
while (1) switch (_context2.prev = _context2.next) {
|
|
89
89
|
case 0:
|
|
90
90
|
name = _ref2.name, _ref2$version = _ref2.version, version = _ref2$version === void 0 ? '1' : _ref2$version, _ref2$meloto = _ref2.meloto, meloto = _ref2$meloto === void 0 ? true : _ref2$meloto;
|
|
91
91
|
_context2.prev = 1;
|
|
92
92
|
if (!isValideSearch(search)) {
|
|
93
|
-
_context2.next =
|
|
93
|
+
_context2.next = 23;
|
|
94
94
|
break;
|
|
95
95
|
}
|
|
96
96
|
_context2.next = 5;
|
|
@@ -106,34 +106,44 @@ function _searching() {
|
|
|
106
106
|
return (0, _resolveQueryParser["default"])(queryParser);
|
|
107
107
|
case 12:
|
|
108
108
|
parser = _context2.sent;
|
|
109
|
+
tokens = parser(search); // Do not start a transaction if we have nothing to search
|
|
110
|
+
if (!(tokens.length === 0)) {
|
|
111
|
+
_context2.next = 16;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
return _context2.abrupt("return", {
|
|
115
|
+
results: [],
|
|
116
|
+
search: search,
|
|
117
|
+
tokens: tokens
|
|
118
|
+
});
|
|
119
|
+
case 16:
|
|
109
120
|
transaction = db.transaction(_storeTools.CONSTANTES.STORE_DATA_NAME, 'readonly');
|
|
110
121
|
store = transaction.objectStore(_storeTools.CONSTANTES.STORE_DATA_NAME);
|
|
111
122
|
index = store.index(_storeTools.CONSTANTES.STORE_INDEX_NAME);
|
|
112
|
-
|
|
113
|
-
_context2.next = 19;
|
|
123
|
+
_context2.next = 21;
|
|
114
124
|
return searchTokens(tokens, index);
|
|
115
|
-
case
|
|
125
|
+
case 21:
|
|
116
126
|
documents = _context2.sent;
|
|
117
127
|
return _context2.abrupt("return", {
|
|
118
128
|
results: prepare((0, _order["default"])(order)(filterSize((0, _computeScore["default"])(documents, tokens, meloto), max), order)),
|
|
119
129
|
search: search,
|
|
120
130
|
tokens: tokens
|
|
121
131
|
});
|
|
122
|
-
case
|
|
132
|
+
case 23:
|
|
123
133
|
return _context2.abrupt("return", {
|
|
124
134
|
results: [],
|
|
125
135
|
search: search
|
|
126
136
|
});
|
|
127
|
-
case
|
|
128
|
-
_context2.prev =
|
|
137
|
+
case 26:
|
|
138
|
+
_context2.prev = 26;
|
|
129
139
|
_context2.t0 = _context2["catch"](1);
|
|
130
140
|
console.error(_context2.t0);
|
|
131
141
|
throw _context2.t0;
|
|
132
|
-
case
|
|
142
|
+
case 30:
|
|
133
143
|
case "end":
|
|
134
144
|
return _context2.stop();
|
|
135
145
|
}
|
|
136
|
-
}, _callee2, null, [[1,
|
|
146
|
+
}, _callee2, null, [[1, 26]]);
|
|
137
147
|
}));
|
|
138
148
|
return _searching.apply(this, arguments);
|
|
139
149
|
}
|
|
@@ -6,17 +6,21 @@ var _searching = _interopRequireDefault(require("./searching"));
|
|
|
6
6
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
7
7
|
/* eslint-disable no-restricted-globals */
|
|
8
8
|
|
|
9
|
+
var LAST_SEARCH = undefined;
|
|
9
10
|
self.onmessage = function (e) {
|
|
10
11
|
var _e$data = e.data,
|
|
11
12
|
search = _e$data.search,
|
|
12
13
|
name = _e$data.name,
|
|
13
14
|
version = _e$data.version,
|
|
14
15
|
meloto = _e$data.meloto;
|
|
16
|
+
LAST_SEARCH = search;
|
|
15
17
|
(0, _searching["default"])(search, {
|
|
16
18
|
name: name,
|
|
17
19
|
version: version,
|
|
18
20
|
meloto: meloto
|
|
19
21
|
}).then(function (result) {
|
|
20
|
-
|
|
22
|
+
if (search === LAST_SEARCH) {
|
|
23
|
+
self.postMessage(result);
|
|
24
|
+
}
|
|
21
25
|
});
|
|
22
26
|
};
|
package/lib/utils/vtl.js
CHANGED
|
@@ -79,11 +79,11 @@ function getExpressionType(expression) {
|
|
|
79
79
|
return '';
|
|
80
80
|
}
|
|
81
81
|
function getExpressionAsString(expression) {
|
|
82
|
-
if (typeof expression === 'string') {
|
|
83
|
-
return expression;
|
|
82
|
+
if (typeof expression === 'string' || typeof expression === 'number') {
|
|
83
|
+
return expression.toString();
|
|
84
84
|
}
|
|
85
|
-
if (expression && _typeof(expression) === 'object' && 'value' in expression && typeof expression.value === 'string') {
|
|
86
|
-
return expression.value;
|
|
85
|
+
if (expression && _typeof(expression) === 'object' && 'value' in expression && (typeof expression.value === 'string' || typeof expression.value === 'number')) {
|
|
86
|
+
return expression.value.toString();
|
|
87
87
|
}
|
|
88
88
|
return '';
|
|
89
89
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inseefr/lunatic",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.11",
|
|
4
4
|
"workersVersion": "0.3.0",
|
|
5
5
|
"description": "Library of questionnaire components",
|
|
6
6
|
"repository": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"check": "tsc",
|
|
50
50
|
"lint": "eslint ./src",
|
|
51
51
|
"lint:check": "eslint . --ext .ts,.tsx",
|
|
52
|
-
"_format": "prettier **/*.{ts,tsx,json
|
|
52
|
+
"_format": "prettier **/*.{ts,tsx,json}",
|
|
53
53
|
"format": "npm run _format -- --write",
|
|
54
54
|
"format:check": "npm run _format -- --list-different",
|
|
55
55
|
"test-coverage": "vitest run --coverage",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
],
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@inseefr/trevas": "^0.1.20",
|
|
74
|
-
"@inseefr/vtl-2.0-antlr-tools": "^0.1.0
|
|
74
|
+
"@inseefr/vtl-2.0-antlr-tools": "^0.1.0",
|
|
75
75
|
"antlr4": "4.11.0",
|
|
76
76
|
"classnames": "^2.3.1",
|
|
77
77
|
"date-fns": "^2.25.0",
|