@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
@@ -6,6 +6,7 @@ import { isEmpty } from "../../../general/mix/isEmpty";
6
6
  import { flattenDeep } from "../../../general/array/flattenDeep";
7
7
  import { RELATIVE_CURSOR_INFO } from "../../../dates/relative/constants/RELATIVE_CURSOR_INFO";
8
8
  import { getI18nDateGroupLabel } from "../../../globalization/helpers/getI18nDateGroupLabel";
9
+ import { I18N_RELATIVE_CONTAINER } from "../../../globalization/labels/filters/I18N_RELATIVE_CONTAINER";
9
10
  /**
10
11
  * Gets the UI Values generated depending on the validator
11
12
  * @param filter the filter structure
@@ -13,7 +14,6 @@ import { getI18nDateGroupLabel } from "../../../globalization/helpers/getI18nDat
13
14
  * @returns an array of values
14
15
  */
15
16
  export function getUIValues(filter, settings) {
16
- var _a, _b;
17
17
  settings = getUiValuesSettings(settings);
18
18
  const values = filter.values || [];
19
19
  switch (filter.validator) {
@@ -21,91 +21,92 @@ export function getUIValues(filter, settings) {
21
21
  case FILTER_VALIDATOR.GREATER_THAN:
22
22
  case FILTER_VALIDATOR.AFTER_ON:
23
23
  case FILTER_VALIDATOR.GREATER_THAN_EQUAL:
24
- return values.map((value) => ({
25
- value: getValueLabel(value.min, filter, settings),
26
- displayed: value.displayed != null ? value.displayed : true,
27
- enabled: settings.addEnableds
28
- ? value.enabled != null
29
- ? value.enabled
30
- : true
31
- : undefined,
32
- }));
24
+ return getUiRangeAfterValues(values, filter, settings);
33
25
  case FILTER_VALIDATOR.BEFORE_ON:
34
26
  case FILTER_VALIDATOR.LESS_THAN_EQUAL:
35
27
  case FILTER_VALIDATOR.BEFORE:
36
28
  case FILTER_VALIDATOR.LESS_THAN:
37
- return values.map((value) => ({
38
- value: getValueLabel(value.max, filter, settings),
39
- displayed: value.displayed != null ? value.displayed : true,
40
- enabled: settings.addEnableds
41
- ? value.enabled != null
42
- ? value.enabled
43
- : true
44
- : undefined,
45
- }));
29
+ return getUiRangeBeforeValues(values, filter, settings);
46
30
  case FILTER_VALIDATOR.BETWEEN_INCLUSIVE:
47
31
  case FILTER_VALIDATOR.BETWEEN_EXCLUSIVE:
48
- return values.map((value) => ({
49
- value: `${getValueLabel(value.min, filter, settings)} ${getRangeSeparator(settings)} ${getValueLabel(value.max, filter, settings)}`,
50
- displayed: value.displayed != null ? value.displayed : true,
51
- enabled: settings.addEnableds
52
- ? value.enabled != null
53
- ? value.enabled
54
- : true
55
- : undefined,
56
- }));
32
+ return getUiRangeBetweenValues(values, filter, settings);
57
33
  case FILTER_VALIDATOR.IS_NULL:
58
34
  case FILTER_VALIDATOR.IS_NOT_NULL:
59
- return [
60
- {
61
- value: (settings === null || settings === void 0 ? void 0 : settings.translate)
62
- ? settings.translate("filter.validators." + filter.validator.toLowerCase() + "_label")
63
- : FILTER_VALIDATOR_INFO[filter.validator].label,
64
- displayed: (_a = values[0]) === null || _a === void 0 ? void 0 : _a.displayed,
65
- enabled: settings.addEnableds
66
- ? (_b = values[0]) === null || _b === void 0 ? void 0 : _b.enabled
67
- : undefined,
68
- },
69
- ];
35
+ return getUiNullValues(values, filter, settings);
70
36
  case FILTER_VALIDATOR.IN:
71
- return values.map((value) => {
72
- const cursor = (settings === null || settings === void 0 ? void 0 : settings.translate)
73
- ? settings.translate(RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath)
74
- : RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath;
75
- const from = (settings === null || settings === void 0 ? void 0 : settings.translate)
76
- ? settings.translate("filter.relative_container.from_label")
77
- : "from";
78
- const anchor = (settings === null || settings === void 0 ? void 0 : settings.translate)
79
- ? settings === null || settings === void 0 ? void 0 : settings.translate("filter.relative_container.current_date")
80
- : "current date";
81
- return {
82
- value: `${cursor} ${value.cursor !== RELATIVE_CURSOR.THIS && value.number > 1
83
- ? value.number
84
- : ""} ${getValueUiUnitRelativeDate(value, settings)} ${value.cursor !== RELATIVE_CURSOR.THIS
85
- ? `${from} ${value.anchor || anchor}`
86
- : ""}`,
87
- displayed: value.displayed != null ? value.displayed : true,
88
- enabled: settings.addEnableds ? value.enabled : undefined,
89
- };
90
- });
37
+ return getUiInValues(values, settings);
91
38
  default:
92
- if (filter.column.type === COLUMN.RANKING &&
93
- isEmpty(filter.column.aggregate)) {
94
- return getRankingUIValues(values, settings.addEnableds, settings.rankingGroupIndex);
95
- }
96
- return values.map((value) => ({
97
- imageUrl: value.imageUrl,
98
- value: getValueLabel(value.value, filter, settings),
99
- displayed: value.displayed != null ? value.displayed : true,
100
- enabled: settings.addEnableds
101
- ? value.enabled != null
102
- ? value.enabled
103
- : true
104
- : undefined,
105
- valueid: value.valueid,
106
- }));
39
+ return getUiEqualValues(values, filter, settings);
107
40
  }
108
41
  }
42
+ function getUiRangeAfterValues(values, filter, settings) {
43
+ return values.map((value) => getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(value.min, filter, settings) }), settings));
44
+ }
45
+ function getUiRangeBeforeValues(values, filter, settings) {
46
+ return values.map((value) => getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(value.max, filter, settings) }), settings));
47
+ }
48
+ function getUiRangeBetweenValues(values, filter, settings) {
49
+ return values.map((value) => {
50
+ const valueLabel = `${getValueLabel(value.min, filter, settings)} ${getRangeSeparator(settings)} ${getValueLabel(value.max, filter, settings)}`;
51
+ return getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(valueLabel, filter, settings) }), settings);
52
+ });
53
+ }
54
+ function getUiNullValues(values, filter, settings) {
55
+ const value = values[0];
56
+ const valueLabel = (settings === null || settings === void 0 ? void 0 : settings.translate)
57
+ ? settings.translate("filter.validators." + filter.validator.toLowerCase() + "_label")
58
+ : FILTER_VALIDATOR_INFO[filter.validator].label;
59
+ return [getRegularValue(Object.assign(Object.assign({}, value), { value: valueLabel }), settings)];
60
+ }
61
+ function getUiInValues(values, settings) {
62
+ return values.map((value) => {
63
+ const cursor = (settings === null || settings === void 0 ? void 0 : settings.translate)
64
+ ? settings.translate(RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath)
65
+ : RELATIVE_CURSOR_INFO[value.cursor].i18nLabelPath;
66
+ const from = (settings === null || settings === void 0 ? void 0 : settings.translate)
67
+ ? settings.translate("filter.relative_container.from_label")
68
+ : I18N_RELATIVE_CONTAINER.from_label;
69
+ const anchor = (settings === null || settings === void 0 ? void 0 : settings.translate)
70
+ ? settings === null || settings === void 0 ? void 0 : settings.translate("filter.relative_container.current_date")
71
+ : I18N_RELATIVE_CONTAINER.current_date;
72
+ const valueLabel = `${cursor} ${value.cursor !== RELATIVE_CURSOR.THIS && value.number > 1
73
+ ? value.number
74
+ : ""} ${getValueUiUnitRelativeDate(value, settings)} ${value.cursor !== RELATIVE_CURSOR.THIS
75
+ ? `${from} ${value.anchor || anchor}`
76
+ : ""}`;
77
+ return getRegularValue(Object.assign(Object.assign({}, value), { value: valueLabel }), settings);
78
+ });
79
+ }
80
+ function getUiEqualValues(values, filter, settings) {
81
+ if (filter.column.type === COLUMN.RANKING &&
82
+ isEmpty(filter.column.aggregate)) {
83
+ return getRankingUIValues(values, settings.addEnableds, settings.rankingGroupIndex);
84
+ }
85
+ return values.map((value) => getRegularValue(Object.assign(Object.assign({}, value), { value: getValueLabel(value.value, filter, settings) }), settings));
86
+ }
87
+ function getRankingUIValues(values, addEnableds = false, rankingGroupIndex) {
88
+ const flattenValues = rankingGroupIndex == null ? flattenDeep(values) : values[rankingGroupIndex];
89
+ return flattenValues.map((rankingValue) => ({
90
+ rankingIndex: rankingGroupIndex,
91
+ value: `${rankingValue.value.value} - ${rankingValue.position}`,
92
+ valueid: rankingValue.value.valueid,
93
+ displayed: rankingValue.displayed != null ? rankingValue.displayed : true,
94
+ enabled: addEnableds ? rankingValue.enabled : undefined,
95
+ }));
96
+ }
97
+ function getRegularValue(value, settings) {
98
+ let enabled;
99
+ if (settings.addEnableds) {
100
+ enabled = isEmpty(value.enabled) ? true : value.enabled;
101
+ }
102
+ return {
103
+ displayed: isEmpty(value.displayed) ? true : value.displayed,
104
+ enabled,
105
+ imageUrl: isEmpty(value.imageUrl) ? undefined : value.imageUrl,
106
+ value: value.value,
107
+ valueid: isEmpty(value.valueid) ? undefined : value.valueid,
108
+ };
109
+ }
109
110
  function getValueLabel(value, filter, settings) {
110
111
  return settings.translate
111
112
  ? getI18nDateGroupLabel(value, filter.property, settings.translate)
@@ -123,22 +124,12 @@ function getUiValuesSettings(settings) {
123
124
  }
124
125
  function getValueUiUnitRelativeDate(relative, settings) {
125
126
  const unit = settings.translate
126
- ? `${settings.translate(`common.units.${relative.unit}`)}`
127
+ ? settings.translate(`common.units.${relative.unit}`)
127
128
  : relative.unit;
128
129
  return relative.cursor !== RELATIVE_CURSOR.THIS && relative.number > 1
129
130
  ? `${unit}s`
130
131
  : unit;
131
132
  }
132
- function getRankingUIValues(values, addEnableds = false, rankingGroupIndex) {
133
- const flattenValues = rankingGroupIndex == null ? flattenDeep(values) : values[rankingGroupIndex];
134
- return flattenValues.map((rankingValue) => ({
135
- rankingIndex: rankingGroupIndex,
136
- value: `${rankingValue.value.value} - ${rankingValue.position}`,
137
- valueid: rankingValue.value.valueid,
138
- displayed: rankingValue.displayed != null ? rankingValue.displayed : true,
139
- enabled: addEnableds ? rankingValue.enabled : undefined,
140
- }));
141
- }
142
133
  function getRangeSeparator(settings) {
143
134
  if (!isEmpty(settings.translate) && !isEmpty(settings.rangeSeparatorPath)) {
144
135
  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;
@@ -15,12 +15,26 @@ export default class UChartApi {
15
15
  getChartResult: (config: IFilterConfig, uFilter: IFUFlattenedFilter, filterLogic?: IFBLogic[], chartSettings?: IFUChartSettings, _resetApi?: boolean) => Promise<IFBData>;
16
16
  /**
17
17
  * Gets request body structure
18
- * @param uFilter The filter Builder filter
19
- * @param filterLogic Additional filter logic to apply in the preview
20
- * @param chartSettings The settings of the chart. For Aggregate Columns.
18
+ * @param {IFUFlattenedFilter} uFilter The filter object
19
+ * @param {IFBLogic[]} filterLogic Additional filter logic to apply in the preview
20
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
21
21
  * @returns the request body structure
22
22
  */
23
23
  private _getPreviewRequestBody;
24
+ /**
25
+ * Gets the filter object structure for the searching text
26
+ * @param {IFUFlattenedFilter} uFilter The filter object
27
+ * @returns the filter object structure
28
+ */
29
+ private _getSearchLogic;
30
+ /**
31
+ * Gets the filters from the chart settings
32
+ * @param {IFUFlattenedFilter} uFilter The filter object
33
+ * @param {OLD_IFilterData} searchLogic Additional filter object for the searching text
34
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
35
+ * @returns the filters from the chart settings
36
+ */
37
+ private _getFilterCharts;
24
38
  /**
25
39
  * Gets chart body structure
26
40
  * @param uFilter The filter Builder filter
@@ -37,34 +37,14 @@ export default class UChartApi {
37
37
  };
38
38
  /**
39
39
  * Gets request body structure
40
- * @param uFilter The filter Builder filter
41
- * @param filterLogic Additional filter logic to apply in the preview
42
- * @param chartSettings The settings of the chart. For Aggregate Columns.
40
+ * @param {IFUFlattenedFilter} uFilter The filter object
41
+ * @param {IFBLogic[]} filterLogic Additional filter logic to apply in the preview
42
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
43
43
  * @returns the request body structure
44
44
  */
45
45
  this._getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings) => {
46
- const { column, validator } = uFilter;
47
- const haveAggFilters = ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.aggregateColumns) || []).length &&
48
- ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart) || []).length;
49
- let searchLogic;
50
- if (!isEmpty(uFilter.values)) {
51
- searchLogic = flatUIToOldLogic([
52
- Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(column, validator), column: Object.assign(Object.assign({}, uFilter.column), { linkid: undefined }) }),
53
- ]);
54
- }
55
- let filterCharts = [];
56
- if (haveAggFilters) {
57
- filterCharts = chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart.map((chart) => {
58
- if (uFilter.column.type === COLUMN.AGGREGATED_FORMULA)
59
- return chart;
60
- const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
61
- s.aggregate === uFilter.column.aggregate);
62
- const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
63
- const chartAggFilters = getAggFiltersBySummaryIndex(chart.aggFilters, summaryIndex);
64
- const searchAggFilters = getAggFilters((searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [], summary ? [summary] : []);
65
- return Object.assign(Object.assign({}, chart), { aggFilters: searchAggFilters || chartAggFilters, summaries: summary ? [summary] : [] });
66
- }).filter((chart) => chart.summaries.length);
67
- }
46
+ const searchLogic = this._getSearchLogic(uFilter);
47
+ const filterCharts = this._getFilterCharts(uFilter, searchLogic, chartSettings);
68
48
  const chartsBody = !filterCharts[0]
