@qrvey/utils 1.4.0-4 → 1.4.0-5

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 (114) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/column_format/helpers/defineTableChartFormat.js +3 -3
  3. package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -3
  4. package/dist/cjs/dates/adapters/mdyDateToDate.d.ts +1 -1
  5. package/dist/cjs/dates/adapters/mdyDateToDate.js +12 -5
  6. package/dist/cjs/dates/adapters/monthYearToDate.d.ts +1 -1
  7. package/dist/cjs/dates/adapters/monthYearToDate.js +8 -7
  8. package/dist/cjs/dates/adapters/quarterYearToDate.d.ts +1 -1
  9. package/dist/cjs/dates/adapters/quarterYearToDate.js +8 -7
  10. package/dist/cjs/dates/adapters/weekYearToDate.d.ts +1 -1
  11. package/dist/cjs/dates/adapters/weekYearToDate.js +20 -19
  12. package/dist/cjs/dates/adapters/yearToDate.d.ts +1 -1
  13. package/dist/cjs/dates/adapters/yearToDate.js +7 -6
  14. package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
  15. package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.js +21 -0
  16. package/dist/cjs/dates/helpers/getDateFormatByProperty.js +2 -31
  17. package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
  18. package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
  19. package/dist/cjs/dates/helpers/getDatePickerPickLevel.js +7 -1
  20. package/dist/cjs/dates/helpers/getSeparatorByDateFormat.js +1 -18
  21. package/dist/cjs/dates/helpers/index.d.ts +0 -1
  22. package/dist/cjs/dates/helpers/index.js +0 -1
  23. package/dist/cjs/dates/helpers/validateDate.js +14 -3
  24. package/dist/cjs/dates/range/getDateRange.js +15 -25
  25. package/dist/cjs/dates/relative/RelativeStatementAdapter.js +15 -10
  26. package/dist/cjs/dates/relative/helpers/getStatementCase.js +10 -7
  27. package/dist/cjs/filters/adapters/adaptDateGroupingProperty.js +9 -13
  28. package/dist/cjs/filters/adapters/logicToUI.js +1 -2
  29. package/dist/cjs/filters/adapters/transformFilters.js +1 -3
  30. package/dist/cjs/filters/helpers/OLD_getAggFilters.js +1 -3
  31. package/dist/cjs/filters/helpers/backend/buildFilters.js +5 -2
  32. package/dist/cjs/filters/helpers/backend/getBackendGroupValue.js +1 -2
  33. package/dist/cjs/filters/helpers/backend/getBackendValues.js +53 -31
  34. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
  35. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.js +57 -20
  36. package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +1 -2
  37. package/dist/cjs/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
  38. package/dist/cjs/filters/helpers/common/getFiltersByParams.js +1 -2
  39. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +0 -1
  40. package/dist/cjs/filters/helpers/getScopesByHierarchy.js +7 -5
  41. package/dist/cjs/filters/helpers/ui/getUIValues.js +76 -85
  42. package/dist/cjs/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
  43. package/dist/cjs/filters/services/UChartApi.d.ts +17 -3
  44. package/dist/cjs/filters/services/UChartApi.js +49 -26
  45. package/dist/cjs/filters/services/UChartPaginationApi.d.ts +17 -3
  46. package/dist/cjs/filters/services/UChartPaginationApi.js +45 -24
  47. package/dist/cjs/general/mix/isNaNV2.d.ts +10 -3
  48. package/dist/cjs/general/mix/isNaNV2.js +11 -4
  49. package/dist/cjs/general/string/parseUrl.js +2 -2
  50. package/dist/cjs/globalization/helpers/getI18nCalendar.js +10 -7
  51. package/dist/cjs/globalization/service/i18nextBuilder.js +1 -3
  52. package/dist/cjs/globalization/service/initI18n.js +1 -12
  53. package/dist/cjs/qrvey/helpers/getDataAnswersByColumn.js +6 -5
  54. package/dist/cjs/qrvey/helpers/getExpressionAnswers.js +15 -11
  55. package/dist/cjs/tokens/isTokenLabel.js +1 -2
  56. package/dist/column_format/helpers/defineTableChartFormat.js +3 -3
  57. package/dist/columns/helpers/getDatasetColumn.js +1 -3
  58. package/dist/dates/adapters/mdyDateToDate.d.ts +1 -1
  59. package/dist/dates/adapters/mdyDateToDate.js +12 -5
  60. package/dist/dates/adapters/monthYearToDate.d.ts +1 -1
  61. package/dist/dates/adapters/monthYearToDate.js +8 -7
  62. package/dist/dates/adapters/quarterYearToDate.d.ts +1 -1
  63. package/dist/dates/adapters/quarterYearToDate.js +8 -7
  64. package/dist/dates/adapters/weekYearToDate.d.ts +1 -1
  65. package/dist/dates/adapters/weekYearToDate.js +20 -19
  66. package/dist/dates/adapters/yearToDate.d.ts +1 -1
  67. package/dist/dates/adapters/yearToDate.js +7 -6
  68. package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
  69. package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.js +18 -0
  70. package/dist/dates/helpers/getDateFormatByProperty.js +2 -31
  71. package/dist/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
  72. package/dist/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
  73. package/dist/dates/helpers/getDatePickerPickLevel.js +7 -1
  74. package/dist/dates/helpers/getSeparatorByDateFormat.js +1 -18
  75. package/dist/dates/helpers/index.d.ts +0 -1
  76. package/dist/dates/helpers/index.js +0 -1
  77. package/dist/dates/helpers/validateDate.js +14 -3
  78. package/dist/dates/range/getDateRange.js +15 -25
  79. package/dist/dates/relative/RelativeStatementAdapter.js +15 -10
  80. package/dist/dates/relative/helpers/getStatementCase.js +10 -7
  81. package/dist/filters/adapters/adaptDateGroupingProperty.js +9 -13
  82. package/dist/filters/adapters/logicToUI.js +1 -2
  83. package/dist/filters/adapters/transformFilters.js +1 -3
  84. package/dist/filters/helpers/OLD_getAggFilters.js +1 -3
  85. package/dist/filters/helpers/backend/buildFilters.js +5 -2
  86. package/dist/filters/helpers/backend/getBackendGroupValue.js +1 -2
  87. package/dist/filters/helpers/backend/getBackendValues.js +53 -31
  88. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
  89. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.js +56 -19
  90. package/dist/filters/helpers/common/excludeFiltersByParams.js +1 -2
  91. package/dist/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
  92. package/dist/filters/helpers/common/getFiltersByParams.js +1 -2
  93. package/dist/filters/helpers/getAggFiltersFromFilterData.js +0 -1
  94. package/dist/filters/helpers/getScopesByHierarchy.js +7 -5
  95. package/dist/filters/helpers/ui/getUIValues.js +76 -85
  96. package/dist/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
  97. package/dist/filters/services/UChartApi.d.ts +17 -3
  98. package/dist/filters/services/UChartApi.js +49 -26
  99. package/dist/filters/services/UChartPaginationApi.d.ts +17 -3
  100. package/dist/filters/services/UChartPaginationApi.js +45 -24
  101. package/dist/general/mix/isNaNV2.d.ts +10 -3
  102. package/dist/general/mix/isNaNV2.js +11 -4
  103. package/dist/general/string/parseUrl.js +2 -2
  104. package/dist/globalization/helpers/getI18nCalendar.js +10 -7
  105. package/dist/globalization/service/i18nextBuilder.js +1 -3
  106. package/dist/globalization/service/initI18n.js +1 -12
  107. package/dist/qrvey/helpers/getDataAnswersByColumn.js +6 -5
  108. package/dist/qrvey/helpers/getExpressionAnswers.js +14 -10
  109. package/dist/tokens/isTokenLabel.js +1 -2
  110. package/package.json +4 -4
  111. package/dist/cjs/dates/helpers/validateDateByDateFormat.d.ts +0 -8
  112. package/dist/cjs/dates/helpers/validateDateByDateFormat.js +0 -27
  113. package/dist/dates/helpers/validateDateByDateFormat.d.ts +0 -8
  114. package/dist/dates/helpers/validateDateByDateFormat.js +0 -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;
