@qrvey/utils 1.4.0-3 → 1.4.0-6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/column_format/helpers/defineTableChartFormat.js +3 -3
  3. package/dist/cjs/column_format/helpers/defineXYChartFormat.js +30 -20
  4. package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -3
  5. package/dist/cjs/dates/adapters/mdyDateToDate.d.ts +1 -1
  6. package/dist/cjs/dates/adapters/mdyDateToDate.js +12 -5
  7. package/dist/cjs/dates/adapters/monthYearToDate.d.ts +1 -1
  8. package/dist/cjs/dates/adapters/monthYearToDate.js +8 -7
  9. package/dist/cjs/dates/adapters/quarterYearToDate.d.ts +1 -1
  10. package/dist/cjs/dates/adapters/quarterYearToDate.js +8 -7
  11. package/dist/cjs/dates/adapters/weekYearToDate.d.ts +1 -1
  12. package/dist/cjs/dates/adapters/weekYearToDate.js +20 -19
  13. package/dist/cjs/dates/adapters/yearToDate.d.ts +1 -1
  14. package/dist/cjs/dates/adapters/yearToDate.js +7 -6
  15. package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
  16. package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.js +21 -0
  17. package/dist/cjs/dates/helpers/getDateFormatByProperty.js +2 -31
  18. package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
  19. package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
  20. package/dist/cjs/dates/helpers/getDatePickerPickLevel.js +7 -1
  21. package/dist/cjs/dates/helpers/getSeparatorByDateFormat.js +1 -18
  22. package/dist/cjs/dates/helpers/index.d.ts +0 -1
  23. package/dist/cjs/dates/helpers/index.js +0 -1
  24. package/dist/cjs/dates/helpers/validateDate.js +14 -3
  25. package/dist/cjs/dates/range/getDateRange.js +15 -25
  26. package/dist/cjs/dates/relative/RelativeStatementAdapter.js +15 -10
  27. package/dist/cjs/dates/relative/helpers/getStatementCase.js +10 -7
  28. package/dist/cjs/filters/adapters/adaptDateGroupingProperty.js +9 -13
  29. package/dist/cjs/filters/adapters/logicToUI.js +1 -2
  30. package/dist/cjs/filters/adapters/transformFilters.js +1 -3
  31. package/dist/cjs/filters/helpers/OLD_getAggFilters.js +1 -3
  32. package/dist/cjs/filters/helpers/backend/buildFilters.js +5 -2
  33. package/dist/cjs/filters/helpers/backend/getBackendGroupValue.js +1 -2
  34. package/dist/cjs/filters/helpers/backend/getBackendValues.js +53 -31
  35. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
  36. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.js +57 -20
  37. package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +1 -2
  38. package/dist/cjs/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
  39. package/dist/cjs/filters/helpers/common/getFiltersByParams.js +1 -2
  40. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +0 -1
  41. package/dist/cjs/filters/helpers/getScopesByHierarchy.js +7 -5
  42. package/dist/cjs/filters/helpers/ui/getUIValues.js +76 -85
  43. package/dist/cjs/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
  44. package/dist/cjs/filters/services/UChartApi.d.ts +17 -3
  45. package/dist/cjs/filters/services/UChartApi.js +49 -26
  46. package/dist/cjs/filters/services/UChartPaginationApi.d.ts +17 -3
  47. package/dist/cjs/filters/services/UChartPaginationApi.js +45 -24
  48. package/dist/cjs/format/localization.js +1 -1
  49. package/dist/cjs/general/mix/isNaNV2.d.ts +10 -3
  50. package/dist/cjs/general/mix/isNaNV2.js +11 -4
  51. package/dist/cjs/general/string/parseUrl.js +2 -2
  52. package/dist/cjs/globalization/helpers/getI18nCalendar.js +10 -7
  53. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
  54. package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
  55. package/dist/cjs/globalization/service/i18nextBuilder.js +1 -3
  56. package/dist/cjs/globalization/service/initI18n.js +1 -12
  57. package/dist/cjs/qrvey/helpers/getDataAnswersByColumn.js +6 -5
  58. package/dist/cjs/qrvey/helpers/getExpressionAnswers.js +15 -11
  59. package/dist/cjs/tokens/isTokenLabel.js +1 -2
  60. package/dist/column_format/helpers/defineTableChartFormat.js +3 -3
  61. package/dist/column_format/helpers/defineXYChartFormat.js +15 -5
  62. package/dist/columns/helpers/getDatasetColumn.js +1 -3
  63. package/dist/dates/adapters/mdyDateToDate.d.ts +1 -1
  64. package/dist/dates/adapters/mdyDateToDate.js +12 -5
  65. package/dist/dates/adapters/monthYearToDate.d.ts +1 -1
  66. package/dist/dates/adapters/monthYearToDate.js +8 -7
  67. package/dist/dates/adapters/quarterYearToDate.d.ts +1 -1
  68. package/dist/dates/adapters/quarterYearToDate.js +8 -7
  69. package/dist/dates/adapters/weekYearToDate.d.ts +1 -1
  70. package/dist/dates/adapters/weekYearToDate.js +20 -19
  71. package/dist/dates/adapters/yearToDate.d.ts +1 -1
  72. package/dist/dates/adapters/yearToDate.js +7 -6
  73. package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
  74. package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.js +18 -0
  75. package/dist/dates/helpers/getDateFormatByProperty.js +2 -31
  76. package/dist/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
  77. package/dist/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
  78. package/dist/dates/helpers/getDatePickerPickLevel.js +7 -1
  79. package/dist/dates/helpers/getSeparatorByDateFormat.js +1 -18
  80. package/dist/dates/helpers/index.d.ts +0 -1
  81. package/dist/dates/helpers/index.js +0 -1
  82. package/dist/dates/helpers/validateDate.js +14 -3
  83. package/dist/dates/range/getDateRange.js +15 -25
  84. package/dist/dates/relative/RelativeStatementAdapter.js +15 -10
  85. package/dist/dates/relative/helpers/getStatementCase.js +10 -7
  86. package/dist/filters/adapters/adaptDateGroupingProperty.js +9 -13
  87. package/dist/filters/adapters/logicToUI.js +1 -2
  88. package/dist/filters/adapters/transformFilters.js +1 -3
  89. package/dist/filters/helpers/OLD_getAggFilters.js +1 -3
  90. package/dist/filters/helpers/backend/buildFilters.js +5 -2
  91. package/dist/filters/helpers/backend/getBackendGroupValue.js +1 -2
  92. package/dist/filters/helpers/backend/getBackendValues.js +53 -31
  93. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
  94. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.js +56 -19
  95. package/dist/filters/helpers/common/excludeFiltersByParams.js +1 -2
  96. package/dist/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
  97. package/dist/filters/helpers/common/getFiltersByParams.js +1 -2
  98. package/dist/filters/helpers/getAggFiltersFromFilterData.js +0 -1
  99. package/dist/filters/helpers/getScopesByHierarchy.js +7 -5
  100. package/dist/filters/helpers/ui/getUIValues.js +76 -85
  101. package/dist/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
  102. package/dist/filters/services/UChartApi.d.ts +17 -3
  103. package/dist/filters/services/UChartApi.js +49 -26
  104. package/dist/filters/services/UChartPaginationApi.d.ts +17 -3
  105. package/dist/filters/services/UChartPaginationApi.js +45 -24
  106. package/dist/format/localization.js +1 -1
  107. package/dist/general/mix/isNaNV2.d.ts +10 -3
  108. package/dist/general/mix/isNaNV2.js +11 -4
  109. package/dist/general/string/parseUrl.js +2 -2
  110. package/dist/globalization/helpers/getI18nCalendar.js +10 -7
  111. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
  112. package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
  113. package/dist/globalization/service/i18nextBuilder.js +1 -3
  114. package/dist/globalization/service/initI18n.js +1 -12
  115. package/dist/qrvey/helpers/getDataAnswersByColumn.js +6 -5
  116. package/dist/qrvey/helpers/getExpressionAnswers.js +14 -10
  117. package/dist/tokens/isTokenLabel.js +1 -2
  118. package/package.json +4 -4
  119. package/dist/cjs/dates/helpers/validateDateByDateFormat.d.ts +0 -8
  120. package/dist/cjs/dates/helpers/validateDateByDateFormat.js +0 -27
  121. package/dist/dates/helpers/validateDateByDateFormat.d.ts +0 -8
  122. package/dist/dates/helpers/validateDateByDateFormat.js +0 -23
