@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
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import { IColumn, IDataset, isEmpty } from "@qrvey/utils";
|
|
2
|
-
|
|
3
|
-
import { getColumnInfo, getDatasetInfo } from "./utils.helpers";
|
|
4
|
-
|
|
5
|
-
import { IFilterPanelInteractiveTable } from "../resources/filter-panel.interfaces";
|
|
6
|
-
import {
|
|
7
|
-
DEFAULT_UI_FILTER,
|
|
8
|
-
IFilterUI,
|
|
9
|
-
IFilterVisual,
|
|
10
|
-
IFilterVisualDataset,
|
|
11
|
-
IFilterVisualScope,
|
|
12
|
-
} from "../resources/filter-visual.resources";
|
|
13
|
-
import { DEFAULT_FILTER, IFilter } from "../resources/filters.resources";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Generates a visual filter structure from the filter collection.
|
|
17
|
-
* @param filters Array of filters
|
|
18
|
-
* @param datasets Array of the dataset info
|
|
19
|
-
* @param interactiveTable table of interaction properties for each section
|
|
20
|
-
* @returns a Filter Data structure
|
|
21
|
-
*/
|
|
22
|
-
export function filterToVisual(
|
|
23
|
-
filters: IFilter[],
|
|
24
|
-
datasets: IDataset[] = [],
|
|
25
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
26
|
-
): IFilterVisual | undefined {
|
|
27
|
-
if (isEmpty(filters) || !Array.isArray(filters)) return;
|
|
28
|
-
|
|
29
|
-
return {
|
|
30
|
-
scopes: buildScopes(filters, datasets, interactiveTable),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Gets the Interactive Table object from the visual filters
|
|
36
|
-
* If an interactive table object is given, it will be merged with the new one
|
|
37
|
-
* @param visual the visual filters
|
|
38
|
-
* @param interactiveTable the interactive table object
|
|
39
|
-
* @returns the interactive table object
|
|
40
|
-
*/
|
|
41
|
-
export function legacyVisualToInteractiveTable(
|
|
42
|
-
visual: IFilterVisual,
|
|
43
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
44
|
-
): IFilterPanelInteractiveTable | undefined {
|
|
45
|
-
if (isEmpty(visual) || isEmpty(visual?.scopes)) return;
|
|
46
|
-
|
|
47
|
-
const newInteractiveTable: IFilterPanelInteractiveTable = {
|
|
48
|
-
interactScopes: [],
|
|
49
|
-
interactDatasets: [],
|
|
50
|
-
...interactiveTable,
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
visual.scopes.forEach((scope: IFilterVisualScope) => {
|
|
54
|
-
newInteractiveTable.interactScopes!.push({
|
|
55
|
-
collapsed: scope.collapsed,
|
|
56
|
-
scope: scope.scope,
|
|
57
|
-
scopeId: scope.id,
|
|
58
|
-
});
|
|
59
|
-
if (scope.datasets.length === 0) return;
|
|
60
|
-
scope.datasets.forEach((dataset: IFilterVisualDataset) => {
|
|
61
|
-
newInteractiveTable.interactDatasets!.push({
|
|
62
|
-
collapsed: scope.collapsed,
|
|
63
|
-
scope: scope.scope,
|
|
64
|
-
scopeId: scope.id,
|
|
65
|
-
datasetId: dataset.id,
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
if (isEmpty(newInteractiveTable.interactScopes))
|
|
71
|
-
delete newInteractiveTable.interactScopes;
|
|
72
|
-
if (isEmpty(newInteractiveTable.interactDatasets))
|
|
73
|
-
delete newInteractiveTable.interactDatasets;
|
|
74
|
-
|
|
75
|
-
return newInteractiveTable;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Gets a collection of scopes for the visual filter data.
|
|
80
|
-
* The scopes are organized by scope types and IDs
|
|
81
|
-
* Also, adds and organizes filters by datasets
|
|
82
|
-
* @param filters Collection of filters
|
|
83
|
-
* @param datasets Array of the dataset info
|
|
84
|
-
* @param interactiveTable table of interaction properties for each section
|
|
85
|
-
* @returns an array of visual scopes.
|
|
86
|
-
*/
|
|
87
|
-
function buildScopes(
|
|
88
|
-
filters: IFilter[] = [],
|
|
89
|
-
datasets: IDataset[] = [],
|
|
90
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
91
|
-
): IFilterVisualScope[] {
|
|
92
|
-
return filters.reduce((scopes: IFilterVisualScope[], filter: IFilter) => {
|
|
93
|
-
const datasetInfo = getDatasetInfo(
|
|
94
|
-
{ columnId: filter.columnId, datasetId: filter.datasetId },
|
|
95
|
-
datasets,
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const uiFilter: IFilterUI = buildFilter(filter, datasetInfo);
|
|
99
|
-
const uiDataset: IFilterVisualDataset = buildDataset(
|
|
100
|
-
filter,
|
|
101
|
-
datasetInfo,
|
|
102
|
-
interactiveTable,
|
|
103
|
-
);
|
|
104
|
-
const uiScope: IFilterVisualScope = buildScope(filter, interactiveTable);
|
|
105
|
-
|
|
106
|
-
const scopeIndex = scopes.findIndex(
|
|
107
|
-
(sc) => sc.scope === filter.scope && sc.id === filter.scopeId,
|
|
108
|
-
);
|
|
109
|
-
const datasetIndex =
|
|
110
|
-
scopeIndex > -1
|
|
111
|
-
? scopes[scopeIndex].datasets.findIndex(
|
|
112
|
-
(dt) => dt.id === filter.datasetId,
|
|
113
|
-
)
|
|
114
|
-
: -1;
|
|
115
|
-
|
|
116
|
-
if (scopeIndex === -1) {
|
|
117
|
-
scopes.push({
|
|
118
|
-
...uiScope,
|
|
119
|
-
datasets: [{ ...uiDataset, filters: [uiFilter] }],
|
|
120
|
-
});
|
|
121
|
-
} else if (datasetIndex === -1) {
|
|
122
|
-
scopes[scopeIndex].datasets.push({ ...uiDataset, filters: [uiFilter] });
|
|
123
|
-
} else {
|
|
124
|
-
scopes[scopeIndex].datasets[datasetIndex].filters.push(uiFilter);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
return scopes;
|
|
128
|
-
}, []);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Gets an scope structure for the filter data
|
|
133
|
-
* @param filter the filter
|
|
134
|
-
* @param interactiveTable table of interaction properties for each section
|
|
135
|
-
* @returns the visual scope structure
|
|
136
|
-
*/
|
|
137
|
-
function buildScope(
|
|
138
|
-
filter: IFilter,
|
|
139
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
140
|
-
): IFilterVisualScope {
|
|
141
|
-
const { collapsed } =
|
|
142
|
-
interactiveTable?.interactScopes?.find(
|
|
143
|
-
(interactive) =>
|
|
144
|
-
interactive.scope === filter.scope &&
|
|
145
|
-
interactive.scopeId === filter.scopeId,
|
|
146
|
-
) ?? {};
|
|
147
|
-
|
|
148
|
-
return {
|
|
149
|
-
collapsed: collapsed ?? false,
|
|
150
|
-
datasets: [],
|
|
151
|
-
scope: filter.scope,
|
|
152
|
-
id: filter.scopeId,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Gets an dataset structure for the visual filter
|
|
158
|
-
* @param filter the filter
|
|
159
|
-
* @param dataset the dataset info
|
|
160
|
-
* @param interactiveTable table of interaction properties for each section
|
|
161
|
-
* @returns an dataset structure
|
|
162
|
-
*/
|
|
163
|
-
function buildDataset(
|
|
164
|
-
filter: IFilter,
|
|
165
|
-
dataset?: IDataset,
|
|
166
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
167
|
-
): IFilterVisualDataset {
|
|
168
|
-
const { collapsed } =
|
|
169
|
-
interactiveTable?.interactDatasets?.find(
|
|
170
|
-
(interactive) => interactive.datasetId === filter.datasetId,
|
|
171
|
-
) ?? {};
|
|
172
|
-
return {
|
|
173
|
-
collapsed: collapsed ?? false,
|
|
174
|
-
id: filter.datasetId,
|
|
175
|
-
label: dataset?.label || "",
|
|
176
|
-
filters: [],
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Gets an filter structure for the visual filter
|
|
182
|
-
* @param filter a UI structure filter
|
|
183
|
-
* @param dataset the dataset info
|
|
184
|
-
* @returns an filter structure
|
|
185
|
-
*/
|
|
186
|
-
function buildFilter(filter: IFilter, dataset?: IDataset): IFilterUI {
|
|
187
|
-
const columnInfo: IColumn | undefined =
|
|
188
|
-
dataset == null
|
|
189
|
-
? undefined
|
|
190
|
-
: getColumnInfo(
|
|
191
|
-
{ columnId: filter.columnId, datasetId: filter.datasetId },
|
|
192
|
-
[dataset],
|
|
193
|
-
);
|
|
194
|
-
|
|
195
|
-
return {
|
|
196
|
-
...filter,
|
|
197
|
-
collapsed: filter.collapsed ?? DEFAULT_FILTER.collapsed,
|
|
198
|
-
datasetLabel: dataset?.label ?? DEFAULT_UI_FILTER.datasetLabel,
|
|
199
|
-
columnLabel: columnInfo?.label ?? DEFAULT_UI_FILTER.columnLabel,
|
|
200
|
-
formulaType: columnInfo?.formulaType,
|
|
201
|
-
icon: filter.icon ?? DEFAULT_UI_FILTER.icon,
|
|
202
|
-
iconTooltip: filter.iconTooltip ?? DEFAULT_UI_FILTER.iconTooltip,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FILTER_SCOPE,
|
|
3
|
-
FILTER_SECTION,
|
|
4
|
-
IColumn,
|
|
5
|
-
IColumnPropertyType,
|
|
6
|
-
IDataset,
|
|
7
|
-
IFUData,
|
|
8
|
-
IFUDataset,
|
|
9
|
-
IFUFilter,
|
|
10
|
-
IFUScope,
|
|
11
|
-
IFValue,
|
|
12
|
-
isEmpty,
|
|
13
|
-
} from "@qrvey/utils";
|
|
14
|
-
|
|
15
|
-
import { getColumnInfo, getDatasetInfo } from "./utils.helpers";
|
|
16
|
-
|
|
17
|
-
import { FilterBuilder } from "../classes/FilterBuilder";
|
|
18
|
-
import { IFilterGrouping } from "../resources/filter-grouping.resources";
|
|
19
|
-
import { IFilterPanelInteractiveTable } from "../resources/filter-panel.interfaces";
|
|
20
|
-
import { IFilterValue } from "../resources/filter-values.resources";
|
|
21
|
-
import { IFilter } from "../resources/filters.resources";
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Generates a legacy visual filter structure from the filter collection.
|
|
25
|
-
* @param filters Array of filters
|
|
26
|
-
* @param datasets Array of the dataset info
|
|
27
|
-
* @param interactiveTable table of interaction properties for each section
|
|
28
|
-
* @returns a Filter Data structure
|
|
29
|
-
*/
|
|
30
|
-
export function filterToLegacyVisual(
|
|
31
|
-
filters: IFilter[],
|
|
32
|
-
datasets: IDataset[] = [],
|
|
33
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
34
|
-
): IFUData | undefined {
|
|
35
|
-
if (isEmpty(filters)) return;
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
enabled: true,
|
|
39
|
-
section: FILTER_SECTION.DX,
|
|
40
|
-
version: "2.1",
|
|
41
|
-
scopes: buildLegacyScopes(filters, datasets, interactiveTable),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Generates a legacy visual filter structure from the filter collection.
|
|
47
|
-
* @param filterData the legacy filter
|
|
48
|
-
* @returns a Filter collection
|
|
49
|
-
*/
|
|
50
|
-
export function legacyVisualToFilter(filterData: IFUData): IFilter[] {
|
|
51
|
-
if (isEmpty(filterData) || isEmpty(filterData?.scopes)) return [];
|
|
52
|
-
|
|
53
|
-
const filters: IFilter[] = [];
|
|
54
|
-
|
|
55
|
-
filterData.scopes.forEach((scope: IFUScope) => {
|
|
56
|
-
if (scope.datasets.length === 0) return;
|
|
57
|
-
scope.datasets.forEach((dataset: IFUDataset) => {
|
|
58
|
-
if (dataset.filters.length === 0) return;
|
|
59
|
-
dataset.filters.forEach((filter) => {
|
|
60
|
-
const fFilter = FilterBuilder.createFilter({
|
|
61
|
-
aggregateType: filter.column.aggregate,
|
|
62
|
-
collapsed: filter.collapsed,
|
|
63
|
-
columnId: filter.column.id,
|
|
64
|
-
columnType: filter.column.type,
|
|
65
|
-
customLabel: filter.extras.filterLabel,
|
|
66
|
-
datasetId: dataset.qrveyid,
|
|
67
|
-
deletable: filter.deletable,
|
|
68
|
-
displayed: filter.displayed,
|
|
69
|
-
editable: filter.editable,
|
|
70
|
-
enableable: filter.enableable,
|
|
71
|
-
enabled: filter.enabled,
|
|
72
|
-
extras: filter.extras,
|
|
73
|
-
formulaType: filter.column.formulaType,
|
|
74
|
-
grouping: filter.property as unknown as IFilterGrouping,
|
|
75
|
-
id: "",
|
|
76
|
-
lookupDisplayIndex: filter.lookupDisplayIndex,
|
|
77
|
-
operator: filter.operator,
|
|
78
|
-
scope: scope.scope,
|
|
79
|
-
scopeId: scope.scopeid,
|
|
80
|
-
selectAll: filter.selectAll,
|
|
81
|
-
validator: filter.validator,
|
|
82
|
-
values: filter.values as unknown as IFilterValue[],
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
filters.push(fFilter);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
return filters;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Gets the Interactive Table object from the legacy visual filters
|
|
95
|
-
* If an interactive table object is given, it will be merged with the new one
|
|
96
|
-
* @param legacyVisual the legacy visual filters
|
|
97
|
-
* @param interactiveTable the interactive table object
|
|
98
|
-
* @returns the interactive table object
|
|
99
|
-
*/
|
|
100
|
-
export function legacyVisualToInteractiveTable(
|
|
101
|
-
legacyVisual: IFUData,
|
|
102
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
103
|
-
): IFilterPanelInteractiveTable | undefined {
|
|
104
|
-
if (isEmpty(legacyVisual) || isEmpty(legacyVisual?.scopes)) return;
|
|
105
|
-
|
|
106
|
-
const newInteractiveTable: IFilterPanelInteractiveTable = {
|
|
107
|
-
...interactiveTable,
|
|
108
|
-
interactScopes: [],
|
|
109
|
-
interactDatasets: [],
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
legacyVisual.scopes.forEach((scope: IFUScope) => {
|
|
113
|
-
newInteractiveTable.interactScopes!.push({
|
|
114
|
-
collapsed: scope.collapsed,
|
|
115
|
-
scope: scope.scope,
|
|
116
|
-
scopeId: scope.scopeid,
|
|
117
|
-
});
|
|
118
|
-
if (scope.datasets.length === 0) return;
|
|
119
|
-
scope.datasets.forEach((dataset: IFUDataset) => {
|
|
120
|
-
newInteractiveTable.interactDatasets!.push({
|
|
121
|
-
collapsed: dataset.collapsed,
|
|
122
|
-
scope: scope.scope,
|
|
123
|
-
scopeId: scope.scopeid,
|
|
124
|
-
datasetId: dataset.qrveyid,
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
if (isEmpty(newInteractiveTable.interactScopes))
|
|
130
|
-
delete newInteractiveTable.interactScopes;
|
|
131
|
-
if (isEmpty(newInteractiveTable.interactDatasets))
|
|
132
|
-
delete newInteractiveTable.interactDatasets;
|
|
133
|
-
|
|
134
|
-
return newInteractiveTable;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Gets a collection of legacy scopes for the legacy visual filters.
|
|
139
|
-
* The scopes are organized by scope types and IDs
|
|
140
|
-
* Also, adds and organizes filters by datasets
|
|
141
|
-
* @param filters Collection of filters
|
|
142
|
-
* @param datasets Array of the dataset info
|
|
143
|
-
* @param interactiveTable table of interaction properties for each section
|
|
144
|
-
* @returns an array of visual scopes.
|
|
145
|
-
*/
|
|
146
|
-
function buildLegacyScopes(
|
|
147
|
-
filters: IFilter[] = [],
|
|
148
|
-
datasets: IDataset[] = [],
|
|
149
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
150
|
-
): IFUScope[] {
|
|
151
|
-
return filters.reduce((scopes: IFUScope[], filter: IFilter) => {
|
|
152
|
-
const datasetInfo = getDatasetInfo(
|
|
153
|
-
{ columnId: filter.columnId, datasetId: filter.datasetId },
|
|
154
|
-
datasets,
|
|
155
|
-
);
|
|
156
|
-
|
|
157
|
-
const uiFilter: IFUFilter = buildLegacyFilter(filter, datasetInfo);
|
|
158
|
-
const uiDataset: IFUDataset = buildLegacyDataset(
|
|
159
|
-
filter,
|
|
160
|
-
datasetInfo,
|
|
161
|
-
interactiveTable,
|
|
162
|
-
);
|
|
163
|
-
const uiScope: IFUScope = buildLegacyScope(filter, interactiveTable);
|
|
164
|
-
|
|
165
|
-
const scopeIndex = scopes.findIndex(
|
|
166
|
-
(sc) => sc.scope === filter.scope && sc.scopeid === filter.scopeId,
|
|
167
|
-
);
|
|
168
|
-
const datasetIndex =
|
|
169
|
-
scopeIndex > -1
|
|
170
|
-
? scopes[scopeIndex].datasets.findIndex(
|
|
171
|
-
(dt) => dt.qrveyid === filter.datasetId,
|
|
172
|
-
)
|
|
173
|
-
: -1;
|
|
174
|
-
|
|
175
|
-
if (scopeIndex === -1) {
|
|
176
|
-
scopes.push({
|
|
177
|
-
...uiScope,
|
|
178
|
-
datasets: [{ ...uiDataset, filters: [uiFilter] }],
|
|
179
|
-
});
|
|
180
|
-
} else if (datasetIndex === -1) {
|
|
181
|
-
scopes[scopeIndex].datasets.push({ ...uiDataset, filters: [uiFilter] });
|
|
182
|
-
} else {
|
|
183
|
-
scopes[scopeIndex].datasets[datasetIndex].filters.push(uiFilter);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return scopes;
|
|
187
|
-
}, []);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Gets an legacy scope structure for the legacy filter data
|
|
192
|
-
* @param filter the filter
|
|
193
|
-
* @param interactiveTable table of interaction properties for each section
|
|
194
|
-
* @returns the legacy visual scope structure
|
|
195
|
-
*/
|
|
196
|
-
function buildLegacyScope(
|
|
197
|
-
filter: IFilter,
|
|
198
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
199
|
-
): IFUScope {
|
|
200
|
-
const { collapsed } =
|
|
201
|
-
interactiveTable?.interactScopes?.find(
|
|
202
|
-
(interactive) =>
|
|
203
|
-
interactive.scope === filter.scope &&
|
|
204
|
-
interactive.scopeId === filter.scopeId,
|
|
205
|
-
) ?? {};
|
|
206
|
-
|
|
207
|
-
return {
|
|
208
|
-
collapsed: collapsed ?? false,
|
|
209
|
-
datasets: [],
|
|
210
|
-
displayed: true,
|
|
211
|
-
enabled: true,
|
|
212
|
-
scope: filter.scope,
|
|
213
|
-
scopeid: filter.scopeId,
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Gets an legacy dataset structure for the legacy visual filter
|
|
219
|
-
* @param filter the filter
|
|
220
|
-
* @param dataset the dataset info
|
|
221
|
-
* @param interactiveTable table of interaction properties for each section
|
|
222
|
-
* @returns an legacy dataset structure
|
|
223
|
-
*/
|
|
224
|
-
function buildLegacyDataset(
|
|
225
|
-
filter: IFilter,
|
|
226
|
-
dataset?: IDataset,
|
|
227
|
-
interactiveTable?: IFilterPanelInteractiveTable,
|
|
228
|
-
): IFUDataset {
|
|
229
|
-
const { collapsed } =
|
|
230
|
-
interactiveTable?.interactDatasets?.find(
|
|
231
|
-
(interactive) =>
|
|
232
|
-
interactive.datasetId === filter.datasetId &&
|
|
233
|
-
interactive.scope === filter.scope &&
|
|
234
|
-
interactive.scopeId === filter.scopeId,
|
|
235
|
-
) ?? {};
|
|
236
|
-
return {
|
|
237
|
-
collapsed: collapsed ?? false,
|
|
238
|
-
qrveyid: filter.datasetId,
|
|
239
|
-
label: dataset?.label || "",
|
|
240
|
-
displayed: true,
|
|
241
|
-
enabled: true,
|
|
242
|
-
filters: [],
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Gets an legacy filter structure for the legacy visual filter
|
|
248
|
-
* @param filter a UI structure filter
|
|
249
|
-
* @param dataset the dataset info
|
|
250
|
-
* @returns an legacy filter structure
|
|
251
|
-
*/
|
|
252
|
-
function buildLegacyFilter(filter: IFilter, dataset?: IDataset): IFUFilter {
|
|
253
|
-
const columnInfo: IColumn | undefined =
|
|
254
|
-
dataset == null
|
|
255
|
-
? undefined
|
|
256
|
-
: getColumnInfo(
|
|
257
|
-
{ columnId: filter.columnId, datasetId: filter.datasetId },
|
|
258
|
-
[dataset],
|
|
259
|
-
);
|
|
260
|
-
|
|
261
|
-
return {
|
|
262
|
-
collapsed: filter.collapsed ?? false,
|
|
263
|
-
column: {
|
|
264
|
-
id: filter.columnId,
|
|
265
|
-
formulaType: columnInfo?.formulaType,
|
|
266
|
-
label: columnInfo?.label || "",
|
|
267
|
-
qrveyid: filter.datasetId,
|
|
268
|
-
aggregate: filter.aggregateType,
|
|
269
|
-
type: filter.columnType,
|
|
270
|
-
},
|
|
271
|
-
deletable: filter.deletable,
|
|
272
|
-
displayed: filter.displayed,
|
|
273
|
-
editable: filter.editable,
|
|
274
|
-
enableable: filter.enableable,
|
|
275
|
-
enabled: filter.enabled,
|
|
276
|
-
filterid: filter.id,
|
|
277
|
-
extras: {
|
|
278
|
-
...filter.extras,
|
|
279
|
-
filterLabel: filter.customLabel,
|
|
280
|
-
panelid: FILTER_SCOPE.CHART === filter.scope ? filter.scopeId : undefined,
|
|
281
|
-
info: !isEmpty(filter.extras?.info)
|
|
282
|
-
? {
|
|
283
|
-
icon: filter.icon || "",
|
|
284
|
-
label: filter.iconTooltip || "",
|
|
285
|
-
}
|
|
286
|
-
: undefined,
|
|
287
|
-
scope: filter.scope,
|
|
288
|
-
scopeid: filter.scopeId,
|
|
289
|
-
},
|
|
290
|
-
lookupDisplayIndex: filter.lookupDisplayIndex,
|
|
291
|
-
nullValues: false,
|
|
292
|
-
operator: filter.operator,
|
|
293
|
-
property: filter.grouping as unknown as IColumnPropertyType,
|
|
294
|
-
selectAll: filter.selectAll,
|
|
295
|
-
validator: filter.validator,
|
|
296
|
-
values: filter.values as unknown as IFValue[],
|
|
297
|
-
};
|
|
298
|
-
}
|