@@ -9,6 +9,7 @@ const isEmpty_1 = require("../../../general/mix/isEmpty");
9
9
  const flattenDeep_1 = require("../../../general/array/flattenDeep");
10
10
  const RELATIVE_CURSOR_INFO_1 = require("../../../dates/relative/constants/RELATIVE_CURSOR_INFO");
11
11
  const getI18nDateGroupLabel_1 = require("../../../globalization/helpers/getI18nDateGroupLabel");
12
+ const I18N_RELATIVE_CONTAINER_1 = require("../../../globalization/labels/filters/I18N_RELATIVE_CONTAINER");
12
13
  /**
13
14
  * Gets the UI Values generated depending on the validator
14
15
  * @param filter the filter structure
@@ -16,7 +17,6 @@ const getI18nDateGroupLabel_1 = require("../../../globalization/helpers/getI18nD
16
17
  * @returns an array of values
17
18
  */
18
19
  function getUIValues(filter, settings) {
19
- var _a, _b;
20
20
  settings = getUiValuesSettings(settings);
21
21
  const values = filter.values || [];
22
22
  switch (filter.validator) {
@@ -24,92 +24,93 @@ function getUIValues(filter, settings) {
24
24
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.GREATER_THAN:
25
25
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.AFTER_ON:
26
26
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.GREATER_THAN_EQUAL:
27
- return values.map((value) => ({
28
- value: getValueLabel(value.min, filter, settings),
29
- displayed: value.displayed != null ? value.displayed : true,
30
- enabled: settings.addEnableds
31
- ? value.enabled != null
32
- ? value.enabled
33
- : true
34
- : undefined,
35
- }));
27
+ return getUiRangeAfterValues(values, filter, settings);
36
28
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BEFORE_ON:
37
29
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.LESS_THAN_EQUAL:
38
30
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BEFORE:
39
31
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.LESS_THAN:
40
- return values.map((value) => ({
41
- value: getValueLabel(value.max, filter, settings),
42
- displayed: value.displayed != null ? value.displayed : true,
43
- enabled: settings.addEnableds
44
- ? value.enabled != null
45
- ? value.enabled
46
- : true
47
- : undefined,
48
- }));
32
+ return getUiRangeBeforeValues(values, filter, settings);
49
33
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BETWEEN_INCLUSIVE:
50
34
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.BETWEEN_EXCLUSIVE:
51
- return values.map((value) => ({
52
- value: `${getValueLabel(value.min, filter, settings)} ${getRangeSeparator(settings)} ${getValueLabel(value.max, filter, settings)}`,
53
- displayed: value.displayed != null ? value.displayed : true,
54
- enabled: settings.addEnableds
55
- ? value.enabled != null
56
- ? value.enabled
57
- : true
58
- : undefined,
59
- }));
35
+ return getUiRangeBetweenValues(values, filter, settings);
60
36
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IS_NULL:
61
37
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IS_NOT_NULL:
62
- return [
63
- {
64
- value: (settings === null || settings === void 0 ? void 0 : settings.translate)
65
- ? settings.translate("filter.validators." + filter.validator.toLowerCase() + "_label")
66
- : FILTER_VALIDATOR_INFO_1.FILTER_VALIDATOR_INFO[filter.validator].label,
67
- displayed: (_a = values[0]) === null || _a === void 0 ? void 0 : _a.displayed,
68
- enabled: settings.addEnableds
69
- ? (_b = values[0]) === null || _b === void 0 ? void 0 : _b.enabled
70
- : undefined,
71
- },
72
- ];
38
+ return getUiNullValues(values, filter, settings);
73
39
  case FILTER_VALIDATOR_1.FILTER_VALIDATOR.IN:
74
- return values.map((value) => {
75
- const cursor = (settings === null || settings === void 0 ? void 0 : settings.translate)
76
- ? settings.translate(RELATIVE_CURSOR_INFO_1.RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath)
77
- : RELATIVE_CURSOR_INFO_1.RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath;
78
- const from = (settings === null || settings === void 0 ? void 0 : settings.translate)
79
- ? settings.translate("filter.relative_container.from_label")
80
- : "from";
81
- const anchor = (settings === null || settings === void 0 ? void 0 : settings.translate)
82
- ? settings === null || settings === void 0 ? void 0 : settings.translate("filter.relative_container.current_date")
83
- : "current date";
84
- return {
85
- value: `${cursor} ${value.cursor !== RELATIVE_CURSOR_1.RELATIVE_CURSOR.THIS && value.number > 1
86
- ? value.number
87
- : ""} ${getValueUiUnitRelativeDate(value, settings)} ${value.cursor !== RELATIVE_CURSOR_1.RELATIVE_CURSOR.THIS
88
- ? `${from} ${value.anchor || anchor}`
89
- : ""}`,
90
- displayed: value.displayed != null ? value.displayed : true,
91
- enabled: settings.addEnableds ? value.enabled : undefined,
92
- };
93
- });
40
+ return getUiInValues(values, settings);
94
41
  default:
95
- if (filter.column.type === COLUMN_1.COLUMN.RANKING &&
96
- (0, isEmpty_1.isEmpty)(filter.column.aggregate)) {
97
- return getRankingUIValues(values, settings.addEnableds, settings.rankingGroupIndex);
98
- }
99
- return values.map((value) => ({
100
- imageUrl: value.imageUrl,
101
- value: getValueLabel(value.value, filter, settings),
102
- displayed: value.displayed != null ? value.displayed : true,
103
- enabled: settings.addEnableds
104
- ? value.enabled != null
105
- ? value.enabled
106
- : true
107
- : undefined,
108
- valueid: value.valueid,
109
- }));
42
+ return getUiEqualValues(values, filter, settings);
110
43
  }
111
44
  }
112
45
  exports.getUIValues = getUIValues;
46
+ function getUiRangeAfterValues(values, filter, settings) {
47
+ return values.map((value) => getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(value.min, filter, settings) }), settings));
48
+ }
49
+ function getUiRangeBeforeValues(values, filter, settings) {
50
+ return values.map((value) => getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(value.max, filter, settings) }), settings));
51
+ }
52
+ function getUiRangeBetweenValues(values, filter, settings) {
53
+ return values.map((value) => {
54
+ const valueLabel = `${getValueLabel(value.min, filter, settings)} ${getRangeSeparator(settings)} ${getValueLabel(value.max, filter, settings)}`;
55
+ return getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(valueLabel, filter, settings) }), settings);
56
+ });
57
+ }
58
+ function getUiNullValues(values, filter, settings) {
59
+ const value = values[0];
60
+ const valueLabel = (settings === null || settings === void 0 ? void 0 : settings.translate)
61
+ ? settings.translate("filter.validators." + filter.validator.toLowerCase() + "_label")
62
+ : FILTER_VALIDATOR_INFO_1.FILTER_VALIDATOR_INFO[filter.validator].label;
63
+ return [getRegularValue(Object.assign(Object.assign({}, value), { value: valueLabel }), settings)];
64
+ }
65
+ function getUiInValues(values, settings) {
66
+ return values.map((value) => {
67
+ const cursor = (settings === null || settings === void 0 ? void 0 : settings.translate)
68
+ ? settings.translate(RELATIVE_CURSOR_INFO_1.RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath)
69
+ : RELATIVE_CURSOR_INFO_1.RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath;
70
+ const from = (settings === null || settings === void 0 ? void 0 : settings.translate)
71
+ ? settings.translate("filter.relative_container.from_label")
72
+ : I18N_RELATIVE_CONTAINER_1.I18N_RELATIVE_CONTAINER.from_label;
73
+ const anchor = (settings === null || settings === void 0 ? void 0 : settings.translate)
74
+ ? settings === null || settings === void 0 ? void 0 : settings.translate("filter.relative_container.current_date")
75
+ : I18N_RELATIVE_CONTAINER_1.I18N_RELATIVE_CONTAINER.current_date;
76
+ const valueLabel = `${cursor} ${value.cursor !== RELATIVE_CURSOR_1.RELATIVE_CURSOR.THIS && value.number > 1
77
+ ? value.number
78
+ : ""} ${getValueUiUnitRelativeDate(value, settings)} ${value.cursor !== RELATIVE_CURSOR_1.RELATIVE_CURSOR.THIS
79
+ ? `${from} ${value.anchor || anchor}`
80
+ : ""}`;
81
+ return getRegularValue(Object.assign(Object.assign({}, value), { value: valueLabel }), settings);
82
+ });
83
+ }
84
+ function getUiEqualValues(values, filter, settings) {
85
+ if (filter.column.type === COLUMN_1.COLUMN.RANKING &&
86
+ (0, isEmpty_1.isEmpty)(filter.column.aggregate)) {
87
+ return getRankingUIValues(values, settings.addEnableds, settings.rankingGroupIndex);
88
+ }
89
+ return values.map((value) => getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(value.value, filter, settings) }), settings));
90
+ }
91
+ function getRankingUIValues(values, addEnableds = false, rankingGroupIndex) {
92
+ const flattenValues = rankingGroupIndex == null ? (0, flattenDeep_1.flattenDeep)(values) : values[rankingGroupIndex];
93
+ return flattenValues.map((rankingValue) => ({
94
+ rankingIndex: rankingGroupIndex,
95
+ value: `${rankingValue.value.value} - ${rankingValue.position}`,
96
+ valueid: rankingValue.value.valueid,
97
+ displayed: rankingValue.displayed != null ? rankingValue.displayed : true,
98
+ enabled: addEnableds ? rankingValue.enabled : undefined,
99
+ }));
100
+ }
101
+ function getRegularValue(value, settings) {
102
+ let enabled;
103
+ if (settings.addEnableds) {
104
+ enabled = (0, isEmpty_1.isEmpty)(value.enabled) ? true : value.enabled;
105
+ }
106
+ return {
107
+ displayed: (0, isEmpty_1.isEmpty)(value.displayed) ? true : value.displayed,
108
+ enabled,
109
+ imageUrl: (0, isEmpty_1.isEmpty)(value.imageUrl) ? undefined : value.imageUrl,
110
+ value: value.value,
111
+ valueid: (0, isEmpty_1.isEmpty)(value.valueid) ? undefined : value.valueid,
112
+ };
113
+ }
113
114
  function getValueLabel(value, filter, settings) {
114
115
  return settings.translate
115
116
  ? (0, getI18nDateGroupLabel_1.getI18nDateGroupLabel)(value, filter.property, settings.translate)
@@ -127,22 +128,12 @@ function getUiValuesSettings(settings) {
127
128
  }
128
129
  function getValueUiUnitRelativeDate(relative, settings) {
129
130
  const unit = settings.translate
130
- ? `${settings.translate(`common.units.${relative.unit}`)}`
131
+ ? settings.translate(`common.units.${relative.unit}`)
131
132
  : relative.unit;
132
133
  return relative.cursor !== RELATIVE_CURSOR_1.RELATIVE_CURSOR.THIS && relative.number > 1
133
134
  ? `${unit}s`
134
135
  : unit;
135
136
  }
136
- function getRankingUIValues(values, addEnableds = false, rankingGroupIndex) {
137
- const flattenValues = rankingGroupIndex == null ? (0, flattenDeep_1.flattenDeep)(values) : values[rankingGroupIndex];
138
- return flattenValues.map((rankingValue) => ({
139
- rankingIndex: rankingGroupIndex,
140
- value: `${rankingValue.value.value} - ${rankingValue.position}`,
141
- valueid: rankingValue.value.valueid,
142
- displayed: rankingValue.displayed != null ? rankingValue.displayed : true,
143
- enabled: addEnableds ? rankingValue.enabled : undefined,
144
- }));
145
- }
146
137
  function getRangeSeparator(settings) {
147
138
  if (!(0, isEmpty_1.isEmpty)(settings.translate) && !(0, isEmpty_1.isEmpty)(settings.rangeSeparatorPath)) {
148
139
  return settings.translate(settings.rangeSeparatorPath);
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Object for the getLogicByDatasetsColumns Settings
3
+ */
1
4
  export interface IFFGetLogicByDatasetsColumns {
2
5
  letPassUndefinedProperties?: {
3
6
  qrveyid?: boolean;