@gravity-ui/dashkit 5.3.0 → 5.4.0
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/CHANGELOG.md +8 -0
- package/build/cjs/shared/modules/helpers.d.ts +9 -0
- package/build/cjs/shared/modules/helpers.js +22 -1
- package/build/cjs/shared/modules/state-and-params.js +24 -7
- package/build/cjs/shared/units/__tests__/state-and-params.test.js +51 -1
- package/build/esm/shared/modules/helpers.d.ts +9 -0
- package/build/esm/shared/modules/helpers.js +20 -0
- package/build/esm/shared/modules/state-and-params.js +25 -8
- package/build/esm/shared/units/__tests__/state-and-params.test.js +51 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.4.0](https://github.com/gravity-ui/dashkit/compare/v5.3.0...v5.4.0) (2023-04-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add widget defaults ([#52](https://github.com/gravity-ui/dashkit/issues/52)) ([a6e512d](https://github.com/gravity-ui/dashkit/commit/a6e512d132e6c9f0fc93d63527f233656863831e))
|
|
9
|
+
* clear default actionParams ([#55](https://github.com/gravity-ui/dashkit/issues/55)) ([4184b82](https://github.com/gravity-ui/dashkit/commit/4184b828228c6faae21a9c9731fee544f7dd5362))
|
|
10
|
+
|
|
3
11
|
## [5.3.0](https://github.com/gravity-ui/dashkit/compare/v5.2.0...v5.3.0) (2023-04-06)
|
|
4
12
|
|
|
5
13
|
|
|
@@ -69,4 +69,13 @@ export declare function hasActionParam(conf?: StringParams): boolean;
|
|
|
69
69
|
* @param stateAndParams
|
|
70
70
|
*/
|
|
71
71
|
export declare function hasActionParams(stateAndParams: ItemStateAndParams): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
|
|
74
|
+
* @param defaultWidgetParams
|
|
75
|
+
* @param queueWidgetParams
|
|
76
|
+
*/
|
|
77
|
+
export declare function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }: {
|
|
78
|
+
defaultWidgetParams: StringParams;
|
|
79
|
+
queueWidgetParams: StringParams;
|
|
80
|
+
}): string[];
|
|
72
81
|
export {};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasActionParams = exports.hasActionParam = exports.transformParamsToActionParams = exports.pickExceptActionParamsFromParams = exports.pickActionParamsFromParams = exports.deleteFromQueue = exports.addToQueue = exports.getInitialItemsStateAndParamsMeta = exports.mergeParamsWithAliases = exports.getMapItemsIgnores = exports.resolveItemInnerId = exports.formQueueData = exports.isItemWithTabs = exports.getCurrentVersion = exports.getItemsStateAndParamsMeta = exports.prerenderItems = void 0;
|
|
3
|
+
exports.getDefaultsActionParamsToClear = exports.hasActionParams = exports.hasActionParam = exports.transformParamsToActionParams = exports.pickExceptActionParamsFromParams = exports.pickActionParamsFromParams = exports.deleteFromQueue = exports.addToQueue = exports.getInitialItemsStateAndParamsMeta = exports.mergeParamsWithAliases = exports.getMapItemsIgnores = exports.resolveItemInnerId = exports.formQueueData = exports.isItemWithTabs = exports.getCurrentVersion = exports.getItemsStateAndParamsMeta = exports.prerenderItems = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const keyBy_1 = tslib_1.__importDefault(require("lodash/keyBy"));
|
|
6
6
|
const get_1 = tslib_1.__importDefault(require("lodash/get"));
|
|
7
7
|
const invert_1 = tslib_1.__importDefault(require("lodash/invert"));
|
|
8
8
|
const isEmpty_1 = tslib_1.__importDefault(require("lodash/isEmpty"));
|
|
9
9
|
const pick_1 = tslib_1.__importDefault(require("lodash/pick"));
|
|
10
|
+
const intersection_1 = tslib_1.__importDefault(require("lodash/intersection"));
|
|
10
11
|
const constants_1 = require("../constants");
|
|
11
12
|
function getNormalizedPlugins(plugins) {
|
|
12
13
|
return (0, keyBy_1.default)(plugins, 'type');
|
|
@@ -259,3 +260,23 @@ function hasActionParams(stateAndParams) {
|
|
|
259
260
|
return hasActionParam(stateAndParams.params);
|
|
260
261
|
}
|
|
261
262
|
exports.hasActionParams = hasActionParams;
|
|
263
|
+
/**
|
|
264
|
+
* Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
|
|
265
|
+
* @param defaultWidgetParams
|
|
266
|
+
* @param queueWidgetParams
|
|
267
|
+
*/
|
|
268
|
+
function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }) {
|
|
269
|
+
const widgetDefaultsWithActionParams = hasActionParam(defaultWidgetParams)
|
|
270
|
+
? pickActionParamsFromParams(defaultWidgetParams)
|
|
271
|
+
: null;
|
|
272
|
+
if (!widgetDefaultsWithActionParams) {
|
|
273
|
+
return [];
|
|
274
|
+
}
|
|
275
|
+
// clear default actionParams if some param with the same name without prefix affected on current widget
|
|
276
|
+
// ex.: queueWidgetParams contain {Year: 1970} and default actionParams contain {_ap_Year: 2000}
|
|
277
|
+
const actionParamKeyToClear = (0, intersection_1.default)(Object.keys(queueWidgetParams), Object.keys(widgetDefaultsWithActionParams));
|
|
278
|
+
return actionParamKeyToClear.length
|
|
279
|
+
? actionParamKeyToClear.map((key) => `${constants_1.ACTION_PARAM_PREFIX}${key}`)
|
|
280
|
+
: [];
|
|
281
|
+
}
|
|
282
|
+
exports.getDefaultsActionParamsToClear = getDefaultsActionParamsToClear;
|
|
@@ -14,7 +14,7 @@ function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, i
|
|
|
14
14
|
const queueData = isFirstVersion
|
|
15
15
|
? []
|
|
16
16
|
: (0, helpers_1.formQueueData)({ items, itemsStateAndParams });
|
|
17
|
-
//
|
|
17
|
+
// to consider other kind types in future (not only ignore)
|
|
18
18
|
const mapItemsIgnores = (0, helpers_1.getMapItemsIgnores)({
|
|
19
19
|
items,
|
|
20
20
|
ignores: connections.filter(({ kind }) => kind === 'ignore'),
|
|
@@ -24,23 +24,33 @@ function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, i
|
|
|
24
24
|
const groupByNamespace = (0, groupBy_1.default)(items, 'namespace');
|
|
25
25
|
const itemsWithDefaultsByNamespace = Object.keys(groupByNamespace).reduce((acc, namespace) => {
|
|
26
26
|
return Object.assign(Object.assign({}, acc), {
|
|
27
|
-
//
|
|
28
|
-
//
|
|
27
|
+
// there are defaults only in selectors by now, need to get them from item.data.tabs[].defaults for widgets
|
|
28
|
+
// but make a decision about there's order first
|
|
29
29
|
[namespace]: groupByNamespace[namespace].filter((item) => item.defaults) });
|
|
30
30
|
}, {});
|
|
31
31
|
return items.reduce((itemsParams, item) => {
|
|
32
|
-
var _a;
|
|
32
|
+
var _a, _b;
|
|
33
33
|
const { id, namespace } = item;
|
|
34
|
+
let defaultWidgetParams = {};
|
|
35
|
+
if ((0, helpers_1.isItemWithTabs)(item)) {
|
|
36
|
+
const currentWidgetTabId = (0, helpers_1.resolveItemInnerId)({ item, itemsStateAndParams });
|
|
37
|
+
const itemTabs = item.data.tabs;
|
|
38
|
+
defaultWidgetParams =
|
|
39
|
+
((_a = itemTabs.find((tabItem) => (tabItem === null || tabItem === void 0 ? void 0 : tabItem.id) === currentWidgetTabId)) === null || _a === void 0 ? void 0 : _a.params) || {};
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
defaultWidgetParams = item.defaults || {};
|
|
43
|
+
}
|
|
34
44
|
const getMergedParams = (params, actionParams) => (0, helpers_1.mergeParamsWithAliases)({ aliases, namespace, params: params || {}, actionParams });
|
|
35
45
|
const itemIgnores = mapItemsIgnores[id];
|
|
36
46
|
const affectingItemsWithDefaults = itemsWithDefaultsByNamespace[namespace].filter((itemWithDefaults) => !itemIgnores.includes(itemWithDefaults.id));
|
|
37
47
|
let itemParams = Object.assign({}, getMergedParams(defaultGlobalParams),
|
|
38
|
-
//
|
|
48
|
+
// default parameters to begin with
|
|
39
49
|
affectingItemsWithDefaults.reduceRight((defaultParams, itemWithDefaults) => {
|
|
40
50
|
return Object.assign(Object.assign({}, defaultParams), getMergedParams(itemWithDefaults.defaults || {}));
|
|
41
51
|
}, {}), getMergedParams(globalParams));
|
|
42
52
|
if (isFirstVersion) {
|
|
43
|
-
itemParams = Object.assign(itemParams, ((
|
|
53
|
+
itemParams = Object.assign(itemParams, ((_b = itemsStateAndParams === null || itemsStateAndParams === void 0 ? void 0 : itemsStateAndParams[id]) === null || _b === void 0 ? void 0 : _b.params) || {});
|
|
44
54
|
}
|
|
45
55
|
else {
|
|
46
56
|
// params according to queue of its applying
|
|
@@ -68,9 +78,16 @@ function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, i
|
|
|
68
78
|
? (0, helpers_1.pickActionParamsFromParams)(data.params, true)
|
|
69
79
|
: {};
|
|
70
80
|
}
|
|
81
|
+
const clearActionParams = (0, helpers_1.getDefaultsActionParamsToClear)({
|
|
82
|
+
defaultWidgetParams,
|
|
83
|
+
queueWidgetParams: queueDataItems,
|
|
84
|
+
});
|
|
85
|
+
if (clearActionParams.length) {
|
|
86
|
+
defaultWidgetParams = (0, omit_1.default)(defaultWidgetParams, clearActionParams);
|
|
87
|
+
}
|
|
71
88
|
itemParams = Object.assign(itemParams, queueDataItems);
|
|
72
89
|
}
|
|
73
|
-
return Object.assign(Object.assign({}, itemsParams), { [id]: itemParams });
|
|
90
|
+
return Object.assign(Object.assign({}, itemsParams), { [id]: Object.assign(Object.assign({}, defaultWidgetParams), itemParams) });
|
|
74
91
|
}, {});
|
|
75
92
|
}
|
|
76
93
|
exports.getItemsParams = getItemsParams;
|
|
@@ -274,6 +274,7 @@ const stateAndParamsForAP1 = {
|
|
|
274
274
|
Q8: {
|
|
275
275
|
params: {
|
|
276
276
|
Country: '',
|
|
277
|
+
Year: '',
|
|
277
278
|
_ap_Country: 'Italy',
|
|
278
279
|
'd079937f-6bc4-4133-9171-40092bb20d6f': '',
|
|
279
280
|
},
|
|
@@ -301,7 +302,11 @@ const stateAndParamsForAP2 = {
|
|
|
301
302
|
state: {},
|
|
302
303
|
},
|
|
303
304
|
Q8: {
|
|
304
|
-
params: {
|
|
305
|
+
params: {
|
|
306
|
+
Country: 'Belgium',
|
|
307
|
+
Year: '',
|
|
308
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': 'Belgium',
|
|
309
|
+
},
|
|
305
310
|
state: {},
|
|
306
311
|
},
|
|
307
312
|
al: {
|
|
@@ -327,6 +332,7 @@ const stateAndParamsForAP3 = {
|
|
|
327
332
|
Q8: {
|
|
328
333
|
params: {
|
|
329
334
|
Country: '',
|
|
335
|
+
Year: '',
|
|
330
336
|
'd079937f-6bc4-4133-9171-40092bb20d6f': '',
|
|
331
337
|
},
|
|
332
338
|
state: {},
|
|
@@ -357,6 +363,7 @@ const stateAndParamsForAP4 = {
|
|
|
357
363
|
Q8: {
|
|
358
364
|
params: {
|
|
359
365
|
Country: '',
|
|
366
|
+
Year: '',
|
|
360
367
|
_ap_Country: '',
|
|
361
368
|
'd079937f-6bc4-4133-9171-40092bb20d6f': '',
|
|
362
369
|
},
|
|
@@ -371,6 +378,38 @@ const stateAndParamsForAP4 = {
|
|
|
371
378
|
},
|
|
372
379
|
},
|
|
373
380
|
};
|
|
381
|
+
const stateAndParamsForAP5 = {
|
|
382
|
+
in: {
|
|
383
|
+
Q8: { params: {} },
|
|
384
|
+
L5: { params: {} },
|
|
385
|
+
__meta__: { queue: [], version: 2 },
|
|
386
|
+
},
|
|
387
|
+
out: {
|
|
388
|
+
L5: {
|
|
389
|
+
params: {
|
|
390
|
+
Country: ['Italy', 'France'],
|
|
391
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
|
|
392
|
+
},
|
|
393
|
+
state: {},
|
|
394
|
+
},
|
|
395
|
+
Q8: {
|
|
396
|
+
params: {
|
|
397
|
+
Country: ['Italy', 'France'],
|
|
398
|
+
Year: '',
|
|
399
|
+
_ap_Country: 'Belgium',
|
|
400
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
|
|
401
|
+
},
|
|
402
|
+
state: {},
|
|
403
|
+
},
|
|
404
|
+
al: {
|
|
405
|
+
params: {
|
|
406
|
+
Country: ['Italy', 'France'],
|
|
407
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
|
|
408
|
+
},
|
|
409
|
+
state: {},
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
};
|
|
374
413
|
const configs = configs_json_1.default.configs;
|
|
375
414
|
describe('getItemsStateAndParamsDL', () => {
|
|
376
415
|
describe('old version fallback', () => {
|
|
@@ -452,4 +491,15 @@ describe('getItemsStateAndParams actionParams variants check', () => {
|
|
|
452
491
|
expect(resultItemsStateAndParams).toEqual((0, omit_1.default)(stateAndParamsForAP4.out, constants_1.META_KEY));
|
|
453
492
|
});
|
|
454
493
|
});
|
|
494
|
+
describe('action and params state 5', () => {
|
|
495
|
+
const resultItemsStateAndParams = (0, datalens_1.getItemsStateAndParamsDL)({
|
|
496
|
+
defaultGlobalParams: {},
|
|
497
|
+
globalParams: {},
|
|
498
|
+
config: configs[3],
|
|
499
|
+
itemsStateAndParams: stateAndParamsForAP5.in,
|
|
500
|
+
});
|
|
501
|
+
it('return stateAndParamsForAP5.out', () => {
|
|
502
|
+
expect(resultItemsStateAndParams).toEqual((0, omit_1.default)(stateAndParamsForAP5.out, constants_1.META_KEY));
|
|
503
|
+
});
|
|
504
|
+
});
|
|
455
505
|
});
|
|
@@ -69,4 +69,13 @@ export declare function hasActionParam(conf?: StringParams): boolean;
|
|
|
69
69
|
* @param stateAndParams
|
|
70
70
|
*/
|
|
71
71
|
export declare function hasActionParams(stateAndParams: ItemStateAndParams): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
|
|
74
|
+
* @param defaultWidgetParams
|
|
75
|
+
* @param queueWidgetParams
|
|
76
|
+
*/
|
|
77
|
+
export declare function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }: {
|
|
78
|
+
defaultWidgetParams: StringParams;
|
|
79
|
+
queueWidgetParams: StringParams;
|
|
80
|
+
}): string[];
|
|
72
81
|
export {};
|
|
@@ -3,6 +3,7 @@ import get from 'lodash/get';
|
|
|
3
3
|
import invert from 'lodash/invert';
|
|
4
4
|
import isEmpty from 'lodash/isEmpty';
|
|
5
5
|
import pick from 'lodash/pick';
|
|
6
|
+
import intersection from 'lodash/intersection';
|
|
6
7
|
import { META_KEY, CURRENT_VERSION, ACTION_PARAM_PREFIX } from '../constants';
|
|
7
8
|
function getNormalizedPlugins(plugins) {
|
|
8
9
|
return keyBy(plugins, 'type');
|
|
@@ -239,3 +240,22 @@ export function hasActionParams(stateAndParams) {
|
|
|
239
240
|
}
|
|
240
241
|
return hasActionParam(stateAndParams.params);
|
|
241
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Collect array of actionParams keys with prefix (_ap_) that must be cleared from widget defaults
|
|
245
|
+
* @param defaultWidgetParams
|
|
246
|
+
* @param queueWidgetParams
|
|
247
|
+
*/
|
|
248
|
+
export function getDefaultsActionParamsToClear({ defaultWidgetParams, queueWidgetParams, }) {
|
|
249
|
+
const widgetDefaultsWithActionParams = hasActionParam(defaultWidgetParams)
|
|
250
|
+
? pickActionParamsFromParams(defaultWidgetParams)
|
|
251
|
+
: null;
|
|
252
|
+
if (!widgetDefaultsWithActionParams) {
|
|
253
|
+
return [];
|
|
254
|
+
}
|
|
255
|
+
// clear default actionParams if some param with the same name without prefix affected on current widget
|
|
256
|
+
// ex.: queueWidgetParams contain {Year: 1970} and default actionParams contain {_ap_Year: 2000}
|
|
257
|
+
const actionParamKeyToClear = intersection(Object.keys(queueWidgetParams), Object.keys(widgetDefaultsWithActionParams));
|
|
258
|
+
return actionParamKeyToClear.length
|
|
259
|
+
? actionParamKeyToClear.map((key) => `${ACTION_PARAM_PREFIX}${key}`)
|
|
260
|
+
: [];
|
|
261
|
+
}
|
|
@@ -2,7 +2,7 @@ import groupBy from 'lodash/groupBy';
|
|
|
2
2
|
import intersection from 'lodash/intersection';
|
|
3
3
|
import omit from 'lodash/omit';
|
|
4
4
|
import { META_KEY } from '../constants';
|
|
5
|
-
import { prerenderItems, formQueueData, getMapItemsIgnores, mergeParamsWithAliases, getCurrentVersion, pickActionParamsFromParams, hasActionParam, pickExceptActionParamsFromParams, transformParamsToActionParams, } from './helpers';
|
|
5
|
+
import { prerenderItems, formQueueData, getMapItemsIgnores, mergeParamsWithAliases, getCurrentVersion, pickActionParamsFromParams, hasActionParam, pickExceptActionParamsFromParams, transformParamsToActionParams, isItemWithTabs, resolveItemInnerId, getDefaultsActionParamsToClear, } from './helpers';
|
|
6
6
|
export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, config, itemsStateAndParams, plugins, }) {
|
|
7
7
|
const { aliases, connections } = config;
|
|
8
8
|
const items = prerenderItems({ items: config.items, plugins });
|
|
@@ -10,7 +10,7 @@ export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, co
|
|
|
10
10
|
const queueData = isFirstVersion
|
|
11
11
|
? []
|
|
12
12
|
: formQueueData({ items, itemsStateAndParams });
|
|
13
|
-
//
|
|
13
|
+
// to consider other kind types in future (not only ignore)
|
|
14
14
|
const mapItemsIgnores = getMapItemsIgnores({
|
|
15
15
|
items,
|
|
16
16
|
ignores: connections.filter(({ kind }) => kind === 'ignore'),
|
|
@@ -20,23 +20,33 @@ export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, co
|
|
|
20
20
|
const groupByNamespace = groupBy(items, 'namespace');
|
|
21
21
|
const itemsWithDefaultsByNamespace = Object.keys(groupByNamespace).reduce((acc, namespace) => {
|
|
22
22
|
return Object.assign(Object.assign({}, acc), {
|
|
23
|
-
//
|
|
24
|
-
//
|
|
23
|
+
// there are defaults only in selectors by now, need to get them from item.data.tabs[].defaults for widgets
|
|
24
|
+
// but make a decision about there's order first
|
|
25
25
|
[namespace]: groupByNamespace[namespace].filter((item) => item.defaults) });
|
|
26
26
|
}, {});
|
|
27
27
|
return items.reduce((itemsParams, item) => {
|
|
28
|
-
var _a;
|
|
28
|
+
var _a, _b;
|
|
29
29
|
const { id, namespace } = item;
|
|
30
|
+
let defaultWidgetParams = {};
|
|
31
|
+
if (isItemWithTabs(item)) {
|
|
32
|
+
const currentWidgetTabId = resolveItemInnerId({ item, itemsStateAndParams });
|
|
33
|
+
const itemTabs = item.data.tabs;
|
|
34
|
+
defaultWidgetParams =
|
|
35
|
+
((_a = itemTabs.find((tabItem) => (tabItem === null || tabItem === void 0 ? void 0 : tabItem.id) === currentWidgetTabId)) === null || _a === void 0 ? void 0 : _a.params) || {};
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
defaultWidgetParams = item.defaults || {};
|
|
39
|
+
}
|
|
30
40
|
const getMergedParams = (params, actionParams) => mergeParamsWithAliases({ aliases, namespace, params: params || {}, actionParams });
|
|
31
41
|
const itemIgnores = mapItemsIgnores[id];
|
|
32
42
|
const affectingItemsWithDefaults = itemsWithDefaultsByNamespace[namespace].filter((itemWithDefaults) => !itemIgnores.includes(itemWithDefaults.id));
|
|
33
43
|
let itemParams = Object.assign({}, getMergedParams(defaultGlobalParams),
|
|
34
|
-
//
|
|
44
|
+
// default parameters to begin with
|
|
35
45
|
affectingItemsWithDefaults.reduceRight((defaultParams, itemWithDefaults) => {
|
|
36
46
|
return Object.assign(Object.assign({}, defaultParams), getMergedParams(itemWithDefaults.defaults || {}));
|
|
37
47
|
}, {}), getMergedParams(globalParams));
|
|
38
48
|
if (isFirstVersion) {
|
|
39
|
-
itemParams = Object.assign(itemParams, ((
|
|
49
|
+
itemParams = Object.assign(itemParams, ((_b = itemsStateAndParams === null || itemsStateAndParams === void 0 ? void 0 : itemsStateAndParams[id]) === null || _b === void 0 ? void 0 : _b.params) || {});
|
|
40
50
|
}
|
|
41
51
|
else {
|
|
42
52
|
// params according to queue of its applying
|
|
@@ -64,9 +74,16 @@ export function getItemsParams({ defaultGlobalParams = {}, globalParams = {}, co
|
|
|
64
74
|
? pickActionParamsFromParams(data.params, true)
|
|
65
75
|
: {};
|
|
66
76
|
}
|
|
77
|
+
const clearActionParams = getDefaultsActionParamsToClear({
|
|
78
|
+
defaultWidgetParams,
|
|
79
|
+
queueWidgetParams: queueDataItems,
|
|
80
|
+
});
|
|
81
|
+
if (clearActionParams.length) {
|
|
82
|
+
defaultWidgetParams = omit(defaultWidgetParams, clearActionParams);
|
|
83
|
+
}
|
|
67
84
|
itemParams = Object.assign(itemParams, queueDataItems);
|
|
68
85
|
}
|
|
69
|
-
return Object.assign(Object.assign({}, itemsParams), { [id]: itemParams });
|
|
86
|
+
return Object.assign(Object.assign({}, itemsParams), { [id]: Object.assign(Object.assign({}, defaultWidgetParams), itemParams) });
|
|
70
87
|
}, {});
|
|
71
88
|
}
|
|
72
89
|
export function getItemsState({ config, itemsStateAndParams, }) {
|
|
@@ -270,6 +270,7 @@ const stateAndParamsForAP1 = {
|
|
|
270
270
|
Q8: {
|
|
271
271
|
params: {
|
|
272
272
|
Country: '',
|
|
273
|
+
Year: '',
|
|
273
274
|
_ap_Country: 'Italy',
|
|
274
275
|
'd079937f-6bc4-4133-9171-40092bb20d6f': '',
|
|
275
276
|
},
|
|
@@ -297,7 +298,11 @@ const stateAndParamsForAP2 = {
|
|
|
297
298
|
state: {},
|
|
298
299
|
},
|
|
299
300
|
Q8: {
|
|
300
|
-
params: {
|
|
301
|
+
params: {
|
|
302
|
+
Country: 'Belgium',
|
|
303
|
+
Year: '',
|
|
304
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': 'Belgium',
|
|
305
|
+
},
|
|
301
306
|
state: {},
|
|
302
307
|
},
|
|
303
308
|
al: {
|
|
@@ -323,6 +328,7 @@ const stateAndParamsForAP3 = {
|
|
|
323
328
|
Q8: {
|
|
324
329
|
params: {
|
|
325
330
|
Country: '',
|
|
331
|
+
Year: '',
|
|
326
332
|
'd079937f-6bc4-4133-9171-40092bb20d6f': '',
|
|
327
333
|
},
|
|
328
334
|
state: {},
|
|
@@ -353,6 +359,7 @@ const stateAndParamsForAP4 = {
|
|
|
353
359
|
Q8: {
|
|
354
360
|
params: {
|
|
355
361
|
Country: '',
|
|
362
|
+
Year: '',
|
|
356
363
|
_ap_Country: '',
|
|
357
364
|
'd079937f-6bc4-4133-9171-40092bb20d6f': '',
|
|
358
365
|
},
|
|
@@ -367,6 +374,38 @@ const stateAndParamsForAP4 = {
|
|
|
367
374
|
},
|
|
368
375
|
},
|
|
369
376
|
};
|
|
377
|
+
const stateAndParamsForAP5 = {
|
|
378
|
+
in: {
|
|
379
|
+
Q8: { params: {} },
|
|
380
|
+
L5: { params: {} },
|
|
381
|
+
__meta__: { queue: [], version: 2 },
|
|
382
|
+
},
|
|
383
|
+
out: {
|
|
384
|
+
L5: {
|
|
385
|
+
params: {
|
|
386
|
+
Country: ['Italy', 'France'],
|
|
387
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
|
|
388
|
+
},
|
|
389
|
+
state: {},
|
|
390
|
+
},
|
|
391
|
+
Q8: {
|
|
392
|
+
params: {
|
|
393
|
+
Country: ['Italy', 'France'],
|
|
394
|
+
Year: '',
|
|
395
|
+
_ap_Country: 'Belgium',
|
|
396
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
|
|
397
|
+
},
|
|
398
|
+
state: {},
|
|
399
|
+
},
|
|
400
|
+
al: {
|
|
401
|
+
params: {
|
|
402
|
+
Country: ['Italy', 'France'],
|
|
403
|
+
'd079937f-6bc4-4133-9171-40092bb20d6f': ['Italy', 'France'],
|
|
404
|
+
},
|
|
405
|
+
state: {},
|
|
406
|
+
},
|
|
407
|
+
},
|
|
408
|
+
};
|
|
370
409
|
const configs = mockConfigs.configs;
|
|
371
410
|
describe('getItemsStateAndParamsDL', () => {
|
|
372
411
|
describe('old version fallback', () => {
|
|
@@ -448,4 +487,15 @@ describe('getItemsStateAndParams actionParams variants check', () => {
|
|
|
448
487
|
expect(resultItemsStateAndParams).toEqual(omit(stateAndParamsForAP4.out, META_KEY));
|
|
449
488
|
});
|
|
450
489
|
});
|
|
490
|
+
describe('action and params state 5', () => {
|
|
491
|
+
const resultItemsStateAndParams = getItemsStateAndParamsDL({
|
|
492
|
+
defaultGlobalParams: {},
|
|
493
|
+
globalParams: {},
|
|
494
|
+
config: configs[3],
|
|
495
|
+
itemsStateAndParams: stateAndParamsForAP5.in,
|
|
496
|
+
});
|
|
497
|
+
it('return stateAndParamsForAP5.out', () => {
|
|
498
|
+
expect(resultItemsStateAndParams).toEqual(omit(stateAndParamsForAP5.out, META_KEY));
|
|
499
|
+
});
|
|
500
|
+
});
|
|
451
501
|
});
|