@@ -54,11 +54,13 @@ class RelativeStatementAdapter {
54
54
  if (typeof this.statement === "string")
55
55
  return RelativeStatementAdapter.replaceNowToken(this.statement, this.now);
56
56
  const value = this._statementToRange();
57
- const path = this.cursor === RELATIVE_CURSOR_1.RELATIVE_CURSOR.LAST
58
- ? "gte"
59
- : this.cursor === RELATIVE_CURSOR_1.RELATIVE_CURSOR.NEXT
60
- ? "lte"
61
- : "";
57
+ let path = "";
58
+ if (this.cursor === RELATIVE_CURSOR_1.RELATIVE_CURSOR.LAST) {
59
+ path = "gte";
60
+ }
61
+ else if (this.cursor === RELATIVE_CURSOR_1.RELATIVE_CURSOR.NEXT) {
62
+ path = "lte";
63
+ }
62
64
  return (0, get_1._get)(value, path, new Date());
63
65
  }
64
66
  /**
@@ -194,11 +196,14 @@ class RelativeStatementAdapter {
194
196
  const startOrEndOf = resolveAsCalendar
195
197
  ? loweredUnit
196
198
  : DATE_GROUPING_PROPERTY_1.DATE_GROUPING_PROPERTY.DAY;
197
- return (setTo === COMMON_1.COMMON_CONSTANTS.START
198
- ? date.startOf(startOrEndOf)
199
- : setTo === COMMON_1.COMMON_CONSTANTS.END
200
- ? date.endOf(startOrEndOf)
201
- : date).format(DATE_FORMATS_1.DATETIME_FORMAT);
199
+ let absoluteDate = date;
200
+ if (setTo === COMMON_1.COMMON_CONSTANTS.START) {
201
+ absoluteDate = date.startOf(startOrEndOf);
202
+ }
203
+ else if (setTo === COMMON_1.COMMON_CONSTANTS.END) {
204
+ absoluteDate = date.endOf(startOrEndOf);
205
+ }
206
+ return absoluteDate.format(DATE_FORMATS_1.DATETIME_FORMAT);
202
207
  }
203
208
  }
204
209
  exports.default = RelativeStatementAdapter;
@@ -9,12 +9,15 @@ const COMMON_1 = require("../constants/COMMON");
9
9
  * @returns {number}
10
10
  */
