@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.
- package/README.md +1 -1
- package/dist/charts/helpers/isSimpleTableChart.js +2 -1
- package/dist/cjs/charts/helpers/isSimpleTableChart.js +2 -1
- package/dist/cjs/column_format/helpers/defineTableChartFormat.js +10 -26
- package/dist/cjs/column_format/helpers/defineXYChartFormat.js +7 -11
- package/dist/cjs/columns/constants/COLUMN_INFO.js +23 -49
- package/dist/cjs/columns/constants/COLUMN_LABEL.js +1 -29
- package/dist/cjs/columns/constants/COLUMN_PROPERTY_INFO.js +3 -8
- package/dist/cjs/columns/constants/COLUMN_PROPERTY_LABEL.js +1 -11
- package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -1
- package/dist/cjs/dates/relative/RelativeStatementAdapter.js +6 -24
- package/dist/cjs/filters/adapters/FDToFlatUI.js +8 -18
- package/dist/cjs/filters/adapters/FDToLogic.js +1 -1
- package/dist/cjs/filters/adapters/FDToUI.js +12 -24
- package/dist/cjs/filters/adapters/UIToFlatUI.js +4 -14
- package/dist/cjs/filters/adapters/UIToOldLogic.js +2 -1
- package/dist/cjs/filters/adapters/adaptFilterValues.js +1 -6
- package/dist/cjs/filters/adapters/flatUIToFD.js +3 -14
- package/dist/cjs/filters/adapters/flatUIToOldLogic.js +15 -49
- package/dist/cjs/filters/adapters/flatUIToUI.js +3 -14
- package/dist/cjs/filters/adapters/logicToFlatUI.js +20 -32
- package/dist/cjs/filters/adapters/transformFilters.js +4 -19
- package/dist/cjs/filters/classes/FilterInputErrorHandler.js +0 -8
- package/dist/cjs/filters/helpers/applyHierarchyForAggFilters.js +2 -11
- package/dist/cjs/filters/helpers/backend/buildExpression.js +2 -1
- package/dist/cjs/filters/helpers/backend/buildFilters.js +2 -1
- package/dist/cjs/filters/helpers/backend/getAggFiltersBySummaryIndex.js +1 -4
- package/dist/cjs/filters/helpers/backend/getLogicByDatasets.js +5 -7
- package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.js +6 -8
- package/dist/cjs/filters/helpers/common/areFiltersEquals.js +3 -2
- package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +17 -22
- package/dist/cjs/filters/helpers/common/getFilterid.js +9 -8
- package/dist/cjs/filters/helpers/common/getFiltersByDatasetsColumns.js +7 -16
- package/dist/cjs/filters/helpers/common/getFiltersByParams.js +12 -18
- package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +4 -3
- package/dist/cjs/filters/helpers/common/getMergeValuesSettings.js +2 -1
- package/dist/cjs/filters/helpers/common/getParamsToGetFilterSettings.js +10 -9
- package/dist/cjs/filters/helpers/common/mergeFilters.js +7 -30
- package/dist/cjs/filters/helpers/common/mergeValues.js +9 -6
- package/dist/cjs/filters/helpers/common/resolveFilterConditions.js +9 -8
- package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +1 -1
- package/dist/cjs/filters/helpers/ui/getUIValues.js +14 -12
- package/dist/cjs/filters/helpers/ui/getUpdatedUIFilters.js +1 -1
- package/dist/cjs/filters/helpers/ui/resolveUIFlatFilterByParams.js +5 -4
- package/dist/cjs/filters/helpers/ui/transformFilterValues.js +3 -14
- package/dist/cjs/filters/interfaces/builder/IFilterBuilderSettings.d.ts +2 -0
- package/dist/cjs/filters/services/Filters.api.js +44 -45
- package/dist/cjs/filters/services/UChartApi.js +246 -257
- package/dist/cjs/filters/services/UChartPaginationApi.js +289 -301
- package/dist/cjs/format/duration/durationFormatter.js +7 -12
- package/dist/cjs/format/format.js +8 -7
- package/dist/cjs/format/localization.d.ts +2 -1
- package/dist/cjs/format/localization.js +8 -7
- package/dist/cjs/general/array/addPropertyToArrayOfObjects.js +1 -1
- package/dist/cjs/general/object/getAttribute.js +2 -6
- package/dist/cjs/general/object/mergeDeep.js +3 -2
- package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
- package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER.js +6 -21
- package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
- package/dist/cjs/globalization/service/i18nextBuilder.js +31 -19
- package/dist/cjs/globalization/service/initI18n.js +13 -2
- package/dist/cjs/qrvey/helpers/getCategorizableExpression.js +2 -1
- package/dist/cjs/qrvey/helpers/getDataAnswersByColumn.js +1 -4
- package/dist/cjs/qrvey/helpers/getDropdownAnswers.js +1 -1
- package/dist/cjs/qrvey/helpers/getImageAnswers.js +2 -2
- package/dist/cjs/qrvey/helpers/getImageUploadHasAnalysis.js +1 -1
- package/dist/cjs/qrvey/helpers/getLookupAnswers.js +4 -4
- package/dist/cjs/qrvey/helpers/getLookupDisplays.js +1 -1
- package/dist/cjs/qrvey/helpers/getSlidebarAnswers.js +2 -1
- package/dist/cjs/qrvey/helpers/getYesNoAnswers.js +1 -5
- package/dist/cjs/qrvey/helpers/transformValue.js +2 -1
- package/dist/cjs/services/api/Charts.api.js +3 -9
- package/dist/cjs/services/api/getAllDatasets.api.js +1 -1
- package/dist/cjs/services/api/getAllQrveys.api.js +1 -1
- package/dist/cjs/services/api/getDatasetColumns.api.js +1 -1
- package/dist/cjs/services/api/getDatasetsByIds.api.js +2 -2
- package/dist/cjs/services/api/getModel.api.js +1 -4
- package/dist/cjs/services/helpers/Request.js +16 -5
- package/dist/column_format/helpers/defineTableChartFormat.js +10 -26
- package/dist/column_format/helpers/defineXYChartFormat.js +7 -11
- package/dist/columns/constants/COLUMN_INFO.js +23 -49
- package/dist/columns/constants/COLUMN_LABEL.js +1 -29
- package/dist/columns/constants/COLUMN_PROPERTY_INFO.js +3 -8
- package/dist/columns/constants/COLUMN_PROPERTY_LABEL.js +1 -11
- package/dist/columns/helpers/getDatasetColumn.js +1 -1
- package/dist/dates/relative/RelativeStatementAdapter.js +6 -24
- package/dist/filters/adapters/FDToFlatUI.js +8 -18
- package/dist/filters/adapters/FDToLogic.js +1 -1
- package/dist/filters/adapters/FDToUI.js +12 -24
- package/dist/filters/adapters/UIToFlatUI.js +4 -14
- package/dist/filters/adapters/UIToOldLogic.js +2 -1
- package/dist/filters/adapters/adaptFilterValues.js +1 -6
- package/dist/filters/adapters/flatUIToFD.js +3 -14
- package/dist/filters/adapters/flatUIToOldLogic.js +15 -49
- package/dist/filters/adapters/flatUIToUI.js +3 -14
- package/dist/filters/adapters/logicToFlatUI.js +20 -32
- package/dist/filters/adapters/transformFilters.js +4 -19
- package/dist/filters/classes/FilterInputErrorHandler.js +0 -8
- package/dist/filters/helpers/applyHierarchyForAggFilters.js +2 -11
- package/dist/filters/helpers/backend/buildExpression.js +2 -1
- package/dist/filters/helpers/backend/buildFilters.js +2 -1
- package/dist/filters/helpers/backend/getAggFiltersBySummaryIndex.js +1 -4
- package/dist/filters/helpers/backend/getLogicByDatasets.js +5 -7
- package/dist/filters/helpers/backend/getLogicByDatasetsColumns.js +6 -8
- package/dist/filters/helpers/common/areFiltersEquals.js +3 -2
- package/dist/filters/helpers/common/excludeFiltersByParams.js +17 -22
- package/dist/filters/helpers/common/getFilterid.js +9 -8
- package/dist/filters/helpers/common/getFiltersByDatasetsColumns.js +7 -16
- package/dist/filters/helpers/common/getFiltersByParams.js +12 -18
- package/dist/filters/helpers/common/getMergeFiltersSettings.js +4 -3
- package/dist/filters/helpers/common/getMergeValuesSettings.js +2 -1
- package/dist/filters/helpers/common/getParamsToGetFilterSettings.js +10 -9
- package/dist/filters/helpers/common/mergeFilters.js +7 -30
- package/dist/filters/helpers/common/mergeValues.js +9 -6
- package/dist/filters/helpers/common/resolveFilterConditions.js +9 -8
- package/dist/filters/helpers/getAggFiltersFromFilterData.js +1 -1
- package/dist/filters/helpers/ui/getUIValues.js +14 -12
- package/dist/filters/helpers/ui/getUpdatedUIFilters.js +1 -1
- package/dist/filters/helpers/ui/resolveUIFlatFilterByParams.js +5 -4
- package/dist/filters/helpers/ui/transformFilterValues.js +3 -14
- package/dist/filters/interfaces/builder/IFilterBuilderSettings.d.ts +2 -0
- package/dist/filters/services/Filters.api.js +44 -45
- package/dist/filters/services/UChartApi.js +246 -257
- package/dist/filters/services/UChartPaginationApi.js +289 -301
- package/dist/format/duration/durationFormatter.js +7 -12
- package/dist/format/format.js +8 -7
- package/dist/format/localization.d.ts +2 -1
- package/dist/format/localization.js +7 -6
- package/dist/general/array/addPropertyToArrayOfObjects.js +1 -1
- package/dist/general/object/getAttribute.js +2 -6
- package/dist/general/object/mergeDeep.js +3 -2
- package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
- package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER.js +6 -21
- package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
- package/dist/globalization/service/i18nextBuilder.js +31 -19
- package/dist/globalization/service/initI18n.js +13 -2
- package/dist/qrvey/helpers/getCategorizableExpression.js +2 -1
- package/dist/qrvey/helpers/getDataAnswersByColumn.js +1 -4
- package/dist/qrvey/helpers/getDropdownAnswers.js +1 -1
- package/dist/qrvey/helpers/getImageAnswers.js +2 -2
- package/dist/qrvey/helpers/getImageUploadHasAnalysis.js +1 -1
- package/dist/qrvey/helpers/getLookupAnswers.js +4 -4
- package/dist/qrvey/helpers/getLookupDisplays.js +1 -1
- package/dist/qrvey/helpers/getSlidebarAnswers.js +2 -1
- package/dist/qrvey/helpers/getYesNoAnswers.js +1 -5
- package/dist/qrvey/helpers/transformValue.js +2 -1
- package/dist/services/api/Charts.api.js +3 -9
- package/dist/services/api/getAllDatasets.api.js +1 -1
- package/dist/services/api/getAllQrveys.api.js +1 -1
- package/dist/services/api/getDatasetColumns.api.js +1 -1
- package/dist/services/api/getDatasetsByIds.api.js +2 -2
- package/dist/services/api/getModel.api.js +1 -4
- package/dist/services/helpers/Request.js +16 -5
- package/package.json +3 -3
|
@@ -17,272 +17,261 @@ const flatUIToOldLogic_1 = require("../adapters/flatUIToOldLogic");
|
|
|
17
17
|
const Charts_api_1 = __importDefault(require("../../services/api/Charts.api"));
|
|
18
18
|
const OLD_getAggFilters_1 = require("../helpers/OLD_getAggFilters");
|
|
19
19
|
class UChartApi {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
.then((response) => {
|
|
39
|
-
return this._getDataFromResponse(response, uFilter);
|
|
40
|
-
})
|
|
41
|
-
.catch((_) => {
|
|
42
|
-
return { data: [] };
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Gets request body structure
|
|
47
|
-
* @param uFilter The filter Builder filter
|
|
48
|
-
* @param filterLogic Additional filter logic to apply in the preview
|
|
49
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
50
|
-
* @returns the request body structure
|
|
51
|
-
*/
|
|
52
|
-
_getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings) => {
|
|
53
|
-
const { column, validator } = uFilter;
|
|
54
|
-
const haveAggFilters = (chartSettings?.aggregateColumns || []).length &&
|
|
55
|
-
(chartSettings?.chart || []).length;
|
|
56
|
-
let searchLogic;
|
|
57
|
-
if (!(0, isEmpty_1.isEmpty)(uFilter.values)) {
|
|
58
|
-
searchLogic = (0, flatUIToOldLogic_1.flatUIToOldLogic)([
|
|
59
|
-
{
|
|
60
|
-
...uFilter,
|
|
61
|
-
validator: this._getValidationType(column, validator),
|
|
62
|
-
column: { ...uFilter.column, linkid: undefined },
|
|
63
|
-
},
|
|
64
|
-
]);
|
|
65
|
-
}
|
|
66
|
-
let filterCharts = [];
|
|
67
|
-
if (haveAggFilters) {
|
|
68
|
-
filterCharts = chartSettings?.chart
|
|
69
|
-
.map((chart) => {
|
|
70
|
-
if (uFilter.column.type === COLUMN_1.COLUMN.AGGREGATED_FORMULA)
|
|
71
|
-
return chart;
|
|
72
|
-
const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
|
|
73
|
-
s.aggregate === uFilter.column.aggregate);
|
|
74
|
-
const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
|
|
75
|
-
const chartAggFilters = (0, getAggFiltersBySummaryIndex_1.getAggFiltersBySummaryIndex)(chart.aggFilters, summaryIndex);
|
|
76
|
-
const searchAggFilters = (0, OLD_getAggFilters_1.getAggFilters)(searchLogic?.logic || [], summary ? [summary] : []);
|
|
77
|
-
return {
|
|
78
|
-
...chart,
|
|
79
|
-
aggFilters: searchAggFilters || chartAggFilters,
|
|
80
|
-
summaries: summary ? [summary] : [],
|
|
81
|
-
};
|
|
20
|
+
constructor() {
|
|
21
|
+
/**
|
|
22
|
+
* Gets a promise with a resulting data
|
|
23
|
+
* @param config the config
|
|
24
|
+
* @param uFilter The filter Builder filter
|
|
25
|
+
* @param filterLogic Additional filter logic to apply in the preview
|
|
26
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
27
|
+
* @returns a promise with a resulting data
|
|
28
|
+
*/
|
|
29
|
+
this.getChartResult = (config, uFilter, filterLogic = [], chartSettings, _resetApi = false) => {
|
|
30
|
+
const requestBody = this._getPreviewRequestBody(uFilter, filterLogic, chartSettings);
|
|
31
|
+
const customChartApi = new Charts_api_1.default(Object.assign(Object.assign({}, config), { qrvey_id: (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
|
|
32
|
+
? uFilter.column.qrveyid
|
|
33
|
+
: chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.qrveyid }));
|
|
34
|
+
return customChartApi
|
|
35
|
+
.getResults(requestBody, false, true)
|
|
36
|
+
.then((response) => {
|
|
37
|
+
return this._getDataFromResponse(response, uFilter);
|
|
82
38
|
})
|
|
83
|
-
.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
? [this._getChartBody(uFilter)]
|
|
87
|
-
: [filterCharts[0]];
|
|
88
|
-
const filters = [
|
|
89
|
-
...filterLogic,
|
|
90
|
-
...(!filterCharts[0] ? searchLogic?.logic || [] : []),
|
|
91
|
-
];
|
|
92
|
-
return { charts: chartsBody, logic: filters, qrveyid: column.qrveyid };
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* Gets chart body structure
|
|
96
|
-
* @param uFilter The filter Builder filter
|
|
97
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
98
|
-
* @returns the chart body structure
|
|
99
|
-
*/
|
|
100
|
-
_getChartBody = (uFilter, chartSettings) => {
|
|
101
|
-
const dimensions = this._getDimensionsBody(uFilter, chartSettings);
|
|
102
|
-
const summaries = this._getSummariesBody(uFilter);
|
|
103
|
-
return { dimensions, summaries };
|
|
104
|
-
};
|
|
105
|
-
/**
|
|
106
|
-
* Gets dimension body structure
|
|
107
|
-
* @param uFilter The filter Builder filter
|
|
108
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
109
|
-
* @returns the dimension body structure
|
|
110
|
-
*/
|
|
111
|
-
_getDimensionsBody = (uFilter, chartSettings) => {
|
|
112
|
-
const { column, validator } = uFilter;
|
|
113
|
-
let dimensions;
|
|
114
|
-
if (!(0, isRangeValidator_1.isRangeValidator)(validator)) {
|
|
115
|
-
dimensions = [
|
|
116
|
-
{
|
|
117
|
-
questionid: column.id,
|
|
118
|
-
qrveyid: column.qrveyid,
|
|
119
|
-
// linkid: column.linkid,
|
|
120
|
-
maxDataPoints: this._getMaxDataPoints(column, chartSettings),
|
|
121
|
-
type: column.type,
|
|
122
|
-
formulaType: column.type === "FORMULA" ? column.formulaType : undefined,
|
|
123
|
-
sortOption: this._getSortOption(column),
|
|
124
|
-
},
|
|
125
|
-
];
|
|
126
|
-
dimensions = this._refineBodies([...dimensions], uFilter);
|
|
127
|
-
}
|
|
128
|
-
return dimensions;
|
|
129
|
-
};
|
|
130
|
-
/**
|
|
131
|
-
* Gets max data point number
|
|
132
|
-
* @param column The column to filter
|
|
133
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
134
|
-
* @returns max data point number
|
|
135
|
-
*/
|
|
136
|
-
_getMaxDataPoints = (column, chartSettings) => {
|
|
137
|
-
return !(0, isDateColumn_1.isDateColumn)(column) && !(0, isEmpty_1.isEmpty)(column.aggregate)
|
|
138
|
-
? (0, get_1._get)(chartSettings, "maxDataPoints.option", 1000)
|
|
139
|
-
: 1000;
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* Gets sort option structure
|
|
143
|
-
* @param column The column to filter
|
|
144
|
-
* @returns sort option structure
|
|
145
|
-
*/
|
|
146
|
-
_getSortOption = (column) => {
|
|
147
|
-
let sortBy = "CATEGORY";
|
|
148
|
-
let sortDirection = (0, isNumericalColumn_1.isNumericalColumn)(column) ? "DESC" : "ASC";
|
|
149
|
-
if (!(0, isEmpty_1.isEmpty)(column.sorting)) {
|
|
150
|
-
sortBy = (0, get_1._get)(column.sorting, "sortBy");
|
|
151
|
-
sortDirection = (0, get_1._get)(column.sorting, "order");
|
|
152
|
-
if (sortBy == null)
|
|
153
|
-
sortBy = "VALUE";
|
|
154
|
-
if (sortDirection == null)
|
|
155
|
-
sortDirection = "DESC";
|
|
156
|
-
}
|
|
157
|
-
return { sortBy, sortDirection };
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* Gets summaries body structure
|
|
161
|
-
* @param uFilter The filter Builder filter
|
|
162
|
-
* @returns summaries body structure
|
|
163
|
-
*/
|
|
164
|
-
_getSummariesBody = (uFilter) => {
|
|
165
|
-
const { column, validator } = uFilter;
|
|
166
|
-
const summary = {
|
|
167
|
-
aggregate: (0, get_1._get)(column, "aggregate.label", AGGREGATE_1.AGGREGATE.COUNT),
|
|
168
|
-
questionid: column.id,
|
|
169
|
-
property: !(0, isDateColumn_1.isDateColumn)(uFilter.column) ? uFilter.property : undefined,
|
|
170
|
-
type: column.type,
|
|
39
|
+
.catch((_) => {
|
|
40
|
+
return { data: [] };
|
|
41
|
+
});
|
|
171
42
|
};
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Gets request body structure
|
|
45
|
+
* @param uFilter The filter Builder filter
|
|
46
|
+
* @param filterLogic Additional filter logic to apply in the preview
|
|
47
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
48
|
+
* @returns the request body structure
|
|
49
|
+
*/
|
|
50
|
+
this._getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings) => {
|
|
51
|
+
const { column, validator } = uFilter;
|
|
52
|
+
const haveAggFilters = ((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.aggregateColumns) || []).length &&
|
|
53
|
+
((chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart) || []).length;
|
|
54
|
+
let searchLogic;
|
|
55
|
+
if (!(0, isEmpty_1.isEmpty)(uFilter.values)) {
|
|
56
|
+
searchLogic = (0, flatUIToOldLogic_1.flatUIToOldLogic)([
|
|
57
|
+
Object.assign(Object.assign({}, uFilter), { validator: this._getValidationType(column, validator), column: Object.assign(Object.assign({}, uFilter.column), { linkid: undefined }) }),
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
let filterCharts = [];
|
|
61
|
+
if (haveAggFilters) {
|
|
62
|
+
filterCharts = chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.chart.map((chart) => {
|
|
63
|
+
if (uFilter.column.type === COLUMN_1.COLUMN.AGGREGATED_FORMULA)
|
|
64
|
+
return chart;
|
|
65
|
+
const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
|
|
66
|
+
s.aggregate === uFilter.column.aggregate);
|
|
67
|
+
const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
|
|
68
|
+
const chartAggFilters = (0, getAggFiltersBySummaryIndex_1.getAggFiltersBySummaryIndex)(chart.aggFilters, summaryIndex);
|
|
69
|
+
const searchAggFilters = (0, OLD_getAggFilters_1.getAggFilters)((searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [], summary ? [summary] : []);
|
|
70
|
+
return Object.assign(Object.assign({}, chart), { aggFilters: searchAggFilters || chartAggFilters, summaries: summary ? [summary] : [] });
|
|
71
|
+
}).filter((chart) => chart.summaries.length);
|
|
72
|
+
}
|
|
73
|
+
const chartsBody = !filterCharts[0]
|
|
74
|
+
? [this._getChartBody(uFilter)]
|
|
75
|
+
: [filterCharts[0]];
|
|
76
|
+
const filters = [
|
|
77
|
+
...filterLogic,
|
|
78
|
+
...(!filterCharts[0] ? (searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [] : []),
|
|
177
79
|
];
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
80
|
+
return { charts: chartsBody, logic: filters, qrveyid: column.qrveyid };
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Gets chart body structure
|
|
84
|
+
* @param uFilter The filter Builder filter
|
|
85
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
86
|
+
* @returns the chart body structure
|
|
87
|
+
*/
|
|
88
|
+
this._getChartBody = (uFilter, chartSettings) => {
|
|
89
|
+
const dimensions = this._getDimensionsBody(uFilter, chartSettings);
|
|
90
|
+
const summaries = this._getSummariesBody(uFilter);
|
|
91
|
+
return { dimensions, summaries };
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Gets dimension body structure
|
|
95
|
+
* @param uFilter The filter Builder filter
|
|
96
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
97
|
+
* @returns the dimension body structure
|
|
98
|
+
*/
|
|
99
|
+
this._getDimensionsBody = (uFilter, chartSettings) => {
|
|
100
|
+
const { column, validator } = uFilter;
|
|
101
|
+
let dimensions;
|
|
102
|
+
if (!(0, isRangeValidator_1.isRangeValidator)(validator)) {
|
|
103
|
+
dimensions = [
|
|
104
|
+
{
|
|
105
|
+
questionid: column.id,
|
|
106
|
+
qrveyid: column.qrveyid,
|
|
107
|
+
// linkid: column.linkid,
|
|
108
|
+
maxDataPoints: this._getMaxDataPoints(column, chartSettings),
|
|
109
|
+
type: column.type,
|
|
110
|
+
formulaType: column.type === "FORMULA" ? column.formulaType : undefined,
|
|
111
|
+
sortOption: this._getSortOption(column),
|
|
112
|
+
},
|
|
113
|
+
];
|
|
114
|
+
dimensions = this._refineBodies([...dimensions], uFilter);
|
|
115
|
+
}
|
|
116
|
+
return dimensions;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Gets max data point number
|
|
120
|
+
* @param column The column to filter
|
|
121
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
122
|
+
* @returns max data point number
|
|
123
|
+
*/
|
|
124
|
+
this._getMaxDataPoints = (column, chartSettings) => {
|
|
125
|
+
return !(0, isDateColumn_1.isDateColumn)(column) && !(0, isEmpty_1.isEmpty)(column.aggregate)
|
|
126
|
+
? (0, get_1._get)(chartSettings, "maxDataPoints.option", 1000)
|
|
127
|
+
: 1000;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Gets sort option structure
|
|
131
|
+
* @param column The column to filter
|
|
132
|
+
* @returns sort option structure
|
|
133
|
+
*/
|
|
134
|
+
this._getSortOption = (column) => {
|
|
135
|
+
let sortBy = "CATEGORY";
|
|
136
|
+
let sortDirection = (0, isNumericalColumn_1.isNumericalColumn)(column) ? "DESC" : "ASC";
|
|
137
|
+
if (!(0, isEmpty_1.isEmpty)(column.sorting)) {
|
|
138
|
+
sortBy = (0, get_1._get)(column.sorting, "sortBy");
|
|
139
|
+
sortDirection = (0, get_1._get)(column.sorting, "order");
|
|
140
|
+
if (sortBy == null)
|
|
141
|
+
sortBy = "VALUE";
|
|
142
|
+
if (sortDirection == null)
|
|
143
|
+
sortDirection = "DESC";
|
|
144
|
+
}
|
|
145
|
+
return { sortBy, sortDirection };
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Gets summaries body structure
|
|
149
|
+
* @param uFilter The filter Builder filter
|
|
150
|
+
* @returns summaries body structure
|
|
151
|
+
*/
|
|
152
|
+
this._getSummariesBody = (uFilter) => {
|
|
153
|
+
const { column, validator } = uFilter;
|
|
154
|
+
const summary = {
|
|
155
|
+
aggregate: (0, get_1._get)(column, "aggregate.label", AGGREGATE_1.AGGREGATE.COUNT),
|
|
156
|
+
questionid: column.id,
|
|
157
|
+
property: !(0, isDateColumn_1.isDateColumn)(uFilter.column) ? uFilter.property : undefined,
|
|
158
|
+
type: column.type,
|
|
159
|
+
};
|
|
160
|
+
let summaries = [summary];
|
|
161
|
+
if ((0, isNumericalColumn_1.isNumericalColumn)(column) || (0, isRangeValidator_1.isRangeValidator)(validator)) {
|
|
162
|
+
summaries = [
|
|
163
|
+
Object.assign(Object.assign({}, summary), { aggregate: AGGREGATE_1.AGGREGATE.MIN }),
|
|
164
|
+
Object.assign(Object.assign({}, summary), { aggregate: AGGREGATE_1.AGGREGATE.MAX }),
|
|
165
|
+
];
|
|
166
|
+
}
|
|
167
|
+
return summaries;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Refines the body structure
|
|
171
|
+
* @param bodies The body structure
|
|
172
|
+
* @param uFilter The filter Builder filter
|
|
173
|
+
* @returns the body structure
|
|
174
|
+
*/
|
|
175
|
+
this._refineBodies = (bodies, uFilter) => {
|
|
176
|
+
const _bodies = (0, cloneDeep_1.cloneDeep)(bodies);
|
|
177
|
+
if (uFilter.property != null) {
|
|
178
|
+
_bodies.forEach((body) => {
|
|
179
|
+
if ((0, isDateColumn_1.isDateColumn)(uFilter.column)) {
|
|
180
|
+
body["groupType"] = "DATE";
|
|
181
|
+
body["groupValue"] = uFilter.property.toUpperCase();
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
body["property"] = uFilter.property;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return _bodies;
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Gets the validation type for the preview request
|
|
192
|
+
* @param column The column to filter
|
|
193
|
+
* @param vaildator Validator Type
|
|
194
|
+
* @returns the validator type for the preview request
|
|
195
|
+
*/
|
|
196
|
+
this._getValidationType = (column, validator) => {
|
|
197
|
+
if ((0, isDateColumn_1.isDateColumn)(column) ||
|
|
198
|
+
column.type === COLUMN_1.COLUMN.BUCKET ||
|
|
199
|
+
(0, isNumericalColumn_1.isNumericalColumn)(column)) {
|
|
200
|
+
return FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
if ([
|
|
204
|
+
FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_CONTAIN,
|
|
205
|
+
FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS,
|
|
206
|
+
FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_EQUAL,
|
|
207
|
+
].includes(validator)) {
|
|
208
|
+
return FILTER_VALIDATOR_1.FILTER_VALIDATOR.CONTAINS;
|
|
209
|
+
}
|
|
210
|
+
else if (validator === FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_END_WITH) {
|
|
211
|
+
return FILTER_VALIDATOR_1.FILTER_VALIDATOR.ENDS_WITH;
|
|
212
|
+
}
|
|
213
|
+
else if (validator === FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_START_WITH) {
|
|
214
|
+
return FILTER_VALIDATOR_1.FILTER_VALIDATOR.STARTS_WITH;
|
|
194
215
|
}
|
|
195
216
|
else {
|
|
196
|
-
|
|
217
|
+
return validator;
|
|
197
218
|
}
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
return _bodies;
|
|
201
|
-
};
|
|
202
|
-
/**
|
|
203
|
-
* Gets the validation type for the preview request
|
|
204
|
-
* @param column The column to filter
|
|
205
|
-
* @param vaildator Validator Type
|
|
206
|
-
* @returns the validator type for the preview request
|
|
207
|
-
*/
|
|
208
|
-
_getValidationType = (column, validator) => {
|
|
209
|
-
if ((0, isDateColumn_1.isDateColumn)(column) ||
|
|
210
|
-
column.type === COLUMN_1.COLUMN.BUCKET ||
|
|
211
|
-
(0, isNumericalColumn_1.isNumericalColumn)(column)) {
|
|
212
|
-
return FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS;
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
if ([
|
|
216
|
-
FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_CONTAIN,
|
|
217
|
-
FILTER_VALIDATOR_1.FILTER_VALIDATOR.EQUALS,
|
|
218
|
-
FILTER_VALIDATOR_1.FILTER_VALIDATOR.NOT_EQUAL,
|
|
219
|
-
].includes(validator)) {
|
|
220
|
-
return FILTER_VALIDATOR_1.FILTER_VALIDATOR.CONTAINS;
|
|
221
219
|
}
|
|
222
|
-
|
|
223
|
-
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* Gets the Data from preview Response
|
|
223
|
+
* @param response The preview presponse
|
|
224
|
+
* @param uFilter The filter Builder filter
|
|
225
|
+
* @returns The resulting data
|
|
226
|
+
*/
|
|
227
|
+
this._getDataFromResponse = (response, uFilter) => {
|
|
228
|
+
const data = { data: [] };
|
|
229
|
+
if ((0, isRangeValidator_1.isRangeValidator)(uFilter.validator)) {
|
|
230
|
+
data.data = (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
|
|
231
|
+
? (0, get_1._get)(response, "[0].summary", []).map((summary) => ({
|
|
232
|
+
value: summary,
|
|
233
|
+
}))
|
|
234
|
+
: [
|
|
235
|
+
{ value: (0, get_1._get)(response, "[0].min") },
|
|
236
|
+
{ value: (0, get_1._get)(response, "[0].max") },
|
|
237
|
+
];
|
|
224
238
|
}
|
|
225
|
-
else if (
|
|
226
|
-
|
|
239
|
+
else if (!this.isResultEmpty(response)) {
|
|
240
|
+
const records = (0, get_1._get)(response, "data");
|
|
241
|
+
data.data = (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
|
|
242
|
+
? records.map((record) => ({
|
|
243
|
+
value: record.key.toString(),
|
|
244
|
+
}))
|
|
245
|
+
: this._getResponseSummaries(records);
|
|
227
246
|
}
|
|
228
|
-
|
|
229
|
-
|
|
247
|
+
return data;
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* Gets summaries from preview response
|
|
251
|
+
* @param records The data from preview response
|
|
252
|
+
* @param values The values from the preview response
|
|
253
|
+
* @returns the sumaries
|
|
254
|
+
*/
|
|
255
|
+
this._getResponseSummaries = (records, values = []) => {
|
|
256
|
+
records.forEach((record) => {
|
|
257
|
+
const value = record.summary[0].toString();
|
|
258
|
+
if (Array.isArray(record.items) && record.items.length)
|
|
259
|
+
values = this._getResponseSummaries(record.items, values);
|
|
260
|
+
else if (!Array.isArray(record.items) &&
|
|
261
|
+
!(0, isEmpty_1.isEmpty)(values.find((v) => v.value === value)))
|
|
262
|
+
values.push({ value });
|
|
263
|
+
});
|
|
264
|
+
return values;
|
|
265
|
+
};
|
|
266
|
+
this.isResultEmpty = (resultObject, validateNesteddata = false) => {
|
|
267
|
+
const result = (0, get_1._get)(resultObject, "[0].data");
|
|
268
|
+
let validation = (0, isEmpty_1.isEmpty)(result);
|
|
269
|
+
if (validateNesteddata && !validation) {
|
|
270
|
+
// Searching empty data when Chart is Multiseries. At least, Chart needs a single item to draw in the serie. (See the second level of the result object)
|
|
271
|
+
validation = result.every((data) => !(0, isEmpty_1.isEmpty)(data) && (0, isEmpty_1.isEmpty)((0, get_1._get)(data, "items")));
|
|
230
272
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
* Gets the Data from preview Response
|
|
235
|
-
* @param response The preview presponse
|
|
236
|
-
* @param uFilter The filter Builder filter
|
|
237
|
-
* @returns The resulting data
|
|
238
|
-
*/
|
|
239
|
-
_getDataFromResponse = (response, uFilter) => {
|
|
240
|
-
const data = { data: [] };
|
|
241
|
-
if ((0, isRangeValidator_1.isRangeValidator)(uFilter.validator)) {
|
|
242
|
-
data.data = (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
|
|
243
|
-
? (0, get_1._get)(response, "[0].summary", []).map((summary) => ({
|
|
244
|
-
value: summary,
|
|
245
|
-
}))
|
|
246
|
-
: [
|
|
247
|
-
{ value: (0, get_1._get)(response, "[0].min") },
|
|
248
|
-
{ value: (0, get_1._get)(response, "[0].max") },
|
|
249
|
-
];
|
|
250
|
-
}
|
|
251
|
-
else if (!this.isResultEmpty(response)) {
|
|
252
|
-
const records = (0, get_1._get)(response, "data");
|
|
253
|
-
data.data = (0, isEmpty_1.isEmpty)(uFilter.column.aggregate)
|
|
254
|
-
? records.map((record) => ({
|
|
255
|
-
value: record.key.toString(),
|
|
256
|
-
}))
|
|
257
|
-
: this._getResponseSummaries(records);
|
|
258
|
-
}
|
|
259
|
-
return data;
|
|
260
|
-
};
|
|
261
|
-
/**
|
|
262
|
-
* Gets summaries from preview response
|
|
263
|
-
* @param records The data from preview response
|
|
264
|
-
* @param values The values from the preview response
|
|
265
|
-
* @returns the sumaries
|
|
266
|
-
*/
|
|
267
|
-
_getResponseSummaries = (records, values = []) => {
|
|
268
|
-
records.forEach((record) => {
|
|
269
|
-
const value = record.summary[0].toString();
|
|
270
|
-
if (Array.isArray(record.items) && record.items.length)
|
|
271
|
-
values = this._getResponseSummaries(record.items, values);
|
|
272
|
-
else if (!Array.isArray(record.items) &&
|
|
273
|
-
!(0, isEmpty_1.isEmpty)(values.find((v) => v.value === value)))
|
|
274
|
-
values.push({ value });
|
|
275
|
-
});
|
|
276
|
-
return values;
|
|
277
|
-
};
|
|
278
|
-
isResultEmpty = (resultObject, validateNesteddata = false) => {
|
|
279
|
-
const result = (0, get_1._get)(resultObject, "[0].data");
|
|
280
|
-
let validation = (0, isEmpty_1.isEmpty)(result);
|
|
281
|
-
if (validateNesteddata && !validation) {
|
|
282
|
-
// Searching empty data when Chart is Multiseries. At least, Chart needs a single item to draw in the serie. (See the second level of the result object)
|
|
283
|
-
validation = result.every((data) => !(0, isEmpty_1.isEmpty)(data) && (0, isEmpty_1.isEmpty)((0, get_1._get)(data, "items")));
|
|
284
|
-
}
|
|
285
|
-
return validation;
|
|
286
|
-
};
|
|
273
|
+
return validation;
|
|
274
|
+
};
|
|
275
|
+
}
|
|
287
276
|
}
|
|
288
277
|
exports.default = UChartApi;
|