@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.
@@ -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 = false, datasetsInfo = []) {
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[0].expressions.forEach((expression) => {
23
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
24
- const uiExtras = expression.uiExtras;
25
- const index = uiExtras.column.type === constants_1.COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) : -1;
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 = false, datasetsInfo = []) {
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[0].expressions.forEach((expression) => {
20
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
21
- const uiExtras = expression.uiExtras;
22
- const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) : -1;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/utils",
3
- "version": "1.1.2-0",
3
+ "version": "1.1.2-1",
4
4
  "description": "Helper, Utils for all Qrvey Projects",
5
5
  "homepage": "https://bitbucket.org/qrvey/qrvey_utils/wiki/Home",
6
6
  "main": "dist/index.js",
@@ -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 = false, datasetsInfo: IQrveyDataset[] = []): IFSData | IFUData {
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
- (filterItem.expressions[0].expressions as OLD_IFilterExpression[]).forEach((expression: OLD_IFilterExpression) => {
23
- const uiExtras = expression.uiExtras;
24
- const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) as number : -1;
25
- if (index === -1 && (!uiExtras.nullValues || expression.validationType !== FILTER_BACKEND_VALIDATOR.IS_NULL)) {
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 }];