@qrvey/filters 0.0.44 → 0.1.0

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