11
11
  function getStatementCase(includeCurrent, isCalendarDate) {
12
- return includeCurrent && isCalendarDate
13
- ? COMMON_1.COMMON_CONSTANTS.INCLUSIVE_AND_CALENDAR
14
- : !includeCurrent && isCalendarDate
15
- ? COMMON_1.COMMON_CONSTANTS.EXCLUSIVE_AND_CALENDAR
16
- : !includeCurrent && !isCalendarDate
17
- ? COMMON_1.COMMON_CONSTANTS.EXCLUSIVE_AND_ROLLING
18
- : COMMON_1.COMMON_CONSTANTS.INCLUSIVE_AND_ROLLING;
12
+ if (includeCurrent && isCalendarDate) {
13
+ return COMMON_1.COMMON_CONSTANTS.INCLUSIVE_AND_CALENDAR;
14
+ }
15
+ else if (!includeCurrent && isCalendarDate) {
16
+ return COMMON_1.COMMON_CONSTANTS.EXCLUSIVE_AND_CALENDAR;
17
+ }
18
+ else if (!includeCurrent && !isCalendarDate) {
19
+ return COMMON_1.COMMON_CONSTANTS.EXCLUSIVE_AND_ROLLING;
20
+ }
21
+ return COMMON_1.COMMON_CONSTANTS.INCLUSIVE_AND_ROLLING;
19
22
  }
20
23
  exports.getStatementCase = getStatementCase;
