@qrvey/filters 0.0.44 → 0.1.0
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 +63 -1
- package/dist/cjs/classes/FilterAdapter.js +1 -80
- package/dist/cjs/classes/FilterBuilder.js +33 -251
- package/dist/cjs/classes/FilterManager.js +7 -64
- package/dist/cjs/classes/FilterResources.js +3 -116
- package/dist/cjs/classes/FilterSearcher.js +0 -77
- package/dist/cjs/classes/FilterValidation.js +0 -93
- package/dist/cjs/classes/FilterValues.js +0 -24
- package/dist/cjs/classes/index.js +8 -21
- package/dist/cjs/helpers/filter-adapt.helpers.js +3 -46
- package/dist/cjs/helpers/filter-adapt.legacy.helpers.js +6 -53
- package/dist/cjs/helpers/filter-adapt.logic.helpers.js +7 -128
- package/dist/cjs/helpers/filter-builder.helpers.js +1 -8
- package/dist/cjs/helpers/filter-settings.helpers.js +6 -41
- package/dist/cjs/helpers/filter-validators.helpers.js +15 -9
- package/dist/cjs/helpers/filter-verbose.helpers.js +211 -0
- package/dist/cjs/helpers/getAggregateFilters.js +11 -0
- package/dist/cjs/helpers/getFilterId.js +1 -17
- package/dist/cjs/helpers/getFilterType.js +1 -8
- package/dist/cjs/helpers/index.js +12 -20
- package/dist/cjs/helpers/isDateDistinctGrouping.js +15 -0
- package/dist/cjs/helpers/isRankingFilter.js +10 -0
- package/dist/cjs/helpers/resolveFilterConditions.js +2 -10
- package/dist/cjs/helpers/utils.helpers.js +2 -19
- package/dist/cjs/index.js +5 -18
- package/dist/cjs/models/index.js +4 -17
- package/dist/cjs/resources/filter-grouping.resources.js +0 -18
- package/dist/cjs/resources/filter-logic.resources.js +0 -3
- package/dist/cjs/resources/filter-scopes.resources.js +10 -27
- package/dist/cjs/resources/filter-validators.resources.js +0 -3
- package/dist/cjs/resources/filter-verbose.resources.js +13 -0
- package/dist/cjs/resources/filters.resources.js +0 -12
- package/dist/cjs/resources/index.js +12 -24
- package/dist/classes/FilterAdapter.d.ts +0 -80
- package/dist/classes/FilterAdapter.js +1 -80
- package/dist/classes/FilterBuilder.d.ts +2 -177
- package/dist/classes/FilterBuilder.js +33 -251
- package/dist/classes/FilterManager.d.ts +7 -62
- package/dist/classes/FilterManager.js +7 -64
- package/dist/classes/FilterResources.d.ts +1 -115
- package/dist/classes/FilterResources.js +3 -116
- package/dist/classes/FilterSearcher.d.ts +2 -77
- package/dist/classes/FilterSearcher.js +0 -77
- package/dist/classes/FilterValidation.d.ts +1 -47
- package/dist/classes/FilterValidation.js +0 -93
- package/dist/classes/FilterValues.d.ts +0 -25
- package/dist/classes/FilterValues.js +0 -24
- package/dist/classes/index.d.ts +0 -1
- package/dist/helpers/filter-adapt.helpers.d.ts +0 -15
- package/dist/helpers/filter-adapt.helpers.js +1 -43
- package/dist/helpers/filter-adapt.legacy.helpers.d.ts +0 -20
- package/dist/helpers/filter-adapt.legacy.helpers.js +3 -49
- package/dist/helpers/filter-adapt.logic.helpers.d.ts +0 -22
- package/dist/helpers/filter-adapt.logic.helpers.js +3 -123
- package/dist/helpers/filter-builder.helpers.d.ts +0 -7
- package/dist/helpers/filter-builder.helpers.js +0 -6
- package/dist/helpers/filter-settings.helpers.d.ts +0 -35
- package/dist/helpers/filter-settings.helpers.js +0 -34
- package/dist/helpers/filter-validators.helpers.d.ts +3 -6
- package/dist/helpers/filter-validators.helpers.js +11 -7
- package/dist/helpers/filter-verbose.helpers.d.ts +6 -0
- package/dist/helpers/filter-verbose.helpers.js +206 -0
- package/dist/helpers/getAggregateFilters.d.ts +3 -0
- package/dist/helpers/getAggregateFilters.js +7 -0
- package/dist/helpers/getFilterId.d.ts +0 -16
- package/dist/helpers/getFilterId.js +0 -15
- package/dist/helpers/getFilterType.d.ts +0 -7
- package/dist/helpers/getFilterType.js +0 -6
- package/dist/helpers/index.d.ts +5 -1
- package/dist/helpers/index.js +5 -0
- package/dist/helpers/isDateDistinctGrouping.d.ts +2 -0
- package/dist/helpers/isDateDistinctGrouping.js +12 -0
- package/dist/helpers/isRankingFilter.d.ts +2 -0
- package/dist/helpers/isRankingFilter.js +7 -0
- package/dist/helpers/resolveFilterConditions.d.ts +0 -8
- package/dist/helpers/resolveFilterConditions.js +1 -8
- package/dist/helpers/utils.helpers.d.ts +0 -17
- package/dist/helpers/utils.helpers.js +0 -16
- package/dist/index.d.ts +0 -1
- package/dist/models/filter-builder.models.d.ts +0 -156
- package/dist/models/filter-resources.models.d.ts +0 -53
- package/dist/models/filter-searcher.models.d.ts +5 -34
- package/dist/models/filter-validation.models.d.ts +0 -40
- package/dist/models/index.d.ts +0 -1
- package/dist/resources/filter-functions.resources.d.ts +0 -49
- package/dist/resources/filter-grouping.resources.d.ts +0 -7
- package/dist/resources/filter-grouping.resources.js +0 -18
- package/dist/resources/filter-logic.resources.d.ts +0 -79
- package/dist/resources/filter-logic.resources.js +0 -3
- package/dist/resources/filter-operators.resources.d.ts +0 -1
- package/dist/resources/filter-panel.interfaces.d.ts +0 -49
- package/dist/resources/filter-scopes.resources.d.ts +2 -25
- package/dist/resources/filter-scopes.resources.js +10 -27
- package/dist/resources/filter-validation.resources.d.ts +0 -1
- package/dist/resources/filter-validators.resources.d.ts +0 -1
- package/dist/resources/filter-validators.resources.js +0 -3
- package/dist/resources/filter-values.resources.d.ts +0 -13
- package/dist/resources/filter-verbose.resources.d.ts +23 -0
- package/dist/resources/filter-verbose.resources.js +10 -0
- package/dist/resources/filter-visual.resources.d.ts +0 -50
- package/dist/resources/filters.resources.d.ts +1 -102
- package/dist/resources/filters.resources.js +0 -12
- package/dist/resources/index.d.ts +1 -1
- package/dist/resources/index.js +1 -0
- package/package.json +59 -44
- package/.eslintignore +0 -6
- package/.eslintrc.json +0 -122
- package/.husky/pre-commit +0 -4
- package/.lintstagedrc +0 -7
- package/.prettierignore +0 -6
- package/.prettierrc.json +0 -1
- package/CHANGELOG.md +0 -268
- package/CODE_OF_CONDUCT.md +0 -132
- package/bitbucket-pipelines.yml +0 -92
- package/dist/cjs/classes/FilterAdapter.d.ts +0 -107
- package/dist/cjs/classes/FilterAdapter.d.ts.map +0 -1
- package/dist/cjs/classes/FilterBuilder.d.ts +0 -206
- package/dist/cjs/classes/FilterBuilder.d.ts.map +0 -1
- package/dist/cjs/classes/FilterManager.d.ts +0 -84
- package/dist/cjs/classes/FilterManager.d.ts.map +0 -1
- package/dist/cjs/classes/FilterResources.d.ts +0 -139
- package/dist/cjs/classes/FilterResources.d.ts.map +0 -1
- package/dist/cjs/classes/FilterSearcher.d.ts +0 -90
- package/dist/cjs/classes/FilterSearcher.d.ts.map +0 -1
- package/dist/cjs/classes/FilterValidation.d.ts +0 -58
- package/dist/cjs/classes/FilterValidation.d.ts.map +0 -1
- package/dist/cjs/classes/FilterValues.d.ts +0 -33
- package/dist/cjs/classes/FilterValues.d.ts.map +0 -1
- package/dist/cjs/classes/index.d.ts +0 -8
- package/dist/cjs/classes/index.d.ts.map +0 -1
- package/dist/cjs/helpers/filter-adapt.helpers.d.ts +0 -21
- package/dist/cjs/helpers/filter-adapt.helpers.d.ts.map +0 -1
- package/dist/cjs/helpers/filter-adapt.legacy.helpers.d.ts +0 -26
- package/dist/cjs/helpers/filter-adapt.legacy.helpers.d.ts.map +0 -1
- package/dist/cjs/helpers/filter-adapt.logic.helpers.d.ts +0 -29
- package/dist/cjs/helpers/filter-adapt.logic.helpers.d.ts.map +0 -1
- package/dist/cjs/helpers/filter-builder.helpers.d.ts +0 -11
- package/dist/cjs/helpers/filter-builder.helpers.d.ts.map +0 -1
- package/dist/cjs/helpers/filter-settings.helpers.d.ts +0 -42
- package/dist/cjs/helpers/filter-settings.helpers.d.ts.map +0 -1
- package/dist/cjs/helpers/filter-validators.helpers.d.ts +0 -8
- package/dist/cjs/helpers/filter-validators.helpers.d.ts.map +0 -1
- package/dist/cjs/helpers/getFilterId.d.ts +0 -18
- package/dist/cjs/helpers/getFilterId.d.ts.map +0 -1
- package/dist/cjs/helpers/getFilterType.d.ts +0 -11
- package/dist/cjs/helpers/getFilterType.d.ts.map +0 -1
- package/dist/cjs/helpers/index.d.ts +0 -7
- package/dist/cjs/helpers/index.d.ts.map +0 -1
- package/dist/cjs/helpers/resolveFilterConditions.d.ts +0 -11
- package/dist/cjs/helpers/resolveFilterConditions.d.ts.map +0 -1
- package/dist/cjs/helpers/utils.helpers.d.ts +0 -26
- package/dist/cjs/helpers/utils.helpers.d.ts.map +0 -1
- package/dist/cjs/index.d.ts +0 -5
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/models/filter-builder.models.d.ts +0 -203
- package/dist/cjs/models/filter-builder.models.d.ts.map +0 -1
- package/dist/cjs/models/filter-resources.models.d.ts +0 -71
- package/dist/cjs/models/filter-resources.models.d.ts.map +0 -1
- package/dist/cjs/models/filter-searcher.models.d.ts +0 -42
- package/dist/cjs/models/filter-searcher.models.d.ts.map +0 -1
- package/dist/cjs/models/filter-validation.models.d.ts +0 -59
- package/dist/cjs/models/filter-validation.models.d.ts.map +0 -1
- package/dist/cjs/models/index.d.ts +0 -4
- package/dist/cjs/models/index.d.ts.map +0 -1
- package/dist/cjs/resources/filter-functions.resources.d.ts +0 -94
- package/dist/cjs/resources/filter-functions.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-grouping.resources.d.ts +0 -103
- package/dist/cjs/resources/filter-grouping.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-logic.resources.d.ts +0 -135
- package/dist/cjs/resources/filter-logic.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-operators.resources.d.ts +0 -16
- package/dist/cjs/resources/filter-operators.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-panel.interfaces.d.ts +0 -80
- package/dist/cjs/resources/filter-panel.interfaces.d.ts.map +0 -1
- package/dist/cjs/resources/filter-scopes.resources.d.ts +0 -62
- package/dist/cjs/resources/filter-scopes.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-validation.resources.d.ts +0 -20
- package/dist/cjs/resources/filter-validation.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-validators.resources.d.ts +0 -80
- package/dist/cjs/resources/filter-validators.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-values.resources.d.ts +0 -40
- package/dist/cjs/resources/filter-values.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filter-visual.resources.d.ts +0 -77
- package/dist/cjs/resources/filter-visual.resources.d.ts.map +0 -1
- package/dist/cjs/resources/filters.resources.d.ts +0 -168
- package/dist/cjs/resources/filters.resources.d.ts.map +0 -1
- package/dist/cjs/resources/index.d.ts +0 -11
- package/dist/cjs/resources/index.d.ts.map +0 -1
- package/dist/classes/FilterAdapter.d.ts.map +0 -1
- package/dist/classes/FilterBuilder.d.ts.map +0 -1
- package/dist/classes/FilterManager.d.ts.map +0 -1
- package/dist/classes/FilterResources.d.ts.map +0 -1
- package/dist/classes/FilterSearcher.d.ts.map +0 -1
- package/dist/classes/FilterValidation.d.ts.map +0 -1
- package/dist/classes/FilterValues.d.ts.map +0 -1
- package/dist/classes/index.d.ts.map +0 -1
- package/dist/helpers/filter-adapt.helpers.d.ts.map +0 -1
- package/dist/helpers/filter-adapt.legacy.helpers.d.ts.map +0 -1
- package/dist/helpers/filter-adapt.logic.helpers.d.ts.map +0 -1
- package/dist/helpers/filter-builder.helpers.d.ts.map +0 -1
- package/dist/helpers/filter-settings.helpers.d.ts.map +0 -1
- package/dist/helpers/filter-validators.helpers.d.ts.map +0 -1
- package/dist/helpers/getFilterId.d.ts.map +0 -1
- package/dist/helpers/getFilterType.d.ts.map +0 -1
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/resolveFilterConditions.d.ts.map +0 -1
- package/dist/helpers/utils.helpers.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/models/filter-builder.models.d.ts.map +0 -1
- package/dist/models/filter-resources.models.d.ts.map +0 -1
- package/dist/models/filter-searcher.models.d.ts.map +0 -1
- package/dist/models/filter-validation.models.d.ts.map +0 -1
- package/dist/models/index.d.ts.map +0 -1
- package/dist/resources/filter-functions.resources.d.ts.map +0 -1
- package/dist/resources/filter-grouping.resources.d.ts.map +0 -1
- package/dist/resources/filter-logic.resources.d.ts.map +0 -1
- package/dist/resources/filter-operators.resources.d.ts.map +0 -1
- package/dist/resources/filter-panel.interfaces.d.ts.map +0 -1
- package/dist/resources/filter-scopes.resources.d.ts.map +0 -1
- package/dist/resources/filter-validation.resources.d.ts.map +0 -1
- package/dist/resources/filter-validators.resources.d.ts.map +0 -1
- package/dist/resources/filter-values.resources.d.ts.map +0 -1
- package/dist/resources/filter-visual.resources.d.ts.map +0 -1
- package/dist/resources/filters.resources.d.ts.map +0 -1
- package/dist/resources/index.d.ts.map +0 -1
- package/jest.config.js +0 -10
- package/jsdoc.config.json +0 -14
- package/scripts/clean-build/index.js +0 -62
- package/sonar-project.properties +0 -2
- package/src/classes/FilterAdapter.ts +0 -208
- package/src/classes/FilterBuilder.ts +0 -821
- package/src/classes/FilterManager.ts +0 -126
- package/src/classes/FilterResources.ts +0 -411
- package/src/classes/FilterSearcher.ts +0 -243
- package/src/classes/FilterValidation.ts +0 -221
- package/src/classes/FilterValues.ts +0 -89
- package/src/classes/index.ts +0 -7
- package/src/helpers/filter-adapt.helpers.ts +0 -204
- package/src/helpers/filter-adapt.legacy.helpers.ts +0 -298
- package/src/helpers/filter-adapt.logic.helpers.ts +0 -631
- package/src/helpers/filter-builder.helpers.ts +0 -28
- package/src/helpers/filter-settings.helpers.ts +0 -133
- package/src/helpers/filter-validators.helpers.ts +0 -15
- package/src/helpers/getFilterId.ts +0 -35
- package/src/helpers/getFilterType.ts +0 -23
- package/src/helpers/index.ts +0 -6
- package/src/helpers/resolveFilterConditions.ts +0 -29
- package/src/helpers/utils.helpers.ts +0 -37
- package/src/index.ts +0 -4
- package/src/models/filter-builder.models.ts +0 -256
- package/src/models/filter-resources.models.ts +0 -89
- package/src/models/filter-searcher.models.ts +0 -61
- package/src/models/filter-validation.models.ts +0 -71
- package/src/models/index.ts +0 -3
- package/src/resources/filter-functions.resources.ts +0 -132
- package/src/resources/filter-grouping.resources.ts +0 -531
- package/src/resources/filter-logic.resources.ts +0 -148
- package/src/resources/filter-operators.resources.ts +0 -40
- package/src/resources/filter-panel.interfaces.ts +0 -86
- package/src/resources/filter-scopes.resources.ts +0 -152
- package/src/resources/filter-validation.resources.ts +0 -90
- package/src/resources/filter-validators.resources.ts +0 -411
- package/src/resources/filter-values.resources.ts +0 -57
- package/src/resources/filter-visual.resources.ts +0 -86
- package/src/resources/filters.resources.ts +0 -232
- package/src/resources/index.ts +0 -10
- package/tests/classes/FilterAdapter.test.ts +0 -124
- package/tests/classes/FilterBuilder.test.ts +0 -903
- package/tests/classes/FilterResources.test.ts +0 -267
- package/tests/classes/FilterSearcher.test.ts +0 -188
- package/tests/classes/FilterValidation.test.ts +0 -54
- package/tests/helpers/getFilterId.test.ts +0 -121
- package/tests/mock/datasets.mock.ts +0 -61
- package/tests/mock/filters-adapter.mock.ts +0 -646
- package/tests/mock/filters-interactive-table.mock.ts +0 -59
- package/tests/mock/filters.mock.ts +0 -277
- package/tsconfig.doc.json +0 -4
- package/tsconfig.eslint.json +0 -4
- package/tsconfig.json +0 -113
|
@@ -5,58 +5,30 @@ const utils_1 = require("@qrvey/utils");
|
|
|
5
5
|
const FilterSearcher_1 = require("./FilterSearcher");
|
|
6
6
|
const FilterValidation_1 = require("./FilterValidation");
|
|
7
7
|
const FilterValues_1 = require("./FilterValues");
|
|
8
|
+
const filter_builder_helpers_1 = require("../helpers/filter-builder.helpers");
|
|
8
9
|
const filter_settings_helpers_1 = require("../helpers/filter-settings.helpers");
|
|
9
10
|
const getFilterId_1 = require("../helpers/getFilterId");
|
|
10
11
|
const getFilterType_1 = require("../helpers/getFilterType");
|
|
11
12
|
const filter_operators_resources_1 = require("../resources/filter-operators.resources");
|
|
12
13
|
const filters_resources_1 = require("../resources/filters.resources");
|
|
13
|
-
const filter_builder_helpers_1 = require("../helpers/filter-builder.helpers");
|
|
14
|
-
/**
|
|
15
|
-
* Class to build new filters and manipulate ones.
|
|
16
|
-
*/
|
|
17
14
|
class FilterBuilder {
|
|
18
15
|
filters;
|
|
19
|
-
/**
|
|
20
|
-
* Instance to search filters
|
|
21
|
-
*/
|
|
22
16
|
searchEngine;
|
|
23
|
-
|
|
24
|
-
* Constructor
|
|
25
|
-
* @param filters the collection of filters
|
|
26
|
-
*/
|
|
27
|
-
constructor(filters = []) {
|
|
17
|
+
constructor(filters = [], searchEngine) {
|
|
28
18
|
this.filters = filters;
|
|
29
|
-
this.searchEngine = new FilterSearcher_1.FilterSearcher(filters);
|
|
19
|
+
this.searchEngine = searchEngine ?? new FilterSearcher_1.FilterSearcher(filters);
|
|
30
20
|
this.filters = (0, utils_1.objectCopy)(Array.isArray(filters) ? filters : []);
|
|
21
|
+
this.searchEngine.setFilters(this.filters);
|
|
31
22
|
}
|
|
32
|
-
/**
|
|
33
|
-
* **************************************************************************************************
|
|
34
|
-
****************************************** Adding **************************************************
|
|
35
|
-
****************************************************************************************************
|
|
36
|
-
*/
|
|
37
|
-
/**
|
|
38
|
-
* Adds various filter into the collection.
|
|
39
|
-
* Inserts them next to the last similar filter
|
|
40
|
-
* @param newFilters the filter to add
|
|
41
|
-
* @param inIndexes collection of indexes to add the new filters
|
|
42
|
-
* @param settings the settings object to setup this function
|
|
43
|
-
* @returns the new collection of filters
|
|
44
|
-
*/
|
|
45
23
|
addMultiple(newFilters, inIndexes, settings) {
|
|
46
24
|
if ((0, utils_1.isEmpty)(newFilters))
|
|
47
25
|
return { resulting: this.filters };
|
|
48
26
|
const filters = (0, utils_1.objectCopy)(this.filters);
|
|
49
27
|
const affected = [];
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
catch (_error) {
|
|
57
|
-
this.filters = filters;
|
|
58
|
-
return { resulting: filters };
|
|
59
|
-
}
|
|
28
|
+
newFilters.forEach((newFilter, index) => {
|
|
29
|
+
const affectedFilter = this.addSingle(newFilter, inIndexes?.[index], settings);
|
|
30
|
+
affected.push(affectedFilter.affected);
|
|
31
|
+
});
|
|
60
32
|
this.sync();
|
|
61
33
|
return {
|
|
62
34
|
resulting: this.filters,
|
|
@@ -64,17 +36,6 @@ class FilterBuilder {
|
|
|
64
36
|
original: filters,
|
|
65
37
|
};
|
|
66
38
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Adds one filter into the collection.
|
|
69
|
-
* - Inserts it next to the last similar filter
|
|
70
|
-
* - If the new one is match with the last similar filter, the operator will change to OR
|
|
71
|
-
* - If the id is not provided, a new one is created.
|
|
72
|
-
* - If the inIndex nunber is provided, this will be the index where the filter is inserted
|
|
73
|
-
* @param filter the filter to add
|
|
74
|
-
* @param inIndex the index to add the new filter
|
|
75
|
-
* @param settings settings object to setup this function
|
|
76
|
-
* @returns the new collection of filters
|
|
77
|
-
*/
|
|
78
39
|
addSingle(filter, inIndex, settings) {
|
|
79
40
|
if ((0, utils_1.isEmpty)(filter))
|
|
80
41
|
return { resulting: this.filters };
|
|
@@ -117,12 +78,6 @@ class FilterBuilder {
|
|
|
117
78
|
original,
|
|
118
79
|
};
|
|
119
80
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Adds one value from filter
|
|
122
|
-
* @param id the ID to search the filter to add value
|
|
123
|
-
* @param value the value to add
|
|
124
|
-
* @returns the new filter collection
|
|
125
|
-
*/
|
|
126
81
|
addValue(id, value) {
|
|
127
82
|
const index = this.searchEngine.findIndexByParams({ id });
|
|
128
83
|
if (index < 0)
|
|
@@ -138,28 +93,15 @@ class FilterBuilder {
|
|
|
138
93
|
original,
|
|
139
94
|
};
|
|
140
95
|
}
|
|
141
|
-
/**
|
|
142
|
-
* Adds various values on filter
|
|
143
|
-
* @param id the ID to search the filter to add value
|
|
144
|
-
* @param values the collection of value to add
|
|
145
|
-
* @returns the new filter collection
|
|
146
|
-
*/
|
|
147
96
|
addValues(id, values) {
|
|
148
97
|
const index = this.searchEngine.findIndexByParams({ id });
|
|
149
98
|
if ((0, utils_1.isEmpty)(values) || index < 0)
|
|
150
99
|
return { resulting: this.filters };
|
|
151
|
-
const filters = (0, utils_1.objectCopy)(this.filters);
|
|
152
100
|
const original = (0, utils_1.objectCopy)(this.filters[index]);
|
|
153
101
|
let affected;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
catch (_error) {
|
|
160
|
-
this.filters = filters;
|
|
161
|
-
return { resulting: filters };
|
|
162
|
-
}
|
|
102
|
+
values.forEach((value) => {
|
|
103
|
+
affected = this.addValue(id, value).affected;
|
|
104
|
+
});
|
|
163
105
|
this.sync();
|
|
164
106
|
return {
|
|
165
107
|
resulting: this.filters,
|
|
@@ -167,17 +109,6 @@ class FilterBuilder {
|
|
|
167
109
|
original,
|
|
168
110
|
};
|
|
169
111
|
}
|
|
170
|
-
/**
|
|
171
|
-
* **************************************************************************************************
|
|
172
|
-
**************************************** Deleting **************************************************
|
|
173
|
-
****************************************************************************************************
|
|
174
|
-
*/
|
|
175
|
-
/**
|
|
176
|
-
* Removes various filters by params
|
|
177
|
-
* @param params params to search the filters to delete
|
|
178
|
-
* @param settings settings for this function
|
|
179
|
-
* @returns the new collection of filters
|
|
180
|
-
*/
|
|
181
112
|
deleteByParams(params, settings) {
|
|
182
113
|
const original = (0, utils_1.objectCopy)(this.filters);
|
|
183
114
|
const affected = this.searchEngine.filterByParams(params, settings);
|
|
@@ -189,26 +120,15 @@ class FilterBuilder {
|
|
|
189
120
|
original,
|
|
190
121
|
};
|
|
191
122
|
}
|
|
192
|
-
/**
|
|
193
|
-
* Removes various filters from the collection
|
|
194
|
-
* @param ids a collection of ID to search filters to remove
|
|
195
|
-
* @returns the new filter collection
|
|
196
|
-
*/
|
|
197
123
|
deleteMultiple(ids) {
|
|
198
124
|
if (!Array.isArray(ids))
|
|
199
125
|
return { resulting: this.filters };
|
|
200
126
|
const filters = (0, utils_1.objectCopy)(this.filters);
|
|
201
127
|
const affected = [];
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
catch (_error) {
|
|
209
|
-
this.filters = filters;
|
|
210
|
-
return { resulting: filters };
|
|
211
|
-
}
|
|
128
|
+
ids.forEach((id) => {
|
|
129
|
+
const deleted = this.deleteSingle(id);
|
|
130
|
+
affected.push(deleted.affected);
|
|
131
|
+
});
|
|
212
132
|
this.sync();
|
|
213
133
|
return {
|
|
214
134
|
resulting: this.filters,
|
|
@@ -216,11 +136,6 @@ class FilterBuilder {
|
|
|
216
136
|
original: filters,
|
|
217
137
|
};
|
|
218
138
|
}
|
|
219
|
-
/**
|
|
220
|
-
* Removes one filter from the collection
|
|
221
|
-
* @param id the ID to search the filter to remove
|
|
222
|
-
* @returns the new filter collection
|
|
223
|
-
*/
|
|
224
139
|
deleteSingle(id) {
|
|
225
140
|
const index = this.searchEngine.findIndexByParams({ id });
|
|
226
141
|
const original = { ...this.filters[index] };
|
|
@@ -235,12 +150,6 @@ class FilterBuilder {
|
|
|
235
150
|
original,
|
|
236
151
|
};
|
|
237
152
|
}
|
|
238
|
-
/**
|
|
239
|
-
* Removes one value from filter
|
|
240
|
-
* @param id the ID to search the filter to remove value
|
|
241
|
-
* @param index the index to search the value to remove
|
|
242
|
-
* @returns the new filter collection
|
|
243
|
-
*/
|
|
244
153
|
deleteValue(id, index) {
|
|
245
154
|
if (!Number.isInteger(index))
|
|
246
155
|
return { resulting: this.filters };
|
|
@@ -259,30 +168,16 @@ class FilterBuilder {
|
|
|
259
168
|
original,
|
|
260
169
|
};
|
|
261
170
|
}
|
|
262
|
-
/**
|
|
263
|
-
* Removes various values from filter
|
|
264
|
-
* @param id the ID to search the filter to remove value
|
|
265
|
-
* @param indexes the index collection to search the value to remove
|
|
266
|
-
* @returns the new filter collection
|
|
267
|
-
*/
|
|
268
171
|
deleteValues(id, indexes) {
|
|
269
172
|
if (!Array.isArray(indexes))
|
|
270
173
|
return { resulting: this.filters };
|
|
271
|
-
|
|
272
|
-
sortedIndex = indexes.reverse();
|
|
273
|
-
const filters = (0, utils_1.objectCopy)(this.filters);
|
|
174
|
+
const sortedIndex = indexes.sort().reverse();
|
|
274
175
|
const original = this.searchEngine.findByParams({
|
|
275
176
|
id,
|
|
276
177
|
});
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
catch (_error) {
|
|
283
|
-
this.filters = filters;
|
|
284
|
-
return { resulting: filters };
|
|
285
|
-
}
|
|
178
|
+
sortedIndex.forEach((index) => {
|
|
179
|
+
this.deleteValue(id, index);
|
|
180
|
+
});
|
|
286
181
|
this.sync();
|
|
287
182
|
const affected = this.searchEngine.findByParams({ id });
|
|
288
183
|
return {
|
|
@@ -291,18 +186,6 @@ class FilterBuilder {
|
|
|
291
186
|
original,
|
|
292
187
|
};
|
|
293
188
|
}
|
|
294
|
-
/**
|
|
295
|
-
* **************************************************************************************************
|
|
296
|
-
****************************************** Editing *************************************************
|
|
297
|
-
****************************************************************************************************
|
|
298
|
-
*/
|
|
299
|
-
/**
|
|
300
|
-
* Edits various filters from the collection
|
|
301
|
-
* @param ids the collection of IDs to search filters to edit
|
|
302
|
-
* @param filters a collection of object with properties to edit
|
|
303
|
-
* @param settings settings object for the function
|
|
304
|
-
* @returns the new filter collection
|
|
305
|
-
*/
|
|
306
189
|
editMultiple(ids, filters, settings) {
|
|
307
190
|
if (!Array.isArray(ids) ||
|
|
308
191
|
!Array.isArray(filters) ||
|
|
@@ -310,16 +193,10 @@ class FilterBuilder {
|
|
|
310
193
|
return { resulting: this.filters };
|
|
311
194
|
const originalFilters = (0, utils_1.objectCopy)(this.filters);
|
|
312
195
|
const editedFilters = [];
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
catch (_error) {
|
|
320
|
-
this.filters = originalFilters;
|
|
321
|
-
return { resulting: originalFilters };
|
|
322
|
-
}
|
|
196
|
+
ids.forEach((id, index) => {
|
|
197
|
+
const editedFilter = this.editSingle(id, filters[index], settings);
|
|
198
|
+
editedFilters.push(editedFilter.affected);
|
|
199
|
+
});
|
|
323
200
|
this.sync();
|
|
324
201
|
return {
|
|
325
202
|
resulting: this.filters,
|
|
@@ -327,13 +204,6 @@ class FilterBuilder {
|
|
|
327
204
|
original: originalFilters,
|
|
328
205
|
};
|
|
329
206
|
}
|
|
330
|
-
/**
|
|
331
|
-
* Edits one filter from the collection
|
|
332
|
-
* @param id the ID to search the filter to edit
|
|
333
|
-
* @param filter an object with properties to edit
|
|
334
|
-
* @param settings settings object for the function
|
|
335
|
-
* @returns the new filter collection
|
|
336
|
-
*/
|
|
337
207
|
editSingle(id, filter, settings) {
|
|
338
208
|
if ((0, utils_1.isEmpty)(filter))
|
|
339
209
|
return { resulting: this.filters };
|
|
@@ -356,13 +226,6 @@ class FilterBuilder {
|
|
|
356
226
|
original,
|
|
357
227
|
};
|
|
358
228
|
}
|
|
359
|
-
/**
|
|
360
|
-
* Edits one value from filter
|
|
361
|
-
* @param id the ID to search the filter to edit value
|
|
362
|
-
* @param value the value to edit
|
|
363
|
-
* @param index the value index to edit
|
|
364
|
-
* @returns the new filter collection
|
|
365
|
-
*/
|
|
366
229
|
editValue(id, value, index) {
|
|
367
230
|
const filterIndex = this.searchEngine.findIndexByParams({ id });
|
|
368
231
|
if ((0, utils_1.isEmpty)(value) ||
|
|
@@ -380,29 +243,16 @@ class FilterBuilder {
|
|
|
380
243
|
original,
|
|
381
244
|
};
|
|
382
245
|
}
|
|
383
|
-
/**
|
|
384
|
-
* Edits various values from filter
|
|
385
|
-
* @param id the ID to search the filter to edit value
|
|
386
|
-
* @param values the value collection to edit
|
|
387
|
-
* @param indexes the index collection to edit
|
|
388
|
-
* @returns the new filter collection
|
|
389
|
-
*/
|
|
390
246
|
editValues(id, values, indexes) {
|
|
391
247
|
const filterIndex = this.searchEngine.findIndexByParams({ id });
|
|
392
248
|
if ((0, utils_1.isEmpty)(values) || filterIndex < 0 || !Array.isArray(indexes))
|
|
393
249
|
return { resulting: this.filters };
|
|
394
250
|
const original = (0, utils_1.objectCopy)(this.filters);
|
|
395
251
|
let finalAffectedFilter;
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
catch (_error) {
|
|
403
|
-
this.filters = original;
|
|
404
|
-
return { resulting: original };
|
|
405
|
-
}
|
|
252
|
+
values.forEach((value, index) => {
|
|
253
|
+
const affectedFilter = this.editValue(id, value, indexes[index]);
|
|
254
|
+
finalAffectedFilter = affectedFilter.affected;
|
|
255
|
+
});
|
|
406
256
|
this.sync();
|
|
407
257
|
return {
|
|
408
258
|
resulting: this.filters,
|
|
@@ -410,17 +260,6 @@ class FilterBuilder {
|
|
|
410
260
|
original: original[filterIndex],
|
|
411
261
|
};
|
|
412
262
|
}
|
|
413
|
-
/**
|
|
414
|
-
* **************************************************************************************************
|
|
415
|
-
****************************************** Merging *************************************************
|
|
416
|
-
****************************************************************************************************
|
|
417
|
-
*/
|
|
418
|
-
/**
|
|
419
|
-
* Merge the filter into the collection by some filter parameters
|
|
420
|
-
* @param filter the filter to merge
|
|
421
|
-
* @param settings the settings object to setup this function
|
|
422
|
-
* @returns the new filter collection
|
|
423
|
-
*/
|
|
424
263
|
mergeSingle(filter, settings) {
|
|
425
264
|
if ((0, utils_1.isEmpty)(filter))
|
|
426
265
|
return { resulting: this.filters };
|
|
@@ -433,7 +272,7 @@ class FilterBuilder {
|
|
|
433
272
|
validator: filter.validator,
|
|
434
273
|
});
|
|
435
274
|
let original = filter;
|
|
436
|
-
let affected
|
|
275
|
+
let affected;
|
|
437
276
|
if (filterIndex > -1) {
|
|
438
277
|
original = (0, utils_1.objectCopy)(this.filters[filterIndex]);
|
|
439
278
|
const { affected: affectedMergeFilter } = this.mergeValues(this.filters[filterIndex].id, filter.values);
|
|
@@ -449,27 +288,15 @@ class FilterBuilder {
|
|
|
449
288
|
original,
|
|
450
289
|
};
|
|
451
290
|
}
|
|
452
|
-
/**
|
|
453
|
-
* Merge the filters into the collection by some filter parameters
|
|
454
|
-
* @param filters the filter collection to merge
|
|
455
|
-
* @param settings the settings object to setup this function
|
|
456
|
-
* @returns the new filter collection
|
|
457
|
-
*/
|
|
458
291
|
mergeMultiple(filters, settings) {
|
|
459
292
|
if (!Array.isArray(filters) || (0, utils_1.isEmpty)(filters))
|
|
460
293
|
return { resulting: this.filters };
|
|
461
294
|
const originalFilters = (0, utils_1.objectCopy)(this.filters);
|
|
462
295
|
const mergedFilters = [];
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
});
|
|
468
|
-
}
|
|
469
|
-
catch (_error) {
|
|
470
|
-
this.filters = originalFilters;
|
|
471
|
-
return { resulting: originalFilters };
|
|
472
|
-
}
|
|
296
|
+
filters.forEach((filter) => {
|
|
297
|
+
const mergedFilter = this.mergeSingle(filter, settings);
|
|
298
|
+
mergedFilters.push(mergedFilter.affected);
|
|
299
|
+
});
|
|
473
300
|
this.sync();
|
|
474
301
|
return {
|
|
475
302
|
resulting: this.filters,
|
|
@@ -477,12 +304,6 @@ class FilterBuilder {
|
|
|
477
304
|
original: originalFilters,
|
|
478
305
|
};
|
|
479
306
|
}
|
|
480
|
-
/**
|
|
481
|
-
* Merge values from filter
|
|
482
|
-
* @param id the ID to search the filter to merge values
|
|
483
|
-
* @param values the value collection to merge
|
|
484
|
-
* @returns the new filter collection
|
|
485
|
-
*/
|
|
486
307
|
mergeValues(id, values) {
|
|
487
308
|
const filterIndex = this.searchEngine.findIndexByParams({ id });
|
|
488
309
|
if ((0, utils_1.isEmpty)(values) || filterIndex < 0)
|
|
@@ -521,17 +342,6 @@ class FilterBuilder {
|
|
|
521
342
|
original,
|
|
522
343
|
};
|
|
523
344
|
}
|
|
524
|
-
/**
|
|
525
|
-
* **************************************************************************************************
|
|
526
|
-
****************************************** Others **************************************************
|
|
527
|
-
****************************************************************************************************
|
|
528
|
-
*/
|
|
529
|
-
/**
|
|
530
|
-
* Builds an filter structure based on given params
|
|
531
|
-
* @param filter the partial filter params
|
|
532
|
-
* @param settings the settings object to setup this function
|
|
533
|
-
* @returns the complete filter structure
|
|
534
|
-
*/
|
|
535
345
|
static createFilter(filter, settings) {
|
|
536
346
|
const newSettings = (0, filter_settings_helpers_1.getFilterCreateSettings)(settings);
|
|
537
347
|
const newFilter = {
|
|
@@ -547,6 +357,7 @@ class FilterBuilder {
|
|
|
547
357
|
editable: filter.editable ?? filters_resources_1.DEFAULT_FILTER.editable,
|
|
548
358
|
enableable: filter.enableable ?? filters_resources_1.DEFAULT_FILTER.enableable,
|
|
549
359
|
enabled: filter.enabled ?? filters_resources_1.DEFAULT_FILTER.enabled,
|
|
360
|
+
formulaType: filter.formulaType ?? filters_resources_1.DEFAULT_FILTER.formulaType,
|
|
550
361
|
id: filter.id || "",
|
|
551
362
|
operator: filter.operator || filters_resources_1.DEFAULT_FILTER.operator,
|
|
552
363
|
scope: filter.scope || filters_resources_1.DEFAULT_FILTER.scope,
|
|
@@ -564,14 +375,6 @@ class FilterBuilder {
|
|
|
564
375
|
}
|
|
565
376
|
return newFilter;
|
|
566
377
|
}
|
|
567
|
-
/**
|
|
568
|
-
* Sets the given filters by param
|
|
569
|
-
* - Remove the filters by the sucesfull conditions and replace the given ones
|
|
570
|
-
* @param filters the filters to set
|
|
571
|
-
* @param params params to search the filters
|
|
572
|
-
* @param settings settings for this function
|
|
573
|
-
* @returns the new collection of filters
|
|
574
|
-
*/
|
|
575
378
|
replaceByParams(filters, params, settings) {
|
|
576
379
|
const original = (0, utils_1.objectCopy)(this.filters);
|
|
577
380
|
const newSettings = (0, filter_settings_helpers_1.getReplaceByParamsSettings)(settings);
|
|
@@ -591,33 +394,12 @@ class FilterBuilder {
|
|
|
591
394
|
original,
|
|
592
395
|
};
|
|
593
396
|
}
|
|
594
|
-
/**
|
|
595
|
-
* Method to sync the Filter instances
|
|
596
|
-
*/
|
|
597
397
|
sync() {
|
|
598
398
|
this.searchEngine.setFilters(this.filters);
|
|
599
399
|
}
|
|
600
|
-
/**
|
|
601
|
-
* **************************************************************************************************
|
|
602
|
-
****************************************** Getters *************************************************
|
|
603
|
-
****************************************************************************************************
|
|
604
|
-
*/
|
|
605
|
-
/**
|
|
606
|
-
* Gets the filter collection
|
|
607
|
-
* @returns the collection of filters of the context
|
|
608
|
-
*/
|
|
609
400
|
getFilters() {
|
|
610
401
|
return this.filters;
|
|
611
402
|
}
|
|
612
|
-
/**
|
|
613
|
-
* **************************************************************************************************
|
|
614
|
-
****************************************** Setters *************************************************
|
|
615
|
-
****************************************************************************************************
|
|
616
|
-
*/
|
|
617
|
-
/**
|
|
618
|
-
* Sets the filters
|
|
619
|
-
* @param filters the new collection of filters to set
|
|
620
|
-
*/
|
|
621
403
|
setFilters(filters) {
|
|
622
404
|
this.filters = (0, utils_1.objectCopy)(filters);
|
|
623
405
|
this.sync();
|
|
@@ -4,105 +4,48 @@ exports.FilterManager = void 0;
|
|
|
4
4
|
const FilterAdapter_1 = require("./FilterAdapter");
|
|
5
5
|
const FilterBuilder_1 = require("./FilterBuilder");
|
|
6
6
|
const FilterSearcher_1 = require("./FilterSearcher");
|
|
7
|
-
/**
|
|
8
|
-
* Class to manage the filters
|
|
9
|
-
*/
|
|
10
7
|
class FilterManager {
|
|
11
8
|
_filters;
|
|
12
9
|
datasets;
|
|
13
10
|
_interactiveTable;
|
|
14
|
-
/**
|
|
15
|
-
* Instance to adapt filters
|
|
16
|
-
*/
|
|
17
11
|
_adapt;
|
|
18
|
-
/**
|
|
19
|
-
* Instance to build filters
|
|
20
|
-
*/
|
|
21
12
|
_builder;
|
|
22
|
-
/**
|
|
23
|
-
* Instance to search filters
|
|
24
|
-
*/
|
|
25
13
|
_searchEngine;
|
|
26
|
-
|
|
27
|
-
* Constructor
|
|
28
|
-
* @param _filters the collection of filters
|
|
29
|
-
* @param datasets the collection of datasets info
|
|
30
|
-
* @param _interactiveTable table of interaction properties for each section
|
|
31
|
-
*/
|
|
32
|
-
constructor(_filters = [], datasets = [], _interactiveTable) {
|
|
14
|
+
constructor(_filters = [], datasets = [], _interactiveTable, dependencies) {
|
|
33
15
|
this._filters = _filters;
|
|
34
16
|
this.datasets = datasets;
|
|
35
17
|
this._interactiveTable = _interactiveTable;
|
|
36
|
-
this._searchEngine =
|
|
37
|
-
|
|
38
|
-
this.
|
|
18
|
+
this._searchEngine =
|
|
19
|
+
dependencies?.searchEngine ?? new FilterSearcher_1.FilterSearcher(_filters);
|
|
20
|
+
this._builder = dependencies?.builder ?? new FilterBuilder_1.FilterBuilder(_filters);
|
|
21
|
+
this._adapt =
|
|
22
|
+
dependencies?.adapt ??
|
|
23
|
+
new FilterAdapter_1.FilterAdapter(_filters, datasets, _interactiveTable);
|
|
39
24
|
}
|
|
40
|
-
/**
|
|
41
|
-
* **************************************************************************************************
|
|
42
|
-
****************************************** Getters *************************************************
|
|
43
|
-
****************************************************************************************************
|
|
44
|
-
*/
|
|
45
|
-
/**
|
|
46
|
-
* Gets the adapt methods
|
|
47
|
-
* @returns the adapt methods
|
|
48
|
-
*/
|
|
49
25
|
get adapt() {
|
|
50
26
|
return this._adapt;
|
|
51
27
|
}
|
|
52
|
-
/**
|
|
53
|
-
* Gets the builder methods
|
|
54
|
-
* @returns the builder methods
|
|
55
|
-
*/
|
|
56
28
|
get builder() {
|
|
57
29
|
return this._builder;
|
|
58
30
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Gets the filter collections
|
|
61
|
-
* @returns the filters
|
|
62
|
-
*/
|
|
63
31
|
get filters() {
|
|
64
32
|
return this._filters;
|
|
65
33
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Gets the interactive table
|
|
68
|
-
* @returns the interactive table
|
|
69
|
-
*/
|
|
70
34
|
get interactiveTable() {
|
|
71
35
|
return this._interactiveTable;
|
|
72
36
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Gets the search methods
|
|
75
|
-
* @returns the search methods
|
|
76
|
-
*/
|
|
77
37
|
get search() {
|
|
78
38
|
return this._searchEngine;
|
|
79
39
|
}
|
|
80
|
-
/**
|
|
81
|
-
* **************************************************************************************************
|
|
82
|
-
****************************************** Setters *************************************************
|
|
83
|
-
****************************************************************************************************
|
|
84
|
-
*/
|
|
85
|
-
/**
|
|
86
|
-
* Sets the datasets
|
|
87
|
-
* @param datasets the collection of dataset info
|
|
88
|
-
*/
|
|
89
40
|
setDatasets(datasets) {
|
|
90
41
|
this._adapt.setDatasets(datasets);
|
|
91
42
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Sets the filters
|
|
94
|
-
* @param filters the new collection of filters to set
|
|
95
|
-
*/
|
|
96
43
|
setFilters(filters = []) {
|
|
97
44
|
this._filters = filters;
|
|
98
45
|
this._builder.setFilters(filters);
|
|
99
46
|
this._searchEngine.setFilters(filters);
|
|
100
47
|
this._adapt.setFilters(filters);
|
|
101
48
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Sets the table of interactive table
|
|
104
|
-
* @param interactiveTable table of interaction properties for each section
|
|
105
|
-
*/
|
|
106
49
|
setInteractiveTable(interactiveTable) {
|
|
107
50
|
this._interactiveTable = interactiveTable;
|
|
108
51
|
this._adapt.setInteractiveTable(this._interactiveTable);
|