69
49
  ? [this._getChartBody(uFilter)]
70
50
  : [filterCharts[0]];
@@ -72,7 +52,11 @@ export default class UChartApi {
72
52
  ...filterLogic,
73
53
  ...(!filterCharts[0] ? (searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [] : []),
74
54
  ];
75
- return { charts: chartsBody, logic: filters, qrveyid: column.qrveyid };
55
+ return {
56
+ charts: chartsBody,
57
+ logic: filters,
58
+ qrveyid: uFilter.column.qrveyid,
59
+ };
76
60
  };
77
61
  /**
78
62
  * Gets chart body structure
@@ -268,4 +252,43 @@ export default class UChartApi {
268
252
  return validation;
269
253
  };
270
254
  }
255
+ /**
256
+ * Gets the filter object structure for the searching text
257
+ * @param {IFUFlattenedFilter} uFilter The filter object
258
+ * @returns the filter object structure
259
+ */
260
+ _getSearchLogic(uFilter) {
261
+ let searchLogic;
262
+ if (!isEmpty(uFilter.values)) {
263
+ searchLogic = flatUIToOldLogic([
264
+ Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(uFilter.column, uFilter.validator), column: Object.assign(Object.assign({}, uFilter.column), { linkid: undefined }) }),
265
+ ]);
266
+ }
267
+ return searchLogic;
268
+ }
269
+ /**
270
+ * Gets the filters from the chart settings
271
+ * @param {IFUFlattenedFilter} uFilter The filter object
272
+ * @param {OLD_IFilterData} searchLogic Additional filter object for the searching text
273
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
274
+ * @returns the filters from the chart settings
275
+ */
276
+ _getFilterCharts(uFilter, searchLogic, chartSettings) {
277
+ let filterCharts = [];
278
+ const haveAggFilters = ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.aggregateColumns) || []).length &&
279
+ ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart) || []).length;
280
+ if (haveAggFilters) {
281
+ filterCharts = chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart.map((chart) => {
282
+ if (uFilter.column.type === COLUMN.AGGREGATED_FORMULA)
283
+ return chart;
284
+ const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
285
+ s.aggregate === uFilter.column.aggregate);
286
+ const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
287
+ const chartAggFilters = getAggFiltersBySummaryIndex(chart.aggFilters, summaryIndex);
288
+ const searchAggFilters = getAggFilters((searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [], summary ? [summary] : []);
289
+ return Object.assign(Object.assign({}, chart), { aggFilters: searchAggFilters || chartAggFilters, summaries: summary ? [summary] : [] });
290
+ }).filter((chart) => chart.summaries.length);
291
+ }
292
+ return filterCharts;
293
+ }
271
294
  }