@@ -10,18 +10,14 @@ const DATE_DISTINCT_TIME_PROPERTY_1 = require("../../dates/constants/DATE_DISTIN
10
10
  * @returns a adapted property
11
11
  */
12
12
  function adaptDateGroupingProperty(property) {
13
- return property === "p&quarter"
14
- ? DATE_DISTINCT_PROPERTY_1.DATE_DISTINCT_PROPERTY.YEAR_QUARTER
15
- : property === "p&month"
16
- ? DATE_DISTINCT_PROPERTY_1.DATE_DISTINCT_PROPERTY.YEAR_MONTH
17
- : property === "p&day"
18
- ? DATE_DISTINCT_PROPERTY_1.DATE_DISTINCT_PROPERTY.MONTH_DAY
19
- : property === "p&hour"
20
- ? DATE_DISTINCT_TIME_PROPERTY_1.DATE_DISTINCT_TIME_PROPERTY.DAY_HOUR
21
- : property === "p&minute"
22
- ? DATE_DISTINCT_TIME_PROPERTY_1.DATE_DISTINCT_TIME_PROPERTY.HOUR_MINUTE
23
- : property === "p&second"
24
- ? DATE_DISTINCT_TIME_PROPERTY_1.DATE_DISTINCT_TIME_PROPERTY.MINUTE_SECOND
25
- : property;
13
+ return ODD_PROPERTY[property];
26
14
  }
27
15
  exports.adaptDateGroupingProperty = adaptDateGroupingProperty;
16
+ const ODD_PROPERTY = {
17
+ "p&quarter": DATE_DISTINCT_PROPERTY_1.DATE_DISTINCT_PROPERTY.YEAR_QUARTER,
18
+ "p&month": DATE_DISTINCT_PROPERTY_1.DATE_DISTINCT_PROPERTY.YEAR_MONTH,
19
+ "p&day": DATE_DISTINCT_PROPERTY_1.DATE_DISTINCT_PROPERTY.MONTH_DAY,
20
+ "p&hour": DATE_DISTINCT_TIME_PROPERTY_1.DATE_DISTINCT_TIME_PROPERTY.DAY_HOUR,
21
+ "p&minute": DATE_DISTINCT_TIME_PROPERTY_1.DATE_DISTINCT_TIME_PROPERTY.HOUR_MINUTE,
22
+ "p&second": DATE_DISTINCT_TIME_PROPERTY_1.DATE_DISTINCT_TIME_PROPERTY.MINUTE_SECOND,
23
+ };
@@ -13,7 +13,6 @@ const logicToFlatUI_1 = require("./logicToFlatUI");
13
13
  */
14
14
  function logicToUI(logics = [], section = FILTER_SECTION_1.FILTER_SECTION.ANYWHERE, enabled = true, version = FILTER_STRUCTURE_VERSION_1.FILTER_STRUCTURE_VERSION) {
15
15
  const flatUiFilters = (0, logicToFlatUI_1.logicToFlatUI)(logics);
16
- const uiFilters = (0, flatUIToUI_1.flatUIToUI)(flatUiFilters, section, enabled, version);
17
- return uiFilters;
16
+ return (0, flatUIToUI_1.flatUIToUI)(flatUiFilters, section, enabled, version);
18
17
  }
19
18
  exports.logicToUI = logicToUI;
@@ -343,7 +343,7 @@ function getFilterEqualValues(values, columnType, destination = "value", formula
343
343
  }))
344
344
  : getRankingFBvalues(values);
345
345
  }
346
- const formattedValues = destination === "value"
346
+ return destination === "value"
347
347
  ? values.map((item) => {
348
348
  let value = item.value;
349
349
  if ([columnType, formulaType].includes("DATE") &&
@@ -370,7 +370,6 @@ function getFilterEqualValues(values, columnType, destination = "value", formula
370
370
  valueid: columnType === "EXPRESSION" ? undefined : item.id || item.answerid,
371
371
  enabled: item.enabled || true,
372
372
  }));
373
- return formattedValues;
374
373
  }
375
374
  function getFormulaType(oldFiltersItem) {
376
375
  if (oldFiltersItem.formulaType)
@@ -381,7 +380,6 @@ function getFormulaType(oldFiltersItem) {
381
380
  : oldFiltersItem.type === "DATE"
382
381
  ? "date"
383
382
  : "string";
384
- return;
385
383
  }
386
384
  function getExpressions(oldFiltersItem, validations, scopeLabel, scopeid, section) {
387
385
  const expressions = [];
@@ -36,7 +36,6 @@ function getAggFilters(logics = [], summaries = []) {
36
36
  value: expression.value,
37
37
  };
38
38
  }
39
- return;
40
39
  })
41
40
  .filter(Boolean),
42
41
  });
@@ -53,7 +52,7 @@ exports.getAggFilters = getAggFilters;
53
52
  */
