@qrvey/filters 0.0.45 → 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 +32 -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 +32 -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 -274
- 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 -822
- 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
|
@@ -7,22 +7,12 @@ import { FILTER_LOGIC_VALIDATOR, } from "../resources/filter-logic.resources";
|
|
|
7
7
|
import { FILTER_OPERATOR, } from "../resources/filter-operators.resources";
|
|
8
8
|
import { FILTER_LOGIC_VALIDATOR_BY_VALIDATOR, FILTER_VALIDATOR, } from "../resources/filter-validators.resources";
|
|
9
9
|
import { FILTER_TYPE } from "../resources/filters.resources";
|
|
10
|
-
/**
|
|
11
|
-
* Generates a Logic structure from the filter collection
|
|
12
|
-
* @param filters the filter collection
|
|
13
|
-
* @returns the logic structure
|
|
14
|
-
*/
|
|
15
10
|
export function filterToLogic(filters) {
|
|
16
11
|
if (isEmpty(filters))
|
|
17
12
|
return [];
|
|
18
13
|
const visual = filterToVisual(filters);
|
|
19
14
|
return visualToLogic(visual);
|
|
20
15
|
}
|
|
21
|
-
/**
|
|
22
|
-
* Generates a Logic structure from the visual filter structure
|
|
23
|
-
* @param visual the visual filter structure
|
|
24
|
-
* @returns the logic structure
|
|
25
|
-
*/
|
|
26
16
|
export function visualToLogic(visual) {
|
|
27
17
|
return visual.scopes.reduce((logics, scope) => {
|
|
28
18
|
const logic = buildLogic(scope);
|
|
@@ -37,11 +27,6 @@ export function visualToLogic(visual) {
|
|
|
37
27
|
return logics;
|
|
38
28
|
}, []);
|
|
39
29
|
}
|
|
40
|
-
/**
|
|
41
|
-
* Gets the Logic structure for the given scope
|
|
42
|
-
* @param scope the visual filter scope object
|
|
43
|
-
* @returns a logic structure
|
|
44
|
-
*/
|
|
45
30
|
function buildLogic(scope) {
|
|
46
31
|
return {
|
|
47
32
|
filters: [],
|
|
@@ -49,13 +34,7 @@ function buildLogic(scope) {
|
|
|
49
34
|
scopeid: scope.id,
|
|
50
35
|
};
|
|
51
36
|
}
|
|
52
|
-
|
|
53
|
-
* Gets the Logic Filters collection based on filters
|
|
54
|
-
* @param filters the filter collection
|
|
55
|
-
* @param groupColumns a flag to know if the
|
|
56
|
-
* @returns the logic filter collection
|
|
57
|
-
*/
|
|
58
|
-
function buildLogicFilters(filters, groupColumns = false) {
|
|
37
|
+
function buildLogicFilters(filters, groupColumns) {
|
|
59
38
|
const expression = numericExpression(filters, groupColumns);
|
|
60
39
|
const orOperators = expression.split("+");
|
|
61
40
|
const getFilter = (fi) => {
|
|
@@ -97,11 +76,6 @@ function buildLogicFilters(filters, groupColumns = false) {
|
|
|
97
76
|
},
|
|
98
77
|
];
|
|
99
78
|
}
|
|
100
|
-
/**
|
|
101
|
-
*
|
|
102
|
-
* @param group
|
|
103
|
-
* @param getFilter
|
|
104
|
-
*/
|
|
105
79
|
function getColumnExpressions(group, getFilter) {
|
|
106
80
|
const columnOrOperators = group.split("/");
|
|
107
81
|
if (columnOrOperators.length > 1) {
|
|
@@ -114,23 +88,13 @@ function getColumnExpressions(group, getFilter) {
|
|
|
114
88
|
}
|
|
115
89
|
return getFilter(group);
|
|
116
90
|
}
|
|
117
|
-
|
|
118
|
-
*
|
|
119
|
-
* @param operator
|
|
120
|
-
* @param priority
|
|
121
|
-
*/
|
|
122
|
-
function logicToNumeric(operator, priority = false) {
|
|
91
|
+
function logicToNumeric(operator, priority) {
|
|
123
92
|
if (operator === FILTER_OPERATOR.AND) {
|
|
124
93
|
return "*";
|
|
125
94
|
}
|
|
126
95
|
return priority ? "/" : "+";
|
|
127
96
|
}
|
|
128
|
-
|
|
129
|
-
*
|
|
130
|
-
* @param filters
|
|
131
|
-
* @param groupColumns
|
|
132
|
-
*/
|
|
133
|
-
function numericExpression(filters, groupColumns = false) {
|
|
97
|
+
function numericExpression(filters, groupColumns) {
|
|
134
98
|
let expression = "";
|
|
135
99
|
filters.forEach((item, index) => {
|
|
136
100
|
const filter = filters[index + 1] || {};
|
|
@@ -139,12 +103,6 @@ function numericExpression(filters, groupColumns = false) {
|
|
|
139
103
|
});
|
|
140
104
|
return expression.substring(0, expression.length - 1);
|
|
141
105
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Builds filter expression by the filter data.
|
|
144
|
-
* - If the resulting value array is empty the enabled property will be false.
|
|
145
|
-
* @param filter The filter to transform
|
|
146
|
-
* @returns a filter expression
|
|
147
|
-
*/
|
|
148
106
|
export function buildLogicExpression(filter) {
|
|
149
107
|
const expression = {
|
|
150
108
|
enabled: filter.enabled,
|
|
@@ -158,11 +116,6 @@ export function buildLogicExpression(filter) {
|
|
|
158
116
|
filter.selectAll || expression.value.length > 0 ? filter.enabled : false;
|
|
159
117
|
return expression;
|
|
160
118
|
}
|
|
161
|
-
/**
|
|
162
|
-
* Gets a group value for the backend logic structure
|
|
163
|
-
* @param filter The filter object
|
|
164
|
-
* @returns the group value
|
|
165
|
-
*/
|
|
166
119
|
function getLogicExpressionGroupValue(filter) {
|
|
167
120
|
if (filter.aggregateType == null &&
|
|
168
121
|
isDateColumn({
|
|
@@ -176,11 +129,6 @@ function getLogicExpressionGroupValue(filter) {
|
|
|
176
129
|
}
|
|
177
130
|
return undefined;
|
|
178
131
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Gets a property for the logic expression structure
|
|
181
|
-
* @param filter The filter
|
|
182
|
-
* @returns a property
|
|
183
|
-
*/
|
|
184
132
|
function getLogicExpressionProperty(filter) {
|
|
185
133
|
if (isEmpty(filter.aggregateType)) {
|
|
186
134
|
if (isNullValidator(filter.validator) ||
|
|
@@ -211,11 +159,6 @@ function getLogicExpressionProperty(filter) {
|
|
|
211
159
|
}
|
|
212
160
|
return filter.grouping;
|
|
213
161
|
}
|
|
214
|
-
/**
|
|
215
|
-
* Gets the filter logic Validator
|
|
216
|
-
* @param filter the filter object
|
|
217
|
-
* @returns the Filter Logic Validator
|
|
218
|
-
*/
|
|
219
162
|
function getLogicExpressionValidator(filter) {
|
|
220
163
|
let logicValidator = FILTER_LOGIC_VALIDATOR_BY_VALIDATOR[filter.validator];
|
|
221
164
|
if (filter.selectAll && filter.validator === FILTER_VALIDATOR.EQUALS)
|
|
@@ -224,11 +167,6 @@ function getLogicExpressionValidator(filter) {
|
|
|
224
167
|
logicValidator = FILTER_LOGIC_VALIDATOR.EQUALS;
|
|
225
168
|
return logicValidator;
|
|
226
169
|
}
|
|
227
|
-
/**
|
|
228
|
-
* Gets the expresion values in the logic format
|
|
229
|
-
* @param filter The filter structure
|
|
230
|
-
* @returns A collection of backend expression value
|
|
231
|
-
*/
|
|
232
170
|
export function getFilterLogicValues(filter) {
|
|
233
171
|
const values = filter.values || [];
|
|
234
172
|
switch (filter.validator) {
|
|
@@ -269,11 +207,6 @@ export function getFilterLogicValues(filter) {
|
|
|
269
207
|
return [];
|
|
270
208
|
}
|
|
271
209
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Gets the expression values for Exclusive Ranges
|
|
274
|
-
* @param values the collection of values
|
|
275
|
-
* @returns the logic expression values
|
|
276
|
-
*/
|
|
277
210
|
function getExclusiveRange(values) {
|
|
278
211
|
return values.reduce((expressionValues, value) => {
|
|
279
212
|
const expressionValue = getValue(value, {
|
|
@@ -285,11 +218,6 @@ function getExclusiveRange(values) {
|
|
|
285
218
|
return expressionValues;
|
|
286
219
|
}, []);
|
|
287
220
|
}
|
|
288
|
-
/**
|
|
289
|
-
* Gets the expression values for Inclusive Ranges
|
|
290
|
-
* @param values the collection of values
|
|
291
|
-
* @returns the logic expression values
|
|
292
|
-
*/
|
|
293
221
|
function getInclusiveRange(values) {
|
|
294
222
|
return values.reduce((expressionValues, value) => {
|
|
295
223
|
const expressionValue = getValue(value, {
|
|
@@ -301,11 +229,6 @@ function getInclusiveRange(values) {
|
|
|
301
229
|
return expressionValues;
|
|
302
230
|
}, []);
|
|
303
231
|
}
|
|
304
|
-
/**
|
|
305
|
-
* Gets the expression values for Before Ranges
|
|
306
|
-
* @param values the collection of values
|
|
307
|
-
* @returns the logic expression values
|
|
308
|
-
*/
|
|
309
232
|
function getBeforeValues(values) {
|
|
310
233
|
return values.reduce((expressionValues, value) => {
|
|
311
234
|
const expressionValue = getValue(value, {
|
|
@@ -316,11 +239,6 @@ function getBeforeValues(values) {
|
|
|
316
239
|
return expressionValues;
|
|
317
240
|
}, []);
|
|
318
241
|
}
|
|
319
|
-
/**
|
|
320
|
-
* Gets the expression values for BeforeOn Ranges
|
|
321
|
-
* @param values the collection of values
|
|
322
|
-
* @returns the logic expression values
|
|
323
|
-
*/
|
|
324
242
|
function getBeforeOnValues(values) {
|
|
325
243
|
return values.reduce((expressionValues, value) => {
|
|
326
244
|
const expressionValue = getValue(value, {
|
|
@@ -331,11 +249,6 @@ function getBeforeOnValues(values) {
|
|
|
331
249
|
return expressionValues;
|
|
332
250
|
}, []);
|
|
333
251
|
}
|
|
334
|
-
/**
|
|
335
|
-
* Gets the expression values for After Ranges
|
|
336
|
-
* @param values the collection of values
|
|
337
|
-
* @returns the logic expression values
|
|
338
|
-
*/
|
|
339
252
|
function getAfterValues(values) {
|
|
340
253
|
return values.reduce((expressionValues, value) => {
|
|
341
254
|
const expressionValue = getValue(value, {
|
|
@@ -346,11 +259,6 @@ function getAfterValues(values) {
|
|
|
346
259
|
return expressionValues;
|
|
347
260
|
}, []);
|
|
348
261
|
}
|
|
349
|
-
/**
|
|
350
|
-
* Gets the expression values for AfterOn Ranges
|
|
351
|
-
* @param values the collection of values
|
|
352
|
-
* @returns the logic expression values
|
|
353
|
-
*/
|
|
354
262
|
function getAfterOnValues(values) {
|
|
355
263
|
return values.reduce((expressionValues, value) => {
|
|
356
264
|
const expressionValue = getValue(value, {
|
|
@@ -361,21 +269,10 @@ function getAfterOnValues(values) {
|
|
|
361
269
|
return expressionValues;
|
|
362
270
|
}, []);
|
|
363
271
|
}
|
|
364
|
-
/**
|
|
365
|
-
* Gets the expression values for Nulls
|
|
366
|
-
* @param values the collection of values
|
|
367
|
-
* @param filter the filter structure
|
|
368
|
-
* @returns the logic expression values
|
|
369
|
-
*/
|
|
370
272
|
function getNullValues(values, filter) {
|
|
371
273
|
const addValue = values.length > 0 && values.every((value) => value.enabled);
|
|
372
274
|
return addValue ? [filter.validator] : [];
|
|
373
275
|
}
|
|
374
|
-
/**
|
|
375
|
-
* Gets the expression values for Relative Dates
|
|
376
|
-
* @param values the collection of values
|
|
377
|
-
* @returns the logic expression values
|
|
378
|
-
*/
|
|
379
276
|
function getInValues(values) {
|
|
380
277
|
return values.reduce((expressionValues, value) => {
|
|
381
278
|
const expressionValue = getValue(value, value);
|
|
@@ -384,21 +281,9 @@ function getInValues(values) {
|
|
|
384
281
|
return expressionValues;
|
|
385
282
|
}, []);
|
|
386
283
|
}
|
|
387
|
-
/**
|
|
388
|
-
* Gets the value on the filter values
|
|
389
|
-
* @param objectValue The filter structure
|
|
390
|
-
* @param value The filter structure
|
|
391
|
-
* @returns the value
|
|
392
|
-
*/
|
|
393
284
|
function getValue(objectValue, value) {
|
|
394
285
|
return objectValue.enabled ? value : undefined;
|
|
395
286
|
}
|
|
396
|
-
/**
|
|
397
|
-
* Gets the expression values. Depending on the column type
|
|
398
|
-
* @param values a collection of filter values
|
|
399
|
-
* @param filter The filter structure
|
|
400
|
-
* @returns Expression values
|
|
401
|
-
*/
|
|
402
287
|
function getResultValues(values, filter) {
|
|
403
288
|
return values.reduce((expressionValues, value) => {
|
|
404
289
|
let expressionValue = "";
|
|
@@ -413,11 +298,6 @@ function getResultValues(values, filter) {
|
|
|
413
298
|
return expressionValues;
|
|
414
299
|
}, []);
|
|
415
300
|
}
|
|
416
|
-
/**
|
|
417
|
-
* Gets the Ranking values.
|
|
418
|
-
* @param values a collection of filter values in the ranking structure
|
|
419
|
-
* @returns Expression values for ranking
|
|
420
|
-
*/
|
|
421
301
|
function getRankingValues(values) {
|
|
422
302
|
const flattenValues = flattenDeep(values);
|
|
423
303
|
return flattenValues.reduce((expressionValues, value) => {
|
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import { IFilterFilterGroupingSettings } from "../resources/filter-functions.resources";
|
|
2
2
|
import { IFilterGrouping } from "../resources/filter-grouping.resources";
|
|
3
3
|
import { IFilter } from "../resources/filters.resources";
|
|
4
|
-
/**
|
|
5
|
-
* Gets the filter grouping for a given filter.
|
|
6
|
-
* @param filter The filter to get the grouping for.
|
|
7
|
-
* @param settings Settings for the filter grouping.
|
|
8
|
-
* @returns The filter grouping.
|
|
9
|
-
*/
|
|
10
4
|
export declare function getFilterGrouping(filter: Partial<IFilter>, settings?: IFilterFilterGroupingSettings): IFilterGrouping | undefined;
|
|
11
|
-
//# sourceMappingURL=filter-builder.helpers.d.ts.map
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { FilterResources } from "../classes/FilterResources";
|
|
2
2
|
import { DEFAULT_FILTER } from "../resources/filters.resources";
|
|
3
|
-
/**
|
|
4
|
-
* Gets the filter grouping for a given filter.
|
|
5
|
-
* @param filter The filter to get the grouping for.
|
|
6
|
-
* @param settings Settings for the filter grouping.
|
|
7
|
-
* @returns The filter grouping.
|
|
8
|
-
*/
|
|
9
3
|
export function getFilterGrouping(filter, settings) {
|
|
10
4
|
return ((settings?.strictValidation
|
|
11
5
|
? FilterResources.getGroupingInfoByColumnType({
|
|
@@ -1,42 +1,7 @@
|
|
|
1
1
|
import { IFilterAddSettings, IFilterBuilderEditSettings, IFilterCreateSettings, IFilterGroupingInfoListByColumnSettings, IFilterParamSettings, IFilterReplaceParamSettings } from "../resources/filter-functions.resources";
|
|
2
|
-
/**
|
|
3
|
-
* Gets a complete settings for the edit filters settings
|
|
4
|
-
* - Fills the missing properties with default ones
|
|
5
|
-
* @param settings the settings
|
|
6
|
-
* @returns the complete settings
|
|
7
|
-
*/
|
|
8
2
|
export declare function getEditFiltersSettings(settings?: IFilterBuilderEditSettings): IFilterBuilderEditSettings;
|
|
9
|
-
/**
|
|
10
|
-
* Gets a complete settings for the filter-create settings
|
|
11
|
-
* @param settings the filter-create settings
|
|
12
|
-
* @returns the complete filter-create settings
|
|
13
|
-
*/
|
|
14
3
|
export declare function getFilterAddSettings(settings?: IFilterAddSettings): IFilterAddSettings;
|
|
15
|
-
/**
|
|
16
|
-
* Gets a complete settings for the filter-create settings
|
|
17
|
-
* @param settings the filter-create settings
|
|
18
|
-
* @returns the complete filter-create settings
|
|
19
|
-
*/
|
|
20
4
|
export declare function getFilterCreateSettings(settings?: IFilterCreateSettings): IFilterCreateSettings;
|
|
21
|
-
/**
|
|
22
|
-
* Gets a complete settings for the info grouping by column settings
|
|
23
|
-
* - Fills the missing properties with default ones
|
|
24
|
-
* @param settings the settings
|
|
25
|
-
* @returns the complete settings
|
|
26
|
-
*/
|
|
27
5
|
export declare function getInfoGroupingsByColumnTypeSettings(settings?: IFilterGroupingInfoListByColumnSettings): IFilterGroupingInfoListByColumnSettings;
|
|
28
|
-
/**
|
|
29
|
-
* Gets a complete settings for the param settings
|
|
30
|
-
* - Fills the missing properties with default ones
|
|
31
|
-
* @param settings the settings
|
|
32
|
-
* @returns the complete settings
|
|
33
|
-
*/
|
|
34
6
|
export declare function getParamFiltersSettings(settings?: IFilterParamSettings): IFilterParamSettings;
|
|
35
|
-
/**
|
|
36
|
-
* Gets a complete settings for the replaceByParams settings
|
|
37
|
-
* - Fills the missing properties with default ones
|
|
38
|
-
* @param settings the settings
|
|
39
|
-
* @returns the complete settings
|
|
40
|
-
*/
|
|
41
7
|
export declare function getReplaceByParamsSettings(settings?: IFilterReplaceParamSettings): IFilterReplaceParamSettings;
|
|
42
|
-
//# sourceMappingURL=filter-settings.helpers.d.ts.map
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { DEFAULT_FILTER_ADD_SETTINGS, DEFAULT_FILTER_CREATE_SETTINGS, DEFAULT_FILTERS_EDIT_SETTINGS, DEFAULT_FILTERS_GROUPING_INFO_BY_COLUMN_SETTINGS, DEFAULT_FILTERS_PARAM_SETTINGS, } from "../resources/filter-functions.resources";
|
|
2
|
-
/**
|
|
3
|
-
* Gets a complete settings for the edit filters settings
|
|
4
|
-
* - Fills the missing properties with default ones
|
|
5
|
-
* @param settings the settings
|
|
6
|
-
* @returns the complete settings
|
|
7
|
-
*/
|
|
8
2
|
export function getEditFiltersSettings(settings) {
|
|
9
3
|
return {
|
|
10
4
|
automaticId: settings?.automaticId ?? DEFAULT_FILTERS_EDIT_SETTINGS.automaticId,
|
|
@@ -12,11 +6,6 @@ export function getEditFiltersSettings(settings) {
|
|
|
12
6
|
DEFAULT_FILTERS_EDIT_SETTINGS.strictValidation,
|
|
13
7
|
};
|
|
14
8
|
}
|
|
15
|
-
/**
|
|
16
|
-
* Gets a complete settings for the filter-create settings
|
|
17
|
-
* @param settings the filter-create settings
|
|
18
|
-
* @returns the complete filter-create settings
|
|
19
|
-
*/
|
|
20
9
|
export function getFilterAddSettings(settings) {
|
|
21
10
|
return {
|
|
22
11
|
automaticId: settings?.automaticId ?? DEFAULT_FILTER_ADD_SETTINGS.automaticId,
|
|
@@ -24,11 +13,6 @@ export function getFilterAddSettings(settings) {
|
|
|
24
13
|
DEFAULT_FILTER_ADD_SETTINGS.automaticOperator,
|
|
25
14
|
};
|
|
26
15
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Gets a complete settings for the filter-create settings
|
|
29
|
-
* @param settings the filter-create settings
|
|
30
|
-
* @returns the complete filter-create settings
|
|
31
|
-
*/
|
|
32
16
|
export function getFilterCreateSettings(settings) {
|
|
33
17
|
return {
|
|
34
18
|
automaticId: settings?.automaticId ?? DEFAULT_FILTER_CREATE_SETTINGS.automaticId,
|
|
@@ -38,12 +22,6 @@ export function getFilterCreateSettings(settings) {
|
|
|
38
22
|
...getInfoGroupingsByColumnTypeSettings(settings),
|
|
39
23
|
};
|
|
40
24
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Gets a complete settings for the info grouping by column settings
|
|
43
|
-
* - Fills the missing properties with default ones
|
|
44
|
-
* @param settings the settings
|
|
45
|
-
* @returns the complete settings
|
|
46
|
-
*/
|
|
47
25
|
export function getInfoGroupingsByColumnTypeSettings(settings) {
|
|
48
26
|
return {
|
|
49
27
|
hasDateTime: settings?.hasDateTime ??
|
|
@@ -58,12 +36,6 @@ export function getInfoGroupingsByColumnTypeSettings(settings) {
|
|
|
58
36
|
DEFAULT_FILTERS_GROUPING_INFO_BY_COLUMN_SETTINGS.isExpressionCategorizable,
|
|
59
37
|
};
|
|
60
38
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Gets a complete settings for the param settings
|
|
63
|
-
* - Fills the missing properties with default ones
|
|
64
|
-
* @param settings the settings
|
|
65
|
-
* @returns the complete settings
|
|
66
|
-
*/
|
|
67
39
|
export function getParamFiltersSettings(settings) {
|
|
68
40
|
return {
|
|
69
41
|
letPassUndefinedParams: settings?.letPassUndefinedParams ??
|
|
@@ -74,12 +46,6 @@ export function getParamFiltersSettings(settings) {
|
|
|
74
46
|
DEFAULT_FILTERS_PARAM_SETTINGS.removeEmptyArrays,
|
|
75
47
|
};
|
|
76
48
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Gets a complete settings for the replaceByParams settings
|
|
79
|
-
* - Fills the missing properties with default ones
|
|
80
|
-
* @param settings the settings
|
|
81
|
-
* @returns the complete settings
|
|
82
|
-
*/
|
|
83
49
|
export function getReplaceByParamsSettings(settings) {
|
|
84
50
|
return {
|
|
85
51
|
...settings,
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { IFilterValidator } from "../resources/filter-validators.resources";
|
|
2
|
-
/**
|
|
3
|
-
* Checks if the given validator is a Null type.
|
|
4
|
-
* @param validator The Filter Validator
|
|
5
|
-
* @returns True: It is a Null Validator
|
|
6
|
-
*/
|
|
7
2
|
export declare function isNullValidator(validator: IFilterValidator): boolean;
|
|
8
|
-
|
|
3
|
+
export declare function isRegularValidator(validator: IFilterValidator): boolean;
|
|
4
|
+
export declare function isRangeValidator(validator: IFilterValidator): boolean;
|
|
5
|
+
export declare function isInValidator(validator: IFilterValidator): boolean;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* Checks if the given validator is a Null type.
|
|
4
|
-
* @param validator The Filter Validator
|
|
5
|
-
* @returns True: It is a Null Validator
|
|
6
|
-
*/
|
|
1
|
+
import { FILTER_TYPE, FILTER_TYPE_BY_VALIDATOR, } from "../resources/filters.resources";
|
|
7
2
|
export function isNullValidator(validator) {
|
|
8
|
-
return [
|
|
3
|
+
return FILTER_TYPE_BY_VALIDATOR[validator] === FILTER_TYPE.NULL;
|
|
4
|
+
}
|
|
5
|
+
export function isRegularValidator(validator) {
|
|
6
|
+
return FILTER_TYPE_BY_VALIDATOR[validator] === FILTER_TYPE.REGULAR;
|
|
7
|
+
}
|
|
8
|
+
export function isRangeValidator(validator) {
|
|
9
|
+
return FILTER_TYPE_BY_VALIDATOR[validator] === FILTER_TYPE.RANGE;
|
|
10
|
+
}
|
|
11
|
+
export function isInValidator(validator) {
|
|
12
|
+
return FILTER_TYPE_BY_VALIDATOR[validator] === FILTER_TYPE.RELATIVE;
|
|
9
13
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { IDataset } from "@qrvey/utils";
|
|
2
|
+
import { IFilterToken, IFilterTokenSettings } from "../resources/filter-verbose.resources";
|
|
3
|
+
import { IFilter } from "../resources/filters.resources";
|
|
4
|
+
export declare function getVerboseFilter(filters: IFilter[], datasets?: IDataset[], settings?: IFilterTokenSettings): string;
|
|
5
|
+
export declare function getTokensFromFilters(filters: IFilter[], datasets?: IDataset[], settings?: IFilterTokenSettings): IFilterToken[];
|
|
6
|
+
export declare function filtersTokensToString(tokens: IFilterToken[]): string;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { isEmpty, RELATIVE_CURSOR, RELATIVE_CURSOR_INFO, } from "@qrvey/utils";
|
|
2
|
+
import { filterToVisual } from "./filter-adapt.helpers";
|
|
3
|
+
import { isInValidator, isNullValidator, isRangeValidator, } from "./filter-validators.helpers";
|
|
4
|
+
import { isRankingFilter } from "./isRankingFilter";
|
|
5
|
+
import { FILTER_GROUPING_INFO } from "../resources/filter-grouping.resources";
|
|
6
|
+
import { FILTER_OPERATOR_INFO } from "../resources/filter-operators.resources";
|
|
7
|
+
import { FILTER_SCOPE, FILTER_SCOPE_INFO, } from "../resources/filter-scopes.resources";
|
|
8
|
+
import { FILTER_VALIDATOR_INFO, } from "../resources/filter-validators.resources";
|
|
9
|
+
import { FILTER_TOKEN_TYPE, } from "../resources/filter-verbose.resources";
|
|
10
|
+
export function getVerboseFilter(filters, datasets = [], settings) {
|
|
11
|
+
const tokens = getTokensFromFilters(filters, datasets, settings);
|
|
12
|
+
return filtersTokensToString(tokens);
|
|
13
|
+
}
|
|
14
|
+
export function getTokensFromFilters(filters, datasets = [], settings = {}) {
|
|
15
|
+
const visual = filterToVisual(filters, datasets);
|
|
16
|
+
if (!visual)
|
|
17
|
+
return [];
|
|
18
|
+
const t = buildTranslator(settings.translate);
|
|
19
|
+
const tokens = [];
|
|
20
|
+
for (const scope of visual.scopes) {
|
|
21
|
+
if (scope.datasets.length === 0)
|
|
22
|
+
continue;
|
|
23
|
+
if (settings.showScope) {
|
|
24
|
+
const scopeInfo = FILTER_SCOPE_INFO[scope.scope];
|
|
25
|
+
tokens.push({
|
|
26
|
+
token: `${t(`filter.scope_title.${scope.scope.toLowerCase()}`, scopeInfo?.label ?? scope.scope)}:`,
|
|
27
|
+
type: FILTER_TOKEN_TYPE.SCOPE,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
let hasFiltersWithValues = false;
|
|
31
|
+
for (const dataset of scope.datasets) {
|
|
32
|
+
if (dataset.filters.length === 0)
|
|
33
|
+
continue;
|
|
34
|
+
if (settings.showDataset) {
|
|
35
|
+
tokens.push({
|
|
36
|
+
token: `${dataset.label}:`,
|
|
37
|
+
type: FILTER_TOKEN_TYPE.DATABASE_NAME,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
for (let i = 0; i < dataset.filters.length; i++) {
|
|
41
|
+
const filter = dataset.filters[i];
|
|
42
|
+
if (!filter.enabled) {
|
|
43
|
+
if (tokens[tokens.length - 1]?.type ===
|
|
44
|
+
FILTER_TOKEN_TYPE.LOGICAL_OPERATOR) {
|
|
45
|
+
tokens.pop();
|
|
46
|
+
}
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
hasFiltersWithValues = true;
|
|
50
|
+
if (settings.showChart && filter.scope === FILTER_SCOPE.CHART) {
|
|
51
|
+
const chartLabel = filter.customLabel ?? "";
|
|
52
|
+
const existing = tokens.find((tok) => tok.token === `${chartLabel}:` && tok.id === filter.scopeId);
|
|
53
|
+
if (!existing) {
|
|
54
|
+
if (tokens[tokens.length - 1]?.type ===
|
|
55
|
+
FILTER_TOKEN_TYPE.LOGICAL_OPERATOR) {
|
|
56
|
+
tokens.pop();
|
|
57
|
+
}
|
|
58
|
+
tokens.push({
|
|
59
|
+
token: `${chartLabel}:`,
|
|
60
|
+
type: FILTER_TOKEN_TYPE.CHART_NAME,
|
|
61
|
+
id: filter.scopeId,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let columnLabel = filter.columnLabel || filter.columnId;
|
|
66
|
+
if (!isEmpty(filter.aggregateType)) {
|
|
67
|
+
const aggLabel = t(`common.aggregate_labels.${filter.aggregateType.toLowerCase()}`, String(filter.aggregateType));
|
|
68
|
+
columnLabel += ` (${aggLabel})`;
|
|
69
|
+
}
|
|
70
|
+
tokens.push({
|
|
71
|
+
token: `${columnLabel}:`,
|
|
72
|
+
type: FILTER_TOKEN_TYPE.COLUMN_NAME,
|
|
73
|
+
});
|
|
74
|
+
const validatorInfo = FILTER_VALIDATOR_INFO[filter.validator];
|
|
75
|
+
const validatorLabel = t(`filter.validators.${filter.validator.toLowerCase()}_label`, validatorInfo?.label ?? filter.validator);
|
|
76
|
+
const groupingLabel = !isEmpty(filter.grouping)
|
|
77
|
+
? (FILTER_GROUPING_INFO[filter.grouping]?.label ?? "")
|
|
78
|
+
: "";
|
|
79
|
+
tokens.push({
|
|
80
|
+
token: validatorLabel + (groupingLabel ? ` (${groupingLabel})` : ""),
|
|
81
|
+
type: FILTER_TOKEN_TYPE.VALIDATOR,
|
|
82
|
+
});
|
|
83
|
+
tokens.push({
|
|
84
|
+
token: buildValueLabel(filter, settings, t),
|
|
85
|
+
type: FILTER_TOKEN_TYPE.VALUE,
|
|
86
|
+
});
|
|
87
|
+
if (i < dataset.filters.length - 1) {
|
|
88
|
+
const opInfo = FILTER_OPERATOR_INFO[filter.operator];
|
|
89
|
+
const opLabel = t(`filter.operators.${filter.operator.toLowerCase()}`, opInfo?.label ?? filter.operator);
|
|
90
|
+
tokens.push({
|
|
91
|
+
token: opLabel,
|
|
92
|
+
type: FILTER_TOKEN_TYPE.LOGICAL_OPERATOR,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!hasFiltersWithValues && settings.showDataset) {
|
|
97
|
+
tokens.pop();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!hasFiltersWithValues && settings.showScope) {
|
|
101
|
+
tokens.pop();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return tokens;
|
|
105
|
+
}
|
|
106
|
+
export function filtersTokensToString(tokens) {
|
|
107
|
+
let str = "";
|
|
108
|
+
for (const token of tokens) {
|
|
109
|
+
if ([FILTER_TOKEN_TYPE.SCOPE, FILTER_TOKEN_TYPE.CHART_NAME].includes(token.type)) {
|
|
110
|
+
str += "\n";
|
|
111
|
+
}
|
|
112
|
+
str += `${token.token} `;
|
|
113
|
+
}
|
|
114
|
+
return str.trim();
|
|
115
|
+
}
|
|
116
|
+
function buildTranslator(translate) {
|
|
117
|
+
if (translate) {
|
|
118
|
+
return (key, fallback) => translate(key) || fallback;
|
|
119
|
+
}
|
|
120
|
+
return (_key, fallback) => fallback;
|
|
121
|
+
}
|
|
122
|
+
function buildValueLabel(filter, settings, t) {
|
|
123
|
+
const values = filter.values ?? [];
|
|
124
|
+
let labels;
|
|
125
|
+
if (isNullValidator(filter.validator)) {
|
|
126
|
+
const validatorInfo = FILTER_VALIDATOR_INFO[filter.validator];
|
|
127
|
+
labels = [
|
|
128
|
+
t(`filter.validators.${filter.validator.toLowerCase()}_label`, validatorInfo?.label ?? filter.validator),
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
else if (isRangeValidator(filter.validator)) {
|
|
132
|
+
labels = getRangeLabels(values, filter.validator, settings, t);
|
|
133
|
+
}
|
|
134
|
+
else if (isInValidator(filter.validator)) {
|
|
135
|
+
labels = getRelativeLabels(values, t);
|
|
136
|
+
}
|
|
137
|
+
else if (isRankingFilter(filter)) {
|
|
138
|
+
labels = getRankingLabels(values);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
labels = getRegularLabels(values);
|
|
142
|
+
}
|
|
143
|
+
const filtered = labels.filter((l) => !isEmpty(l));
|
|
144
|
+
let result = filtered.join(", ");
|
|
145
|
+
if (filter.selectAll) {
|
|
146
|
+
result = isEmpty(result)
|
|
147
|
+
? t("filter_panel.card_all_selected", "All selected")
|
|
148
|
+
: `${t("filter_panel.card_all_except", "All except")} ${result}`;
|
|
149
|
+
}
|
|
150
|
+
else if (isEmpty(result)) {
|
|
151
|
+
result = t("filter_panel.card_none_selected", "None selected");
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
function getRegularLabels(values) {
|
|
156
|
+
return values
|
|
157
|
+
.filter((v) => (v.displayed ?? true) && (v.enabled ?? true))
|
|
158
|
+
.map((v) => v.value ?? "");
|
|
159
|
+
}
|
|
160
|
+
function getRangeLabels(values, validator, settings, t) {
|
|
161
|
+
const sep = settings.rangeSeparator ?? t("filter.range_separator", "-");
|
|
162
|
+
return values
|
|
163
|
+
.filter((v) => (v.displayed ?? true) && (v.enabled ?? true))
|
|
164
|
+
.map((v) => {
|
|
165
|
+
switch (validator) {
|
|
166
|
+
case "AFTER":
|
|
167
|
+
case "AFTER_ON":
|
|
168
|
+
case "GREATER_THAN":
|
|
169
|
+
case "GREATER_THAN_EQUAL":
|
|
170
|
+
return v.min ?? "";
|
|
171
|
+
case "BEFORE":
|
|
172
|
+
case "BEFORE_ON":
|
|
173
|
+
case "LESS_THAN":
|
|
174
|
+
case "LESS_THAN_EQUAL":
|
|
175
|
+
return v.max ?? "";
|
|
176
|
+
default:
|
|
177
|
+
return `${v.min ?? ""} ${sep} ${v.max ?? ""}`;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
function getRelativeLabels(values, t) {
|
|
182
|
+
return values
|
|
183
|
+
.filter((v) => (v.displayed ?? true) && (v.enabled ?? true))
|
|
184
|
+
.map((v) => {
|
|
185
|
+
const cursorInfo = RELATIVE_CURSOR_INFO[v.cursor];
|
|
186
|
+
const cursorLabel = t(cursorInfo.i18nLabelPath, cursorInfo.label);
|
|
187
|
+
const isThis = v.cursor === RELATIVE_CURSOR.THIS;
|
|
188
|
+
const number = !isThis && v.number != null && v.number > 1 ? `${v.number} ` : "";
|
|
189
|
+
const unit = t(`common.units.${v.unit}`, String(v.unit));
|
|
190
|
+
const pluralUnit = !isThis && v.number != null && v.number > 1 ? `${unit}s` : unit;
|
|
191
|
+
if (isThis) {
|
|
192
|
+
return `${cursorLabel} ${pluralUnit}`.trim();
|
|
193
|
+
}
|
|
194
|
+
const fromLabel = t("filter.relative_container.from_label", "from");
|
|
195
|
+
const anchorLabel = typeof v.anchor === "string" && !isEmpty(v.anchor)
|
|
196
|
+
? v.anchor
|
|
197
|
+
: t("filter.relative_container.current_date", "Current Date");
|
|
198
|
+
return `${cursorLabel} ${number}${pluralUnit} ${fromLabel} ${anchorLabel}`.trim();
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function getRankingLabels(values) {
|
|
202
|
+
return values
|
|
203
|
+
.flat()
|
|
204
|
+
.filter((v) => (v.displayed ?? true) && (v.enabled ?? true))
|
|
205
|
+
.map((v) => `${v.value ?? ""} - ${v.position}`);
|
|
206
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { isEmpty } from "@qrvey/utils";
|
|
2
|
+
export function getAggregateFilters(filters = []) {
|
|
3
|
+
return filters.filter((filter) => !isEmpty(filter.aggregateType));
|
|
4
|
+
}
|
|
5
|
+
export function excludeAggregateFilters(filters = []) {
|
|
6
|
+
return filters.filter((filter) => isEmpty(filter.aggregateType));
|
|
7
|
+
}
|