@qrvey/utils 1.4.0-1 → 1.4.0-4

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 (154) hide show
  1. package/README.md +1 -1
  2. package/dist/charts/helpers/isSimpleTableChart.js +2 -1
  3. package/dist/cjs/charts/helpers/isSimpleTableChart.js +2 -1
  4. package/dist/cjs/column_format/helpers/defineTableChartFormat.js +10 -26
  5. package/dist/cjs/column_format/helpers/defineXYChartFormat.js +7 -11
  6. package/dist/cjs/columns/constants/COLUMN_INFO.js +23 -49
  7. package/dist/cjs/columns/constants/COLUMN_LABEL.js +1 -29
  8. package/dist/cjs/columns/constants/COLUMN_PROPERTY_INFO.js +3 -8
  9. package/dist/cjs/columns/constants/COLUMN_PROPERTY_LABEL.js +1 -11
  10. package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -1
  11. package/dist/cjs/dates/relative/RelativeStatementAdapter.js +6 -24
  12. package/dist/cjs/filters/adapters/FDToFlatUI.js +8 -18
  13. package/dist/cjs/filters/adapters/FDToLogic.js +1 -1
  14. package/dist/cjs/filters/adapters/FDToUI.js +12 -24
  15. package/dist/cjs/filters/adapters/UIToFlatUI.js +4 -14
  16. package/dist/cjs/filters/adapters/UIToOldLogic.js +2 -1
  17. package/dist/cjs/filters/adapters/adaptFilterValues.js +1 -6
  18. package/dist/cjs/filters/adapters/flatUIToFD.js +3 -14
  19. package/dist/cjs/filters/adapters/flatUIToOldLogic.js +15 -49
  20. package/dist/cjs/filters/adapters/flatUIToUI.js +3 -14
  21. package/dist/cjs/filters/adapters/logicToFlatUI.js +20 -32
  22. package/dist/cjs/filters/adapters/transformFilters.js +4 -19
  23. package/dist/cjs/filters/classes/FilterInputErrorHandler.js +0 -8
  24. package/dist/cjs/filters/helpers/applyHierarchyForAggFilters.js +2 -11
  25. package/dist/cjs/filters/helpers/backend/buildExpression.js +2 -1
  26. package/dist/cjs/filters/helpers/backend/buildFilters.js +2 -1
  27. package/dist/cjs/filters/helpers/backend/getAggFiltersBySummaryIndex.js +1 -4
  28. package/dist/cjs/filters/helpers/backend/getLogicByDatasets.js +5 -7
  29. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.js +6 -8
  30. package/dist/cjs/filters/helpers/common/areFiltersEquals.js +3 -2
  31. package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +17 -22
  32. package/dist/cjs/filters/helpers/common/getFilterid.js +9 -8
  33. package/dist/cjs/filters/helpers/common/getFiltersByDatasetsColumns.js +7 -16
  34. package/dist/cjs/filters/helpers/common/getFiltersByParams.js +12 -18
  35. package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +4 -3
  36. package/dist/cjs/filters/helpers/common/getMergeValuesSettings.js +2 -1
  37. package/dist/cjs/filters/helpers/common/getParamsToGetFilterSettings.js +10 -9
  38. package/dist/cjs/filters/helpers/common/mergeFilters.js +7 -30
  39. package/dist/cjs/filters/helpers/common/mergeValues.js +9 -6
  40. package/dist/cjs/filters/helpers/common/resolveFilterConditions.js +9 -8
  41. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +1 -1
  42. package/dist/cjs/filters/helpers/ui/getUIValues.js +14 -12
  43. package/dist/cjs/filters/helpers/ui/getUpdatedUIFilters.js +1 -1
  44. package/dist/cjs/filters/helpers/ui/resolveUIFlatFilterByParams.js +5 -4
  45. package/dist/cjs/filters/helpers/ui/transformFilterValues.js +3 -14
  46. package/dist/cjs/filters/interfaces/builder/IFilterBuilderSettings.d.ts +2 -0
  47. package/dist/cjs/filters/services/Filters.api.js +44 -45
  48. package/dist/cjs/filters/services/UChartApi.js +246 -257
  49. package/dist/cjs/filters/services/UChartPaginationApi.js +289 -301
  50. package/dist/cjs/format/duration/durationFormatter.js +7 -12
  51. package/dist/cjs/format/format.js +8 -7
  52. package/dist/cjs/format/localization.d.ts +2 -1
  53. package/dist/cjs/format/localization.js +8 -7
  54. package/dist/cjs/general/array/addPropertyToArrayOfObjects.js +1 -1
  55. package/dist/cjs/general/object/getAttribute.js +2 -6
  56. package/dist/cjs/general/object/mergeDeep.js +3 -2
  57. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
  58. package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER.js +6 -21
  59. package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
  60. package/dist/cjs/globalization/service/i18nextBuilder.js +31 -19
  61. package/dist/cjs/globalization/service/initI18n.js +13 -2
  62. package/dist/cjs/qrvey/helpers/getCategorizableExpression.js +2 -1
  63. package/dist/cjs/qrvey/helpers/getDataAnswersByColumn.js +1 -4
  64. package/dist/cjs/qrvey/helpers/getDropdownAnswers.js +1 -1
  65. package/dist/cjs/qrvey/helpers/getImageAnswers.js +2 -2
  66. package/dist/cjs/qrvey/helpers/getImageUploadHasAnalysis.js +1 -1
  67. package/dist/cjs/qrvey/helpers/getLookupAnswers.js +4 -4
  68. package/dist/cjs/qrvey/helpers/getLookupDisplays.js +1 -1
  69. package/dist/cjs/qrvey/helpers/getSlidebarAnswers.js +2 -1
  70. package/dist/cjs/qrvey/helpers/getYesNoAnswers.js +1 -5
  71. package/dist/cjs/qrvey/helpers/transformValue.js +2 -1
  72. package/dist/cjs/services/api/Charts.api.js +3 -9
  73. package/dist/cjs/services/api/getAllDatasets.api.js +1 -1
  74. package/dist/cjs/services/api/getAllQrveys.api.js +1 -1
  75. package/dist/cjs/services/api/getDatasetColumns.api.js +1 -1
  76. package/dist/cjs/services/api/getDatasetsByIds.api.js +2 -2
  77. package/dist/cjs/services/api/getModel.api.js +1 -4
  78. package/dist/cjs/services/helpers/Request.js +16 -5
  79. package/dist/column_format/helpers/defineTableChartFormat.js +10 -26
  80. package/dist/column_format/helpers/defineXYChartFormat.js +7 -11
  81. package/dist/columns/constants/COLUMN_INFO.js +23 -49
  82. package/dist/columns/constants/COLUMN_LABEL.js +1 -29
  83. package/dist/columns/constants/COLUMN_PROPERTY_INFO.js +3 -8
  84. package/dist/columns/constants/COLUMN_PROPERTY_LABEL.js +1 -11
  85. package/dist/columns/helpers/getDatasetColumn.js +1 -1
  86. package/dist/dates/relative/RelativeStatementAdapter.js +6 -24
  87. package/dist/filters/adapters/FDToFlatUI.js +8 -18
  88. package/dist/filters/adapters/FDToLogic.js +1 -1
  89. package/dist/filters/adapters/FDToUI.js +12 -24
  90. package/dist/filters/adapters/UIToFlatUI.js +4 -14
  91. package/dist/filters/adapters/UIToOldLogic.js +2 -1
  92. package/dist/filters/adapters/adaptFilterValues.js +1 -6
  93. package/dist/filters/adapters/flatUIToFD.js +3 -14
  94. package/dist/filters/adapters/flatUIToOldLogic.js +15 -49
  95. package/dist/filters/adapters/flatUIToUI.js +3 -14
  96. package/dist/filters/adapters/logicToFlatUI.js +20 -32
  97. package/dist/filters/adapters/transformFilters.js +4 -19
  98. package/dist/filters/classes/FilterInputErrorHandler.js +0 -8
  99. package/dist/filters/helpers/applyHierarchyForAggFilters.js +2 -11
  100. package/dist/filters/helpers/backend/buildExpression.js +2 -1
  101. package/dist/filters/helpers/backend/buildFilters.js +2 -1
  102. package/dist/filters/helpers/backend/getAggFiltersBySummaryIndex.js +1 -4
  103. package/dist/filters/helpers/backend/getLogicByDatasets.js +5 -7
  104. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.js +6 -8
  105. package/dist/filters/helpers/common/areFiltersEquals.js +3 -2
  106. package/dist/filters/helpers/common/excludeFiltersByParams.js +17 -22
  107. package/dist/filters/helpers/common/getFilterid.js +9 -8
  108. package/dist/filters/helpers/common/getFiltersByDatasetsColumns.js +7 -16
  109. package/dist/filters/helpers/common/getFiltersByParams.js +12 -18
  110. package/dist/filters/helpers/common/getMergeFiltersSettings.js +4 -3
  111. package/dist/filters/helpers/common/getMergeValuesSettings.js +2 -1
  112. package/dist/filters/helpers/common/getParamsToGetFilterSettings.js +10 -9
  113. package/dist/filters/helpers/common/mergeFilters.js +7 -30
  114. package/dist/filters/helpers/common/mergeValues.js +9 -6
  115. package/dist/filters/helpers/common/resolveFilterConditions.js +9 -8
  116. package/dist/filters/helpers/getAggFiltersFromFilterData.js +1 -1
  117. package/dist/filters/helpers/ui/getUIValues.js +14 -12
  118. package/dist/filters/helpers/ui/getUpdatedUIFilters.js +1 -1
  119. package/dist/filters/helpers/ui/resolveUIFlatFilterByParams.js +5 -4
  120. package/dist/filters/helpers/ui/transformFilterValues.js +3 -14
  121. package/dist/filters/interfaces/builder/IFilterBuilderSettings.d.ts +2 -0
  122. package/dist/filters/services/Filters.api.js +44 -45
  123. package/dist/filters/services/UChartApi.js +246 -257
  124. package/dist/filters/services/UChartPaginationApi.js +289 -301
  125. package/dist/format/duration/durationFormatter.js +7 -12
  126. package/dist/format/format.js +8 -7
  127. package/dist/format/localization.d.ts +2 -1
  128. package/dist/format/localization.js +7 -6
  129. package/dist/general/array/addPropertyToArrayOfObjects.js +1 -1
  130. package/dist/general/object/getAttribute.js +2 -6
  131. package/dist/general/object/mergeDeep.js +3 -2
  132. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
  133. package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER.js +6 -21
  134. package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
  135. package/dist/globalization/service/i18nextBuilder.js +31 -19
  136. package/dist/globalization/service/initI18n.js +13 -2
  137. package/dist/qrvey/helpers/getCategorizableExpression.js +2 -1
  138. package/dist/qrvey/helpers/getDataAnswersByColumn.js +1 -4
  139. package/dist/qrvey/helpers/getDropdownAnswers.js +1 -1
  140. package/dist/qrvey/helpers/getImageAnswers.js +2 -2
  141. package/dist/qrvey/helpers/getImageUploadHasAnalysis.js +1 -1
  142. package/dist/qrvey/helpers/getLookupAnswers.js +4 -4
  143. package/dist/qrvey/helpers/getLookupDisplays.js +1 -1
  144. package/dist/qrvey/helpers/getSlidebarAnswers.js +2 -1
  145. package/dist/qrvey/helpers/getYesNoAnswers.js +1 -5
  146. package/dist/qrvey/helpers/transformValue.js +2 -1
  147. package/dist/services/api/Charts.api.js +3 -9
  148. package/dist/services/api/getAllDatasets.api.js +1 -1
  149. package/dist/services/api/getAllQrveys.api.js +1 -1
  150. package/dist/services/api/getDatasetColumns.api.js +1 -1
  151. package/dist/services/api/getDatasetsByIds.api.js +2 -2
  152. package/dist/services/api/getModel.api.js +1 -4
  153. package/dist/services/helpers/Request.js +16 -5
  154. package/package.json +3 -3
