@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
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getLastIndexFromArray,
|
|
3
|
-
isEmpty,
|
|
4
|
-
isNaNV2,
|
|
5
|
-
objectCopy,
|
|
6
|
-
} from "@qrvey/utils";
|
|
7
|
-
|
|
8
|
-
import { getParamFiltersSettings } from "../helpers/filter-settings.helpers";
|
|
9
|
-
import { resolveFilterConditions } from "../helpers/resolveFilterConditions";
|
|
10
|
-
import { IFilterSearcherParams } from "../models/filter-searcher.models";
|
|
11
|
-
import {
|
|
12
|
-
IFilterFindLastIndexReturn,
|
|
13
|
-
IFilterParamSettings,
|
|
14
|
-
} from "../resources/filter-functions.resources";
|
|
15
|
-
import { IFilter } from "../resources/filters.resources";
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Class to search filters.
|
|
19
|
-
*/
|
|
20
|
-
export class FilterSearcher implements IFilterSearcherParams {
|
|
21
|
-
/**
|
|
22
|
-
* Constructor
|
|
23
|
-
* @param filters the collection of filters
|
|
24
|
-
*/
|
|
25
|
-
constructor(protected filters: IFilter[] = []) {
|
|
26
|
-
this.setFilters(Array.isArray(filters) ? filters : []);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* **************************************************************************************************
|
|
31
|
-
**************************************** By Params *************************************************
|
|
32
|
-
****************************************************************************************************
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Searchs and excludes filters by the given params
|
|
37
|
-
* @param params params to exclude the filters
|
|
38
|
-
* @param settings settings for this function
|
|
39
|
-
* @returns the new collection of filters
|
|
40
|
-
*/
|
|
41
|
-
public excludeByParams(
|
|
42
|
-
params: Partial<IFilter>,
|
|
43
|
-
settings?: IFilterParamSettings,
|
|
44
|
-
): IFilter[] {
|
|
45
|
-
if (isEmpty(this.filters) || isEmpty(params)) return this.filters;
|
|
46
|
-
|
|
47
|
-
const completeSettings: IFilterParamSettings =
|
|
48
|
-
getParamFiltersSettings(settings);
|
|
49
|
-
|
|
50
|
-
return this.filters.filter(
|
|
51
|
-
(filter: IFilter) =>
|
|
52
|
-
!resolveFilterConditions(filter, params, completeSettings),
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Searchs filters by the given params
|
|
58
|
-
* @param params params to search the filters
|
|
59
|
-
* @param settings settings for this function
|
|
60
|
-
* @returns the new collection of filters
|
|
61
|
-
*/
|
|
62
|
-
public filterByParams(
|
|
63
|
-
params: Partial<IFilter>,
|
|
64
|
-
settings?: IFilterParamSettings,
|
|
65
|
-
): IFilter[] {
|
|
66
|
-
if (isEmpty(this.filters) || isEmpty(params)) return this.filters;
|
|
67
|
-
|
|
68
|
-
const completeSettings: IFilterParamSettings =
|
|
69
|
-
getParamFiltersSettings(settings);
|
|
70
|
-
|
|
71
|
-
return this.filters.filter((filter: IFilter) =>
|
|
72
|
-
resolveFilterConditions(filter, params, completeSettings),
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Searchs filters by the given params and returns the indexes
|
|
78
|
-
* @param params params to search the filters
|
|
79
|
-
* @param settings settings for this function
|
|
80
|
-
* @returns the new collection of filters
|
|
81
|
-
*/
|
|
82
|
-
public filterIndexesByParams(
|
|
83
|
-
params: Partial<IFilter>,
|
|
84
|
-
settings?: IFilterParamSettings,
|
|
85
|
-
): number[] {
|
|
86
|
-
if (isEmpty(this.filters) || isEmpty(params)) return [];
|
|
87
|
-
|
|
88
|
-
const completeSettings: IFilterParamSettings =
|
|
89
|
-
getParamFiltersSettings(settings);
|
|
90
|
-
|
|
91
|
-
return this.filters.reduce(
|
|
92
|
-
(indexes: number[], filter: IFilter, index: number) => {
|
|
93
|
-
const condition = resolveFilterConditions(
|
|
94
|
-
filter,
|
|
95
|
-
params,
|
|
96
|
-
completeSettings,
|
|
97
|
-
);
|
|
98
|
-
if (condition) {
|
|
99
|
-
indexes.push(index);
|
|
100
|
-
}
|
|
101
|
-
return indexes;
|
|
102
|
-
},
|
|
103
|
-
[],
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Searchs filters by the given params.
|
|
109
|
-
* Gets the first match of the searching
|
|
110
|
-
* @param params params to search the filters
|
|
111
|
-
* @param settings settings for this function
|
|
112
|
-
* @returns the new collection of filters
|
|
113
|
-
*/
|
|
114
|
-
public findByParams(
|
|
115
|
-
params: Partial<IFilter>,
|
|
116
|
-
settings?: IFilterParamSettings,
|
|
117
|
-
): IFilter | undefined {
|
|
118
|
-
if (isEmpty(this.filters) || isEmpty(params)) return undefined;
|
|
119
|
-
|
|
120
|
-
return this.filters.find((filter: IFilter) =>
|
|
121
|
-
resolveFilterConditions(
|
|
122
|
-
filter,
|
|
123
|
-
params,
|
|
124
|
-
getParamFiltersSettings(settings),
|
|
125
|
-
),
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Searchs filters by the given params.
|
|
131
|
-
* Gets the first match of the searching and returns the related index
|
|
132
|
-
* @param params params to search the filters
|
|
133
|
-
* @param settings settings for this function
|
|
134
|
-
* @returns the new collection of filters
|
|
135
|
-
*/
|
|
136
|
-
public findIndexByParams(
|
|
137
|
-
params: Partial<IFilter>,
|
|
138
|
-
settings?: IFilterParamSettings,
|
|
139
|
-
): number {
|
|
140
|
-
if (isEmpty(this.filters) || isEmpty(params)) return -1;
|
|
141
|
-
|
|
142
|
-
return this.filters.findIndex((filter: IFilter) =>
|
|
143
|
-
resolveFilterConditions(
|
|
144
|
-
filter,
|
|
145
|
-
params,
|
|
146
|
-
getParamFiltersSettings(settings),
|
|
147
|
-
),
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* **************************************************************************************************
|
|
153
|
-
**************************************** By Filters *************************************************
|
|
154
|
-
****************************************************************************************************
|
|
155
|
-
*/
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Gets an index where the new filter is going to be added
|
|
159
|
-
* If an index is given, the searching is skipped
|
|
160
|
-
* @param newFilter the new filter to add
|
|
161
|
-
* @param index a custom index
|
|
162
|
-
* @returns the index result object
|
|
163
|
-
*/
|
|
164
|
-
public findLastIndexByFilter(
|
|
165
|
-
newFilter: IFilter,
|
|
166
|
-
index = -1,
|
|
167
|
-
): IFilterFindLastIndexReturn {
|
|
168
|
-
const result = {
|
|
169
|
-
index: -1,
|
|
170
|
-
nextToColumnFilter: false,
|
|
171
|
-
nextToDatasetFilter: false,
|
|
172
|
-
nextToScopeFilter: false,
|
|
173
|
-
};
|
|
174
|
-
if (isEmpty(newFilter)) return result;
|
|
175
|
-
const newIndex = isNaNV2(index) ? -1 : (index as number);
|
|
176
|
-
if (this.filters.length <= newIndex)
|
|
177
|
-
return { ...result, index: this.filters.length - 1 };
|
|
178
|
-
if (newIndex > -1) return { ...result, index: newIndex };
|
|
179
|
-
|
|
180
|
-
// Look index next to Scope - Dataset - column
|
|
181
|
-
let lastIndex = getLastIndexFromArray(
|
|
182
|
-
this.filters,
|
|
183
|
-
(aFilter: IFilter) =>
|
|
184
|
-
aFilter.columnId === newFilter.columnId &&
|
|
185
|
-
aFilter.datasetId === newFilter.datasetId &&
|
|
186
|
-
aFilter.scope === newFilter.scope &&
|
|
187
|
-
aFilter.scopeId === newFilter.scopeId,
|
|
188
|
-
);
|
|
189
|
-
if (lastIndex > -1)
|
|
190
|
-
return { ...result, index: lastIndex, nextToColumnFilter: true };
|
|
191
|
-
|
|
192
|
-
// Look index next to Scope - Dataset
|
|
193
|
-
lastIndex = getLastIndexFromArray(
|
|
194
|
-
this.filters,
|
|
195
|
-
(aFilter: IFilter) =>
|
|
196
|
-
aFilter.datasetId === newFilter.datasetId &&
|
|
197
|
-
aFilter.scope === newFilter.scope &&
|
|
198
|
-
aFilter.scopeId === newFilter.scopeId,
|
|
199
|
-
);
|
|
200
|
-
if (lastIndex > -1)
|
|
201
|
-
return { ...result, index: lastIndex, nextToDatasetFilter: true };
|
|
202
|
-
|
|
203
|
-
// Look index next to Scope
|
|
204
|
-
lastIndex = getLastIndexFromArray(
|
|
205
|
-
this.filters,
|
|
206
|
-
(aFilter: IFilter) =>
|
|
207
|
-
aFilter.scope === newFilter.scope &&
|
|
208
|
-
aFilter.scopeId === newFilter.scopeId,
|
|
209
|
-
);
|
|
210
|
-
if (lastIndex > -1)
|
|
211
|
-
return { ...result, index: lastIndex, nextToScopeFilter: true };
|
|
212
|
-
|
|
213
|
-
return result;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* **************************************************************************************************
|
|
218
|
-
****************************************** Getters *************************************************
|
|
219
|
-
****************************************************************************************************
|
|
220
|
-
*/
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Gets the filter collection
|
|
224
|
-
* @returns the collection of filters of the context
|
|
225
|
-
*/
|
|
226
|
-
public getFilters(): IFilter[] {
|
|
227
|
-
return this.filters;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* **************************************************************************************************
|
|
232
|
-
****************************************** Setters *************************************************
|
|
233
|
-
****************************************************************************************************
|
|
234
|
-
*/
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Sets the filters
|
|
238
|
-
* @param filters the new collection of filters to set
|
|
239
|
-
*/
|
|
240
|
-
public setFilters(filters: IFilter[]): void {
|
|
241
|
-
this.filters = objectCopy(filters);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { getFilterType } from "../helpers/getFilterType";
|
|
2
|
-
import {
|
|
3
|
-
FILTER_GROUPING_COLUMNS,
|
|
4
|
-
FILTER_GROUPING_VALIDATORS,
|
|
5
|
-
IColumnTypeWithGrouping,
|
|
6
|
-
} from "../resources/filter-grouping.resources";
|
|
7
|
-
import {
|
|
8
|
-
IFilterValueRange,
|
|
9
|
-
IFilterValueRanking,
|
|
10
|
-
IFilterValueRegular,
|
|
11
|
-
IFilterValueRelativeDate,
|
|
12
|
-
} from "../resources/filter-values.resources";
|
|
13
|
-
import { FILTER_TYPE, IFilter } from "../resources/filters.resources";
|
|
14
|
-
import { IFilterValidator } from "../resources";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
*/
|
|
19
|
-
export class FilterValidation {
|
|
20
|
-
// /**
|
|
21
|
-
// *
|
|
22
|
-
// * @param filter
|
|
23
|
-
// */
|
|
24
|
-
// filter(filter: IFilter): IFilterValidationSingleError {
|
|
25
|
-
// const errors: IFilterValidationError[] = [];
|
|
26
|
-
|
|
27
|
-
// if (isEmpty(filter) || !isObject(filter))
|
|
28
|
-
// errors.push({ type: FILTER_VALIDATION.EMPTY_FILTER });
|
|
29
|
-
|
|
30
|
-
// return {
|
|
31
|
-
// infoErrors: getInfoErrors(errors),
|
|
32
|
-
// errors,
|
|
33
|
-
// };
|
|
34
|
-
// }
|
|
35
|
-
|
|
36
|
-
// /**
|
|
37
|
-
// *
|
|
38
|
-
// * @param filter
|
|
39
|
-
// * @param values
|
|
40
|
-
// */
|
|
41
|
-
// static values(
|
|
42
|
-
// filter: IFilter,
|
|
43
|
-
// values: IFilterInputValue[],
|
|
44
|
-
// ): IFilterValidationSingleError {
|
|
45
|
-
// const errors: IFilterValidationError[] = [];
|
|
46
|
-
// if (isEmpty(filter)) errors.push({ type: FILTER_VALIDATION.EMPTY_FILTER });
|
|
47
|
-
|
|
48
|
-
// const { columnType, validator, values: filterValues } = filter;
|
|
49
|
-
|
|
50
|
-
// const filterType = getFilterType(columnType, validator);
|
|
51
|
-
|
|
52
|
-
// switch (filterType) {
|
|
53
|
-
// case FILTER_TYPE.NULL:
|
|
54
|
-
// if (!isEmpty(filterValues) || !isEmpty(values))
|
|
55
|
-
// errors.push({ type: FILTER_VALIDATION.EMPTY_FILTER });
|
|
56
|
-
// break;
|
|
57
|
-
// case FILTER_TYPE.RANGE:
|
|
58
|
-
// if (isEmpty(values))
|
|
59
|
-
// errors.push({ type: FILTER_VALIDATION.NOT_EMPTY_VALUES });
|
|
60
|
-
// else if (values)
|
|
61
|
-
// FilterValidation.rangeValues(filter, values)
|
|
62
|
-
// default:
|
|
63
|
-
// break;
|
|
64
|
-
// }
|
|
65
|
-
// }
|
|
66
|
-
|
|
67
|
-
// private static rangeValues(filter: IFilter, values: IFilterInputValueRange[]): IFilterValidationSingleError {
|
|
68
|
-
// const errors: IFilterValidationError[] = [];
|
|
69
|
-
|
|
70
|
-
// filter.validator
|
|
71
|
-
// FILTER_VALIDATOR.
|
|
72
|
-
|
|
73
|
-
// values.forEach(value => {
|
|
74
|
-
// if (value.max
|
|
75
|
-
// });
|
|
76
|
-
// }
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Validated if the given filter exists into the filter collection
|
|
80
|
-
* @param filters the collection of filters
|
|
81
|
-
* @param filter the filter to validate
|
|
82
|
-
* @returns True when the filter is duplicated in the collection
|
|
83
|
-
*/
|
|
84
|
-
static isDuplicated(filters: IFilter[], filter: IFilter): boolean {
|
|
85
|
-
if (!Array.isArray(filters)) return false;
|
|
86
|
-
return filters.some(
|
|
87
|
-
(_filter: IFilter) =>
|
|
88
|
-
_filter.aggregateType === filter.aggregateType &&
|
|
89
|
-
_filter.columnId === filter.columnId &&
|
|
90
|
-
_filter.datasetId === filter.datasetId &&
|
|
91
|
-
_filter.grouping === filter.grouping &&
|
|
92
|
-
_filter.id === filter.id &&
|
|
93
|
-
_filter.lookupDisplayIndex === filter.lookupDisplayIndex &&
|
|
94
|
-
_filter.scope === filter.scope &&
|
|
95
|
-
_filter.scopeId === filter.scopeId &&
|
|
96
|
-
_filter.validator === filter.validator &&
|
|
97
|
-
FilterValidation.isFilterValueDuplicated(_filter, filter),
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Validates if the given regular value is duplicated with another value collection
|
|
103
|
-
* @param filter1 the filter info
|
|
104
|
-
* @param filter2 the filter info to compare
|
|
105
|
-
* @returns true when the value is duplicated
|
|
106
|
-
*/
|
|
107
|
-
static isFilterValueDuplicated(filter1: IFilter, filter2: IFilter): boolean {
|
|
108
|
-
const filterType1 = getFilterType(filter1.columnType, filter1.validator);
|
|
109
|
-
const filterType2 = getFilterType(filter2.columnType, filter2.validator);
|
|
110
|
-
if (filterType1 !== filterType2) return false;
|
|
111
|
-
|
|
112
|
-
switch (filterType2) {
|
|
113
|
-
case FILTER_TYPE.RANGE:
|
|
114
|
-
return this.isFilterRangeValueDuplicated(
|
|
115
|
-
filter1.values as IFilterValueRange[],
|
|
116
|
-
filter2.values as IFilterValueRange[],
|
|
117
|
-
);
|
|
118
|
-
case FILTER_TYPE.RELATIVE:
|
|
119
|
-
return this.isFilterRelativeValueDuplicated(
|
|
120
|
-
filter1.values as IFilterValueRelativeDate[],
|
|
121
|
-
filter2.values as IFilterValueRelativeDate[],
|
|
122
|
-
);
|
|
123
|
-
case FILTER_TYPE.RANKING:
|
|
124
|
-
return this.isFilterRankingValueDuplicated(
|
|
125
|
-
filter1.values as IFilterValueRanking[],
|
|
126
|
-
filter2.values as IFilterValueRanking[],
|
|
127
|
-
);
|
|
128
|
-
default:
|
|
129
|
-
return this.isFilterRegularValueDuplicated(
|
|
130
|
-
filter1.values as IFilterValueRegular[],
|
|
131
|
-
filter2.values as IFilterValueRegular[],
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Validates if the given regular value is duplicated with another value collection
|
|
138
|
-
* @param values1 the filter regular values collection
|
|
139
|
-
* @param values2 the filter regular values collection
|
|
140
|
-
* @returns true when the regular value is duplicated
|
|
141
|
-
*/
|
|
142
|
-
private static isFilterRegularValueDuplicated(
|
|
143
|
-
values1: IFilterValueRegular[],
|
|
144
|
-
values2: IFilterValueRegular[],
|
|
145
|
-
): boolean {
|
|
146
|
-
return values1.every((value1) =>
|
|
147
|
-
values2.some(
|
|
148
|
-
(value2) => value1.id === value2.id && value1.value === value2.value,
|
|
149
|
-
),
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Validates if the given range value is duplicated with another value collection
|
|
155
|
-
* @param values1 the filter range values collection
|
|
156
|
-
* @param values2 the filter range values colleciton
|
|
157
|
-
* @returns true when the range value is duplicated
|
|
158
|
-
*/
|
|
159
|
-
private static isFilterRangeValueDuplicated(
|
|
160
|
-
values1: IFilterValueRange[],
|
|
161
|
-
values2: IFilterValueRange[],
|
|
162
|
-
): boolean {
|
|
163
|
-
return values1.every((value1) =>
|
|
164
|
-
values2.some(
|
|
165
|
-
(value2) =>
|
|
166
|
-
value1.id === value2.id &&
|
|
167
|
-
value1.max === value2.max &&
|
|
168
|
-
value1.min === value2.min,
|
|
169
|
-
),
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Validates if the given relative value is duplicated with another value collection
|
|
175
|
-
* @param values1 the filter relative values collection
|
|
176
|
-
* @param values2 the filter relative values collection
|
|
177
|
-
* @returns true when the relative value is duplicated
|
|
178
|
-
*/
|
|
179
|
-
private static isFilterRelativeValueDuplicated(
|
|
180
|
-
values1: IFilterValueRelativeDate[],
|
|
181
|
-
values2: IFilterValueRelativeDate[],
|
|
182
|
-
): boolean {
|
|
183
|
-
return values1.every((value1) =>
|
|
184
|
-
values2.some(
|
|
185
|
-
(value2) =>
|
|
186
|
-
value1.id === value2.id &&
|
|
187
|
-
value1.cursor === value2.cursor &&
|
|
188
|
-
value1.unit === value2.unit,
|
|
189
|
-
),
|
|
190
|
-
);
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Validates if the given ranking value is duplicated with another value collection
|
|
195
|
-
* @param _values1 the filter ranking values collection
|
|
196
|
-
* @param _values2 the filter ranking values collection
|
|
197
|
-
* @returns true when the ranking value is duplicated
|
|
198
|
-
*/
|
|
199
|
-
private static isFilterRankingValueDuplicated(
|
|
200
|
-
_values1: IFilterValueRanking[],
|
|
201
|
-
_values2: IFilterValueRanking[],
|
|
202
|
-
): boolean {
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Validates if the grouping is valid to set for the given params
|
|
208
|
-
* @param columnType the column type
|
|
209
|
-
* @param validator the filter validator
|
|
210
|
-
* @returns true when the grouping is valid
|
|
211
|
-
*/
|
|
212
|
-
public static isGroupingValid(
|
|
213
|
-
columnType: IColumnTypeWithGrouping,
|
|
214
|
-
validator: IFilterValidator,
|
|
215
|
-
): boolean {
|
|
216
|
-
return (
|
|
217
|
-
FILTER_GROUPING_COLUMNS.includes(columnType) &&
|
|
218
|
-
FILTER_GROUPING_VALIDATORS.includes(validator)
|
|
219
|
-
);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IFilterInputValue,
|
|
3
|
-
IFilterInputValueRange,
|
|
4
|
-
IFilterInputValueRegular,
|
|
5
|
-
IFilterInputValueRelativeDate,
|
|
6
|
-
IFilterValueRange,
|
|
7
|
-
IFilterValueRegular,
|
|
8
|
-
IFilterValueRelativeDate,
|
|
9
|
-
} from "../resources/filter-values.resources";
|
|
10
|
-
import { FILTER_TYPE, IFilterType } from "../resources/filters.resources";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Class to manipulate filter values and input values
|
|
14
|
-
*/
|
|
15
|
-
export class FilterValues {
|
|
16
|
-
/**
|
|
17
|
-
* Gets the Filter Values based on Regular Input values
|
|
18
|
-
* @param values the regular input values
|
|
19
|
-
* @returns the Filter Regular Values
|
|
20
|
-
*/
|
|
21
|
-
public static getFilterRegularValues(
|
|
22
|
-
values: IFilterInputValueRegular[] = [],
|
|
23
|
-
): IFilterValueRegular[] {
|
|
24
|
-
return values.map((value: IFilterInputValueRegular) => ({
|
|
25
|
-
displayed: true,
|
|
26
|
-
enabled: true,
|
|
27
|
-
value: `${value}`,
|
|
28
|
-
}));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Gets the Filter Values based on Range Input values
|
|
33
|
-
* @param values the range input values
|
|
34
|
-
* @returns the Filter Range Values
|
|
35
|
-
*/
|
|
36
|
-
public static getFilterRangeValues(
|
|
37
|
-
values: IFilterInputValueRange[] = [],
|
|
38
|
-
): IFilterValueRange[] {
|
|
39
|
-
return values.map((value: IFilterInputValueRange) => ({
|
|
40
|
-
displayed: true,
|
|
41
|
-
enabled: true,
|
|
42
|
-
max: value.max,
|
|
43
|
-
min: value.min,
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Gets the Filter Values based on Relative Input values
|
|
49
|
-
* @param values the relative range input value
|
|
50
|
-
* @returns the Filter Relative Value
|
|
51
|
-
*/
|
|
52
|
-
public static getFilterRelativeValues(
|
|
53
|
-
values: IFilterInputValueRelativeDate[] = [],
|
|
54
|
-
): IFilterValueRelativeDate[] {
|
|
55
|
-
return values.map((value: IFilterInputValueRelativeDate) => ({
|
|
56
|
-
displayed: true,
|
|
57
|
-
enabled: true,
|
|
58
|
-
...value,
|
|
59
|
-
}));
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Gets the Filter Values based on the flter type
|
|
64
|
-
* @param filterType the filter type
|
|
65
|
-
* @param values the input values
|
|
66
|
-
* @returns the Filter Values
|
|
67
|
-
*/
|
|
68
|
-
static getFilterValues(
|
|
69
|
-
filterType: IFilterType,
|
|
70
|
-
values: IFilterInputValue[] = [],
|
|
71
|
-
): IFilterValueRegular[] {
|
|
72
|
-
switch (filterType) {
|
|
73
|
-
case FILTER_TYPE.REGULAR:
|
|
74
|
-
return FilterValues.getFilterRegularValues(values as string[]);
|
|
75
|
-
case FILTER_TYPE.RANGE:
|
|
76
|
-
return FilterValues.getFilterRangeValues(
|
|
77
|
-
values as IFilterInputValueRange[],
|
|
78
|
-
);
|
|
79
|
-
case FILTER_TYPE.RELATIVE:
|
|
80
|
-
return FilterValues.getFilterRelativeValues(
|
|
81
|
-
values as IFilterInputValueRelativeDate[],
|
|
82
|
-
);
|
|
83
|
-
case FILTER_TYPE.NULL:
|
|
84
|
-
return [];
|
|
85
|
-
default:
|
|
86
|
-
return [];
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
package/src/classes/index.ts
DELETED