@qrvey/utils 1.4.0-0 → 1.4.0-3
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/getColumnsLabel.js +0 -5
- package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -1
- package/dist/cjs/columns/helpers/getModelColumn.js +0 -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 +2 -42
- 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/definition.js +1 -1
- 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/labels/chart_builder/I18N_CHART_BUILDER.js +6 -21
- 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/getColumnsLabel.js +0 -5
- package/dist/columns/helpers/getDatasetColumn.js +1 -1
- package/dist/columns/helpers/getModelColumn.js +0 -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 +2 -42
- 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/definition.js +1 -1
- 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/labels/chart_builder/I18N_CHART_BUILDER.js +6 -21
- 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 +5 -4
|
@@ -1,3 +1,12 @@
|
|
|
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
|
+
};
|
|
1
10
|
import UChartPaginationApi from "./UChartPaginationApi";
|
|
2
11
|
import UChartApi from "./UChartApi";
|
|
3
12
|
import { isRangeValidator } from "../helpers/common/isRangeValidator";
|
|
@@ -19,10 +28,6 @@ import { getDatasetByColumn } from "../../qrvey/helpers/getDatasetByColumn";
|
|
|
19
28
|
import { getLogicByDatasets } from "../helpers/backend/getLogicByDatasets";
|
|
20
29
|
import { getFiltersByParams } from "../helpers/common/getFiltersByParams";
|
|
21
30
|
export class FiltersApi {
|
|
22
|
-
// abortCtrl: AbortController;
|
|
23
|
-
config;
|
|
24
|
-
chartApi;
|
|
25
|
-
chartPaginationApi;
|
|
26
31
|
constructor(cfg) {
|
|
27
32
|
this.setConfig(cfg);
|
|
28
33
|
this.chartPaginationApi = new UChartPaginationApi();
|
|
@@ -35,8 +40,7 @@ export class FiltersApi {
|
|
|
35
40
|
*/
|
|
36
41
|
getModel(qrveyid) {
|
|
37
42
|
const config = isEmpty(qrveyid)
|
|
38
|
-
? {
|
|
39
|
-
: { ...this.config, qrveyid };
|
|
43
|
+
? Object.assign({}, this.config) : Object.assign(Object.assign({}, this.config), { qrveyid });
|
|
40
44
|
return getModel(config, {
|
|
41
45
|
includeInfo: [
|
|
42
46
|
"datalinkInfo",
|
|
@@ -58,14 +62,15 @@ export class FiltersApi {
|
|
|
58
62
|
// return DataTokensApi.getAll(config);
|
|
59
63
|
// }
|
|
60
64
|
getData(config, resetApi = false) {
|
|
65
|
+
var _a, _b, _c, _d, _e, _f;
|
|
61
66
|
let promise;
|
|
62
|
-
if (areStaticColumnValues(config.filter
|
|
63
|
-
isEmpty(config.filter
|
|
67
|
+
if (areStaticColumnValues((_a = config.filter) === null || _a === void 0 ? void 0 : _a.column) &&
|
|
68
|
+
isEmpty((_b = config.filter) === null || _b === void 0 ? void 0 : _b.column.aggregate)) {
|
|
64
69
|
promise = getValuesFromDataset({
|
|
65
|
-
column: config.filter
|
|
66
|
-
property: config.filter
|
|
67
|
-
lookupDisplay: config.filter
|
|
68
|
-
dataset: getDatasetByColumn(config.filter
|
|
70
|
+
column: (_c = config.filter) === null || _c === void 0 ? void 0 : _c.column,
|
|
71
|
+
property: (_d = config.filter) === null || _d === void 0 ? void 0 : _d.property,
|
|
72
|
+
lookupDisplay: (_e = config.filter) === null || _e === void 0 ? void 0 : _e.lookupDisplayIndex,
|
|
73
|
+
dataset: getDatasetByColumn((_f = config.filter) === null || _f === void 0 ? void 0 : _f.column, config.datasets),
|
|
69
74
|
value: config.valueText,
|
|
70
75
|
});
|
|
71
76
|
}
|
|
@@ -82,69 +87,63 @@ export class FiltersApi {
|
|
|
82
87
|
* @param resetApi flag to determine when the api should be reseted.
|
|
83
88
|
* @returns a promise with a preview of resulting data.
|
|
84
89
|
*/
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
getDataValues(config, resetApi = false) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
let api;
|
|
93
|
+
if (isRangeValidator(config.filter.validator)) {
|
|
94
|
+
this.chartPaginationApi.afterKey = undefined;
|
|
95
|
+
api = this.chartApi;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
api = this.chartPaginationApi;
|
|
99
|
+
}
|
|
100
|
+
return api.getChartResult(this.config, this.getFilter(config), this.getLogic(config), this.getChartRequest(config), resetApi);
|
|
101
|
+
});
|
|
95
102
|
}
|
|
96
103
|
getLogic(config) {
|
|
104
|
+
var _a;
|
|
97
105
|
const scopes = this.getAvailableScopeIds(config);
|
|
98
106
|
let filterData = getFiltersByVisibility(config.filterData, scopes);
|
|
99
|
-
const dataset = config.datasets.find((d) => d.qrveyid === config.filter
|
|
100
|
-
filterData = getFiltersByParams(filterData, { qrveyid: dataset
|
|
107
|
+
const dataset = config.datasets.find((d) => { var _a; return d.qrveyid === ((_a = config.filter) === null || _a === void 0 ? void 0 : _a.column.qrveyid); });
|
|
108
|
+
filterData = getFiltersByParams(filterData, { qrveyid: dataset === null || dataset === void 0 ? void 0 : dataset.qrveyid }, {
|
|
101
109
|
letPassUndefinedProperties: { filter: true },
|
|
102
110
|
filterEmptyArrays: { filter: false },
|
|
103
111
|
});
|
|
104
112
|
filterData = excludeFiltersByAggregateColumn(filterData);
|
|
105
113
|
const logics = FDToLogic(filterData);
|
|
106
|
-
const hierarchyLogic = getLogicByScopesHierarchy(logics, scopes, config.filter
|
|
114
|
+
const hierarchyLogic = getLogicByScopesHierarchy(logics, scopes, (_a = config.filter) === null || _a === void 0 ? void 0 : _a.extras.scope);
|
|
107
115
|
return [
|
|
108
116
|
...hierarchyLogic,
|
|
109
117
|
...(getLogicByDatasets(buildUserFilters(config.userFilters), isEmpty(dataset) ? [] : [dataset.qrveyid]) || []),
|
|
110
118
|
];
|
|
111
119
|
}
|
|
112
120
|
getFilter(config) {
|
|
113
|
-
return {
|
|
114
|
-
...config.filter,
|
|
115
|
-
values: !isEmpty(config.valueText)
|
|
121
|
+
return Object.assign(Object.assign({}, config.filter), { values: !isEmpty(config.valueText)
|
|
116
122
|
? [{ value: config.valueText, enabled: true }]
|
|
117
|
-
: undefined
|
|
118
|
-
};
|
|
123
|
+
: undefined });
|
|
119
124
|
}
|
|
120
125
|
getChartRequest(config) {
|
|
126
|
+
var _a;
|
|
121
127
|
const scopes = this.getAvailableScopeIds(config);
|
|
122
|
-
return applyHierarchyForAggFilters(config.chartRequest, scopes, config.filter
|
|
128
|
+
return applyHierarchyForAggFilters(config.chartRequest, scopes, (_a = config.filter) === null || _a === void 0 ? void 0 : _a.extras.scope);
|
|
123
129
|
}
|
|
124
130
|
/**
|
|
125
131
|
* Gets the available scopes and scope IDs
|
|
126
132
|
* @returns a collection of the pair Scopes and Scope IDs
|
|
127
133
|
*/
|
|
128
134
|
getAvailableScopeIds(config) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
:
|
|
134
|
-
|
|
135
|
-
qrveyid: config.filter?.column?.qrveyid,
|
|
136
|
-
defaultid: config.filter?.column?.qrveyid,
|
|
137
|
-
scope: undefined,
|
|
138
|
-
predefinedScopes: [
|
|
139
|
-
{ label: FILTER_SCOPE.DATA, id: config.filter?.column?.qrveyid },
|
|
140
|
-
],
|
|
141
|
-
});
|
|
135
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
136
|
+
return getAvailableScopes(Object.assign(Object.assign({}, getAvailableScopesIDsByConfig(config)), { panelid: FILTER_SCOPE.CHART === ((_a = config.filter) === null || _a === void 0 ? void 0 : _a.extras.scope)
|
|
137
|
+
? (_b = config.filter) === null || _b === void 0 ? void 0 : _b.extras.scopeid
|
|
138
|
+
: undefined, scopeid: (_c = config.filter) === null || _c === void 0 ? void 0 : _c.extras.scopeid, qrveyid: (_e = (_d = config.filter) === null || _d === void 0 ? void 0 : _d.column) === null || _e === void 0 ? void 0 : _e.qrveyid, defaultid: (_g = (_f = config.filter) === null || _f === void 0 ? void 0 : _f.column) === null || _g === void 0 ? void 0 : _g.qrveyid, scope: undefined, predefinedScopes: [
|
|
139
|
+
{ label: FILTER_SCOPE.DATA, id: (_j = (_h = config.filter) === null || _h === void 0 ? void 0 : _h.column) === null || _j === void 0 ? void 0 : _j.qrveyid },
|
|
140
|
+
] }));
|
|
142
141
|
}
|
|
143
142
|
/**
|
|
144
143
|
* Set the config into the Filter Builder Api class
|
|
145
144
|
* @param config the config.
|
|
146
145
|
*/
|
|
147
146
|
setConfig(config) {
|
|
148
|
-
this.config = {
|
|
147
|
+
this.config = Object.assign({}, config);
|
|
149
148
|
}
|
|
150
149
|
}
|
|
@@ -12,271 +12,260 @@ import { flatUIToOldLogic } from "../adapters/flatUIToOldLogic";
|
|
|
12
12
|
import ChartsApi from "../../services/api/Charts.api";
|
|
13
13
|
import { getAggFilters } from "../helpers/OLD_getAggFilters";
|
|
14
14
|
export default class UChartApi {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
.then((response) => {
|
|
34
|
-
return this._getDataFromResponse(response, uFilter);
|
|
35
|
-
})
|
|
36
|
-
.catch((_) => {
|
|
37
|
-
return { data: [] };
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Gets request body structure
|
|
42
|
-
* @param uFilter The filter Builder filter
|
|
43
|
-
* @param filterLogic Additional filter logic to apply in the preview
|
|
44
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
45
|
-
* @returns the request body structure
|
|
46
|
-
*/
|
|
47
|
-
_getPreviewRequestBody = (uFilter, filterLogic = [], chartSettings) => {
|
|
48
|
-
const { column, validator } = uFilter;
|
|
49
|
-
const haveAggFilters = (chartSettings?.aggregateColumns || []).length &&
|
|
50
|
-
(chartSettings?.chart || []).length;
|
|
51
|
-
let searchLogic;
|
|
52
|
-
if (!isEmpty(uFilter.values)) {
|
|
53
|
-
searchLogic = flatUIToOldLogic([
|
|
54
|
-
{
|
|
55
|
-
...uFilter,
|
|
56
|
-
validator: this._getValidationType(column, validator),
|
|
57
|
-
column: { ...uFilter.column, linkid: undefined },
|
|
58
|
-
},
|
|
59
|
-
]);
|
|
60
|
-
}
|
|
61
|
-
let filterCharts = [];
|
|
62
|
-
if (haveAggFilters) {
|
|
63
|
-
filterCharts = chartSettings?.chart
|
|
64
|
-
.map((chart) => {
|
|
65
|
-
if (uFilter.column.type === COLUMN.AGGREGATED_FORMULA)
|
|
66
|
-
return chart;
|
|
67
|
-
const summaryIndex = (chart.summaries || []).findIndex((s) => s.questionid === uFilter.column.id &&
|
|
68
|
-
s.aggregate === uFilter.column.aggregate);
|
|
69
|
-
const summary = summaryIndex !== -1 && chart.summaries[summaryIndex];
|
|
70
|
-
const chartAggFilters = getAggFiltersBySummaryIndex(chart.aggFilters, summaryIndex);
|
|
71
|
-
const searchAggFilters = getAggFilters(searchLogic?.logic || [], summary ? [summary] : []);
|
|
72
|
-
return {
|
|
73
|
-
...chart,
|
|
74
|
-
aggFilters: searchAggFilters || chartAggFilters,
|
|
75
|
-
summaries: summary ? [summary] : [],
|
|
76
|
-
};
|
|
15
|
+
constructor() {
|
|
16
|
+
/**
|
|
17
|
+
* Gets a promise with a resulting data
|
|
18
|
+
* @param config the config
|
|
19
|
+
* @param uFilter The filter Builder filter
|
|
20
|
+
* @param filterLogic Additional filter logic to apply in the preview
|
|
21
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
22
|
+
* @returns a promise with a resulting data
|
|
23
|
+
*/
|
|
24
|
+
this.getChartResult = (config, uFilter, filterLogic = [], chartSettings, _resetApi = false) => {
|
|
25
|
+
const requestBody = this._getPreviewRequestBody(uFilter, filterLogic, chartSettings);
|
|
26
|
+
const customChartApi = new ChartsApi(Object.assign(Object.assign({}, config), { qrvey_id: isEmpty(uFilter.column.aggregate)
|
|
27
|
+
? uFilter.column.qrveyid
|
|
28
|
+
: chartSettings === null || chartSettings === void 0 ? void 0 : chartSettings.qrveyid }));
|
|
29
|
+
return customChartApi
|
|
30
|
+
.getResults(requestBody, false, true)
|
|
31
|
+
.then((response) => {
|
|
32
|
+
return this._getDataFromResponse(response, uFilter);
|
|
77
33
|
})
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
? [this._getChartBody(uFilter)]
|
|
82
|
-
: [filterCharts[0]];
|
|
83
|
-
const filters = [
|
|
84
|
-
...filterLogic,
|
|
85
|
-
...(!filterCharts[0] ? searchLogic?.logic || [] : []),
|
|
86
|
-
];
|
|
87
|
-
return { charts: chartsBody, logic: filters, qrveyid: column.qrveyid };
|
|
88
|
-
};
|
|
89
|
-
/**
|
|
90
|
-
* Gets chart body structure
|
|
91
|
-
* @param uFilter The filter Builder filter
|
|
92
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
93
|
-
* @returns the chart body structure
|
|
94
|
-
*/
|
|
95
|
-
_getChartBody = (uFilter, chartSettings) => {
|
|
96
|
-
const dimensions = this._getDimensionsBody(uFilter, chartSettings);
|
|
97
|
-
const summaries = this._getSummariesBody(uFilter);
|
|
98
|
-
return { dimensions, summaries };
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* Gets dimension body structure
|
|
102
|
-
* @param uFilter The filter Builder filter
|
|
103
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
104
|
-
* @returns the dimension body structure
|
|
105
|
-
*/
|
|
106
|
-
_getDimensionsBody = (uFilter, chartSettings) => {
|
|
107
|
-
const { column, validator } = uFilter;
|
|
108
|
-
let dimensions;
|
|
109
|
-
if (!isRangeValidator(validator)) {
|
|
110
|
-
dimensions = [
|
|
111
|
-
{
|
|
112
|
-
questionid: column.id,
|
|
113
|
-
qrveyid: column.qrveyid,
|
|
114
|
-
// linkid: column.linkid,
|
|
115
|
-
maxDataPoints: this._getMaxDataPoints(column, chartSettings),
|
|
116
|
-
type: column.type,
|
|
117
|
-
formulaType: column.type === "FORMULA" ? column.formulaType : undefined,
|
|
118
|
-
sortOption: this._getSortOption(column),
|
|
119
|
-
},
|
|
120
|
-
];
|
|
121
|
-
dimensions = this._refineBodies([...dimensions], uFilter);
|
|
122
|
-
}
|
|
123
|
-
return dimensions;
|
|
124
|
-
};
|
|
125
|
-
/**
|
|
126
|
-
* Gets max data point number
|
|
127
|
-
* @param column The column to filter
|
|
128
|
-
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
129
|
-
* @returns max data point number
|
|
130
|
-
*/
|
|
131
|
-
_getMaxDataPoints = (column, chartSettings) => {
|
|
132
|
-
return !isDateColumn(column) && !isEmpty(column.aggregate)
|
|
133
|
-
? _get(chartSettings, "maxDataPoints.option", 1000)
|
|
134
|
-
: 1000;
|
|
135
|
-
};
|
|
136
|
-
/**
|
|
137
|
-
* Gets sort option structure
|
|
138
|
-
* @param column The column to filter
|
|
139
|
-
* @returns sort option structure
|
|
140
|
-
*/
|
|
141
|
-
_getSortOption = (column) => {
|
|
142
|
-
let sortBy = "CATEGORY";
|
|
143
|
-
let sortDirection = isNumericalColumn(column) ? "DESC" : "ASC";
|
|
144
|
-
if (!isEmpty(column.sorting)) {
|
|
145
|
-
sortBy = _get(column.sorting, "sortBy");
|
|
146
|
-
sortDirection = _get(column.sorting, "order");
|
|
147
|
-
if (sortBy == null)
|
|
148
|
-
sortBy = "VALUE";
|
|
149
|
-
if (sortDirection == null)
|
|
150
|
-
sortDirection = "DESC";
|
|
151
|
-
}
|
|
152
|
-
return { sortBy, sortDirection };
|
|
153
|
-
};
|
|
154
|
-
/**
|
|
155
|
-
* Gets summaries body structure
|
|
156
|
-
* @param uFilter The filter Builder filter
|
|
157
|
-
* @returns summaries body structure
|
|
158
|
-
*/
|
|
159
|
-
_getSummariesBody = (uFilter) => {
|
|
160
|
-
const { column, validator } = uFilter;
|
|
161
|
-
const summary = {
|
|
162
|
-
aggregate: _get(column, "aggregate.label", AGGREGATE.COUNT),
|
|
163
|
-
questionid: column.id,
|
|
164
|
-
property: !isDateColumn(uFilter.column) ? uFilter.property : undefined,
|
|
165
|
-
type: column.type,
|
|
34
|
+
.catch((_) => {
|
|
35
|
+
return { data: [] };
|
|
36
|
+
});
|
|
166
37
|
};
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
38
|
+
/**
|
|
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.
|
|
43
|
+
* @returns the request body structure
|
|
44
|
+
*/
|
|
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
|
+
}
|
|
68
|
+
const chartsBody = !filterCharts[0]
|
|
69
|
+
? [this._getChartBody(uFilter)]
|
|
70
|
+
: [filterCharts[0]];
|
|
71
|
+
const filters = [
|
|
72
|
+
...filterLogic,
|
|
73
|
+
...(!filterCharts[0] ? (searchLogic === null || searchLogic === void 0 ? void 0 : searchLogic.logic) || [] : []),
|
|
172
74
|
];
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
75
|
+
return { charts: chartsBody, logic: filters, qrveyid: column.qrveyid };
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Gets chart body structure
|
|
79
|
+
* @param uFilter The filter Builder filter
|
|
80
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
81
|
+
* @returns the chart body structure
|
|
82
|
+
*/
|
|
83
|
+
this._getChartBody = (uFilter, chartSettings) => {
|
|
84
|
+
const dimensions = this._getDimensionsBody(uFilter, chartSettings);
|
|
85
|
+
const summaries = this._getSummariesBody(uFilter);
|
|
86
|
+
return { dimensions, summaries };
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Gets dimension body structure
|
|
90
|
+
* @param uFilter The filter Builder filter
|
|
91
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
92
|
+
* @returns the dimension body structure
|
|
93
|
+
*/
|
|
94
|
+
this._getDimensionsBody = (uFilter, chartSettings) => {
|
|
95
|
+
const { column, validator } = uFilter;
|
|
96
|
+
let dimensions;
|
|
97
|
+
if (!isRangeValidator(validator)) {
|
|
98
|
+
dimensions = [
|
|
99
|
+
{
|
|
100
|
+
questionid: column.id,
|
|
101
|
+
qrveyid: column.qrveyid,
|
|
102
|
+
// linkid: column.linkid,
|
|
103
|
+
maxDataPoints: this._getMaxDataPoints(column, chartSettings),
|
|
104
|
+
type: column.type,
|
|
105
|
+
formulaType: column.type === "FORMULA" ? column.formulaType : undefined,
|
|
106
|
+
sortOption: this._getSortOption(column),
|
|
107
|
+
},
|
|
108
|
+
];
|
|
109
|
+
dimensions = this._refineBodies([...dimensions], uFilter);
|
|
110
|
+
}
|
|
111
|
+
return dimensions;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Gets max data point number
|
|
115
|
+
* @param column The column to filter
|
|
116
|
+
* @param chartSettings The settings of the chart. For Aggregate Columns.
|
|
117
|
+
* @returns max data point number
|
|
118
|
+
*/
|
|
119
|
+
this._getMaxDataPoints = (column, chartSettings) => {
|
|
120
|
+
return !isDateColumn(column) && !isEmpty(column.aggregate)
|
|
121
|
+
? _get(chartSettings, "maxDataPoints.option", 1000)
|
|
122
|
+
: 1000;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Gets sort option structure
|
|
126
|
+
* @param column The column to filter
|
|
127
|
+
* @returns sort option structure
|
|
128
|
+
*/
|
|
129
|
+
this._getSortOption = (column) => {
|
|
130
|
+
let sortBy = "CATEGORY";
|
|
131
|
+
let sortDirection = isNumericalColumn(column) ? "DESC" : "ASC";
|
|
132
|
+
if (!isEmpty(column.sorting)) {
|
|
133
|
+
sortBy = _get(column.sorting, "sortBy");
|
|
134
|
+
sortDirection = _get(column.sorting, "order");
|
|
135
|
+
if (sortBy == null)
|
|
136
|
+
sortBy = "VALUE";
|
|
137
|
+
if (sortDirection == null)
|
|
138
|
+
sortDirection = "DESC";
|
|
139
|
+
}
|
|
140
|
+
return { sortBy, sortDirection };
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Gets summaries body structure
|
|
144
|
+
* @param uFilter The filter Builder filter
|
|
145
|
+
* @returns summaries body structure
|
|
146
|
+
*/
|
|
147
|
+
this._getSummariesBody = (uFilter) => {
|
|
148
|
+
const { column, validator } = uFilter;
|
|
149
|
+
const summary = {
|
|
150
|
+
aggregate: _get(column, "aggregate.label", AGGREGATE.COUNT),
|
|
151
|
+
questionid: column.id,
|
|
152
|
+
property: !isDateColumn(uFilter.column) ? uFilter.property : undefined,
|
|
153
|
+
type: column.type,
|
|
154
|
+
};
|
|
155
|
+
let summaries = [summary];
|
|
156
|
+
if (isNumericalColumn(column) || isRangeValidator(validator)) {
|
|
157
|
+
summaries = [
|
|
158
|
+
Object.assign(Object.assign({}, summary), { aggregate: AGGREGATE.MIN }),
|
|
159
|
+
Object.assign(Object.assign({}, summary), { aggregate: AGGREGATE.MAX }),
|
|
160
|
+
];
|
|
161
|
+
}
|
|
162
|
+
return summaries;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Refines the body structure
|
|
166
|
+
* @param bodies The body structure
|
|
167
|
+
* @param uFilter The filter Builder filter
|
|
168
|
+
* @returns the body structure
|
|
169
|
+
*/
|
|
170
|
+
this._refineBodies = (bodies, uFilter) => {
|
|
171
|
+
const _bodies = cloneDeep(bodies);
|
|
172
|
+
if (uFilter.property != null) {
|
|
173
|
+
_bodies.forEach((body) => {
|
|
174
|
+
if (isDateColumn(uFilter.column)) {
|
|
175
|
+
body["groupType"] = "DATE";
|
|
176
|
+
body["groupValue"] = uFilter.property.toUpperCase();
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
body["property"] = uFilter.property;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return _bodies;
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Gets the validation type for the preview request
|
|
187
|
+
* @param column The column to filter
|
|
188
|
+
* @param vaildator Validator Type
|
|
189
|
+
* @returns the validator type for the preview request
|
|
190
|
+
*/
|
|
191
|
+
this._getValidationType = (column, validator) => {
|
|
192
|
+
if (isDateColumn(column) ||
|
|
193
|
+
column.type === COLUMN.BUCKET ||
|
|
194
|
+
isNumericalColumn(column)) {
|
|
195
|
+
return FILTER_VALIDATOR.EQUALS;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
if ([
|
|
199
|
+
FILTER_VALIDATOR.NOT_CONTAIN,
|
|
200
|
+
FILTER_VALIDATOR.EQUALS,
|
|
201
|
+
FILTER_VALIDATOR.NOT_EQUAL,
|
|
202
|
+
].includes(validator)) {
|
|
203
|
+
return FILTER_VALIDATOR.CONTAINS;
|
|
204
|
+
}
|
|
205
|
+
else if (validator === FILTER_VALIDATOR.NOT_END_WITH) {
|
|
206
|
+
return FILTER_VALIDATOR.ENDS_WITH;
|
|
207
|
+
}
|
|
208
|
+
else if (validator === FILTER_VALIDATOR.NOT_START_WITH) {
|
|
209
|
+
return FILTER_VALIDATOR.STARTS_WITH;
|
|
189
210
|
}
|
|
190
211
|
else {
|
|
191
|
-
|
|
212
|
+
return validator;
|
|
192
213
|
}
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
return _bodies;
|
|
196
|
-
};
|
|
197
|
-
/**
|
|
198
|
-
* Gets the validation type for the preview request
|
|
199
|
-
* @param column The column to filter
|
|
200
|
-
* @param vaildator Validator Type
|
|
201
|
-
* @returns the validator type for the preview request
|
|
202
|
-
*/
|
|
203
|
-
_getValidationType = (column, validator) => {
|
|
204
|
-
if (isDateColumn(column) ||
|
|
205
|
-
column.type === COLUMN.BUCKET ||
|
|
206
|
-
isNumericalColumn(column)) {
|
|
207
|
-
return FILTER_VALIDATOR.EQUALS;
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
if ([
|
|
211
|
-
FILTER_VALIDATOR.NOT_CONTAIN,
|
|
212
|
-
FILTER_VALIDATOR.EQUALS,
|
|
213
|
-
FILTER_VALIDATOR.NOT_EQUAL,
|
|
214
|
-
].includes(validator)) {
|
|
215
|
-
return FILTER_VALIDATOR.CONTAINS;
|
|
216
214
|
}
|
|
217
|
-
|
|
218
|
-
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Gets the Data from preview Response
|
|
218
|
+
* @param response The preview presponse
|
|
219
|
+
* @param uFilter The filter Builder filter
|
|
220
|
+
* @returns The resulting data
|
|
221
|
+
*/
|
|
222
|
+
this._getDataFromResponse = (response, uFilter) => {
|
|
223
|
+
const data = { data: [] };
|
|
224
|
+
if (isRangeValidator(uFilter.validator)) {
|
|
225
|
+
data.data = isEmpty(uFilter.column.aggregate)
|
|
226
|
+
? _get(response, "[0].summary", []).map((summary) => ({
|
|
227
|
+
value: summary,
|
|
228
|
+
}))
|
|
229
|
+
: [
|
|
230
|
+
{ value: _get(response, "[0].min") },
|
|
231
|
+
{ value: _get(response, "[0].max") },
|
|
232
|
+
];
|
|
219
233
|
}
|
|
220
|
-
else if (
|
|
221
|
-
|
|
234
|
+
else if (!this.isResultEmpty(response)) {
|
|
235
|
+
const records = _get(response, "data");
|
|
236
|
+
data.data = isEmpty(uFilter.column.aggregate)
|
|
237
|
+
? records.map((record) => ({
|
|
238
|
+
value: record.key.toString(),
|
|
239
|
+
}))
|
|
240
|
+
: this._getResponseSummaries(records);
|
|
222
241
|
}
|
|
223
|
-
|
|
224
|
-
|
|
242
|
+
return data;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Gets summaries from preview response
|
|
246
|
+
* @param records The data from preview response
|
|
247
|
+
* @param values The values from the preview response
|
|
248
|
+
* @returns the sumaries
|
|
249
|
+
*/
|
|
250
|
+
this._getResponseSummaries = (records, values = []) => {
|
|
251
|
+
records.forEach((record) => {
|
|
252
|
+
const value = record.summary[0].toString();
|
|
253
|
+
if (Array.isArray(record.items) && record.items.length)
|
|
254
|
+
values = this._getResponseSummaries(record.items, values);
|
|
255
|
+
else if (!Array.isArray(record.items) &&
|
|
256
|
+
!isEmpty(values.find((v) => v.value === value)))
|
|
257
|
+
values.push({ value });
|
|
258
|
+
});
|
|
259
|
+
return values;
|
|
260
|
+
};
|
|
261
|
+
this.isResultEmpty = (resultObject, validateNesteddata = false) => {
|
|
262
|
+
const result = _get(resultObject, "[0].data");
|
|
263
|
+
let validation = isEmpty(result);
|
|
264
|
+
if (validateNesteddata && !validation) {
|
|
265
|
+
// 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)
|
|
266
|
+
validation = result.every((data) => !isEmpty(data) && isEmpty(_get(data, "items")));
|
|
225
267
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
* Gets the Data from preview Response
|
|
230
|
-
* @param response The preview presponse
|
|
231
|
-
* @param uFilter The filter Builder filter
|
|
232
|
-
* @returns The resulting data
|
|
233
|
-
*/
|
|
234
|
-
_getDataFromResponse = (response, uFilter) => {
|
|
235
|
-
const data = { data: [] };
|
|
236
|
-
if (isRangeValidator(uFilter.validator)) {
|
|
237
|
-
data.data = isEmpty(uFilter.column.aggregate)
|
|
238
|
-
? _get(response, "[0].summary", []).map((summary) => ({
|
|
239
|
-
value: summary,
|
|
240
|
-
}))
|
|
241
|
-
: [
|
|
242
|
-
{ value: _get(response, "[0].min") },
|
|
243
|
-
{ value: _get(response, "[0].max") },
|
|
244
|
-
];
|
|
245
|
-
}
|
|
246
|
-
else if (!this.isResultEmpty(response)) {
|
|
247
|
-
const records = _get(response, "data");
|
|
248
|
-
data.data = isEmpty(uFilter.column.aggregate)
|
|
249
|
-
? records.map((record) => ({
|
|
250
|
-
value: record.key.toString(),
|
|
251
|
-
}))
|
|
252
|
-
: this._getResponseSummaries(records);
|
|
253
|
-
}
|
|
254
|
-
return data;
|
|
255
|
-
};
|
|
256
|
-
/**
|
|
257
|
-
* Gets summaries from preview response
|
|
258
|
-
* @param records The data from preview response
|
|
259
|
-
* @param values The values from the preview response
|
|
260
|
-
* @returns the sumaries
|
|
261
|
-
*/
|
|
262
|
-
_getResponseSummaries = (records, values = []) => {
|
|
263
|
-
records.forEach((record) => {
|
|
264
|
-
const value = record.summary[0].toString();
|
|
265
|
-
if (Array.isArray(record.items) && record.items.length)
|
|
266
|
-
values = this._getResponseSummaries(record.items, values);
|
|
267
|
-
else if (!Array.isArray(record.items) &&
|
|
268
|
-
!isEmpty(values.find((v) => v.value === value)))
|
|
269
|
-
values.push({ value });
|
|
270
|
-
});
|
|
271
|
-
return values;
|
|
272
|
-
};
|
|
273
|
-
isResultEmpty = (resultObject, validateNesteddata = false) => {
|
|
274
|
-
const result = _get(resultObject, "[0].data");
|
|
275
|
-
let validation = isEmpty(result);
|
|
276
|
-
if (validateNesteddata && !validation) {
|
|
277
|
-
// 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)
|
|
278
|
-
validation = result.every((data) => !isEmpty(data) && isEmpty(_get(data, "items")));
|
|
279
|
-
}
|
|
280
|
-
return validation;
|
|
281
|
-
};
|
|
268
|
+
return validation;
|
|
269
|
+
};
|
|
270
|
+
}
|
|
282
271
|
}
|