@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.
Files changed (279) hide show
  1. package/README.md +63 -1
  2. package/dist/cjs/classes/FilterAdapter.js +1 -80
  3. package/dist/cjs/classes/FilterBuilder.js +32 -251
  4. package/dist/cjs/classes/FilterManager.js +7 -64
  5. package/dist/cjs/classes/FilterResources.js +3 -116
  6. package/dist/cjs/classes/FilterSearcher.js +0 -77
  7. package/dist/cjs/classes/FilterValidation.js +0 -93
  8. package/dist/cjs/classes/FilterValues.js +0 -24
  9. package/dist/cjs/classes/index.js +8 -21
  10. package/dist/cjs/helpers/filter-adapt.helpers.js +3 -46
  11. package/dist/cjs/helpers/filter-adapt.legacy.helpers.js +6 -53
  12. package/dist/cjs/helpers/filter-adapt.logic.helpers.js +7 -128
  13. package/dist/cjs/helpers/filter-builder.helpers.js +1 -8
  14. package/dist/cjs/helpers/filter-settings.helpers.js +6 -41
  15. package/dist/cjs/helpers/filter-validators.helpers.js +15 -9
  16. package/dist/cjs/helpers/filter-verbose.helpers.js +211 -0
  17. package/dist/cjs/helpers/getAggregateFilters.js +11 -0
  18. package/dist/cjs/helpers/getFilterId.js +1 -17
  19. package/dist/cjs/helpers/getFilterType.js +1 -8
  20. package/dist/cjs/helpers/index.js +12 -20
  21. package/dist/cjs/helpers/isDateDistinctGrouping.js +15 -0
  22. package/dist/cjs/helpers/isRankingFilter.js +10 -0
  23. package/dist/cjs/helpers/resolveFilterConditions.js +2 -10
  24. package/dist/cjs/helpers/utils.helpers.js +2 -19
  25. package/dist/cjs/index.js +5 -18
  26. package/dist/cjs/models/index.js +4 -17
  27. package/dist/cjs/resources/filter-grouping.resources.js +0 -18
  28. package/dist/cjs/resources/filter-logic.resources.js +0 -3
  29. package/dist/cjs/resources/filter-scopes.resources.js +10 -27
  30. package/dist/cjs/resources/filter-validators.resources.js +0 -3
  31. package/dist/cjs/resources/filter-verbose.resources.js +13 -0
  32. package/dist/cjs/resources/filters.resources.js +0 -12
  33. package/dist/cjs/resources/index.js +12 -24
  34. package/dist/classes/FilterAdapter.d.ts +0 -80
  35. package/dist/classes/FilterAdapter.js +1 -80
  36. package/dist/classes/FilterBuilder.d.ts +2 -177
  37. package/dist/classes/FilterBuilder.js +32 -251
  38. package/dist/classes/FilterManager.d.ts +7 -62
  39. package/dist/classes/FilterManager.js +7 -64
  40. package/dist/classes/FilterResources.d.ts +1 -115
  41. package/dist/classes/FilterResources.js +3 -116
  42. package/dist/classes/FilterSearcher.d.ts +2 -77
  43. package/dist/classes/FilterSearcher.js +0 -77
  44. package/dist/classes/FilterValidation.d.ts +1 -47
  45. package/dist/classes/FilterValidation.js +0 -93
  46. package/dist/classes/FilterValues.d.ts +0 -25
  47. package/dist/classes/FilterValues.js +0 -24
  48. package/dist/classes/index.d.ts +0 -1
  49. package/dist/helpers/filter-adapt.helpers.d.ts +0 -15
  50. package/dist/helpers/filter-adapt.helpers.js +1 -43
  51. package/dist/helpers/filter-adapt.legacy.helpers.d.ts +0 -20
  52. package/dist/helpers/filter-adapt.legacy.helpers.js +3 -49
  53. package/dist/helpers/filter-adapt.logic.helpers.d.ts +0 -22
  54. package/dist/helpers/filter-adapt.logic.helpers.js +3 -123
  55. package/dist/helpers/filter-builder.helpers.d.ts +0 -7
  56. package/dist/helpers/filter-builder.helpers.js +0 -6
  57. package/dist/helpers/filter-settings.helpers.d.ts +0 -35
  58. package/dist/helpers/filter-settings.helpers.js +0 -34
  59. package/dist/helpers/filter-validators.helpers.d.ts +3 -6
  60. package/dist/helpers/filter-validators.helpers.js +11 -7
  61. package/dist/helpers/filter-verbose.helpers.d.ts +6 -0
  62. package/dist/helpers/filter-verbose.helpers.js +206 -0
  63. package/dist/helpers/getAggregateFilters.d.ts +3 -0
  64. package/dist/helpers/getAggregateFilters.js +7 -0
  65. package/dist/helpers/getFilterId.d.ts +0 -16
  66. package/dist/helpers/getFilterId.js +0 -15
  67. package/dist/helpers/getFilterType.d.ts +0 -7
  68. package/dist/helpers/getFilterType.js +0 -6
  69. package/dist/helpers/index.d.ts +5 -1
  70. package/dist/helpers/index.js +5 -0
  71. package/dist/helpers/isDateDistinctGrouping.d.ts +2 -0
  72. package/dist/helpers/isDateDistinctGrouping.js +12 -0
  73. package/dist/helpers/isRankingFilter.d.ts +2 -0
  74. package/dist/helpers/isRankingFilter.js +7 -0
  75. package/dist/helpers/resolveFilterConditions.d.ts +0 -8
  76. package/dist/helpers/resolveFilterConditions.js +1 -8
  77. package/dist/helpers/utils.helpers.d.ts +0 -17
  78. package/dist/helpers/utils.helpers.js +0 -16
  79. package/dist/index.d.ts +0 -1
  80. package/dist/models/filter-builder.models.d.ts +0 -156
  81. package/dist/models/filter-resources.models.d.ts +0 -53
  82. package/dist/models/filter-searcher.models.d.ts +5 -34
  83. package/dist/models/filter-validation.models.d.ts +0 -40
  84. package/dist/models/index.d.ts +0 -1
  85. package/dist/resources/filter-functions.resources.d.ts +0 -49
  86. package/dist/resources/filter-grouping.resources.d.ts +0 -7
  87. package/dist/resources/filter-grouping.resources.js +0 -18
  88. package/dist/resources/filter-logic.resources.d.ts +0 -79
  89. package/dist/resources/filter-logic.resources.js +0 -3
  90. package/dist/resources/filter-operators.resources.d.ts +0 -1
  91. package/dist/resources/filter-panel.interfaces.d.ts +0 -49
  92. package/dist/resources/filter-scopes.resources.d.ts +2 -25
  93. package/dist/resources/filter-scopes.resources.js +10 -27
  94. package/dist/resources/filter-validation.resources.d.ts +0 -1
  95. package/dist/resources/filter-validators.resources.d.ts +0 -1
  96. package/dist/resources/filter-validators.resources.js +0 -3
  97. package/dist/resources/filter-values.resources.d.ts +0 -13
  98. package/dist/resources/filter-verbose.resources.d.ts +23 -0
  99. package/dist/resources/filter-verbose.resources.js +10 -0
  100. package/dist/resources/filter-visual.resources.d.ts +0 -50
  101. package/dist/resources/filters.resources.d.ts +1 -102
  102. package/dist/resources/filters.resources.js +0 -12
  103. package/dist/resources/index.d.ts +1 -1
  104. package/dist/resources/index.js +1 -0
  105. package/package.json +59 -44
  106. package/.eslintignore +0 -6
  107. package/.eslintrc.json +0 -122
  108. package/.husky/pre-commit +0 -4
  109. package/.lintstagedrc +0 -7
  110. package/.prettierignore +0 -6
  111. package/.prettierrc.json +0 -1
  112. package/CHANGELOG.md +0 -274
  113. package/CODE_OF_CONDUCT.md +0 -132
  114. package/bitbucket-pipelines.yml +0 -92
  115. package/dist/cjs/classes/FilterAdapter.d.ts +0 -107
  116. package/dist/cjs/classes/FilterAdapter.d.ts.map +0 -1
  117. package/dist/cjs/classes/FilterBuilder.d.ts +0 -206
  118. package/dist/cjs/classes/FilterBuilder.d.ts.map +0 -1
  119. package/dist/cjs/classes/FilterManager.d.ts +0 -84
  120. package/dist/cjs/classes/FilterManager.d.ts.map +0 -1
  121. package/dist/cjs/classes/FilterResources.d.ts +0 -139
  122. package/dist/cjs/classes/FilterResources.d.ts.map +0 -1
  123. package/dist/cjs/classes/FilterSearcher.d.ts +0 -90
  124. package/dist/cjs/classes/FilterSearcher.d.ts.map +0 -1
  125. package/dist/cjs/classes/FilterValidation.d.ts +0 -58
  126. package/dist/cjs/classes/FilterValidation.d.ts.map +0 -1
  127. package/dist/cjs/classes/FilterValues.d.ts +0 -33
  128. package/dist/cjs/classes/FilterValues.d.ts.map +0 -1
  129. package/dist/cjs/classes/index.d.ts +0 -8
  130. package/dist/cjs/classes/index.d.ts.map +0 -1
  131. package/dist/cjs/helpers/filter-adapt.helpers.d.ts +0 -21
  132. package/dist/cjs/helpers/filter-adapt.helpers.d.ts.map +0 -1
  133. package/dist/cjs/helpers/filter-adapt.legacy.helpers.d.ts +0 -26
  134. package/dist/cjs/helpers/filter-adapt.legacy.helpers.d.ts.map +0 -1
  135. package/dist/cjs/helpers/filter-adapt.logic.helpers.d.ts +0 -29
  136. package/dist/cjs/helpers/filter-adapt.logic.helpers.d.ts.map +0 -1
  137. package/dist/cjs/helpers/filter-builder.helpers.d.ts +0 -11
  138. package/dist/cjs/helpers/filter-builder.helpers.d.ts.map +0 -1
  139. package/dist/cjs/helpers/filter-settings.helpers.d.ts +0 -42
  140. package/dist/cjs/helpers/filter-settings.helpers.d.ts.map +0 -1
  141. package/dist/cjs/helpers/filter-validators.helpers.d.ts +0 -8
  142. package/dist/cjs/helpers/filter-validators.helpers.d.ts.map +0 -1
  143. package/dist/cjs/helpers/getFilterId.d.ts +0 -18
  144. package/dist/cjs/helpers/getFilterId.d.ts.map +0 -1
  145. package/dist/cjs/helpers/getFilterType.d.ts +0 -11
  146. package/dist/cjs/helpers/getFilterType.d.ts.map +0 -1
  147. package/dist/cjs/helpers/index.d.ts +0 -7
  148. package/dist/cjs/helpers/index.d.ts.map +0 -1
  149. package/dist/cjs/helpers/resolveFilterConditions.d.ts +0 -11
  150. package/dist/cjs/helpers/resolveFilterConditions.d.ts.map +0 -1
  151. package/dist/cjs/helpers/utils.helpers.d.ts +0 -26
  152. package/dist/cjs/helpers/utils.helpers.d.ts.map +0 -1
  153. package/dist/cjs/index.d.ts +0 -5
  154. package/dist/cjs/index.d.ts.map +0 -1
  155. package/dist/cjs/models/filter-builder.models.d.ts +0 -203
  156. package/dist/cjs/models/filter-builder.models.d.ts.map +0 -1
  157. package/dist/cjs/models/filter-resources.models.d.ts +0 -71
  158. package/dist/cjs/models/filter-resources.models.d.ts.map +0 -1
  159. package/dist/cjs/models/filter-searcher.models.d.ts +0 -42
  160. package/dist/cjs/models/filter-searcher.models.d.ts.map +0 -1
  161. package/dist/cjs/models/filter-validation.models.d.ts +0 -59
  162. package/dist/cjs/models/filter-validation.models.d.ts.map +0 -1
  163. package/dist/cjs/models/index.d.ts +0 -4
  164. package/dist/cjs/models/index.d.ts.map +0 -1
  165. package/dist/cjs/resources/filter-functions.resources.d.ts +0 -94
  166. package/dist/cjs/resources/filter-functions.resources.d.ts.map +0 -1
  167. package/dist/cjs/resources/filter-grouping.resources.d.ts +0 -103
  168. package/dist/cjs/resources/filter-grouping.resources.d.ts.map +0 -1
  169. package/dist/cjs/resources/filter-logic.resources.d.ts +0 -135
  170. package/dist/cjs/resources/filter-logic.resources.d.ts.map +0 -1
  171. package/dist/cjs/resources/filter-operators.resources.d.ts +0 -16
  172. package/dist/cjs/resources/filter-operators.resources.d.ts.map +0 -1
  173. package/dist/cjs/resources/filter-panel.interfaces.d.ts +0 -80
  174. package/dist/cjs/resources/filter-panel.interfaces.d.ts.map +0 -1
  175. package/dist/cjs/resources/filter-scopes.resources.d.ts +0 -62
  176. package/dist/cjs/resources/filter-scopes.resources.d.ts.map +0 -1
  177. package/dist/cjs/resources/filter-validation.resources.d.ts +0 -20
  178. package/dist/cjs/resources/filter-validation.resources.d.ts.map +0 -1
  179. package/dist/cjs/resources/filter-validators.resources.d.ts +0 -80
  180. package/dist/cjs/resources/filter-validators.resources.d.ts.map +0 -1
  181. package/dist/cjs/resources/filter-values.resources.d.ts +0 -40
  182. package/dist/cjs/resources/filter-values.resources.d.ts.map +0 -1
  183. package/dist/cjs/resources/filter-visual.resources.d.ts +0 -77
  184. package/dist/cjs/resources/filter-visual.resources.d.ts.map +0 -1
  185. package/dist/cjs/resources/filters.resources.d.ts +0 -168
  186. package/dist/cjs/resources/filters.resources.d.ts.map +0 -1
  187. package/dist/cjs/resources/index.d.ts +0 -11
  188. package/dist/cjs/resources/index.d.ts.map +0 -1
  189. package/dist/classes/FilterAdapter.d.ts.map +0 -1
  190. package/dist/classes/FilterBuilder.d.ts.map +0 -1
  191. package/dist/classes/FilterManager.d.ts.map +0 -1
  192. package/dist/classes/FilterResources.d.ts.map +0 -1
  193. package/dist/classes/FilterSearcher.d.ts.map +0 -1
  194. package/dist/classes/FilterValidation.d.ts.map +0 -1
  195. package/dist/classes/FilterValues.d.ts.map +0 -1
  196. package/dist/classes/index.d.ts.map +0 -1
  197. package/dist/helpers/filter-adapt.helpers.d.ts.map +0 -1
  198. package/dist/helpers/filter-adapt.legacy.helpers.d.ts.map +0 -1
  199. package/dist/helpers/filter-adapt.logic.helpers.d.ts.map +0 -1
  200. package/dist/helpers/filter-builder.helpers.d.ts.map +0 -1
  201. package/dist/helpers/filter-settings.helpers.d.ts.map +0 -1
  202. package/dist/helpers/filter-validators.helpers.d.ts.map +0 -1
  203. package/dist/helpers/getFilterId.d.ts.map +0 -1
  204. package/dist/helpers/getFilterType.d.ts.map +0 -1
  205. package/dist/helpers/index.d.ts.map +0 -1
  206. package/dist/helpers/resolveFilterConditions.d.ts.map +0 -1
  207. package/dist/helpers/utils.helpers.d.ts.map +0 -1
  208. package/dist/index.d.ts.map +0 -1
  209. package/dist/models/filter-builder.models.d.ts.map +0 -1
  210. package/dist/models/filter-resources.models.d.ts.map +0 -1
  211. package/dist/models/filter-searcher.models.d.ts.map +0 -1
  212. package/dist/models/filter-validation.models.d.ts.map +0 -1
  213. package/dist/models/index.d.ts.map +0 -1
  214. package/dist/resources/filter-functions.resources.d.ts.map +0 -1
  215. package/dist/resources/filter-grouping.resources.d.ts.map +0 -1
  216. package/dist/resources/filter-logic.resources.d.ts.map +0 -1
  217. package/dist/resources/filter-operators.resources.d.ts.map +0 -1
  218. package/dist/resources/filter-panel.interfaces.d.ts.map +0 -1
  219. package/dist/resources/filter-scopes.resources.d.ts.map +0 -1
  220. package/dist/resources/filter-validation.resources.d.ts.map +0 -1
  221. package/dist/resources/filter-validators.resources.d.ts.map +0 -1
  222. package/dist/resources/filter-values.resources.d.ts.map +0 -1
  223. package/dist/resources/filter-visual.resources.d.ts.map +0 -1
  224. package/dist/resources/filters.resources.d.ts.map +0 -1
  225. package/dist/resources/index.d.ts.map +0 -1
  226. package/jest.config.js +0 -10
  227. package/jsdoc.config.json +0 -14
  228. package/scripts/clean-build/index.js +0 -62
  229. package/sonar-project.properties +0 -2
  230. package/src/classes/FilterAdapter.ts +0 -208
  231. package/src/classes/FilterBuilder.ts +0 -822
  232. package/src/classes/FilterManager.ts +0 -126
  233. package/src/classes/FilterResources.ts +0 -411
  234. package/src/classes/FilterSearcher.ts +0 -243
  235. package/src/classes/FilterValidation.ts +0 -221
  236. package/src/classes/FilterValues.ts +0 -89
  237. package/src/classes/index.ts +0 -7
  238. package/src/helpers/filter-adapt.helpers.ts +0 -204
  239. package/src/helpers/filter-adapt.legacy.helpers.ts +0 -298
  240. package/src/helpers/filter-adapt.logic.helpers.ts +0 -631
  241. package/src/helpers/filter-builder.helpers.ts +0 -28
  242. package/src/helpers/filter-settings.helpers.ts +0 -133
  243. package/src/helpers/filter-validators.helpers.ts +0 -15
  244. package/src/helpers/getFilterId.ts +0 -35
  245. package/src/helpers/getFilterType.ts +0 -23
  246. package/src/helpers/index.ts +0 -6
  247. package/src/helpers/resolveFilterConditions.ts +0 -29
  248. package/src/helpers/utils.helpers.ts +0 -37
  249. package/src/index.ts +0 -4
  250. package/src/models/filter-builder.models.ts +0 -256
  251. package/src/models/filter-resources.models.ts +0 -89
  252. package/src/models/filter-searcher.models.ts +0 -61
  253. package/src/models/filter-validation.models.ts +0 -71
  254. package/src/models/index.ts +0 -3
  255. package/src/resources/filter-functions.resources.ts +0 -132
  256. package/src/resources/filter-grouping.resources.ts +0 -531
  257. package/src/resources/filter-logic.resources.ts +0 -148
  258. package/src/resources/filter-operators.resources.ts +0 -40
  259. package/src/resources/filter-panel.interfaces.ts +0 -86
  260. package/src/resources/filter-scopes.resources.ts +0 -152
  261. package/src/resources/filter-validation.resources.ts +0 -90
  262. package/src/resources/filter-validators.resources.ts +0 -411
  263. package/src/resources/filter-values.resources.ts +0 -57
  264. package/src/resources/filter-visual.resources.ts +0 -86
  265. package/src/resources/filters.resources.ts +0 -232
  266. package/src/resources/index.ts +0 -10
  267. package/tests/classes/FilterAdapter.test.ts +0 -124
  268. package/tests/classes/FilterBuilder.test.ts +0 -903
  269. package/tests/classes/FilterResources.test.ts +0 -267
  270. package/tests/classes/FilterSearcher.test.ts +0 -188
  271. package/tests/classes/FilterValidation.test.ts +0 -54
  272. package/tests/helpers/getFilterId.test.ts +0 -121
  273. package/tests/mock/datasets.mock.ts +0 -61
  274. package/tests/mock/filters-adapter.mock.ts +0 -646
  275. package/tests/mock/filters-interactive-table.mock.ts +0 -59
  276. package/tests/mock/filters.mock.ts +0 -277
  277. package/tsconfig.doc.json +0 -4
  278. package/tsconfig.eslint.json +0 -4
  279. 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
- }