@@ -23,12 +23,26 @@ export default class UChartPaginationApi {
23
23
  getChartResult: (config: IFilterConfig, uFilter: IFUFlattenedFilter, filterLogic?: IFBLogic[], chartSettings?: IFUChartSettings, resetApi?: boolean) => Promise<IFBData>;
24
24
  /**
25
25
  * Gets request body structure
26
- * @param uFilter The filter Builder filter
27
- * @param filterLogic Additional filter logic to apply in the preview
28
- * @param chartSettings The settings of the chart. For Aggregate Columns.
26
+ * @param {IFUFlattenedFilter} uFilter The filter object
27
+ * @param {IFBLogic[]} filterLogic Additional filter logic to apply in the preview
28
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
29
29
  * @returns the request body structure
30
30
  */
31
31
  private _getPreviewRequestBody;
32
+ /**
33
+ * Gets the filter object structure for the searching text
34
+ * @param {IFUFlattenedFilter} uFilter The filter object
35
+ * @returns the filter object structure
36
+ */
37
+ private _getSearchLogic;
38
+ /**
39
+ * Gets the filters from the chart settings
40
+ * @param {IFUFlattenedFilter} uFilter The filter object
41
+ * @param {OLD_IFilterData} searchLogic Additional filter object for the searching text
42
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
43
+ * @returns the filters from the chart settings
44
+ */
45
+ private _getFilterCharts;
32
46
  /**
33
47
  * Gets dimension body structure
34
48
  * @param uFilter The filter Builder filter
@@ -47,39 +47,21 @@ export default class UChartPaginationApi {
47
47
  };
48
48
  /**
49
49
  * Gets request body structure
50
- * @param uFilter The filter Builder filter
51
- * @param filterLogic Additional filter logic to apply in the preview
52
- * @param chartSettings The settings of the chart. For Aggregate Columns.
50
+ * @param {IFUFlattenedFilter} uFilter The filter object
51
+ * @param {IFBLogic[]} filterLogic Additional filter logic to apply in the preview
52
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
53
53
  * @returns the request body structure
54
54
  */
55
55
  this._getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings, afterKey) => {
56
- const { column, validator } = uFilter;
57
- const haveAggFilters = ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.aggregateColumns) || []).length &&
58
- ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart) || []).length;
59
- let searchLogic;
60
- if (!isEmpty(uFilter.values)) {
61
- searchLogic = flatUIToOldLogic([
62
- Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(column, validator), column: Object.assign(Object.assign({}, uFilter.column), { linkid: undefined }) }),
63
- ]);
64
- }
65
- let filterCharts = [];
66
- if (haveAggFilters) {
67
- filterCharts = chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart.map((chart) => {
68
- const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
69
- s.aggregate === uFilter.column.aggregate);
70
- const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
71
- const chartAggFilters = getAggFiltersBySummaryIndex(chart.aggFilters, summaryIndex);
72
- const searchAggFilters = getAggFilters((searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [], summary ? [summary] : []);
73
- return Object.assign(Object.assign({}, chart), { aggFilters: searchAggFilters || chartAggFilters, summaries: summary ? [summary] : [] });
74
- }).filter((chart) => chart.summaries.length);
75
- }
56
+ const searchLogic = this._getSearchLogic(uFilter);
57
+ const filterCharts = this._getFilterCharts(uFilter, searchLogic, chartSettings);
76
58
  const dimensions = !filterCharts[0]
