@qrvey/utils 1.11.0-8 → 1.11.0-9
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/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +7 -4
- package/dist/cjs/filters/helpers/common/mergeFilters.d.ts +9 -6
- package/dist/cjs/filters/helpers/common/mergeFilters.js +82 -43
- package/dist/cjs/filters/helpers/common/resolveScopeConditions.d.ts +2 -2
- package/dist/cjs/filters/helpers/common/resolveScopeConditions.js +2 -2
- package/dist/cjs/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +21 -2
- package/dist/filters/helpers/common/getMergeFiltersSettings.js +7 -4
- package/dist/filters/helpers/common/mergeFilters.d.ts +9 -6
- package/dist/filters/helpers/common/mergeFilters.js +82 -43
- package/dist/filters/helpers/common/resolveScopeConditions.d.ts +2 -2
- package/dist/filters/helpers/common/resolveScopeConditions.js +2 -2
- package/dist/filters/interfaces/functions/IFFiltersMergeFilters.d.ts +21 -2
- package/package.json +1 -1
|
@@ -7,11 +7,14 @@ exports.getMergeFiltersSettings = void 0;
|
|
|
7
7
|
* @returns a new MergeFilters settings object.
|
|
8
8
|
*/
|
|
9
9
|
function getMergeFiltersSettings(settings) {
|
|
10
|
-
var _a, _b, _c;
|
|
10
|
+
var _a, _b, _c, _d, _e;
|
|
11
11
|
return {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
mergeFilterDataProps: (_a = settings === null || settings === void 0 ? void 0 : settings.mergeFilterDataProps) !== null && _a !== void 0 ? _a : true,
|
|
13
|
+
mergeScopeProps: (_b = settings === null || settings === void 0 ? void 0 : settings.mergeScopeProps) !== null && _b !== void 0 ? _b : true,
|
|
14
|
+
mergeDatasetProps: (_c = settings === null || settings === void 0 ? void 0 : settings.mergeDatasetProps) !== null && _c !== void 0 ? _c : true,
|
|
15
|
+
mergeFilterProps: (_d = settings === null || settings === void 0 ? void 0 : settings.mergeFilterProps) !== null && _d !== void 0 ? _d : true,
|
|
16
|
+
overwriteValues: (_e = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _e !== void 0 ? _e : false,
|
|
17
|
+
setGroupedColumnOperator: settings === null || settings === void 0 ? void 0 : settings.setGroupedColumnOperator,
|
|
15
18
|
};
|
|
16
19
|
}
|
|
17
20
|
exports.getMergeFiltersSettings = getMergeFiltersSettings;
|
|
@@ -2,10 +2,13 @@ import { IFSData } from "../../interfaces/common/IFSData";
|
|
|
2
2
|
import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMergeFilters";
|
|
3
3
|
import { IFUData } from "../../interfaces/ui/IFUData";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
5
|
+
* Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
|
|
6
|
+
* Conditions:
|
|
7
|
+
* - If the info in the second filter data does not exist in the first one, the info will be added
|
|
8
|
+
* - If the info in the second filter data exists in the first one, the info will be merged
|
|
9
|
+
* @param {IFUData} filterData1 The target filter data
|
|
10
|
+
* @param {IFUData} filterData2 the filter data to be merged
|
|
11
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
12
|
+
* @returns {IFUData} a new filter data structure
|
|
10
13
|
*/
|
|
11
|
-
export declare function mergeFilters(filterData1:
|
|
14
|
+
export declare function mergeFilters(filterData1: IFUData | IFSData, filterData2: IFUData | IFSData, settings?: IFFiltersMergeFilters): IFUData | IFSData;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeFilters = void 0;
|
|
4
4
|
const isEmpty_1 = require("../../../general/mix/isEmpty");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const mergeDeep_1 = require("../../../general/object/mergeDeep");
|
|
6
|
+
const objectCopy_1 = require("../../../general/object/objectCopy");
|
|
7
7
|
const getFilterid_1 = require("./getFilterid");
|
|
8
8
|
const getMergeFiltersSettings_1 = require("./getMergeFiltersSettings");
|
|
9
9
|
const mergeValues_1 = require("./mergeValues");
|
|
@@ -11,13 +11,17 @@ const resolveDatasetConditions_1 = require("./resolveDatasetConditions");
|
|
|
11
11
|
const resolveFilterConditions_1 = require("./resolveFilterConditions");
|
|
12
12
|
const resolveScopeConditions_1 = require("./resolveScopeConditions");
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* @
|
|
14
|
+
* Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
|
|
15
|
+
* Conditions:
|
|
16
|
+
* - If the info in the second filter data does not exist in the first one, the info will be added
|
|
17
|
+
* - If the info in the second filter data exists in the first one, the info will be merged
|
|
18
|
+
* @param {IFUData} filterData1 The target filter data
|
|
19
|
+
* @param {IFUData} filterData2 the filter data to be merged
|
|
20
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
21
|
+
* @returns {IFUData} a new filter data structure
|
|
19
22
|
*/
|
|
20
23
|
function mergeFilters(filterData1, filterData2, settings) {
|
|
24
|
+
var _a;
|
|
21
25
|
if ((0, isEmpty_1.isEmpty)(filterData1) || (0, isEmpty_1.isEmpty)(filterData1.scopes)) {
|
|
22
26
|
if ((0, isEmpty_1.isEmpty)(filterData2) || (0, isEmpty_1.isEmpty)(filterData2.scopes))
|
|
23
27
|
return;
|
|
@@ -25,23 +29,29 @@ function mergeFilters(filterData1, filterData2, settings) {
|
|
|
25
29
|
}
|
|
26
30
|
if ((0, isEmpty_1.isEmpty)(filterData2) || (0, isEmpty_1.isEmpty)(filterData2.scopes))
|
|
27
31
|
return filterData1;
|
|
28
|
-
const
|
|
29
|
-
const
|
|
32
|
+
const newFilterData1 = (0, objectCopy_1.objectCopy)(filterData1);
|
|
33
|
+
const newFilterData2 = (0, objectCopy_1.objectCopy)(filterData2);
|
|
30
34
|
const defaultSettings = (0, getMergeFiltersSettings_1.getMergeFiltersSettings)(settings);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
const scopes = mergeScopes(newFilterData1.scopes, newFilterData2.scopes, defaultSettings);
|
|
36
|
+
if (defaultSettings.mergeFilterDataProps) {
|
|
37
|
+
return {
|
|
38
|
+
enabled: (_a = newFilterData2.enabled) !== null && _a !== void 0 ? _a : newFilterData1.enabled,
|
|
39
|
+
section: newFilterData2.section || newFilterData1.section,
|
|
40
|
+
scopes,
|
|
41
|
+
version: newFilterData2.version || newFilterData1.version,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return Object.assign(Object.assign({}, newFilterData1), { scopes });
|
|
37
45
|
}
|
|
38
46
|
exports.mergeFilters = mergeFilters;
|
|
39
47
|
/**
|
|
40
|
-
* Gets a new scope structure
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* @param
|
|
44
|
-
* @
|
|
48
|
+
* Gets a new scope array structure by merging both scope structures
|
|
49
|
+
* - If the info in the second scope does not exist in the first one, the scope will be added
|
|
50
|
+
* - If the info in the second scope exists in the first one, the scope will be merged
|
|
51
|
+
* @param {IFUScope[]} scopes1 the target scope structure
|
|
52
|
+
* @param {IFUScope[]} scopes2 the scope to be merged
|
|
53
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
54
|
+
* @returns {IFUScope[]} a new scope array structure
|
|
45
55
|
*/
|
|
46
56
|
function mergeScopes(scopes1 = [], scopes2 = [], settings) {
|
|
47
57
|
let newScopes = scopes1.reduce((scopes, scope1) => {
|
|
@@ -51,7 +61,7 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
|
|
|
51
61
|
}));
|
|
52
62
|
let _scope1 = scope1;
|
|
53
63
|
if (scope2Index > -1) {
|
|
54
|
-
_scope1 = Object.assign(Object.assign({}, scopes2[scope2Index]), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
|
|
64
|
+
_scope1 = Object.assign(Object.assign({}, mergeScopeProps(scope1, scopes2[scope2Index], settings)), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
|
|
55
65
|
scopes2.splice(scope2Index, 1);
|
|
56
66
|
}
|
|
57
67
|
scopes.push(_scope1);
|
|
@@ -62,11 +72,13 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
|
|
|
62
72
|
return newScopes;
|
|
63
73
|
}
|
|
64
74
|
/**
|
|
65
|
-
* Gets a new dataset structure array by merging
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* @param
|
|
69
|
-
* @
|
|
75
|
+
* Gets a new dataset structure array by merging both dataset structures
|
|
76
|
+
* - If the info in the second dataset does not exist in the first one, the dataset will be added
|
|
77
|
+
* - If the info in the second dataset exists in the first one, the dataset will be merged
|
|
78
|
+
* @param {IFUDataset[]} datasets1 the target dataset structure
|
|
79
|
+
* @param {IFUDataset[]} datasets2 the dataset to be merged
|
|
80
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilter
|
|
81
|
+
* @returns {IFUDataset[]} a new dataset structure array
|
|
70
82
|
*/
|
|
71
83
|
function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
72
84
|
let newDatasets = datasets1.reduce((datasets, dataset1) => {
|
|
@@ -75,7 +87,7 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
|
75
87
|
}));
|
|
76
88
|
let _dataset1 = dataset1;
|
|
77
89
|
if (dataset2Index > -1) {
|
|
78
|
-
_dataset1 = Object.assign(Object.assign({}, datasets2[dataset2Index]), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
|
|
90
|
+
_dataset1 = Object.assign(Object.assign({}, mergeDatasetProps(dataset1, datasets2[dataset2Index], settings)), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
|
|
79
91
|
datasets2.splice(dataset2Index, 1);
|
|
80
92
|
}
|
|
81
93
|
datasets.push(_dataset1);
|
|
@@ -87,10 +99,10 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
|
87
99
|
}
|
|
88
100
|
/**
|
|
89
101
|
* Gets a new filter structure array by merging two filter structures
|
|
90
|
-
* @param filters1 the target filter structure
|
|
91
|
-
* @param filters2 the filter to be merged
|
|
92
|
-
* @param settings configuration of the
|
|
93
|
-
* @returns a new filter structure array
|
|
102
|
+
* @param {IFUFilter[]} filters1 the target filter structure
|
|
103
|
+
* @param {IFUFilter[]} filters2 the filter to be merged
|
|
104
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
105
|
+
* @returns {IFUFilter[]} a new filter structure array
|
|
94
106
|
*/
|
|
95
107
|
function mergeFilterss(filters1 = [], filters2 = [], settings) {
|
|
96
108
|
let newFilters = filters1.reduce((filters, filter1) => {
|
|
@@ -103,14 +115,11 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
|
|
|
103
115
|
}));
|
|
104
116
|
let _filter1 = filter1;
|
|
105
117
|
if (filter2Index > -1) {
|
|
106
|
-
_filter1 = Object.assign(Object.assign({}, _filter1), { values: (0, mergeValues_1.mergeValues)(_filter1, filters2[filter2Index], settings) });
|
|
107
|
-
_filter1 = mergeFilterProps(_filter1, filters2[filter2Index], settings);
|
|
118
|
+
_filter1 = Object.assign(Object.assign(Object.assign({}, _filter1), mergeFilterProps(_filter1, filters2[filter2Index], settings)), { values: (0, mergeValues_1.mergeValues)(_filter1, filters2[filter2Index], settings) });
|
|
108
119
|
filters2.splice(filter2Index, 1);
|
|
109
120
|
}
|
|
110
|
-
else {
|
|
111
|
-
_filter1 =
|
|
112
|
-
? FILTER_GROUPED_COLUMN_OPERATOR_1.FILTER_GROUPED_COLUMN_OPERATOR
|
|
113
|
-
: _filter1.operator });
|
|
121
|
+
else if (!(0, isEmpty_1.isEmpty)(settings.setGroupedColumnOperator)) {
|
|
122
|
+
_filter1.operator = settings.setGroupedColumnOperator;
|
|
114
123
|
}
|
|
115
124
|
_filter1.filterid = (0, getFilterid_1.getFilterid)(_filter1);
|
|
116
125
|
filters.push(_filter1);
|
|
@@ -121,17 +130,47 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
|
|
|
121
130
|
return newFilters;
|
|
122
131
|
}
|
|
123
132
|
/**
|
|
124
|
-
* Gets a new
|
|
125
|
-
* @param
|
|
126
|
-
* @param
|
|
127
|
-
* @param settings configuration of the
|
|
133
|
+
* Gets a new scope structure for the configured settings
|
|
134
|
+
* @param {IFUScope} scope1 the target scope structure
|
|
135
|
+
* @param {IFUScope} scope2 the scope to be used to merge the values
|
|
136
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
137
|
+
* @returns {IFUScope} a new filter structure with overwritted props
|
|
138
|
+
*/
|
|
139
|
+
function mergeScopeProps(scope1, scope2, settings) {
|
|
140
|
+
var _a, _b, _c;
|
|
141
|
+
let _scope1 = scope1;
|
|
142
|
+
if (settings.mergeScopeProps) {
|
|
143
|
+
_scope1 = Object.assign(Object.assign({}, scope1), { collapsed: (_a = scope2.collapsed) !== null && _a !== void 0 ? _a : scope1.collapsed, displayed: (_b = scope2.displayed) !== null && _b !== void 0 ? _b : scope1.displayed, enabled: (_c = scope2.enabled) !== null && _c !== void 0 ? _c : scope1.enabled, label: scope2.label || scope1.label, scope: scope2.scope || scope1.scope, scopeid: scope2.scopeid || scope1.scopeid });
|
|
144
|
+
}
|
|
145
|
+
return _scope1;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Gets a new dataset structure for the configured settings
|
|
149
|
+
* @param {IFUDataset} dataset1 the target dataset structure
|
|
150
|
+
* @param {IFUDataset} dataset2 the dataset to be used to merge the values
|
|
151
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
152
|
+
* @returns {IFUDataset} a new filter structure with overwritted props
|
|
153
|
+
*/
|
|
154
|
+
function mergeDatasetProps(dataset1, dataset2, settings) {
|
|
155
|
+
var _a, _b, _c;
|
|
156
|
+
let _dataset1 = dataset1;
|
|
157
|
+
if (settings.mergeDatasetProps) {
|
|
158
|
+
_dataset1 = Object.assign(Object.assign({}, dataset1), { collapsed: (_a = dataset2.collapsed) !== null && _a !== void 0 ? _a : dataset1.collapsed, displayed: (_b = dataset2.displayed) !== null && _b !== void 0 ? _b : dataset1.displayed, enabled: (_c = dataset2.enabled) !== null && _c !== void 0 ? _c : dataset1.enabled, label: dataset2.label || dataset1.label, qrveyid: dataset2.qrveyid || dataset1.qrveyid });
|
|
159
|
+
}
|
|
160
|
+
return _dataset1;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Gets a new filter structure for the configured settings
|
|
164
|
+
* @param {IFUFilter} filter1 the target filter structure
|
|
165
|
+
* @param {IFUFilter} filter2 the filter to be used to merge the values
|
|
166
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
128
167
|
* @returns a new filter structure with overwritted props
|
|
129
168
|
*/
|
|
130
169
|
function mergeFilterProps(filter1, filter2, settings) {
|
|
131
170
|
var _a, _b, _c;
|
|
132
171
|
let _filter1 = filter1;
|
|
133
|
-
if (settings.
|
|
134
|
-
_filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, displayed: (_b = filter2.displayed) !== null && _b !== void 0 ? _b : filter1.displayed, dateSection: filter2.dateSection, extras: filter2.extras, enabled: (_c = filter2.enabled) !== null && _c !== void 0 ? _c : filter1.enabled,
|
|
172
|
+
if (settings.mergeFilterProps) {
|
|
173
|
+
_filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, column: (0, mergeDeep_1.mergeDeep)(filter2.column, filter1.column), displayed: (_b = filter2.displayed) !== null && _b !== void 0 ? _b : filter1.displayed, dateSection: filter2.dateSection, extras: filter2.extras, enabled: (_c = filter2.enabled) !== null && _c !== void 0 ? _c : filter1.enabled, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, property: filter2.property || filter1.property, operator: filter2.operator || filter1.operator, selectAll: filter2.selectAll, validator: filter2.validator || filter1.validator });
|
|
135
174
|
}
|
|
136
175
|
return _filter1;
|
|
137
176
|
}
|
|
@@ -4,8 +4,8 @@ import { IFSScope } from "../../interfaces/common/IFSScope";
|
|
|
4
4
|
* Resolves the conditions by given params
|
|
5
5
|
* @param filter The filter scope structure
|
|
6
6
|
* @param params given parameters to validate the filter
|
|
7
|
-
* @param letPassUndefinedProperties Flag to avoid applying the condition when the
|
|
8
|
-
* @param letPassUndefinedParams Flag to avoid applying the condition when the
|
|
7
|
+
* @param letPassUndefinedProperties Flag to avoid applying the condition when the properties of the properties are undefined
|
|
8
|
+
* @param letPassUndefinedParams Flag to avoid applying the condition when the properties of the params are explicit undefined.
|
|
9
9
|
* @returns true: the condition is satisfied
|
|
10
10
|
*/
|
|
11
11
|
export declare function resolveScopeConditions(scope: IFSScope, params: IFSParamsToGetFilter, letPassUndefinedProperties?: boolean, letPassUndefinedParams?: boolean): boolean;
|
|
@@ -7,8 +7,8 @@ const hasProperty_1 = require("../../../general/object/hasProperty");
|
|
|
7
7
|
* Resolves the conditions by given params
|
|
8
8
|
* @param filter The filter scope structure
|
|
9
9
|
* @param params given parameters to validate the filter
|
|
10
|
-
* @param letPassUndefinedProperties Flag to avoid applying the condition when the
|
|
11
|
-
* @param letPassUndefinedParams Flag to avoid applying the condition when the
|
|
10
|
+
* @param letPassUndefinedProperties Flag to avoid applying the condition when the properties of the properties are undefined
|
|
11
|
+
* @param letPassUndefinedParams Flag to avoid applying the condition when the properties of the params are explicit undefined.
|
|
12
12
|
* @returns true: the condition is satisfied
|
|
13
13
|
*/
|
|
14
14
|
function resolveScopeConditions(scope, params, letPassUndefinedProperties = false, letPassUndefinedParams = true) {
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
+
import { IFOperator } from "../IFOperator";
|
|
1
2
|
import { IFFiltersMergeValues } from "./IFFiltersMergeValues";
|
|
2
3
|
/**
|
|
3
4
|
* Structure for MergeFilters property settings
|
|
4
5
|
*/
|
|
5
6
|
export interface IFFiltersMergeFilters extends IFFiltersMergeValues {
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Flag to merge second filter data props to first one
|
|
9
|
+
*/
|
|
10
|
+
mergeFilterDataProps?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Flag to merge second scope props to first one
|
|
13
|
+
*/
|
|
14
|
+
mergeScopeProps?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Flag to merge second dataset props to first one
|
|
17
|
+
*/
|
|
18
|
+
mergeDatasetProps?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Flag to merge second filter props to first one
|
|
21
|
+
*/
|
|
22
|
+
mergeFilterProps?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Whet setting, the operator is overwritten on new added filters
|
|
25
|
+
*/
|
|
26
|
+
setGroupedColumnOperator?: IFOperator;
|
|
8
27
|
}
|
|
@@ -4,10 +4,13 @@
|
|
|
4
4
|
* @returns a new MergeFilters settings object.
|
|
5
5
|
*/
|
|
6
6
|
export function getMergeFiltersSettings(settings) {
|
|
7
|
-
var _a, _b, _c;
|
|
7
|
+
var _a, _b, _c, _d, _e;
|
|
8
8
|
return {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
mergeFilterDataProps: (_a = settings === null || settings === void 0 ? void 0 : settings.mergeFilterDataProps) !== null && _a !== void 0 ? _a : true,
|
|
10
|
+
mergeScopeProps: (_b = settings === null || settings === void 0 ? void 0 : settings.mergeScopeProps) !== null && _b !== void 0 ? _b : true,
|
|
11
|
+
mergeDatasetProps: (_c = settings === null || settings === void 0 ? void 0 : settings.mergeDatasetProps) !== null && _c !== void 0 ? _c : true,
|
|
12
|
+
mergeFilterProps: (_d = settings === null || settings === void 0 ? void 0 : settings.mergeFilterProps) !== null && _d !== void 0 ? _d : true,
|
|
13
|
+
overwriteValues: (_e = settings === null || settings === void 0 ? void 0 : settings.overwriteValues) !== null && _e !== void 0 ? _e : false,
|
|
14
|
+
setGroupedColumnOperator: settings === null || settings === void 0 ? void 0 : settings.setGroupedColumnOperator,
|
|
12
15
|
};
|
|
13
16
|
}
|
|
@@ -2,10 +2,13 @@ import { IFSData } from "../../interfaces/common/IFSData";
|
|
|
2
2
|
import { IFFiltersMergeFilters } from "../../interfaces/functions/IFFiltersMergeFilters";
|
|
3
3
|
import { IFUData } from "../../interfaces/ui/IFUData";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
5
|
+
* Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
|
|
6
|
+
* Conditions:
|
|
7
|
+
* - If the info in the second filter data does not exist in the first one, the info will be added
|
|
8
|
+
* - If the info in the second filter data exists in the first one, the info will be merged
|
|
9
|
+
* @param {IFUData} filterData1 The target filter data
|
|
10
|
+
* @param {IFUData} filterData2 the filter data to be merged
|
|
11
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
12
|
+
* @returns {IFUData} a new filter data structure
|
|
10
13
|
*/
|
|
11
|
-
export declare function mergeFilters(filterData1:
|
|
14
|
+
export declare function mergeFilters(filterData1: IFUData | IFSData, filterData2: IFUData | IFSData, settings?: IFFiltersMergeFilters): IFUData | IFSData;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isEmpty } from "../../../general/mix/isEmpty";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { mergeDeep } from "../../../general/object/mergeDeep";
|
|
3
|
+
import { objectCopy } from "../../../general/object/objectCopy";
|
|
4
4
|
import { getFilterid } from "./getFilterid";
|
|
5
5
|
import { getMergeFiltersSettings } from "./getMergeFiltersSettings";
|
|
6
6
|
import { mergeValues } from "./mergeValues";
|
|
@@ -8,13 +8,17 @@ import { resolveDatasetConditions } from "./resolveDatasetConditions";
|
|
|
8
8
|
import { resolveFilterConditions } from "./resolveFilterConditions";
|
|
9
9
|
import { resolveScopeConditions } from "./resolveScopeConditions";
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
11
|
+
* Merges the second filter data into the first one; the first Filter Data passed in the argument has the priority.
|
|
12
|
+
* Conditions:
|
|
13
|
+
* - If the info in the second filter data does not exist in the first one, the info will be added
|
|
14
|
+
* - If the info in the second filter data exists in the first one, the info will be merged
|
|
15
|
+
* @param {IFUData} filterData1 The target filter data
|
|
16
|
+
* @param {IFUData} filterData2 the filter data to be merged
|
|
17
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
18
|
+
* @returns {IFUData} a new filter data structure
|
|
16
19
|
*/
|
|
17
20
|
export function mergeFilters(filterData1, filterData2, settings) {
|
|
21
|
+
var _a;
|
|
18
22
|
if (isEmpty(filterData1) || isEmpty(filterData1.scopes)) {
|
|
19
23
|
if (isEmpty(filterData2) || isEmpty(filterData2.scopes))
|
|
20
24
|
return;
|
|
@@ -22,22 +26,28 @@ export function mergeFilters(filterData1, filterData2, settings) {
|
|
|
22
26
|
}
|
|
23
27
|
if (isEmpty(filterData2) || isEmpty(filterData2.scopes))
|
|
24
28
|
return filterData1;
|
|
25
|
-
const
|
|
26
|
-
const
|
|
29
|
+
const newFilterData1 = objectCopy(filterData1);
|
|
30
|
+
const newFilterData2 = objectCopy(filterData2);
|
|
27
31
|
const defaultSettings = getMergeFiltersSettings(settings);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
const scopes = mergeScopes(newFilterData1.scopes, newFilterData2.scopes, defaultSettings);
|
|
33
|
+
if (defaultSettings.mergeFilterDataProps) {
|
|
34
|
+
return {
|
|
35
|
+
enabled: (_a = newFilterData2.enabled) !== null && _a !== void 0 ? _a : newFilterData1.enabled,
|
|
36
|
+
section: newFilterData2.section || newFilterData1.section,
|
|
37
|
+
scopes,
|
|
38
|
+
version: newFilterData2.version || newFilterData1.version,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return Object.assign(Object.assign({}, newFilterData1), { scopes });
|
|
34
42
|
}
|
|
35
43
|
/**
|
|
36
|
-
* Gets a new scope structure
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @param
|
|
40
|
-
* @
|
|
44
|
+
* Gets a new scope array structure by merging both scope structures
|
|
45
|
+
* - If the info in the second scope does not exist in the first one, the scope will be added
|
|
46
|
+
* - If the info in the second scope exists in the first one, the scope will be merged
|
|
47
|
+
* @param {IFUScope[]} scopes1 the target scope structure
|
|
48
|
+
* @param {IFUScope[]} scopes2 the scope to be merged
|
|
49
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
50
|
+
* @returns {IFUScope[]} a new scope array structure
|
|
41
51
|
*/
|
|
42
52
|
function mergeScopes(scopes1 = [], scopes2 = [], settings) {
|
|
43
53
|
let newScopes = scopes1.reduce((scopes, scope1) => {
|
|
@@ -47,7 +57,7 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
|
|
|
47
57
|
}));
|
|
48
58
|
let _scope1 = scope1;
|
|
49
59
|
if (scope2Index > -1) {
|
|
50
|
-
_scope1 = Object.assign(Object.assign({}, scopes2[scope2Index]), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
|
|
60
|
+
_scope1 = Object.assign(Object.assign({}, mergeScopeProps(scope1, scopes2[scope2Index], settings)), { datasets: mergeDatasets(scope1.datasets, scopes2[scope2Index].datasets, settings) });
|
|
51
61
|
scopes2.splice(scope2Index, 1);
|
|
52
62
|
}
|
|
53
63
|
scopes.push(_scope1);
|
|
@@ -58,11 +68,13 @@ function mergeScopes(scopes1 = [], scopes2 = [], settings) {
|
|
|
58
68
|
return newScopes;
|
|
59
69
|
}
|
|
60
70
|
/**
|
|
61
|
-
* Gets a new dataset structure array by merging
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* @param
|
|
65
|
-
* @
|
|
71
|
+
* Gets a new dataset structure array by merging both dataset structures
|
|
72
|
+
* - If the info in the second dataset does not exist in the first one, the dataset will be added
|
|
73
|
+
* - If the info in the second dataset exists in the first one, the dataset will be merged
|
|
74
|
+
* @param {IFUDataset[]} datasets1 the target dataset structure
|
|
75
|
+
* @param {IFUDataset[]} datasets2 the dataset to be merged
|
|
76
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilter
|
|
77
|
+
* @returns {IFUDataset[]} a new dataset structure array
|
|
66
78
|
*/
|
|
67
79
|
function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
68
80
|
let newDatasets = datasets1.reduce((datasets, dataset1) => {
|
|
@@ -71,7 +83,7 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
|
71
83
|
}));
|
|
72
84
|
let _dataset1 = dataset1;
|
|
73
85
|
if (dataset2Index > -1) {
|
|
74
|
-
_dataset1 = Object.assign(Object.assign({}, datasets2[dataset2Index]), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
|
|
86
|
+
_dataset1 = Object.assign(Object.assign({}, mergeDatasetProps(dataset1, datasets2[dataset2Index], settings)), { filters: mergeFilterss(dataset1.filters, datasets2[dataset2Index].filters, settings) });
|
|
75
87
|
datasets2.splice(dataset2Index, 1);
|
|
76
88
|
}
|
|
77
89
|
datasets.push(_dataset1);
|
|
@@ -83,10 +95,10 @@ function mergeDatasets(datasets1 = [], datasets2 = [], settings) {
|
|
|
83
95
|
}
|
|
84
96
|
/**
|
|
85
97
|
* Gets a new filter structure array by merging two filter structures
|
|
86
|
-
* @param filters1 the target filter structure
|
|
87
|
-
* @param filters2 the filter to be merged
|
|
88
|
-
* @param settings configuration of the
|
|
89
|
-
* @returns a new filter structure array
|
|
98
|
+
* @param {IFUFilter[]} filters1 the target filter structure
|
|
99
|
+
* @param {IFUFilter[]} filters2 the filter to be merged
|
|
100
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
101
|
+
* @returns {IFUFilter[]} a new filter structure array
|
|
90
102
|
*/
|
|
91
103
|
function mergeFilterss(filters1 = [], filters2 = [], settings) {
|
|
92
104
|
let newFilters = filters1.reduce((filters, filter1) => {
|
|
@@ -99,14 +111,11 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
|
|
|
99
111
|
}));
|
|
100
112
|
let _filter1 = filter1;
|
|
101
113
|
if (filter2Index > -1) {
|
|
102
|
-
_filter1 = Object.assign(Object.assign({}, _filter1), { values: mergeValues(_filter1, filters2[filter2Index], settings) });
|
|
103
|
-
_filter1 = mergeFilterProps(_filter1, filters2[filter2Index], settings);
|
|
114
|
+
_filter1 = Object.assign(Object.assign(Object.assign({}, _filter1), mergeFilterProps(_filter1, filters2[filter2Index], settings)), { values: mergeValues(_filter1, filters2[filter2Index], settings) });
|
|
104
115
|
filters2.splice(filter2Index, 1);
|
|
105
116
|
}
|
|
106
|
-
else {
|
|
107
|
-
_filter1 =
|
|
108
|
-
? FILTER_GROUPED_COLUMN_OPERATOR
|
|
109
|
-
: _filter1.operator });
|
|
117
|
+
else if (!isEmpty(settings.setGroupedColumnOperator)) {
|
|
118
|
+
_filter1.operator = settings.setGroupedColumnOperator;
|
|
110
119
|
}
|
|
111
120
|
_filter1.filterid = getFilterid(_filter1);
|
|
112
121
|
filters.push(_filter1);
|
|
@@ -117,17 +126,47 @@ function mergeFilterss(filters1 = [], filters2 = [], settings) {
|
|
|
117
126
|
return newFilters;
|
|
118
127
|
}
|
|
119
128
|
/**
|
|
120
|
-
* Gets a new
|
|
121
|
-
* @param
|
|
122
|
-
* @param
|
|
123
|
-
* @param settings configuration of the
|
|
129
|
+
* Gets a new scope structure for the configured settings
|
|
130
|
+
* @param {IFUScope} scope1 the target scope structure
|
|
131
|
+
* @param {IFUScope} scope2 the scope to be used to merge the values
|
|
132
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
133
|
+
* @returns {IFUScope} a new filter structure with overwritted props
|
|
134
|
+
*/
|
|
135
|
+
function mergeScopeProps(scope1, scope2, settings) {
|
|
136
|
+
var _a, _b, _c;
|
|
137
|
+
let _scope1 = scope1;
|
|
138
|
+
if (settings.mergeScopeProps) {
|
|
139
|
+
_scope1 = Object.assign(Object.assign({}, scope1), { collapsed: (_a = scope2.collapsed) !== null && _a !== void 0 ? _a : scope1.collapsed, displayed: (_b = scope2.displayed) !== null && _b !== void 0 ? _b : scope1.displayed, enabled: (_c = scope2.enabled) !== null && _c !== void 0 ? _c : scope1.enabled, label: scope2.label || scope1.label, scope: scope2.scope || scope1.scope, scopeid: scope2.scopeid || scope1.scopeid });
|
|
140
|
+
}
|
|
141
|
+
return _scope1;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Gets a new dataset structure for the configured settings
|
|
145
|
+
* @param {IFUDataset} dataset1 the target dataset structure
|
|
146
|
+
* @param {IFUDataset} dataset2 the dataset to be used to merge the values
|
|
147
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
148
|
+
* @returns {IFUDataset} a new filter structure with overwritted props
|
|
149
|
+
*/
|
|
150
|
+
function mergeDatasetProps(dataset1, dataset2, settings) {
|
|
151
|
+
var _a, _b, _c;
|
|
152
|
+
let _dataset1 = dataset1;
|
|
153
|
+
if (settings.mergeDatasetProps) {
|
|
154
|
+
_dataset1 = Object.assign(Object.assign({}, dataset1), { collapsed: (_a = dataset2.collapsed) !== null && _a !== void 0 ? _a : dataset1.collapsed, displayed: (_b = dataset2.displayed) !== null && _b !== void 0 ? _b : dataset1.displayed, enabled: (_c = dataset2.enabled) !== null && _c !== void 0 ? _c : dataset1.enabled, label: dataset2.label || dataset1.label, qrveyid: dataset2.qrveyid || dataset1.qrveyid });
|
|
155
|
+
}
|
|
156
|
+
return _dataset1;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Gets a new filter structure for the configured settings
|
|
160
|
+
* @param {IFUFilter} filter1 the target filter structure
|
|
161
|
+
* @param {IFUFilter} filter2 the filter to be used to merge the values
|
|
162
|
+
* @param {IFFiltersMergeFilters} settings configuration of the mergeFilters
|
|
124
163
|
* @returns a new filter structure with overwritted props
|
|
125
164
|
*/
|
|
126
165
|
function mergeFilterProps(filter1, filter2, settings) {
|
|
127
166
|
var _a, _b, _c;
|
|
128
167
|
let _filter1 = filter1;
|
|
129
|
-
if (settings.
|
|
130
|
-
_filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, displayed: (_b = filter2.displayed) !== null && _b !== void 0 ? _b : filter1.displayed, dateSection: filter2.dateSection, extras: filter2.extras, enabled: (_c = filter2.enabled) !== null && _c !== void 0 ? _c : filter1.enabled,
|
|
168
|
+
if (settings.mergeFilterProps) {
|
|
169
|
+
_filter1 = Object.assign(Object.assign({}, filter1), { collapsed: (_a = filter2.collapsed) !== null && _a !== void 0 ? _a : filter1.collapsed, column: mergeDeep(filter2.column, filter1.column), displayed: (_b = filter2.displayed) !== null && _b !== void 0 ? _b : filter1.displayed, dateSection: filter2.dateSection, extras: filter2.extras, enabled: (_c = filter2.enabled) !== null && _c !== void 0 ? _c : filter1.enabled, lookupDisplayIndex: filter2.lookupDisplayIndex, nullValues: filter2.nullValues, property: filter2.property || filter1.property, operator: filter2.operator || filter1.operator, selectAll: filter2.selectAll, validator: filter2.validator || filter1.validator });
|
|
131
170
|
}
|
|
132
171
|
return _filter1;
|
|
133
172
|
}
|
|
@@ -4,8 +4,8 @@ import { IFSScope } from "../../interfaces/common/IFSScope";
|
|
|
4
4
|
* Resolves the conditions by given params
|
|
5
5
|
* @param filter The filter scope structure
|
|
6
6
|
* @param params given parameters to validate the filter
|
|
7
|
-
* @param letPassUndefinedProperties Flag to avoid applying the condition when the
|
|
8
|
-
* @param letPassUndefinedParams Flag to avoid applying the condition when the
|
|
7
|
+
* @param letPassUndefinedProperties Flag to avoid applying the condition when the properties of the properties are undefined
|
|
8
|
+
* @param letPassUndefinedParams Flag to avoid applying the condition when the properties of the params are explicit undefined.
|
|
9
9
|
* @returns true: the condition is satisfied
|
|
10
10
|
*/
|
|
11
11
|
export declare function resolveScopeConditions(scope: IFSScope, params: IFSParamsToGetFilter, letPassUndefinedProperties?: boolean, letPassUndefinedParams?: boolean): boolean;
|
|
@@ -4,8 +4,8 @@ import { _hasProperty } from "../../../general/object/hasProperty";
|
|
|
4
4
|
* Resolves the conditions by given params
|
|
5
5
|
* @param filter The filter scope structure
|
|
6
6
|
* @param params given parameters to validate the filter
|
|
7
|
-
* @param letPassUndefinedProperties Flag to avoid applying the condition when the
|
|
8
|
-
* @param letPassUndefinedParams Flag to avoid applying the condition when the
|
|
7
|
+
* @param letPassUndefinedProperties Flag to avoid applying the condition when the properties of the properties are undefined
|
|
8
|
+
* @param letPassUndefinedParams Flag to avoid applying the condition when the properties of the params are explicit undefined.
|
|
9
9
|
* @returns true: the condition is satisfied
|
|
10
10
|
*/
|
|
11
11
|
export function resolveScopeConditions(scope, params, letPassUndefinedProperties = false, letPassUndefinedParams = true) {
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
+
import { IFOperator } from "../IFOperator";
|
|
1
2
|
import { IFFiltersMergeValues } from "./IFFiltersMergeValues";
|
|
2
3
|
/**
|
|
3
4
|
* Structure for MergeFilters property settings
|
|
4
5
|
*/
|
|
5
6
|
export interface IFFiltersMergeFilters extends IFFiltersMergeValues {
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Flag to merge second filter data props to first one
|
|
9
|
+
*/
|
|
10
|
+
mergeFilterDataProps?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Flag to merge second scope props to first one
|
|
13
|
+
*/
|
|
14
|
+
mergeScopeProps?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Flag to merge second dataset props to first one
|
|
17
|
+
*/
|
|
18
|
+
mergeDatasetProps?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Flag to merge second filter props to first one
|
|
21
|
+
*/
|
|
22
|
+
mergeFilterProps?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Whet setting, the operator is overwritten on new added filters
|
|
25
|
+
*/
|
|
26
|
+
setGroupedColumnOperator?: IFOperator;
|
|
8
27
|
}
|