@@ -18,314 +18,302 @@ const cloneDeep_1 = require("../../general/object/cloneDeep");
18
18
  const FILTER_VALIDATOR_1 = require("../constants/common/FILTER_VALIDATOR");
19
19
  const flatUIToOldLogic_1 = require("../adapters/flatUIToOldLogic");
20
20
  class UChartPaginationApi {
21
- afterKey;
22
- uFilter;
23
- /**
24
- * Gets afterKey object
25
- * @returns the afterKey object
26
- */
27
- getAfterKey = () => {
28
- return this.afterKey;
29
- };
30
- /**
31
- * Gets a promise with a resulting data
32
- * @param config the config
33
- * @param uFilter The filter Builder filter
34
- * @param filterLogic Additional filter logic to apply in the preview
35
- * @param chartSettings The settings of the chart. For Aggregate Columns.
36
- * @returns a promise with a resulting data
37
- */
38
- getChartResult = (config, uFilter, filterLogic = [], chartSettings, resetApi = false) => {
39
- this.refineAfterkey(uFilter, resetApi);
40
- this.setProps(uFilter);
41
- const requestBody = this._getPreviewRequestBody(uFilter, filterLogic, chartSettings, this.afterKey);
42
- const customChartApi = new Charts_api_1.default({
43
- ...config,
44
- qrvey_id: (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
45
- ? uFilter.column.qrveyid
46
- : chartSettings?.qrveyid,
47
- });
48
- return customChartApi
49
- .getResultsPagination(requestBody, false)
50
- .then((response) => {
51
- return this._getDataFromResponse(response, uFilter);
52
- })
53
- .catch((_) => {
54
- return { data: [], total: 0 };
55
- });
56
- };
57
- /**
58
- * Gets request body structure
59
- * @param uFilter The filter Builder filter
60
- * @param filterLogic Additional filter logic to apply in the preview
61
- * @param chartSettings The settings of the chart. For Aggregate Columns.
62
- * @returns the request body structure
63
- */
64
- _getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings, afterKey) => {
65
- const { column, validator } = uFilter;
66
- const haveAggFilters = (chartSettings?.aggregateColumns || []).length &&
67
- (chartSettings?.chart || []).length;
68
- let searchLogic;
69
- if (!(0, isEmpty_1.isEmpty)(uFilter.values)) {
70
- searchLogic = (0, flatUIToOldLogic_1.flatUIToOldLogic)([
71
- {
72
- ...uFilter,
73
- validator: this._getValidationType(column, validator),
74
- column: { ...uFilter.column, linkid: undefined },
75
- },
76
- ]);
77
- }
78
- let filterCharts = [];
79
- if (haveAggFilters) {
80
- filterCharts = chartSettings?.chart
81
- .map((chart) => {
82
- const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
83
- s.aggregate === uFilter.column.aggregate);
84
- const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
85
- const chartAggFilters = (0, getAggFiltersBySummaryIndex_1.getAggFiltersBySummaryIndex)(chart.aggFilters, summaryIndex);
86
- const searchAggFilters = (0, OLD_getAggFilters_1.getAggFilters)(searchLogic?.logic || [], summary ? [summary] : []);
87
- return {
88
- ...chart,
89
- aggFilters: searchAggFilters || chartAggFilters,
90
- summaries: summary ? [summary] : [],
91
- };
21
+ constructor() {
22
+ /**
23
+ * Gets afterKey object
24
+ * @returns the afterKey object
25
+ */
26
+ this.getAfterKey = () => {
27
+ return this.afterKey;
28
+ };
29
+ /**
30
+ * Gets a promise with a resulting data
31
+ * @param config the config
32
+ * @param uFilter The filter Builder filter
33
+ * @param filterLogic Additional filter logic to apply in the preview
34
+ * @param chartSettings The settings of the chart. For Aggregate Columns.
35
+ * @returns a promise with a resulting data
36
+ */
37
+ this.getChartResult = (config, uFilter, filterLogic = [], chartSettings, resetApi = false) => {
38
+ this.refineAfterkey(uFilter, resetApi);
39
+ this.setProps(uFilter);
40
+ const requestBody = this._getPreviewRequestBody(uFilter, filterLogic, chartSettings, this.afterKey);
41
+ const customChartApi = new Charts_api_1.default(Object.assign(Object.assign({}, config), { qrvey_id: (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
42
+ ? uFilter.column.qrveyid
43
+ : chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.qrveyid }));
44
+ return customChartApi
45
+ .getResultsPagination(requestBody, false)
46
+ .then((response) => {
47
+ return this._getDataFromResponse(response, uFilter);
92
48
  })
93
- .filter((chart) => chart.summaries.length);
94
- }
95
- const dimensions = !filterCharts[0]
96
- ? this._getDimensionsBody(uFilter)
97
- : this._getDimensionsBodyAdapter(filterCharts[0].dimensions);
98
- const summaries = !filterCharts[0]
99
- ? this._getSummariesBody(uFilter)
100
- : filterCharts[0].summaries;
101
- const maxDataPoints = this._getMaxDataPoints(column, chartSettings);
102
- const filters = [
103
- ...filterLogic,
104
- ...(!filterCharts[0] ? searchLogic?.logic || [] : []),
105
- ];
106
- return { dimensions, summaries, maxDataPoints, afterKey, logic: filters };
107
- };
108
- /**
109
- * Gets dimension body structure
110
- * @param uFilter The filter Builder filter
111
- * @returns the dimension body structure
112
- */
113
- _getDimensionsBody = (uFilter) => {
114
- const { column, validator } = uFilter;
115
- let dimensions;
116
- if (!(0, isRangeValidator_1.isRangeValidator)(validator)) {
117
- dimensions = [
118
- {
119
- questionid: column.id,
120
- type: column.type,
121
- formulaType: column.type === COLUMN_1.COLUMN.FORMULA ? column.formulaType : undefined,
122
- sort: this._getSortOption(column),
123
- },
124
- ];
125
- dimensions = this._refineBodies([...dimensions], uFilter);
126
- }
127
- return dimensions;
128
- };
129
- /**
130
- * Get a dimension body structure foor pagination endpoint
131
- * @param dimensions
132
- * @returns the dimension body structure
133
- */
134
- _getDimensionsBodyAdapter = (dimensions = []) => {
135
- return dimensions.map((dimension) => ({
136
- questionid: dimension.questionid,
137
- type: dimension.type,
138
- formulaType: dimension.type === COLUMN_1.COLUMN.FORMULA ? dimension.formulaType : undefined,
139
- groupType: dimension.groupType,
140
- groupValue: dimension.groupValue,
141
- sort: {
142
- by: (0, get_1._get)(dimension, "sortOption.sortBy", "VALUE"),
143
- direction: (0, get_1._get)(dimension, "sortOption.sortDirection", "DESC"),
144
- },
145
- }));
146
- };
147
- /**
148
- * Gets max data point number
149
- * @param column The column to filter
150
- * @param chartSettings The settings of the chart. For Aggregate Columns.
151
- * @returns max data point number
152
- */
153
- _getMaxDataPoints = (column, chartSettings) => {
154
- return !(0, isDateColumn_1.isDateColumn)(column) && !(0, isEmpty_1.isEmpty)(column.aggregate)
155
- ? (0, get_1._get)(chartSettings, "maxDataPoints.option", 1000)
156
- : 1000;
157
- };
158
- /**
159
- * Gets sort option structure
160
- * @param column The column to filter
161
- * @returns sort option structure
162
- */
163
- _getSortOption = (column) => {
164
- let by = "CATEGORY";
165
- let direction = (0, isNumericalColumn_1.isNumericalColumn)(column) ? "DESC" : "ASC";
166
- if (!(0, isEmpty_1.isEmpty)(column.sorting)) {
167
- by = (0, get_1._get)(column.sorting, "sortBy");
168
- direction = (0, get_1._get)(column.sorting, "order");
169
- if (by == null)
170
- by = "VALUE";
171
- if (direction == null)
172
- direction = "DESC";
173
- }
174
- return { by, direction };
175
- };
176
- /**
177
- * Gets summaries body structure
178
- * @param uFilter The filter Builder filter
179
- * @returns summaries body structure
180
- */
181
- _getSummariesBody = (uFilter) => {
182
- const { column, validator } = uFilter;
183
- const summary = {
184
- aggregate: (0, get_1._get)(column, "aggregate.label", AGGREGATE_1.AGGREGATE.COUNT),
185
- questionid: column.id,
186
- property: !(0, isDateColumn_1.isDateColumn)(uFilter.column) ? uFilter.property : undefined,
187
- type: column.type,
49
+ .catch((_) => {
50
+ return { data: [], total: 0 };
51
+ });
188
52
  };
189
- let summaries = [summary];
190
- if ((0, isNumericalColumn_1.isNumericalColumn)(column) || (0, isRangeValidator_1.isRangeValidator)(validator)) {
191
- summaries = [
192
- { ...summary, aggregate: AGGREGATE_1.AGGREGATE.MIN },
193
- { ...summary, aggregate: AGGREGATE_1.AGGREGATE.MAX },
53
+ /**
54
+ * Gets request body structure
55
+ * @param uFilter The filter Builder filter
56
+ * @param filterLogic Additional filter logic to apply in the preview
57
+ * @param chartSettings The settings of the chart. For Aggregate Columns.
58
+ * @returns the request body structure
59
+ */
60
+ this._getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings, afterKey) => {
61
+ const { column, validator } = uFilter;
62
+ const haveAggFilters = ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.aggregateColumns) || []).length &&
63
+ ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart) || []).length;
64
+ let searchLogic;
65
+ if (!(0, isEmpty_1.isEmpty)(uFilter.values)) {
66
+ searchLogic = (0, flatUIToOldLogic_1.flatUIToOldLogic)([
67
+ Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(column, validator), column: Object.assign(Object.assign({}, uFilter.column), { linkid: undefined }) }),
68
+ ]);
69
+ }
70
+ let filterCharts = [];
71
+ if (haveAggFilters) {
72
+ filterCharts = chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart.map((chart) => {
73
+ const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
74
+ s.aggregate === uFilter.column.aggregate);
75
+ const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
76
+ const chartAggFilters = (0, getAggFiltersBySummaryIndex_1.getAggFiltersBySummaryIndex)(chart.aggFilters, summaryIndex);
77
+ const searchAggFilters = (0, OLD_getAggFilters_1.getAggFilters)((searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [], summary ? [summary] : []);
78
+ return Object.assign(Object.assign({}, chart), { aggFilters: searchAggFilters || chartAggFilters, summaries: summary ? [summary] : [] });
79
+ }).filter((chart) => chart.summaries.length);
80
+ }
81
+ const dimensions = !filterCharts[0]
82
+ ? this._getDimensionsBody(uFilter)
83
+ : this._getDimensionsBodyAdapter(filterCharts[0].dimensions);
84
+ const summaries = !filterCharts[0]
85
+ ? this._getSummariesBody(uFilter)
86
+ : filterCharts[0].summaries;
87
+ const maxDataPoints = this._getMaxDataPoints(column, chartSettings);
88
+ const filters = [
89
+ ...filterLogic,
90
+ ...(!filterCharts[0] ? (searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [] : []),
194
91
  ];
195
- }
196
- return summaries;
197
- };
198
- /**
199
- * Refines the body structure
200
- * @param bodies The body structure
201
- * @param uFilter The filter Builder filter
202
- * @returns the body structure
203
- */
204
- _refineBodies = (bodies, uFilter) => {
205
- const _bodies = (0, cloneDeep_1.cloneDeep)(bodies);
206
- if (uFilter.property != null) {
207
- _bodies.forEach((body) => {
208
- if ((0, isDateColumn_1.isDateColumn)(uFilter.column)) {
209
- body["groupType"] = "DATE";
210
- body["groupValue"] = uFilter.property.toUpperCase();
211
- }
212
- else {
213
- body["property"] = uFilter.property;
214
- }
215
- });
216
- }
217
- return _bodies;
218
- };
219
- /**
220
- * Gets the validation type for the preview request
221
- * @param column The column to filter
222
- * @param vaildator Validator Type
223
- * @returns the validator type for the preview request
224
- */
225
- _getValidationType = (column, validator) => {
226
- if ((0, isDateColumn_1.isDateColumn)(column) ||
227
- column.type === COLUMN_1.COLUMN.BUCKET ||
228
- (0, isNumericalColumn_1.isNumericalColumn)(column)) {
229
- return FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS;
230
- }
231
- else {
232
- if ([
233
- FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_CONTAIN,
234
- FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS,
235
- FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_EQUAL,
236
- ].includes(validator)) {
237
- return FILTER_VALIDATOR_1.FILTER_VALIDATOR.CONTAINS;
92
+ return { dimensions, summaries, maxDataPoints, afterKey, logic: filters };
93
+ };
94
+ /**
95
+ * Gets dimension body structure
96
+ * @param uFilter The filter Builder filter
97
+ * @returns the dimension body structure
98
+ */
99
+ this._getDimensionsBody = (uFilter) => {
100
+ const { column, validator } = uFilter;
101
+ let dimensions;
102
+ if (!(0, isRangeValidator_1.isRangeValidator)(validator)) {
103
+ dimensions = [
104
+ {
105
+ questionid: column.id,
106
+ type: column.type,
107
+ formulaType: column.type === COLUMN_1.COLUMN.FORMULA ? column.formulaType : undefined,
108
+ sort: this._getSortOption(column),
109
+ },
110
+ ];
111
+ dimensions = this._refineBodies([...dimensions], uFilter);
112
+ }
113
+ return dimensions;
114
+ };
115
+ /**
116
+ * Get a dimension body structure foor pagination endpoint
117
+ * @param dimensions
118
+ * @returns the dimension body structure
119
+ */
120
+ this._getDimensionsBodyAdapter = (dimensions = []) => {
121
+ return dimensions.map((dimension) => ({
122
+ questionid: dimension.questionid,
123
+ type: dimension.type,
124
+ formulaType: dimension.type === COLUMN_1.COLUMN.FORMULA ? dimension.formulaType : undefined,
125
+ groupType: dimension.groupType,
126
+ groupValue: dimension.groupValue,
127
+ sort: {
128
+ by: (0, get_1._get)(dimension, "sortOption.sortBy", "VALUE"),
129
+ direction: (0, get_1._get)(dimension, "sortOption.sortDirection", "DESC"),
130
+ },
131
+ }));
132
+ };
133
+ /**
134
+ * Gets max data point number
135
+ * @param column The column to filter
136
+ * @param chartSettings The settings of the chart. For Aggregate Columns.
137
+ * @returns max data point number
138
+ */
139
+ this._getMaxDataPoints = (column, chartSettings) => {
140
+ return !(0, isDateColumn_1.isDateColumn)(column) && !(0, isEmpty_1.isEmpty)(column.aggregate)
141
+ ? (0, get_1._get)(chartSettings, "maxDataPoints.option", 1000)
142
+ : 1000;
143
+ };
144
+ /**
145
+ * Gets sort option structure
146
+ * @param column The column to filter
147
+ * @returns sort option structure
148
+ */
149
+ this._getSortOption = (column) => {
150
+ let by = "CATEGORY";
151
+ let direction = (0, isNumericalColumn_1.isNumericalColumn)(column) ? "DESC" : "ASC";
152
+ if (!(0, isEmpty_1.isEmpty)(column.sorting)) {
153
+ by = (0, get_1._get)(column.sorting, "sortBy");
154
+ direction = (0, get_1._get)(column.sorting, "order");
155
+ if (by == null)
156
+ by = "VALUE";
157
+ if (direction == null)
158
+ direction = "DESC";
159
+ }
160
+ return { by, direction };
161
+ };
162
+ /**
163
+ * Gets summaries body structure
164
+ * @param uFilter The filter Builder filter
165
+ * @returns summaries body structure
166
+ */
167
+ this._getSummariesBody = (uFilter) => {
168
+ const { column, validator } = uFilter;
169
+ const summary = {
170
+ aggregate: (0, get_1._get)(column, "aggregate.label", AGGREGATE_1.AGGREGATE.COUNT),
171
+ questionid: column.id,
172
+ property: !(0, isDateColumn_1.isDateColumn)(uFilter.column) ? uFilter.property : undefined,
173
+ type: column.type,
174
+ };
175
+ let summaries = [summary];
176
+ if ((0, isNumericalColumn_1.isNumericalColumn)(column) || (0, isRangeValidator_1.isRangeValidator)(validator)) {
177
+ summaries = [
178
+ Object.assign(Object.assign({}, summary), { aggregate: AGGREGATE_1.AGGREGATE.MIN }),
179
+ Object.assign(Object.assign({}, summary), { aggregate: AGGREGATE_1.AGGREGATE.MAX }),
180
+ ];
238
181
  }
239
- else if (validator === FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_END_WITH) {
240
- return FILTER_VALIDATOR_1.FILTER_VALIDATOR.ENDS_WITH;
182
+ return summaries;
183
+ };
184
+ /**
185
+ * Refines the body structure
186
+ * @param bodies The body structure
187
+ * @param uFilter The filter Builder filter
188
+ * @returns the body structure
189
+ */
190
+ this._refineBodies = (bodies, uFilter) => {
191
+ const _bodies = (0, cloneDeep_1.cloneDeep)(bodies);
192
+ if (uFilter.property != null) {
193
+ _bodies.forEach((body) => {
194
+ if ((0, isDateColumn_1.isDateColumn)(uFilter.column)) {
195
+ body["groupType"] = "DATE";
196
+ body["groupValue"] = uFilter.property.toUpperCase();
197
+ }
198
+ else {
199
+ body["property"] = uFilter.property;
200
+ }
201
+ });
241
202
  }
242
- else if (validator === FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_START_WITH) {
243
- return FILTER_VALIDATOR_1.FILTER_VALIDATOR.STARTS_WITH;
203
+ return _bodies;
204
+ };
205
+ /**
206
+ * Gets the validation type for the preview request
207
+ * @param column The column to filter
208
+ * @param vaildator Validator Type
209
+ * @returns the validator type for the preview request
210
+ */
211
+ this._getValidationType = (column, validator) => {
212
+ if ((0, isDateColumn_1.isDateColumn)(column) ||
213
+ column.type === COLUMN_1.COLUMN.BUCKET ||
214
+ (0, isNumericalColumn_1.isNumericalColumn)(column)) {
215
+ return FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS;
244
216
  }
245
217
  else {
246
- return validator;
218
+ if ([
219
+ FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_CONTAIN,
220
+ FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS,
221
+ FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_EQUAL,
222
+ ].includes(validator)) {
223
+ return FILTER_VALIDATOR_1.FILTER_VALIDATOR.CONTAINS;
224
+ }
225
+ else if (validator === FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_END_WITH) {
226
+ return FILTER_VALIDATOR_1.FILTER_VALIDATOR.ENDS_WITH;
227
+ }
228
+ else if (validator === FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_START_WITH) {
229
+ return FILTER_VALIDATOR_1.FILTER_VALIDATOR.STARTS_WITH;
230
+ }
231
+ else {
232
+ return validator;
233
+ }
234
+ }
235
+ };
236
+ /**
237
+ * Gets the Data from preview Response
238
+ * @param response The preview presponse
239
+ * @param uFilter The filter Builder filter
240
+ * @returns The resulting data
241
+ */
242
+ this._getDataFromResponse = (response, uFilter) => {
243
+ var _a;
244
+ const data = { data: [], total: 0 };
245
+ if (!this.isResultPaginationEmpty(response)) {
246
+ const records = (0, get_1._get)(response, "data");
247
+ data.data = (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
248
+ ? records.map((record) => ({
249
+ value: record.key.toString(),
250
+ }))
251
+ : this._getResponseSummaries(records);
252
+ data.data = (0, getUniqueArray_1.getUniqueArray)(data.data, "value");
253
+ data.total = (_a = (0, get_1._get)(response, "totalGroups", 0)) !== null && _a !== void 0 ? _a : 0;
254
+ this.setAfterKey((0, get_1._get)(response, "afterKey"));
247
255
  }
248
- }
249
- };
250
- /**
251
- * Gets the Data from preview Response
252
- * @param response The preview presponse
253
- * @param uFilter The filter Builder filter
254
- * @returns The resulting data
255
- */
256
- _getDataFromResponse = (response, uFilter) => {
257
- const data = { data: [], total: 0 };
258
- if (!this.isResultPaginationEmpty(response)) {
259
- const records = (0, get_1._get)(response, "data");
260
- data.data = (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
261
- ? records.map((record) => ({
262
- value: record.key.toString(),
263
- }))
264
- : this._getResponseSummaries(records);
265
- data.data = (0, getUniqueArray_1.getUniqueArray)(data.data, "value");
266
- data.total = (0, get_1._get)(response, "totalGroups", 0) ?? 0;
267
- this.setAfterKey((0, get_1._get)(response, "afterKey"));
268
- }
269
- return data;
270
- };
271
- /**
272
- * Gets summaries from preview response
273
- * @param records The data from preview response
274
- * @param values The values from the preview response
275
- * @returns the sumaries
276
- */
277
- _getResponseSummaries = (records, values = []) => {
278
- records.forEach((record) => {
279
- const value = record.summaries[0].toString();
280
- value && values.push({ value });
281
- });
282
- return values;
283
- };
284
- /**
285
- * Refines the afterKey object
286
- * @param props
287
- */
288
- refineAfterkey = (uFilter, forceSet = false) => {
289
- if (forceSet ||
290
- (0, get_1._get)(uFilter, "values[0].value", "") !==
291
- (0, get_1._get)(this.uFilter, "values[0].value", "") ||
292
- !this.areColumnsEquals(uFilter.column, (0, get_1._get)(this.uFilter, "column")) ||
293
- uFilter.validator !== this.uFilter.validator ||
294
- uFilter.property !== this.uFilter.property ||
295
- uFilter.extras.scope !== this.uFilter.extras.scope)
296
- this.setAfterKey(undefined);
297
- };
298
- /**
299
- * Sets the afterKey object
300
- * @param afterKey the afterKey object
301
- */
302
- setAfterKey = (afterKey) => {
303
- this.afterKey = afterKey;
304
- };
305
- /**
306
- * Sets the Filter Builder Filter
307
- * @param uFilter
308
- */
309
- setProps = (uFilter) => {
310
- this.uFilter = (0, cloneDeep_1.cloneDeep)(uFilter);
311
- };
312
- /**
313
- * Checks if two filter columns are the same.
314
- * @param column1
315
- * @param column2
316
- * @returns True: Columns are equal; False: Columns are not equal
317
- */
318
- areColumnsEquals = (column1, column2) => {
319
- if ((0, isEmpty_1.isEmpty)(column1) || (0, isEmpty_1.isEmpty)(column2))
320
- return false;
321
- return (column1.id === column2.id &&
322
- column1.qrveyid === column2.qrveyid &&
323
- column1.property === column2.property &&
324
- column1.aggregate === column2.aggregate);
325
- };
326
- isResultPaginationEmpty = (resultObject) => {
327
- const result = (0, get_1._get)(resultObject, "data");
328
- return (0, isEmpty_1.isEmpty)(result);
329
- };
256
+ return data;
257
+ };
258
+ /**
259
+ * Gets summaries from preview response
260
+ * @param records The data from preview response
261
+ * @param values The values from the preview response
262
+ * @returns the sumaries
263
+ */
264
+ this._getResponseSummaries = (records, values = []) => {
265
+ records.forEach((record) => {
266
+ const value = record.summaries[0].toString();
267
+ value && values.push({ value });
268
+ });
269
+ return values;
270
+ };
271
+ /**
272
+ * Refines the afterKey object
273
+ * @param props
274
+ */
275
+ this.refineAfterkey = (uFilter, forceSet = false) => {
276
+ if (forceSet ||
277
+ (0, get_1._get)(uFilter, "values[0].value", "") !==
278
+ (0, get_1._get)(this.uFilter, "values[0].value", "") ||
279
+ !this.areColumnsEquals(uFilter.column, (0, get_1._get)(this.uFilter, "column")) ||
280
+ uFilter.validator !== this.uFilter.validator ||
281
+ uFilter.property !== this.uFilter.property ||
282
+ uFilter.extras.scope !== this.uFilter.extras.scope)
283
+ this.setAfterKey(undefined);
284
+ };
285
+ /**
286
+ * Sets the afterKey object
287
+ * @param afterKey the afterKey object
288
+ */
289
+ this.setAfterKey = (afterKey) => {
290
+ this.afterKey = afterKey;
291
+ };
292
+ /**
293
+ * Sets the Filter Builder Filter
294
+ * @param uFilter
295
+ */
296
+ this.setProps = (uFilter) => {
297
+ this.uFilter = (0, cloneDeep_1.cloneDeep)(uFilter);
298
+ };
299
+ /**
300
+ * Checks if two filter columns are the same.
301
+ * @param column1
302
+ * @param column2
303
+ * @returns True: Columns are equal; False: Columns are not equal
304
+ */
305
+ this.areColumnsEquals = (column1, column2) => {
306
+ if ((0, isEmpty_1.isEmpty)(column1) || (0, isEmpty_1.isEmpty)(column2))
307
+ return false;
308
+ return (column1.id === column2.id &&
309
+ column1.qrveyid === column2.qrveyid &&
310
+ column1.property === column2.property &&
311
+ column1.aggregate === column2.aggregate);
312
+ };
313
+ this.isResultPaginationEmpty = (resultObject) => {
314
+ const result = (0, get_1._get)(resultObject, "data");
315
+ return (0, isEmpty_1.isEmpty)(result);
316
+ };
317
+ }
330
318
  }
331
319
  exports.default = UChartPaginationApi;
@@ -16,15 +16,6 @@ this class is based on moment format:
16
16
  ms: S
17
17
  */
18
18
  class DurationFormatter {
19
- options;
20
- parts;
21
- valueFormatter;
22
- numberFactor;
23
- template;
24
- numberFormatOptions = {
25
- minimumFractionDigits: definition_1.DEFAULT_OPTIONS.fractionDigits,
26
- maximumFractionDigits: definition_1.DEFAULT_OPTIONS.fractionDigits,
27
- };
28
19
  /**
29
20
  * The constructor function takes in a template string and an options object. It then sets the
30
21
  * options object to the default options object if no options object is passed in. It then parses
@@ -37,13 +28,17 @@ class DurationFormatter {
37
28
  * @param options - This is an object that contains the following properties: unit, locale and fractionDigits
38
29
  */
39
30
  constructor(options) {
31
+ this.numberFormatOptions = {
32
+ minimumFractionDigits: definition_1.DEFAULT_OPTIONS.fractionDigits,
33
+ maximumFractionDigits: definition_1.DEFAULT_OPTIONS.fractionDigits,
34
+ };
40
35
  this.setOptions(options.options);
41
36
  this.setParts(options.template);
42
37
  this.setLocaleFormatter(options.intlNumberFormat);
43
38
  this.setNumberFactor();
44
39
  }
45
40
  setOptions(options) {
46
- this.options = { ...definition_1.DEFAULT_OPTIONS, ...options };
41
+ this.options = Object.assign(Object.assign({}, definition_1.DEFAULT_OPTIONS), options);
47
42
  }
48
43
  /**
49
44
  * It sets the locale formatter for the number.
@@ -97,9 +92,9 @@ class DurationFormatter {
97
92
  * It sets the numberFactor to the value of the duration part that matches the unit.
98
93
  */
99
94
  setNumberFactor() {
95
+ var _a;
100
96
  this.numberFactor =
101
- Object.values(definition_1.DURATION_PARTS).find((d) => d.name === this.options.unit)
102
- ?.ms || 1;
97
+ ((_a = Object.values(definition_1.DURATION_PARTS).find((d) => d.name === this.options.unit)) === null || _a === void 0 ? void 0 : _a.ms) || 1;
103
98
  }
104
99
  /**
105
100
  * It takes a string, splits it into an array of strings, then maps each string to a config object,