77
59
  ? this._getDimensionsBody(uFilter)
78
60
  : this._getDimensionsBodyAdapter(filterCharts[0].dimensions);
79
61
  const summaries = !filterCharts[0]
80
62
  ? this._getSummariesBody(uFilter)
81
63
  : filterCharts[0].summaries;
82
- const maxDataPoints = this._getMaxDataPoints(column, chartSettings);
64
+ const maxDataPoints = this._getMaxDataPoints(uFilter.column, chartSettings);
83
65
  const filters = [
84
66
  ...filterLogic,
85
67
  ...(!filterCharts[0] ? (searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [] : []),
@@ -310,4 +292,43 @@ export default class UChartPaginationApi {
310
292
  return isEmpty(result);
311
293
  };
312
294
  }
295
+ /**
296
+ * Gets the filter object structure for the searching text
297
+ * @param {IFUFlattenedFilter} uFilter The filter object
298
+ * @returns the filter object structure
299
+ */
300
+ _getSearchLogic(uFilter) {
301
+ let searchLogic;
302
+ if (!isEmpty(uFilter.values)) {
303
+ searchLogic = flatUIToOldLogic([
304
+ Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(uFilter.column, uFilter.validator), column: Object.assign(Object.assign({}, uFilter.column), { linkid: undefined }) }),
305
+ ]);
306
+ }
307
+ return searchLogic;
308
+ }
309
+ /**
310
+ * Gets the filters from the chart settings
311
+ * @param {IFUFlattenedFilter} uFilter The filter object
312
+ * @param {OLD_IFilterData} searchLogic Additional filter object for the searching text
313
+ * @param {IFUChartSettings} chartSettings The settings of the chart. For Aggregate Columns.
314
+ * @returns the filters from the chart settings
315
+ */
316
+ _getFilterCharts(uFilter, searchLogic, chartSettings) {
317
+ let filterCharts = [];
318
+ const haveAggFilters = ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.aggregateColumns) || []).length &&
319
+ ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart) || []).length;
320
+ if (haveAggFilters) {
321
+ filterCharts = chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart.map((chart) => {
322
+ if (uFilter.column.type === COLUMN.AGGREGATED_FORMULA)
323
+ return chart;
324
+ const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
325
+ s.aggregate === uFilter.column.aggregate);
326
+ const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
327
+ const chartAggFilters = getAggFiltersBySummaryIndex(chart.aggFilters, summaryIndex);
328
+ const searchAggFilters = getAggFilters((searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [], summary ? [summary] : []);
329
+ return Object.assign(Object.assign({}, chart), { aggFilters: searchAggFilters || chartAggFilters, summaries: summary ? [summary] : [] });
330
+ }).filter((chart) => chart.summaries.length);
331
+ }
332
+ return filterCharts;
333
+ }
313
334
  }