54
53
  function getAggregateFilters(logics = []) {
55
54
  logics = (0, cloneDeep_1.cloneDeep)(logics);
56
- const aggregateLogics = logics.reduce((newLogics, logic) => {
55
+ return logics.reduce((newLogics, logic) => {
57
56
  if (!logic)
58
57
  return newLogics;
59
58
  logic.filters.forEach((filter, index) => {
@@ -70,7 +69,6 @@ function getAggregateFilters(logics = []) {
70
69
  newLogics.push(logic);
71
70
  return newLogics;
72
71
  }, []);
73
- return aggregateLogics;
74
72
  }
75
73
  function concatAggFilters(aggFilters, operator = FILTER_OPERATOR_1.FILTER_OPERATOR.AND) {
76
74
  const expressions = aggFilters.filter(Boolean);
@@ -65,7 +65,10 @@ function getColumnExpressions(group, getFilter) {
65
65
  }
66
66
  }
67
67
  function logicToNumeric(operator, priority = false) {
68
- return operator === FILTER_OPERATOR_1.FILTER_OPERATOR.AND ? "*" : priority ? "/" : "+";
68
+ if (operator === FILTER_OPERATOR_1.FILTER_OPERATOR.AND) {
69
+ return "*";
70
+ }
71
+ return priority ? "/" : "+";
69
72
  }
70
73
  function numericExpression(filters, groupColumns = false) {
71
74
  let expression = "";
@@ -75,5 +78,5 @@ function numericExpression(filters, groupColumns = false) {
75
78
  const operator = logicToNumeric(item.operator, groupColumns && ((_a = item.column) === null || _a === void 0 ? void 0 : _a.id) === (nextColumn === null || nextColumn === void 0 ? void 0 : nextColumn.id));
76
79
  expression += `${item.filterid}${operator}`;
77
80
  });
78
- return expression.substr(0, expression.length - 1);
81
+ return expression.substring(0, expression.length - 1);
79
82
  }
@@ -13,8 +13,7 @@ function getBackendGroupValue(filter) {
13
13
  if ((0, isEmpty_1.isEmpty)(filter.column.aggregate) &&
14
14
  (0, isDateColumn_1.isDateColumn)(filter.column) &&
15
15
  filter.property != null) {
16
- const property = (0, adaptDateGroupingProperty_1.adaptDateGroupingProperty)(filter.property);
17
- return property;
16
+ return (0, adaptDateGroupingProperty_1.adaptDateGroupingProperty)(filter.property);
18
17
  }
19
18
  }
20
19
  exports.getBackendGroupValue = getBackendGroupValue;
@@ -16,60 +16,82 @@ function getBackendValues(filter) {
16
16
  switch (filter.validator) {
17
17
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS:
18
18
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_EQUAL:
19
- if (filter.column.type === COLUMN_1.COLUMN.RANKING &&
20
- (0, isEmpty_1.isEmpty)(filter.column.aggregate))
21
- return getRankingValues(values);
22
- return getResultValues(values, filter);
23
19
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.CONTAINS:
24
20
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_CONTAIN:
25
21
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.STARTS_WITH:
26
22
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_START_WITH:
27
23
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.ENDS_WITH:
28
24
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_END_WITH:
29
- return values.map((value) => value.enabled ? value.value : undefined);
25
+ if (filter.column.type === COLUMN_1.COLUMN.RANKING &&
26
+ (0, isEmpty_1.isEmpty)(filter.column.aggregate))
27
+ return getRankingValues(values);
28
+ return getResultValues(values, filter);
30
29
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BETWEEN_INCLUSIVE:
31
- return values
32
- .map((value) => value.enabled ? { lte: value.max, gte: value.min } : undefined)
33
- .filter(Boolean);
30
+ return getExclusiveRange(values);
34
31
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BETWEEN_EXCLUSIVE:
35
- return values
36
- .map((value) => value.enabled ? { lt: value.max, gt: value.min } : undefined)
37
- .filter(Boolean);
32
+ return getInclusiveRange(values);
38
33
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BEFORE:
39
34
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.LESS_THAN:
40
- return values
41
- .map((value) => (value.enabled ? { lt: value.max } : undefined))
42
- .filter(Boolean);
35
+ return getBeforeValues(values);
43
36
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BEFORE_ON:
44
37
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.LESS_THAN_EQUAL:
45
- return values
46
- .map((value) => (value.enabled ? { lte: value.max } : undefined))
47
- .filter(Boolean);
38
+ return getBeforeOnValues(values);
48
39
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.AFTER:
49
40
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.GREATER_THAN:
50
- return values
51
- .map((value) => (value.enabled ? { gt: value.min } : undefined))
52
- .filter(Boolean);
41
+ return getAfterValues(values);
53
42
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.AFTER_ON:
54
43
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.GREATER_THAN_EQUAL:
55
- return values
56
- .map((value) => (value.enabled ? { gte: value.min } : undefined))
57
- .filter(Boolean);
44
+ return getAfterOnValues(values);
58
45
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IS_NULL:
59
- case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IS_NOT_NULL: {
60
- const addValue = values.length > 0 &&
61
- values.every((value) => value.enabled);
62
- return addValue ? [FILTER_VALIDATOR_INFO_1.FILTER_VALIDATOR_INFO[filter.validator].label] : [];
63
- }
46
+ case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IS_NOT_NULL:
47
+ return getNullValues(values, filter);
64
48
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IN:
65
- return values
66
- .map((value) => (value.enabled ? value : undefined))
67
- .filter(Boolean);
49
+ return getInValues(values);
68
50
  default:
69
51
  return [];
70
52
  }
71
53
  }
72
54
  exports.getBackendValues = getBackendValues;
55
+ function getExclusiveRange(values) {
56
+ return values
57
+ .map((value) => getValue(value, { lte: value.max, gte: value.min }))
58
+ .filter(Boolean);
59
+ }
60
+ function getInclusiveRange(values) {
61
+ return values
62
+ .map((value) => getValue(value, { lt: value.max, gt: value.min }))
63
+ .filter(Boolean);
64
+ }
65
+ function getBeforeValues(values) {
66
+ return values
67
+ .map((value) => getValue(value, { lt: value.max }))
68
+ .filter(Boolean);
69
+ }
70
+ function getBeforeOnValues(values) {
71
+ return values
72
+ .map((value) => getValue(value, { lte: value.max }))
73
+ .filter(Boolean);
74
+ }
75
+ function getAfterValues(values) {
76
+ return values
77
+ .map((value) => getValue(value, { gt: value.min }))
78
+ .filter(Boolean);
79
+ }
80
+ function getAfterOnValues(values) {
81
+ return values
82
+ .map((value) => getValue(value, { gte: value.min }))
83
+ .filter(Boolean);
84
+ }
85
+ function getNullValues(values, filter) {
86
+ const addValue = values.length > 0 && values.every((value) => value.enabled);
87
+ return addValue ? [FILTER_VALIDATOR_INFO_1.FILTER_VALIDATOR_INFO[filter.validator].label] : [];
88
+ }
89
+ function getInValues(values) {
90
+ return values.map((value) => getValue(value, value)).filter(Boolean);
91
+ }
92
+ function getValue(objectValue, value) {
93
+ return objectValue.enabled ? value : undefined;
94
+ }
73
95
  /**
74
96
  * Gets the expression values. Depending on the column type
75
97
  * @private
@@ -5,8 +5,8 @@ import { IFFGetLogicByDatasetsColumns } from "../../interfaces/functions/IFFGetL
5
5
  * @todo MODULE NO READY
6
6
  * Filters the logic by a datasets array
7
7
  * If an qrveyid is not provided in the expression a the filter passes normally
8
- * @param logic The logic of the filter
9
- * @param datasets The collection of datasets
8
+ * @param {IFBLogic[]} logic The logic of the filters
9
+ * @param {IDataset[]} datasets The collection of datasets
10
10
  * @returns a new filtered logic
11
11
  */
12
12
  export declare function getLogicByDatasetsColumns(logic: IFBLogic[], datasets?: IDataset[], settings?: IFFGetLogicByDatasetsColumns): IFBLogic[];
@@ -8,8 +8,8 @@ const hasProperty_1 = require("../../../general/object/hasProperty");
8
8
  * @todo MODULE NO READY
9
9
  * Filters the logic by a datasets array
10
10
  * If an qrveyid is not provided in the expression a the filter passes normally
11
- * @param logic The logic of the filter
12
- * @param datasets The collection of datasets
11
+ * @param {IFBLogic[]} logic The logic of the filters
12
+ * @param {IDataset[]} datasets The collection of datasets
13
13
  * @returns a new filtered logic
14
14
  */
15
15
  function getLogicByDatasetsColumns(logic, datasets = [], settings) {
@@ -18,28 +18,65 @@ function getLogicByDatasetsColumns(logic, datasets = [], settings) {
18
18
  if ((0, isEmpty_1.isEmpty)(datasets))
19
19
  return logic;
20
20
  settings = getGetLogicByDatasetsSettings(settings);
21
- return logic.map((_l) => (Object.assign(Object.assign({}, _l), { filters: (0, filterNestedTree_1.filterNestedTree)(_l.filters, "expressions", (expression) => {
22
- const letQrveyidPass = settings.letPassUndefinedProperties.qrveyid ||
23
- (0, hasProperty_1._hasProperty)(expression, "qrveyid");
24
- let letQuestionidPass = settings.letPassUndefinedProperties.questionid ||
25
- (0, hasProperty_1._hasProperty)(expression, "questionid");
26
- const dataset = letQrveyidPass
27
- ? datasets.find((_data) => _data.qrveyid === expression.qrveyid)
28
- : undefined;
29
- if (!(0, isEmpty_1.isEmpty)(dataset)) {
30
- const column = letQuestionidPass
31
- ? (dataset.options || []).find((option) => option.id === expression.questionid)
32
- : undefined;
33
- letQuestionidPass = letQuestionidPass || !(0, isEmpty_1.isEmpty)(column);
34
- }
35
- return letQrveyidPass && !(0, isEmpty_1.isEmpty)(dataset) && letQuestionidPass;
36
- }) })));
21
+ return logic.map((_l) => (Object.assign(Object.assign({}, _l), { filters: (0, filterNestedTree_1.filterNestedTree)(_l.filters, "expressions", filterCallback(settings, datasets)) })));
37
22
  }
38
23
  exports.getLogicByDatasetsColumns = getLogicByDatasetsColumns;
24
+ /**
25
+ * Runs the function for the callback
26
+ * @param {IFFGetLogicByDatasetsColumns} settings the settings for the helper
27
+ * @param {IDataset[]} datasets The dataset collection
28
+ * @returns
29
+ */
30
+ function filterCallback(settings, datasets = []) {
31
+ return (expression) => {
32
+ const letQrveyidPass = getLetQrveyidPass(expression, settings);
33
+ let letQuestionidPass = getLetQuestionidPass(expression, settings);
34
+ const dataset = getDataset(expression, letQrveyidPass, datasets);
35
+ if (!(0, isEmpty_1.isEmpty)(dataset)) {
36
+ const column = letQuestionidPass
37
+ ? (dataset.options || []).find((option) => option.id === expression.questionid)
38
+ : undefined;
39
+ letQuestionidPass = letQuestionidPass || !(0, isEmpty_1.isEmpty)(column);
40
+ }
41
+ return letQrveyidPass && !(0, isEmpty_1.isEmpty)(dataset) && letQuestionidPass;
42
+ };
43
+ }
44
+ /**
45
+ * Gets the letQrveyidPass flag
46
+ * @param {IFBExpression} expression the logic expression of the filter
47
+ * @param {IFFGetLogicByDatasetsColumns} settings the settings for the helper
48
+ * @returns {boolean} true: the qrveyid will be passed
49
+ */
50
+ function getLetQrveyidPass(expression, settings) {
51
+ return (settings.letPassUndefinedProperties.qrveyid ||
52
+ (0, hasProperty_1._hasProperty)(expression, "qrveyid"));
53
+ }
54
+ /**
55
+ * Gets the letQuestionidPass flag
56
+ * @param {IFBExpression} expression the logic expression of the filter
57
+ * @param {IFFGetLogicByDatasetsColumns} settings the settings for the helper
58
+ * @returns {boolean} true: the questionid will be passed
59
+ */
60
+ function getLetQuestionidPass(expression, settings) {
61
+ return (settings.letPassUndefinedProperties.questionid ||
62
+ (0, hasProperty_1._hasProperty)(expression, "questionid"));
63
+ }
64
+ /**
65
+ * Gets the dataset related to the expression
66
+ * @param {IFBExpression} expression the logic expression of the filter
67
+ * @param {boolean} letQrveyidPass flag that allows perform the condition to compare the qrveyid with the datasets
68
+ * @param {IDataset[]} datasets The dataset collection
69
+ * @returns {IDataset} the dataset object
70
+ */
71
+ function getDataset(expression, letQrveyidPass, datasets = []) {
72
+ return letQrveyidPass
73
+ ? datasets.find((_data) => _data.qrveyid === expression.qrveyid)
74
+ : undefined;
75
+ }
39
76
  /**
40
77
  * Gets the default settings for the getLogicByDatasetsColumn function
41
- * @param settings the settings given by the implementer
42
- * @returns an object with all properties set
78
+ * @param {IFFGetLogicByDatasetsColumns} settings the settings for the helper given by the implementer
79
+ * @returns {IFFGetLogicByDatasetsColumns} an object with all properties set
43
80
  */
44
81
  function getGetLogicByDatasetsSettings(settings) {
45
82
  var _a, _b, _c, _d, _e;
@@ -34,8 +34,7 @@ function excludeFiltersByParams(filterData, params) {
34
34
  return Object.assign(Object.assign({}, filter), { values: (filter.values || [])
35
35
  .map((value) => {
36
36
  if (Array.isArray(value) && value.length > 0) {
37
- const rankingValues = value;
38
- return rankingValues
37
+ return value
39
38
  .map((rValue) => {
40
39
  if (params.enableds == null ||
41
40
  params.enableds === rValue.enabled)
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFiltersByDatasetsColumns = void 0;
4
+ const getDatasetColumn_1 = require("../../../columns/helpers/getDatasetColumn");
4
5
  const isEmpty_1 = require("../../../general/mix/isEmpty");
6
+ const getDatasetByColumn_1 = require("../../../qrvey/helpers/getDatasetByColumn");
5
7
  /**
6
8
  * Filtering the filters by the columns of datasets.
7
9
  * Module specially for CLS.
@@ -14,26 +16,34 @@ function getFiltersByDatasetsColumns(data, datasets = []) {
14
16
  return;
15
17
  if ((0, isEmpty_1.isEmpty)(datasets))
16
18
  return data;
17
- const newData = Object.assign(Object.assign({}, data), { scopes: data.scopes
18
- .map((scope) => (Object.assign(Object.assign({}, scope), { datasets: scope.datasets
19
- .map((filterDataset) => {
20
- const dataset = datasets.find((_data) => _data.qrveyid === filterDataset.qrveyid);
21
- if (!(0, isEmpty_1.isEmpty)(dataset)) {
22
- return Object.assign(Object.assign({}, filterDataset), { filters: filterDataset.filters
23
- .map((filter) => {
24
- const column = (dataset.options || []).find((cInfo) => cInfo.id === filter.column.id &&
25
- cInfo.qrveyid === filter.column.qrveyid);
26
- if (!(0, isEmpty_1.isEmpty)(column)) {
27
- return Object.assign({}, filter);
28
- }
29
- })
30
- .filter(Boolean) });
31
- }
32
- })
33
- .filter((dataset) => !(0, isEmpty_1.isEmpty)(dataset) && dataset.filters.length > 0) })))
34
- .filter((scope) => !(0, isEmpty_1.isEmpty)(scope) && scope.datasets.length > 0) });
19
+ const newData = Object.assign(Object.assign({}, data), { scopes: getScopes(data.scopes, datasets) });
35
20
  if (!(0, isEmpty_1.isEmpty)(newData) && newData.scopes.length > 0) {
36
21
  return newData;
37
22
  }
38
23
  }
39
24
  exports.getFiltersByDatasetsColumns = getFiltersByDatasetsColumns;
25
+ function getScopes(scopes, datasets = []) {
26
+ return scopes
27
+ .map((scope) => (Object.assign(Object.assign({}, scope), { datasets: getDatasets(scope.datasets, datasets) })))
28
+ .filter((scope) => !(0, isEmpty_1.isEmpty)(scope) && scope.datasets.length > 0);
29
+ }
30
+ function getDatasets(scopeDatasets, datasets) {
31
+ return scopeDatasets
32
+ .map((scopeDataset) => {
33
+ const dataset = (0, getDatasetByColumn_1.getDatasetByColumn)({ qrveyid: scopeDataset.qrveyid }, datasets);
34
+ if (!(0, isEmpty_1.isEmpty)(dataset)) {
35
+ return Object.assign(Object.assign({}, scopeDataset), { filters: getFilters(scopeDataset.filters, dataset) });
36
+ }
37
+ })
38
+ .filter((dataset) => !(0, isEmpty_1.isEmpty)(dataset) && dataset.filters.length > 0);
39
+ }
40
+ function getFilters(filters, dataset) {
41
+ return filters
42
+ .map((filter) => {
43
+ const column = (0, getDatasetColumn_1.getDatasetColumn)(filter.column, dataset);
44
+ if (!(0, isEmpty_1.isEmpty)(column)) {
45
+ return Object.assign({}, filter);
46
+ }
47
+ })
48
+ .filter(Boolean);
49
+ }
@@ -42,8 +42,7 @@ function getFiltersByParams(filterData, params, settings) {
42
42
  return Object.assign(Object.assign({}, filter), { values: (filter.values || [])
43
43
  .map((value) => {
44
44
  if (Array.isArray(value) && value.length > 0) {
45
- const rankingValues = value;
46
- return rankingValues
45
+ return value
47
46
  .map((rValue) => {
48
47
  if (!(0, hasProperty_1._hasProperty)(params, "enableds") ||
49
48
  !(0, hasProperty_1._hasProperty)(params.enableds, "values") ||
@@ -14,6 +14,5 @@ function getAggFiltersFromFilterData(filterData, _summaries) {
14
14
  filterData = Object.assign({}, (0, getFiltersByAggregateColumn_1.getFiltersByAggregateColumn)(filterData));
15
15
  if ((0, isEmpty_1.isEmpty)(filterData))
16
16
  return;
17
- return;
18
17
  }
19
18
  exports.getAggFiltersFromFilterData = getAggFiltersFromFilterData;
@@ -11,10 +11,12 @@ const FILTER_SCOPE_1 = require("../constants/common/FILTER_SCOPE");
11
11
  function getScopesByHierarchy(scopes = [], currentScope = FILTER_SCOPE_1.FILTER_SCOPE.GLOBAL) {
12
12
  const scopeIndex = scopes.findIndex((s) => s.label === currentScope);
13
13
  const chartScopeIndex = scopes.findIndex((s) => s.label === FILTER_SCOPE_1.FILTER_SCOPE.CHART);
14
- return scopeIndex !== -1
15
- ? scopes.slice(0, scopeIndex)
16
- : chartScopeIndex !== -1
17
- ? scopes.slice(0, chartScopeIndex)
18
- : [];
14
+ if (scopeIndex !== -1) {
15
+ return scopes.slice(0, scopeIndex);
16
+ }
17
+ else if (chartScopeIndex !== -1) {
18
+ return scopes.slice(0, chartScopeIndex);
19
+ }
20
+ return [];
19
21
  }
20
22
  exports.getScopesByHierarchy = getScopesByHierarchy;