@qrvey/utils 1.1.2-0 → 1.1.2-1
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/README.md +534 -534
- package/dist/cjs/filters/adapters/adaptFilterData.js +1 -1
- package/dist/cjs/filters/adapters/logicToFlatUI.js +75 -63
- package/dist/filters/adapters/adaptFilterData.js +1 -1
- package/dist/filters/adapters/logicToFlatUI.js +77 -65
- package/package.json +1 -1
- package/src/filters/adapters/adaptFilterData.ts +1 -1
- package/src/filters/adapters/logicToFlatUI.ts +84 -70
|
@@ -13,7 +13,7 @@ const UIToFD_1 = require("./UIToFD");
|
|
|
13
13
|
* @param datasetsInfo Collection of datasets information. If getUIFilterData is true, the datasetsInfo should be mandatory
|
|
14
14
|
* @returns A new filter data structure v2.1
|
|
15
15
|
*/
|
|
16
|
-
function adaptFilterData(filterData, getUIFilterData =
|
|
16
|
+
function adaptFilterData(filterData, getUIFilterData = true, datasetsInfo = []) {
|
|
17
17
|
if (general_1.isEmpty(filterData))
|
|
18
18
|
return;
|
|
19
19
|
filterData = general_1.cloneDeep(filterData);
|
|
@@ -19,76 +19,88 @@ function logicToFlatUI(logics = []) {
|
|
|
19
19
|
logics.forEach(scopeItem => {
|
|
20
20
|
if (scopeItem.filters.length > 0) {
|
|
21
21
|
scopeItem.filters.forEach(filterItem => {
|
|
22
|
-
filterItem.expressions
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (index === -1 && (!uiExtras.nullValues || expression.validationType !== "IS_EMPTY" /* IS_NULL */)) {
|
|
27
|
-
const scopeid = scopeItem.scope !== "GLOBAL" /* GLOBAL */ ? general_1._get(scopeItem, 'uiExtras.scopeid') : undefined;
|
|
28
|
-
const info = !general_1.isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
|
|
29
|
-
const uFilter = {
|
|
30
|
-
collapsed: uiExtras.collapsed,
|
|
31
|
-
column: {
|
|
32
|
-
id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
|
|
33
|
-
formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
|
|
34
|
-
linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
|
|
35
|
-
linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
|
|
36
|
-
qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
|
|
37
|
-
aggregate: (_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label,
|
|
38
|
-
calculation: (_j = (_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.calculation) === null || _j === void 0 ? void 0 : _j.value,
|
|
39
|
-
label: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.text,
|
|
40
|
-
property: uiExtras.column.property,
|
|
41
|
-
sorting: uiExtras.column.sorting,
|
|
42
|
-
outputFormat: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.outputFormat,
|
|
43
|
-
type: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.type,
|
|
44
|
-
},
|
|
45
|
-
dateSection: uiExtras.dateSection,
|
|
46
|
-
displayed: true,
|
|
47
|
-
enabled: expression.enabled,
|
|
48
|
-
extras: Object.assign(Object.assign({}, uiExtras.extras), { panelid: uiExtras.panelid, filterLabel: uiExtras.panelName, info,
|
|
49
|
-
scopeid, scope: scopeItem.scope, section: uiExtras.section, scopeInfo: {
|
|
50
|
-
collapsed: (_o = scopeItem.uiExtras) === null || _o === void 0 ? void 0 : _o.collapsed,
|
|
51
|
-
enabled: scopeItem.enabled,
|
|
52
|
-
displayed: true,
|
|
53
|
-
scope: scopeItem.scope,
|
|
54
|
-
scopeid,
|
|
55
|
-
}, dataset: {
|
|
56
|
-
collapsed: false,
|
|
57
|
-
enabled: true,
|
|
58
|
-
displayed: true,
|
|
59
|
-
qrveyid: (_p = uiExtras.column) === null || _p === void 0 ? void 0 : _p.qrveyid,
|
|
60
|
-
label: (_r = (_q = uiExtras.column) === null || _q === void 0 ? void 0 : _q.dataset) === null || _r === void 0 ? void 0 : _r.name,
|
|
61
|
-
linkid: (_s = uiExtras.column) === null || _s === void 0 ? void 0 : _s.linkid,
|
|
62
|
-
} }),
|
|
63
|
-
filterid: undefined,
|
|
64
|
-
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
65
|
-
nullValues: uiExtras.nullValues,
|
|
66
|
-
operator: uiExtras.operator,
|
|
67
|
-
property: uiExtras.property,
|
|
68
|
-
uiValues: helpers_1.getUIValues(uiExtras),
|
|
69
|
-
validator: uiExtras.validator,
|
|
70
|
-
values: getValues(uiExtras),
|
|
71
|
-
};
|
|
72
|
-
uFilter.filterid = helpers_1.getFilterid(uFilter);
|
|
73
|
-
uFilters.push(uFilter);
|
|
74
|
-
}
|
|
75
|
-
if (uiExtras.column.type === constants_1.COLUMN.RANKING && general_1.isEmpty(uiExtras.column.aggregate)) {
|
|
76
|
-
// Restore uiExtras.values array into single IFilterDetail object values array
|
|
77
|
-
if (index > -1)
|
|
78
|
-
uFilters[index].values.push(uiExtras.values[0]);
|
|
79
|
-
const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values), uiExtras.uiValue);
|
|
80
|
-
if (index > -1)
|
|
81
|
-
uFilters[index].values = refinedRankingValues;
|
|
82
|
-
else
|
|
83
|
-
uFilters[uFilters.length - 1].values = refinedRankingValues;
|
|
84
|
-
}
|
|
22
|
+
filterItem.expressions.forEach((expression1) => {
|
|
23
|
+
general_1._hasProperty(expression1, 'expressions') ? expression1.expressions.forEach((expression2) => {
|
|
24
|
+
buildFilterByExpression(expression2, scopeItem, uFilters);
|
|
25
|
+
}) : buildFilterByExpression(expression1, scopeItem, uFilters);
|
|
85
26
|
});
|
|
27
|
+
// (filterItem.expressions[0].expressions as OLD_IFilterExpression[]).forEach((expression: OLD_IFilterExpression) => {
|
|
28
|
+
// buildFilterByExpression(expression, scopeItem, uFilters);
|
|
29
|
+
// });
|
|
86
30
|
});
|
|
87
31
|
}
|
|
88
32
|
});
|
|
89
33
|
return uFilters;
|
|
90
34
|
}
|
|
91
35
|
exports.logicToFlatUI = logicToFlatUI;
|
|
36
|
+
function buildFilterByExpression(expression, scopeItem, uFilters) {
|
|
37
|
+
const uiExtras = expression.uiExtras;
|
|
38
|
+
const index = uiExtras.column.type === constants_1.COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) : -1;
|
|
39
|
+
if (index === -1 && (!uiExtras.nullValues || expression.validationType !== "IS_EMPTY" /* IS_NULL */)) {
|
|
40
|
+
const uFilter = getFilterByExpression(expression, scopeItem);
|
|
41
|
+
uFilter.filterid = helpers_1.getFilterid(uFilter);
|
|
42
|
+
uFilters.push(uFilter);
|
|
43
|
+
}
|
|
44
|
+
if (uiExtras.column.type === constants_1.COLUMN.RANKING && general_1.isEmpty(uiExtras.column.aggregate)) {
|
|
45
|
+
// Restore uiExtras.values array into single IFilterDetail object values array
|
|
46
|
+
if (index > -1)
|
|
47
|
+
uFilters[index].values.push(uiExtras.values[0]);
|
|
48
|
+
const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values), uiExtras.uiValue);
|
|
49
|
+
if (index > -1)
|
|
50
|
+
uFilters[index].values = refinedRankingValues;
|
|
51
|
+
else
|
|
52
|
+
uFilters[uFilters.length - 1].values = refinedRankingValues;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function getFilterByExpression(expression, scopeItem) {
|
|
56
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
57
|
+
const uiExtras = expression.uiExtras;
|
|
58
|
+
const scopeid = scopeItem.scope !== "GLOBAL" /* GLOBAL */ ? general_1._get(scopeItem, 'uiExtras.scopeid') : undefined;
|
|
59
|
+
const info = !general_1.isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
|
|
60
|
+
return {
|
|
61
|
+
collapsed: uiExtras.collapsed,
|
|
62
|
+
column: {
|
|
63
|
+
id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
|
|
64
|
+
formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
|
|
65
|
+
linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
|
|
66
|
+
linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
|
|
67
|
+
qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
|
|
68
|
+
aggregate: (_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label,
|
|
69
|
+
calculation: (_j = (_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.calculation) === null || _j === void 0 ? void 0 : _j.value,
|
|
70
|
+
label: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.text,
|
|
71
|
+
property: uiExtras.column.property,
|
|
72
|
+
sorting: uiExtras.column.sorting,
|
|
73
|
+
outputFormat: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.outputFormat,
|
|
74
|
+
type: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.type,
|
|
75
|
+
},
|
|
76
|
+
dateSection: uiExtras.dateSection,
|
|
77
|
+
displayed: true,
|
|
78
|
+
enabled: expression.enabled,
|
|
79
|
+
extras: Object.assign(Object.assign({}, uiExtras.extras), { panelid: uiExtras.panelid, filterLabel: uiExtras.panelName, info,
|
|
80
|
+
scopeid, scope: scopeItem.scope, section: uiExtras.section, scopeInfo: {
|
|
81
|
+
collapsed: (_o = scopeItem.uiExtras) === null || _o === void 0 ? void 0 : _o.collapsed,
|
|
82
|
+
enabled: scopeItem.enabled,
|
|
83
|
+
displayed: true,
|
|
84
|
+
scope: scopeItem.scope,
|
|
85
|
+
scopeid,
|
|
86
|
+
}, dataset: {
|
|
87
|
+
collapsed: false,
|
|
88
|
+
enabled: true,
|
|
89
|
+
displayed: true,
|
|
90
|
+
qrveyid: (_p = uiExtras.column) === null || _p === void 0 ? void 0 : _p.qrveyid,
|
|
91
|
+
label: (_r = (_q = uiExtras.column) === null || _q === void 0 ? void 0 : _q.dataset) === null || _r === void 0 ? void 0 : _r.name,
|
|
92
|
+
linkid: (_s = uiExtras.column) === null || _s === void 0 ? void 0 : _s.linkid,
|
|
93
|
+
} }),
|
|
94
|
+
filterid: undefined,
|
|
95
|
+
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
96
|
+
nullValues: uiExtras.nullValues,
|
|
97
|
+
operator: uiExtras.operator,
|
|
98
|
+
property: uiExtras.property,
|
|
99
|
+
uiValues: helpers_1.getUIValues(uiExtras),
|
|
100
|
+
validator: uiExtras.validator,
|
|
101
|
+
values: getValues(uiExtras),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
92
104
|
function getValues(uiExtras) {
|
|
93
105
|
if (helpers_1.isNullValidator(uiExtras.validator) && general_1.isEmpty(uiExtras.values)) {
|
|
94
106
|
return [{ value: constants_2.FILTER_VALIDATOR_VALUE[uiExtras.validator].label, enabled: uiExtras.uiValue[0].enabled != null ? uiExtras.uiValue[0].enabled : true }];
|
|
@@ -10,7 +10,7 @@ import { UIToFD } from "./UIToFD";
|
|
|
10
10
|
* @param datasetsInfo Collection of datasets information. If getUIFilterData is true, the datasetsInfo should be mandatory
|
|
11
11
|
* @returns A new filter data structure v2.1
|
|
12
12
|
*/
|
|
13
|
-
export function adaptFilterData(filterData, getUIFilterData =
|
|
13
|
+
export function adaptFilterData(filterData, getUIFilterData = true, datasetsInfo = []) {
|
|
14
14
|
if (isEmpty(filterData))
|
|
15
15
|
return;
|
|
16
16
|
filterData = cloneDeep(filterData);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// FROM Logic structure = Old logic structure (v2.0)
|
|
2
2
|
// TO Logic structure = Cleaner logic structure
|
|
3
3
|
import { COLUMN } from "../../constants";
|
|
4
|
-
import { isEmpty, _get } from "../../general";
|
|
4
|
+
import { isEmpty, _get, _hasProperty } from "../../general";
|
|
5
5
|
import { FILTER_VALIDATOR_VALUE } from "../constants";
|
|
6
|
-
import { getFilterid, getUIValues, isNullValidator } from "../helpers";
|
|
6
|
+
import { getFilterid, getUIValues, isNullValidator, } from "../helpers";
|
|
7
7
|
/**
|
|
8
8
|
* Adapts the Old logic structure (v2.0) to the flattened UI filter Structure.
|
|
9
9
|
* @param logics The old logic structure (v2.0)
|
|
@@ -16,75 +16,87 @@ export function logicToFlatUI(logics = []) {
|
|
|
16
16
|
logics.forEach(scopeItem => {
|
|
17
17
|
if (scopeItem.filters.length > 0) {
|
|
18
18
|
scopeItem.filters.forEach(filterItem => {
|
|
19
|
-
filterItem.expressions
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (index === -1 && (!uiExtras.nullValues || expression.validationType !== "IS_EMPTY" /* IS_NULL */)) {
|
|
24
|
-
const scopeid = scopeItem.scope !== "GLOBAL" /* GLOBAL */ ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
|
|
25
|
-
const info = !isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
|
|
26
|
-
const uFilter = {
|
|
27
|
-
collapsed: uiExtras.collapsed,
|
|
28
|
-
column: {
|
|
29
|
-
id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
|
|
30
|
-
formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
|
|
31
|
-
linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
|
|
32
|
-
linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
|
|
33
|
-
qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
|
|
34
|
-
aggregate: (_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label,
|
|
35
|
-
calculation: (_j = (_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.calculation) === null || _j === void 0 ? void 0 : _j.value,
|
|
36
|
-
label: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.text,
|
|
37
|
-
property: uiExtras.column.property,
|
|
38
|
-
sorting: uiExtras.column.sorting,
|
|
39
|
-
outputFormat: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.outputFormat,
|
|
40
|
-
type: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.type,
|
|
41
|
-
},
|
|
42
|
-
dateSection: uiExtras.dateSection,
|
|
43
|
-
displayed: true,
|
|
44
|
-
enabled: expression.enabled,
|
|
45
|
-
extras: Object.assign(Object.assign({}, uiExtras.extras), { panelid: uiExtras.panelid, filterLabel: uiExtras.panelName, info,
|
|
46
|
-
scopeid, scope: scopeItem.scope, section: uiExtras.section, scopeInfo: {
|
|
47
|
-
collapsed: (_o = scopeItem.uiExtras) === null || _o === void 0 ? void 0 : _o.collapsed,
|
|
48
|
-
enabled: scopeItem.enabled,
|
|
49
|
-
displayed: true,
|
|
50
|
-
scope: scopeItem.scope,
|
|
51
|
-
scopeid,
|
|
52
|
-
}, dataset: {
|
|
53
|
-
collapsed: false,
|
|
54
|
-
enabled: true,
|
|
55
|
-
displayed: true,
|
|
56
|
-
qrveyid: (_p = uiExtras.column) === null || _p === void 0 ? void 0 : _p.qrveyid,
|
|
57
|
-
label: (_r = (_q = uiExtras.column) === null || _q === void 0 ? void 0 : _q.dataset) === null || _r === void 0 ? void 0 : _r.name,
|
|
58
|
-
linkid: (_s = uiExtras.column) === null || _s === void 0 ? void 0 : _s.linkid,
|
|
59
|
-
} }),
|
|
60
|
-
filterid: undefined,
|
|
61
|
-
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
62
|
-
nullValues: uiExtras.nullValues,
|
|
63
|
-
operator: uiExtras.operator,
|
|
64
|
-
property: uiExtras.property,
|
|
65
|
-
uiValues: getUIValues(uiExtras),
|
|
66
|
-
validator: uiExtras.validator,
|
|
67
|
-
values: getValues(uiExtras),
|
|
68
|
-
};
|
|
69
|
-
uFilter.filterid = getFilterid(uFilter);
|
|
70
|
-
uFilters.push(uFilter);
|
|
71
|
-
}
|
|
72
|
-
if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
|
|
73
|
-
// Restore uiExtras.values array into single IFilterDetail object values array
|
|
74
|
-
if (index > -1)
|
|
75
|
-
uFilters[index].values.push(uiExtras.values[0]);
|
|
76
|
-
const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values), uiExtras.uiValue);
|
|
77
|
-
if (index > -1)
|
|
78
|
-
uFilters[index].values = refinedRankingValues;
|
|
79
|
-
else
|
|
80
|
-
uFilters[uFilters.length - 1].values = refinedRankingValues;
|
|
81
|
-
}
|
|
19
|
+
filterItem.expressions.forEach((expression1) => {
|
|
20
|
+
_hasProperty(expression1, 'expressions') ? expression1.expressions.forEach((expression2) => {
|
|
21
|
+
buildFilterByExpression(expression2, scopeItem, uFilters);
|
|
22
|
+
}) : buildFilterByExpression(expression1, scopeItem, uFilters);
|
|
82
23
|
});
|
|
24
|
+
// (filterItem.expressions[0].expressions as OLD_IFilterExpression[]).forEach((expression: OLD_IFilterExpression) => {
|
|
25
|
+
// buildFilterByExpression(expression, scopeItem, uFilters);
|
|
26
|
+
// });
|
|
83
27
|
});
|
|
84
28
|
}
|
|
85
29
|
});
|
|
86
30
|
return uFilters;
|
|
87
31
|
}
|
|
32
|
+
function buildFilterByExpression(expression, scopeItem, uFilters) {
|
|
33
|
+
const uiExtras = expression.uiExtras;
|
|
34
|
+
const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) : -1;
|
|
35
|
+
if (index === -1 && (!uiExtras.nullValues || expression.validationType !== "IS_EMPTY" /* IS_NULL */)) {
|
|
36
|
+
const uFilter = getFilterByExpression(expression, scopeItem);
|
|
37
|
+
uFilter.filterid = getFilterid(uFilter);
|
|
38
|
+
uFilters.push(uFilter);
|
|
39
|
+
}
|
|
40
|
+
if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
|
|
41
|
+
// Restore uiExtras.values array into single IFilterDetail object values array
|
|
42
|
+
if (index > -1)
|
|
43
|
+
uFilters[index].values.push(uiExtras.values[0]);
|
|
44
|
+
const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values), uiExtras.uiValue);
|
|
45
|
+
if (index > -1)
|
|
46
|
+
uFilters[index].values = refinedRankingValues;
|
|
47
|
+
else
|
|
48
|
+
uFilters[uFilters.length - 1].values = refinedRankingValues;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function getFilterByExpression(expression, scopeItem) {
|
|
52
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
53
|
+
const uiExtras = expression.uiExtras;
|
|
54
|
+
const scopeid = scopeItem.scope !== "GLOBAL" /* GLOBAL */ ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
|
|
55
|
+
const info = !isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
|
|
56
|
+
return {
|
|
57
|
+
collapsed: uiExtras.collapsed,
|
|
58
|
+
column: {
|
|
59
|
+
id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
|
|
60
|
+
formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
|
|
61
|
+
linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
|
|
62
|
+
linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
|
|
63
|
+
qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
|
|
64
|
+
aggregate: (_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label,
|
|
65
|
+
calculation: (_j = (_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.calculation) === null || _j === void 0 ? void 0 : _j.value,
|
|
66
|
+
label: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.text,
|
|
67
|
+
property: uiExtras.column.property,
|
|
68
|
+
sorting: uiExtras.column.sorting,
|
|
69
|
+
outputFormat: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.outputFormat,
|
|
70
|
+
type: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.type,
|
|
71
|
+
},
|
|
72
|
+
dateSection: uiExtras.dateSection,
|
|
73
|
+
displayed: true,
|
|
74
|
+
enabled: expression.enabled,
|
|
75
|
+
extras: Object.assign(Object.assign({}, uiExtras.extras), { panelid: uiExtras.panelid, filterLabel: uiExtras.panelName, info,
|
|
76
|
+
scopeid, scope: scopeItem.scope, section: uiExtras.section, scopeInfo: {
|
|
77
|
+
collapsed: (_o = scopeItem.uiExtras) === null || _o === void 0 ? void 0 : _o.collapsed,
|
|
78
|
+
enabled: scopeItem.enabled,
|
|
79
|
+
displayed: true,
|
|
80
|
+
scope: scopeItem.scope,
|
|
81
|
+
scopeid,
|
|
82
|
+
}, dataset: {
|
|
83
|
+
collapsed: false,
|
|
84
|
+
enabled: true,
|
|
85
|
+
displayed: true,
|
|
86
|
+
qrveyid: (_p = uiExtras.column) === null || _p === void 0 ? void 0 : _p.qrveyid,
|
|
87
|
+
label: (_r = (_q = uiExtras.column) === null || _q === void 0 ? void 0 : _q.dataset) === null || _r === void 0 ? void 0 : _r.name,
|
|
88
|
+
linkid: (_s = uiExtras.column) === null || _s === void 0 ? void 0 : _s.linkid,
|
|
89
|
+
} }),
|
|
90
|
+
filterid: undefined,
|
|
91
|
+
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
92
|
+
nullValues: uiExtras.nullValues,
|
|
93
|
+
operator: uiExtras.operator,
|
|
94
|
+
property: uiExtras.property,
|
|
95
|
+
uiValues: getUIValues(uiExtras),
|
|
96
|
+
validator: uiExtras.validator,
|
|
97
|
+
values: getValues(uiExtras),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
88
100
|
function getValues(uiExtras) {
|
|
89
101
|
if (isNullValidator(uiExtras.validator) && isEmpty(uiExtras.values)) {
|
|
90
102
|
return [{ value: FILTER_VALIDATOR_VALUE[uiExtras.validator].label, enabled: uiExtras.uiValue[0].enabled != null ? uiExtras.uiValue[0].enabled : true }];
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ import { UIToFD } from "./UIToFD";
|
|
|
13
13
|
* @param datasetsInfo Collection of datasets information. If getUIFilterData is true, the datasetsInfo should be mandatory
|
|
14
14
|
* @returns A new filter data structure v2.1
|
|
15
15
|
*/
|
|
16
|
-
export function adaptFilterData(filterData: IFSData | IFUData | OLD_IFilterData, getUIFilterData =
|
|
16
|
+
export function adaptFilterData(filterData: IFSData | IFUData | OLD_IFilterData, getUIFilterData = true, datasetsInfo: IQrveyDataset[] = []): IFSData | IFUData {
|
|
17
17
|
if (isEmpty(filterData)) return;
|
|
18
18
|
filterData = cloneDeep(filterData);
|
|
19
19
|
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// TO Logic structure = Cleaner logic structure
|
|
3
3
|
|
|
4
4
|
import { COLUMN } from "../../constants";
|
|
5
|
-
import { isEmpty, _get } from "../../general";
|
|
5
|
+
import { isEmpty, _get, _hasProperty } from "../../general";
|
|
6
6
|
import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE, FILTER_VALIDATOR_VALUE } from "../constants";
|
|
7
|
-
import { getFilterid, getUIValues, isNullValidator } from "../helpers";
|
|
7
|
+
import { getFilterid, getUIValues, isNullValidator, } from "../helpers";
|
|
8
8
|
import { IFSValueRanking, IFUFlattenedFilter, OLD_IFilterDetail, OLD_IFilterExpression, OLD_IFilterLogic } from "../interfaces";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -19,81 +19,95 @@ export function logicToFlatUI(logics: OLD_IFilterLogic[] = []): IFUFlattenedFilt
|
|
|
19
19
|
logics.forEach(scopeItem => {
|
|
20
20
|
if (scopeItem.filters.length > 0) {
|
|
21
21
|
scopeItem.filters.forEach(filterItem => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const scopeid = scopeItem.scope !== FILTER_SCOPE.GLOBAL ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
|
|
27
|
-
const info = !isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
|
|
28
|
-
const uFilter: IFUFlattenedFilter = {
|
|
29
|
-
collapsed: uiExtras.collapsed,
|
|
30
|
-
column: {
|
|
31
|
-
id: uiExtras.column?.id,
|
|
32
|
-
formulaType: uiExtras.column?.formulaType,
|
|
33
|
-
linkid: uiExtras.column?.linkid,
|
|
34
|
-
linked: uiExtras.column?.linked,
|
|
35
|
-
qrveyid: uiExtras.column?.qrveyid,
|
|
36
|
-
aggregate: uiExtras.column?.aggregate?.label,
|
|
37
|
-
calculation: uiExtras.column?.calculation?.value,
|
|
38
|
-
label: uiExtras.column?.text,
|
|
39
|
-
property: uiExtras.column.property,
|
|
40
|
-
sorting: uiExtras.column.sorting,
|
|
41
|
-
outputFormat: uiExtras.column?.outputFormat,
|
|
42
|
-
type: uiExtras.column?.type,
|
|
43
|
-
},
|
|
44
|
-
dateSection: uiExtras.dateSection,
|
|
45
|
-
displayed: true,
|
|
46
|
-
enabled: expression.enabled,
|
|
47
|
-
extras: {
|
|
48
|
-
...uiExtras.extras,
|
|
49
|
-
panelid: uiExtras.panelid,
|
|
50
|
-
filterLabel: uiExtras.panelName,
|
|
51
|
-
info,
|
|
52
|
-
scopeid,
|
|
53
|
-
scope: scopeItem.scope,
|
|
54
|
-
section: uiExtras.section,
|
|
55
|
-
scopeInfo: {
|
|
56
|
-
collapsed: scopeItem.uiExtras?.collapsed,
|
|
57
|
-
enabled: scopeItem.enabled,
|
|
58
|
-
displayed: true,
|
|
59
|
-
scope: scopeItem.scope,
|
|
60
|
-
scopeid,
|
|
61
|
-
},
|
|
62
|
-
dataset: {
|
|
63
|
-
collapsed: false,
|
|
64
|
-
enabled: true,
|
|
65
|
-
displayed: true,
|
|
66
|
-
qrveyid: uiExtras.column?.qrveyid,
|
|
67
|
-
label: uiExtras.column?.dataset?.name,
|
|
68
|
-
linkid: uiExtras.column?.linkid,
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
filterid: undefined,
|
|
72
|
-
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
73
|
-
nullValues: uiExtras.nullValues,
|
|
74
|
-
operator: uiExtras.operator,
|
|
75
|
-
property: uiExtras.property,
|
|
76
|
-
uiValues: getUIValues(uiExtras as any),
|
|
77
|
-
validator: uiExtras.validator,
|
|
78
|
-
values: getValues(uiExtras),
|
|
79
|
-
};
|
|
80
|
-
uFilter.filterid = getFilterid(uFilter);
|
|
81
|
-
uFilters.push(uFilter);
|
|
82
|
-
}
|
|
83
|
-
if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
|
|
84
|
-
// Restore uiExtras.values array into single IFilterDetail object values array
|
|
85
|
-
if (index > -1) uFilters[index].values.push(uiExtras.values[0]);
|
|
86
|
-
const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values ) as IFSValueRanking[][], uiExtras.uiValue);
|
|
87
|
-
if (index > -1) uFilters[index].values = refinedRankingValues;
|
|
88
|
-
else uFilters[uFilters.length - 1].values = refinedRankingValues;
|
|
89
|
-
}
|
|
22
|
+
filterItem.expressions.forEach((expression1: OLD_IFilterExpression) => {
|
|
23
|
+
_hasProperty(expression1, 'expressions') ? expression1.expressions.forEach((expression2: OLD_IFilterExpression) => {
|
|
24
|
+
buildFilterByExpression(expression2, scopeItem, uFilters);
|
|
25
|
+
}) : buildFilterByExpression(expression1, scopeItem, uFilters);
|
|
90
26
|
});
|
|
27
|
+
// (filterItem.expressions[0].expressions as OLD_IFilterExpression[]).forEach((expression: OLD_IFilterExpression) => {
|
|
28
|
+
// buildFilterByExpression(expression, scopeItem, uFilters);
|
|
29
|
+
// });
|
|
91
30
|
});
|
|
92
31
|
}
|
|
93
32
|
});
|
|
94
33
|
return uFilters;
|
|
95
34
|
}
|
|
96
35
|
|
|
36
|
+
function buildFilterByExpression(expression: OLD_IFilterExpression, scopeItem: OLD_IFilterLogic, uFilters: IFUFlattenedFilter[]) {
|
|
37
|
+
const uiExtras = expression.uiExtras;
|
|
38
|
+
const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) as number : -1;
|
|
39
|
+
if (index === -1 && (!uiExtras.nullValues || expression.validationType !== FILTER_BACKEND_VALIDATOR.IS_NULL)) {
|
|
40
|
+
const uFilter: IFUFlattenedFilter = getFilterByExpression(expression, scopeItem);
|
|
41
|
+
uFilter.filterid = getFilterid(uFilter);
|
|
42
|
+
uFilters.push(uFilter);
|
|
43
|
+
}
|
|
44
|
+
if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
|
|
45
|
+
// Restore uiExtras.values array into single IFilterDetail object values array
|
|
46
|
+
if (index > -1) uFilters[index].values.push(uiExtras.values[0]);
|
|
47
|
+
const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values ) as IFSValueRanking[][], uiExtras.uiValue);
|
|
48
|
+
if (index > -1) uFilters[index].values = refinedRankingValues;
|
|
49
|
+
else uFilters[uFilters.length - 1].values = refinedRankingValues;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function getFilterByExpression(expression: OLD_IFilterExpression, scopeItem: OLD_IFilterLogic) {
|
|
54
|
+
const uiExtras = expression.uiExtras;
|
|
55
|
+
const scopeid = scopeItem.scope !== FILTER_SCOPE.GLOBAL ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
|
|
56
|
+
const info = !isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
|
|
57
|
+
return {
|
|
58
|
+
collapsed: uiExtras.collapsed,
|
|
59
|
+
column: {
|
|
60
|
+
id: uiExtras.column?.id,
|
|
61
|
+
formulaType: uiExtras.column?.formulaType,
|
|
62
|
+
linkid: uiExtras.column?.linkid,
|
|
63
|
+
linked: uiExtras.column?.linked,
|
|
64
|
+
qrveyid: uiExtras.column?.qrveyid,
|
|
65
|
+
aggregate: uiExtras.column?.aggregate?.label,
|
|
66
|
+
calculation: uiExtras.column?.calculation?.value,
|
|
67
|
+
label: uiExtras.column?.text,
|
|
68
|
+
property: uiExtras.column.property,
|
|
69
|
+
sorting: uiExtras.column.sorting,
|
|
70
|
+
outputFormat: uiExtras.column?.outputFormat,
|
|
71
|
+
type: uiExtras.column?.type,
|
|
72
|
+
},
|
|
73
|
+
dateSection: uiExtras.dateSection,
|
|
74
|
+
displayed: true,
|
|
75
|
+
enabled: expression.enabled,
|
|
76
|
+
extras: {
|
|
77
|
+
...uiExtras.extras,
|
|
78
|
+
panelid: uiExtras.panelid,
|
|
79
|
+
filterLabel: uiExtras.panelName,
|
|
80
|
+
info,
|
|
81
|
+
scopeid,
|
|
82
|
+
scope: scopeItem.scope,
|
|
83
|
+
section: uiExtras.section,
|
|
84
|
+
scopeInfo: {
|
|
85
|
+
collapsed: scopeItem.uiExtras?.collapsed,
|
|
86
|
+
enabled: scopeItem.enabled,
|
|
87
|
+
displayed: true,
|
|
88
|
+
scope: scopeItem.scope,
|
|
89
|
+
scopeid,
|
|
90
|
+
},
|
|
91
|
+
dataset: {
|
|
92
|
+
collapsed: false,
|
|
93
|
+
enabled: true,
|
|
94
|
+
displayed: true,
|
|
95
|
+
qrveyid: uiExtras.column?.qrveyid,
|
|
96
|
+
label: uiExtras.column?.dataset?.name,
|
|
97
|
+
linkid: uiExtras.column?.linkid,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
filterid: undefined,
|
|
101
|
+
lookupDisplayIndex: uiExtras.lookupDisplayIndex,
|
|
102
|
+
nullValues: uiExtras.nullValues,
|
|
103
|
+
operator: uiExtras.operator,
|
|
104
|
+
property: uiExtras.property,
|
|
105
|
+
uiValues: getUIValues(uiExtras as any),
|
|
106
|
+
validator: uiExtras.validator,
|
|
107
|
+
values: getValues(uiExtras),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
97
111
|
function getValues(uiExtras: OLD_IFilterDetail) {
|
|
98
112
|
if (isNullValidator(uiExtras.validator) && isEmpty(uiExtras.values)) {
|
|
99
113
|
return [{ value: FILTER_VALIDATOR_VALUE[uiExtras.validator].label, enabled: uiExtras.uiValue[0].enabled != null ? uiExtras.uiValue[0].enabled : true }];
|