@@ -11,7 +11,7 @@ export const getLang = (locale) => {
11
11
  };
12
12
  export const chooseLang = (config) => {
13
13
  var _a;
14
- const lang = ((_a = config === null || config === void 0 ? void 0 : config.i18n) === null || _a === void 0 ? void 0 : _a.lang) || config.lang;
14
+ const lang = ((_a = config === null || config === void 0 ? void 0 : config.i18n) === null || _a === void 0 ? void 0 : _a.lang) || (config === null || config === void 0 ? void 0 : config.lang);
15
15
  return (lang === null || lang === void 0 ? void 0 : lang.lang) || lang || LANG_DEFAULT;
16
16
  };
17
17
  export const formatWithLocale = (value, outputFormat, config = {}) => {
@@ -1,8 +1,15 @@
1
1
  /**
2
2
  * Validates if the recieved number is NaN type.
3
- * This function recieves any variable but will return false.
4
- * Validates if variable is null, undefined, or an empty string, also, the function uses isNaN native function.
3
+ *
4
+ * Conditions:
5
+ * - This function recieves any variable but will return true if it is different to number.
6
+ * - Empty variables as undefined, null, empty string will return true.
7
+ *
8
+ * Special case for isNaN
9
+ * - The isNaN('') is considered as false statement. The empty string is converted to 0 which is not NaN.
10
+ * - Boolean variables is considered as false statement.
11
+ *
5
12
  * @param variable the variable to validate
6
- * @return True if variable is a NaN or false otherwise
13
+ * @return True: variable is a NaN; False: The variable is a number
7
14
  */
8
15
  export declare function isNaNV2(variable: any): boolean;
@@ -1,11 +1,18 @@
1
1
  import { isEmpty } from ".";
2
2
  /**
3
3
  * Validates if the recieved number is NaN type.
4
- * This function recieves any variable but will return false.
5
- * Validates if variable is null, undefined, or an empty string, also, the function uses isNaN native function.
4
+ *
5
+ * Conditions:
6
+ * - This function recieves any variable but will return true if it is different to number.
7
+ * - Empty variables as undefined, null, empty string will return true.
8
+ *
9
+ * Special case for isNaN
10
+ * - The isNaN('') is considered as false statement. The empty string is converted to 0 which is not NaN.
11
+ * - Boolean variables is considered as false statement.
12
+ *
6
13
  * @param variable the variable to validate
7
- * @return True if variable is a NaN or false otherwise
14
+ * @return True: variable is a NaN; False: The variable is a number
8
15
  */
9
16
  export function isNaNV2(variable) {
10
- return isEmpty(variable) || isNaN(variable);
17
+ return isEmpty(variable) || typeof variable == "boolean" || isNaN(variable);
11
18
  }
@@ -8,8 +8,8 @@ export const parseUrl = (url, transformer) => {
8
8
  if (!match)
9
9
  return url;
10
10
  return match.reduce((newUrl, curr) => {
11
- const key = curr.substr(2);
11
+ const key = curr.substring(2);
12
12
  const value = typeof transformer === "function" ? transformer(key) : transformer[key];
13
- return newUrl.replace(curr.substr(1), value);
13
+ return newUrl.replace(curr.substring(1), value);
14
14
  }, url);
15
15
  };
@@ -1,12 +1,15 @@
1
+ import { isEmpty } from "../../general/mix/isEmpty";
1
2
  import { I18nService } from "../service/i18nextBuilder";
2
3
  export function getI18nCalendar(locale) {
3
- const localeOverride = locale instanceof I18nService
4
- ? locale
5
- : typeof locale === "function"
6
- ? { translate: locale }
7
- : undefined;
8
- if (!localeOverride)
9
- return undefined;
4
+ let localeOverride;
5
+ if (locale instanceof I18nService) {
6
+ localeOverride = locale;
7
+ }
8
+ else if (typeof locale === "function") {
9
+ localeOverride = { translate: locale };
10
+ }
11
+ if (isEmpty(localeOverride))
12
+ return;
10
13
  return {
11
14
  clear: localeOverride.translate("common.calendar.clear"),
12
15
  days: [
@@ -1,7 +1,8 @@
1
1
  export interface II18nFormulaBuilderListModal {
2
- title_header: string;
3
2
  create_button: string;
3
+ create_button_tooltip: string;
4
4
  empty_message: string;
5
5
  information_text_link: string;
6
6
  information_text_text: string;
7
+ title_header: string;
7
8
  }
@@ -1,10 +1,11 @@
1
1
  export const I18N_FORMULA_BUILDER = {
2
2
  list_modal: {
3
- title_header: "Formulas",
4
3
  create_button: "Create Formula",
4
+ create_button_tooltip: "Add some records to create formulas",
5
5
  empty_message: "No Formulas Yet",
6
6
  information_text_link: "Learn how to",
7
7
  information_text_text: "create and work with formulas",
8
+ title_header: "Formulas",
8
9
  },
9
10
  list_table: {
10
11
  duplicate_copy: "Copy",
@@ -11,9 +11,7 @@ import i18next from "i18next";
11
11
  import { mergeDeep } from "../../general/object/mergeDeep";
12
12
  export class I18nServiceBuilder {
13
13
  static buildI18n(i18nDefault, i18nResource) {
14
- return __awaiter(this, void 0, void 0, function* () {
15
- return yield this._initI18n(i18nDefault, i18nResource);
16
- });
14
+ return this._initI18n(i18nDefault, i18nResource);
17
15
  }
18
16
  static _initI18n(i18nDefault, i18nResource) {
19
17
  return __awaiter(this, void 0, void 0, function* () {
@@ -1,15 +1,4 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { I18nServiceBuilder } from "../service/i18nextBuilder";
11
2
  export function initI18n(i18nConfig = {}, i18nDefault = {}) {
12
- return __awaiter(this, void 0, void 0, function* () {
13
- return yield I18nServiceBuilder.buildI18n(i18nDefault, i18nConfig);
14
- });
3
+ return I18nServiceBuilder.buildI18n(i18nDefault, i18nConfig);
15
4
  }
@@ -46,9 +46,10 @@ export function getDataAnswersByColumn(settings) {
46
46
  return [];
47
47
  }
48
48
  function getColumnFromData(settings) {
49
- return !isEmpty(settings.dataset)
50
- ? getDatasetColumn(settings.column, settings.dataset)
51
- : !isEmpty(settings.model)
52
- ? getModelColumn(settings.column, settings.model)
53
- : undefined;
49
+ if (!isEmpty(settings.dataset)) {
50
+ return getDatasetColumn(settings.column, settings.dataset);
51
+ }
52
+ else if (!isEmpty(settings.model)) {
53
+ return getModelColumn(settings.column, settings.model);
54
+ }
54
55
  }