@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
@@ -5,58 +5,30 @@ const utils_1 = require("@qrvey/utils");
5
5
  const FilterSearcher_1 = require("./FilterSearcher");
6
6
  const FilterValidation_1 = require("./FilterValidation");
7
7
  const FilterValues_1 = require("./FilterValues");
8
+ const filter_builder_helpers_1 = require("../helpers/filter-builder.helpers");
8
9
  const filter_settings_helpers_1 = require("../helpers/filter-settings.helpers");
9
10
  const getFilterId_1 = require("../helpers/getFilterId");
10
11
  const getFilterType_1 = require("../helpers/getFilterType");
11
12
  const filter_operators_resources_1 = require("../resources/filter-operators.resources");
12
13
  const filters_resources_1 = require("../resources/filters.resources");
13
- const filter_builder_helpers_1 = require("../helpers/filter-builder.helpers");
14
- /**
15
- * Class to build new filters and manipulate ones.
16
- */
17
14
  class FilterBuilder {
18
15
  filters;
19
- /**
20
- * Instance to search filters
21
- */
22
16
  searchEngine;
23
- /**
24
- * Constructor
25
- * @param filters the collection of filters
26
- */
27
- constructor(filters = []) {
17
+ constructor(filters = [], searchEngine) {
28
18
  this.filters = filters;
29
- this.searchEngine = new FilterSearcher_1.FilterSearcher(filters);
19
+ this.searchEngine = searchEngine ?? new FilterSearcher_1.FilterSearcher(filters);
30
20
  this.filters = (0, utils_1.objectCopy)(Array.isArray(filters) ? filters : []);
21
+ this.searchEngine.setFilters(this.filters);
31
22
  }
32
- /**
33
- * **************************************************************************************************
34
- ****************************************** Adding **************************************************
35
- ****************************************************************************************************
36
- */
37
- /**
38
- * Adds various filter into the collection.
39
- * Inserts them next to the last similar filter
40
- * @param newFilters the filter to add
41
- * @param inIndexes collection of indexes to add the new filters
42
- * @param settings the settings object to setup this function
43
- * @returns the new collection of filters
44
- */
45
23
  addMultiple(newFilters, inIndexes, settings) {
46
24
  if ((0, utils_1.isEmpty)(newFilters))
47
25
  return { resulting: this.filters };
48
26
  const filters = (0, utils_1.objectCopy)(this.filters);
49
27
  const affected = [];
50
- try {
51
- newFilters.forEach((newFilter, index) => {
52
- const affectedFilter = this.addSingle(newFilter, inIndexes?.[index], settings);
53
- affected.push(affectedFilter.affected);
54
- });
55
- }
56
- catch (_error) {
57
- this.filters = filters;
58
- return { resulting: filters };
59
- }
28
+ newFilters.forEach((newFilter, index) => {
29
+ const affectedFilter = this.addSingle(newFilter, inIndexes?.[index], settings);
30
+ affected.push(affectedFilter.affected);
31
+ });
60
32
  this.sync();
61
33
  return {
62
34
  resulting: this.filters,
@@ -64,17 +36,6 @@ class FilterBuilder {
64
36
  original: filters,
65
37
  };
66
38
  }
67
- /**
68
- * Adds one filter into the collection.
69
- * - Inserts it next to the last similar filter
70
- * - If the new one is match with the last similar filter, the operator will change to OR
71
- * - If the id is not provided, a new one is created.
72
- * - If the inIndex nunber is provided, this will be the index where the filter is inserted
73
- * @param filter the filter to add
74
- * @param inIndex the index to add the new filter
75
- * @param settings settings object to setup this function
76
- * @returns the new collection of filters
77
- */
78
39
  addSingle(filter, inIndex, settings) {
79
40
  if ((0, utils_1.isEmpty)(filter))
80
41
  return { resulting: this.filters };
@@ -117,12 +78,6 @@ class FilterBuilder {
117
78
  original,
118
79
  };
119
80
  }
120
- /**
121
- * Adds one value from filter
122
- * @param id the ID to search the filter to add value
123
- * @param value the value to add
124
- * @returns the new filter collection
125
- */
126
81
  addValue(id, value) {
127
82
  const index = this.searchEngine.findIndexByParams({ id });
128
83
  if (index < 0)
@@ -138,28 +93,15 @@ class FilterBuilder {
138
93
  original,
139
94
  };
140
95
  }
141
- /**
142
- * Adds various values on filter
143
- * @param id the ID to search the filter to add value
144
- * @param values the collection of value to add
145
- * @returns the new filter collection
146
- */
147
96
  addValues(id, values) {
148
97
  const index = this.searchEngine.findIndexByParams({ id });
149
98
  if ((0, utils_1.isEmpty)(values) || index < 0)
150
99
  return { resulting: this.filters };
151
- const filters = (0, utils_1.objectCopy)(this.filters);
152
100
  const original = (0, utils_1.objectCopy)(this.filters[index]);
153
101
  let affected;
154
- try {
155
- values.forEach((value) => {
156
- affected = this.addValue(id, value).affected;
157
- });
158
- }
159
- catch (_error) {
160
- this.filters = filters;
161
- return { resulting: filters };
162
- }
102
+ values.forEach((value) => {
103
+ affected = this.addValue(id, value).affected;
104
+ });
163
105
  this.sync();
164
106
  return {
165
107
  resulting: this.filters,
@@ -167,17 +109,6 @@ class FilterBuilder {
167
109
  original,
168
110
  };
169
111
  }
170
- /**
171
- * **************************************************************************************************
172
- **************************************** Deleting **************************************************
173
- ****************************************************************************************************
174
- */
175
- /**
176
- * Removes various filters by params
177
- * @param params params to search the filters to delete
178
- * @param settings settings for this function
179
- * @returns the new collection of filters
180
- */
181
112
  deleteByParams(params, settings) {
182
113
  const original = (0, utils_1.objectCopy)(this.filters);
183
114
  const affected = this.searchEngine.filterByParams(params, settings);
@@ -189,26 +120,15 @@ class FilterBuilder {
189
120
  original,
190
121
  };
191
122
  }
192
- /**
193
- * Removes various filters from the collection
194
- * @param ids a collection of ID to search filters to remove
195
- * @returns the new filter collection
196
- */
197
123
  deleteMultiple(ids) {
198
124
  if (!Array.isArray(ids))
199
125
  return { resulting: this.filters };
200
126
  const filters = (0, utils_1.objectCopy)(this.filters);
201
127
  const affected = [];
202
- try {
203
- ids.forEach((id) => {
204
- const deleted = this.deleteSingle(id);
205
- affected.push(deleted.affected);
206
- });
207
- }
208
- catch (_error) {
209
- this.filters = filters;
210
- return { resulting: filters };
211
- }
128
+ ids.forEach((id) => {
129
+ const deleted = this.deleteSingle(id);
130
+ affected.push(deleted.affected);
131
+ });
212
132
  this.sync();
213
133
  return {
214
134
  resulting: this.filters,
@@ -216,11 +136,6 @@ class FilterBuilder {
216
136
  original: filters,
217
137
  };
218
138
  }
219
- /**
220
- * Removes one filter from the collection
221
- * @param id the ID to search the filter to remove
222
- * @returns the new filter collection
223
- */
224
139
  deleteSingle(id) {
225
140
  const index = this.searchEngine.findIndexByParams({ id });
226
141
  const original = { ...this.filters[index] };
@@ -235,12 +150,6 @@ class FilterBuilder {
235
150
  original,
236
151
  };
237
152
  }
238
- /**
239
- * Removes one value from filter
240
- * @param id the ID to search the filter to remove value
241
- * @param index the index to search the value to remove
242
- * @returns the new filter collection
243
- */
244
153
  deleteValue(id, index) {
245
154
  if (!Number.isInteger(index))
246
155
  return { resulting: this.filters };
@@ -259,30 +168,16 @@ class FilterBuilder {
259
168
  original,
260
169
  };
261
170
  }
262
- /**
263
- * Removes various values from filter
264
- * @param id the ID to search the filter to remove value
265
- * @param indexes the index collection to search the value to remove
266
- * @returns the new filter collection
267
- */
268
171
  deleteValues(id, indexes) {
269
172
  if (!Array.isArray(indexes))
270
173
  return { resulting: this.filters };
271
- let sortedIndex = indexes.sort();
272
- sortedIndex = indexes.reverse();
273
- const filters = (0, utils_1.objectCopy)(this.filters);
174
+ const sortedIndex = indexes.sort().reverse();
274
175
  const original = this.searchEngine.findByParams({
275
176
  id,
276
177
  });
277
- try {
278
- sortedIndex.forEach((index) => {
279
- this.deleteValue(id, index);
280
- });
281
- }
282
- catch (_error) {
283
- this.filters = filters;
284
- return { resulting: filters };
285
- }
178
+ sortedIndex.forEach((index) => {
179
+ this.deleteValue(id, index);
180
+ });
286
181
  this.sync();
287
182
  const affected = this.searchEngine.findByParams({ id });
288
183
  return {
@@ -291,18 +186,6 @@ class FilterBuilder {
291
186
  original,
292
187
  };
293
188
  }
294
- /**
295
- * **************************************************************************************************
296
- ****************************************** Editing *************************************************
297
- ****************************************************************************************************
298
- */
299
- /**
300
- * Edits various filters from the collection
301
- * @param ids the collection of IDs to search filters to edit
302
- * @param filters a collection of object with properties to edit
303
- * @param settings settings object for the function
304
- * @returns the new filter collection
305
- */
306
189
  editMultiple(ids, filters, settings) {
307
190
  if (!Array.isArray(ids) ||
308
191
  !Array.isArray(filters) ||
@@ -310,16 +193,10 @@ class FilterBuilder {
310
193
  return { resulting: this.filters };
311
194
  const originalFilters = (0, utils_1.objectCopy)(this.filters);
312
195
  const editedFilters = [];
313
- try {
314
- ids.forEach((id, index) => {
315
- const editedFilter = this.editSingle(id, filters[index], settings);
316
- editedFilters.push(editedFilter.affected);
317
- });
318
- }
319
- catch (_error) {
320
- this.filters = originalFilters;
321
- return { resulting: originalFilters };
322
- }
196
+ ids.forEach((id, index) => {
197
+ const editedFilter = this.editSingle(id, filters[index], settings);
198
+ editedFilters.push(editedFilter.affected);
199
+ });
323
200
  this.sync();
324
201
  return {
325
202
  resulting: this.filters,
@@ -327,13 +204,6 @@ class FilterBuilder {
327
204
  original: originalFilters,
328
205
  };
329
206
  }
330
- /**
331
- * Edits one filter from the collection
332
- * @param id the ID to search the filter to edit
333
- * @param filter an object with properties to edit
334
- * @param settings settings object for the function
335
- * @returns the new filter collection
336
- */
337
207
  editSingle(id, filter, settings) {
338
208
  if ((0, utils_1.isEmpty)(filter))
339
209
  return { resulting: this.filters };
@@ -356,13 +226,6 @@ class FilterBuilder {
356
226
  original,
357
227
  };
358
228
  }
359
- /**
360
- * Edits one value from filter
361
- * @param id the ID to search the filter to edit value
362
- * @param value the value to edit
363
- * @param index the value index to edit
364
- * @returns the new filter collection
365
- */
366
229
  editValue(id, value, index) {
367
230
  const filterIndex = this.searchEngine.findIndexByParams({ id });
368
231
  if ((0, utils_1.isEmpty)(value) ||
@@ -380,29 +243,16 @@ class FilterBuilder {
380
243
  original,
381
244
  };
382
245
  }
383
- /**
384
- * Edits various values from filter
385
- * @param id the ID to search the filter to edit value
386
- * @param values the value collection to edit
387
- * @param indexes the index collection to edit
388
- * @returns the new filter collection
389
- */
390
246
  editValues(id, values, indexes) {
391
247
  const filterIndex = this.searchEngine.findIndexByParams({ id });
392
248
  if ((0, utils_1.isEmpty)(values) || filterIndex < 0 || !Array.isArray(indexes))
393
249
  return { resulting: this.filters };
394
250
  const original = (0, utils_1.objectCopy)(this.filters);
395
251
  let finalAffectedFilter;
396
- try {
397
- values.forEach((value, index) => {
398
- const affectedFilter = this.editValue(id, value, indexes[index]);
399
- finalAffectedFilter = affectedFilter.affected;
400
- });
401
- }
402
- catch (_error) {
403
- this.filters = original;
404
- return { resulting: original };
405
- }
252
+ values.forEach((value, index) => {
253
+ const affectedFilter = this.editValue(id, value, indexes[index]);
254
+ finalAffectedFilter = affectedFilter.affected;
255
+ });
406
256
  this.sync();
407
257
  return {
408
258
  resulting: this.filters,
@@ -410,17 +260,6 @@ class FilterBuilder {
410
260
  original: original[filterIndex],
411
261
  };
412
262
  }
413
- /**
414
- * **************************************************************************************************
415
- ****************************************** Merging *************************************************
416
- ****************************************************************************************************
417
- */
418
- /**
419
- * Merge the filter into the collection by some filter parameters
420
- * @param filter the filter to merge
421
- * @param settings the settings object to setup this function
422
- * @returns the new filter collection
423
- */
424
263
  mergeSingle(filter, settings) {
425
264
  if ((0, utils_1.isEmpty)(filter))
426
265
  return { resulting: this.filters };
@@ -433,7 +272,7 @@ class FilterBuilder {
433
272
  validator: filter.validator,
434
273
  });
435
274
  let original = filter;
436
- let affected = filter;
275
+ let affected;
437
276
  if (filterIndex > -1) {
438
277
  original = (0, utils_1.objectCopy)(this.filters[filterIndex]);
439
278
  const { affected: affectedMergeFilter } = this.mergeValues(this.filters[filterIndex].id, filter.values);
@@ -449,27 +288,15 @@ class FilterBuilder {
449
288
  original,
450
289
  };
451
290
  }
452
- /**
453
- * Merge the filters into the collection by some filter parameters
454
- * @param filters the filter collection to merge
455
- * @param settings the settings object to setup this function
456
- * @returns the new filter collection
457
- */
458
291
  mergeMultiple(filters, settings) {
459
292
  if (!Array.isArray(filters) || (0, utils_1.isEmpty)(filters))
460
293
  return { resulting: this.filters };
461
294
  const originalFilters = (0, utils_1.objectCopy)(this.filters);
462
295
  const mergedFilters = [];
463
- try {
464
- filters.forEach((filter) => {
465
- const mergedFilter = this.mergeSingle(filter, settings);
466
- mergedFilters.push(mergedFilter.affected);
467
- });
468
- }
469
- catch (_error) {
470
- this.filters = originalFilters;
471
- return { resulting: originalFilters };
472
- }
296
+ filters.forEach((filter) => {
297
+ const mergedFilter = this.mergeSingle(filter, settings);
298
+ mergedFilters.push(mergedFilter.affected);
299
+ });
473
300
  this.sync();
474
301
  return {
475
302
  resulting: this.filters,
@@ -477,12 +304,6 @@ class FilterBuilder {
477
304
  original: originalFilters,
478
305
  };
479
306
  }
480
- /**
481
- * Merge values from filter
482
- * @param id the ID to search the filter to merge values
483
- * @param values the value collection to merge
484
- * @returns the new filter collection
485
- */
486
307
  mergeValues(id, values) {
487
308
  const filterIndex = this.searchEngine.findIndexByParams({ id });
488
309
  if ((0, utils_1.isEmpty)(values) || filterIndex < 0)
@@ -521,17 +342,6 @@ class FilterBuilder {
521
342
  original,
522
343
  };
523
344
  }
524
- /**
525
- * **************************************************************************************************
526
- ****************************************** Others **************************************************
527
- ****************************************************************************************************
528
- */
529
- /**
530
- * Builds an filter structure based on given params
531
- * @param filter the partial filter params
532
- * @param settings the settings object to setup this function
533
- * @returns the complete filter structure
534
- */
535
345
  static createFilter(filter, settings) {
536
346
  const newSettings = (0, filter_settings_helpers_1.getFilterCreateSettings)(settings);
537
347
  const newFilter = {
@@ -547,6 +357,7 @@ class FilterBuilder {
547
357
  editable: filter.editable ?? filters_resources_1.DEFAULT_FILTER.editable,
548
358
  enableable: filter.enableable ?? filters_resources_1.DEFAULT_FILTER.enableable,
549
359
  enabled: filter.enabled ?? filters_resources_1.DEFAULT_FILTER.enabled,
360
+ formulaType: filter.formulaType ?? filters_resources_1.DEFAULT_FILTER.formulaType,
550
361
  id: filter.id || "",
551
362
  operator: filter.operator || filters_resources_1.DEFAULT_FILTER.operator,
552
363
  scope: filter.scope || filters_resources_1.DEFAULT_FILTER.scope,
@@ -564,14 +375,6 @@ class FilterBuilder {
564
375
  }
565
376
  return newFilter;
566
377
  }
567
- /**
568
- * Sets the given filters by param
569
- * - Remove the filters by the sucesfull conditions and replace the given ones
570
- * @param filters the filters to set
571
- * @param params params to search the filters
572
- * @param settings settings for this function
573
- * @returns the new collection of filters
574
- */
575
378
  replaceByParams(filters, params, settings) {
576
379
  const original = (0, utils_1.objectCopy)(this.filters);
577
380
  const newSettings = (0, filter_settings_helpers_1.getReplaceByParamsSettings)(settings);
@@ -591,33 +394,12 @@ class FilterBuilder {
591
394
  original,
592
395
  };
593
396
  }
594
- /**
595
- * Method to sync the Filter instances
596
- */
597
397
  sync() {
598
398
  this.searchEngine.setFilters(this.filters);
599
399
  }
600
- /**
601
- * **************************************************************************************************
602
- ****************************************** Getters *************************************************
603
- ****************************************************************************************************
604
- */
605
- /**
606
- * Gets the filter collection
607
- * @returns the collection of filters of the context
608
- */
609
400
  getFilters() {
610
401
  return this.filters;
611
402
  }
612
- /**
613
- * **************************************************************************************************
614
- ****************************************** Setters *************************************************
615
- ****************************************************************************************************
616
- */
617
- /**
618
- * Sets the filters
619
- * @param filters the new collection of filters to set
620
- */
621
403
  setFilters(filters) {
622
404
  this.filters = (0, utils_1.objectCopy)(filters);
623
405
  this.sync();
@@ -4,105 +4,48 @@ exports.FilterManager = void 0;
4
4
  const FilterAdapter_1 = require("./FilterAdapter");
5
5
  const FilterBuilder_1 = require("./FilterBuilder");
6
6
  const FilterSearcher_1 = require("./FilterSearcher");
7
- /**
8
- * Class to manage the filters
9
- */
10
7
  class FilterManager {
11
8
  _filters;
12
9
  datasets;
13
10
  _interactiveTable;
14
- /**
15
- * Instance to adapt filters
16
- */
17
11
  _adapt;
18
- /**
19
- * Instance to build filters
20
- */
21
12
  _builder;
22
- /**
23
- * Instance to search filters
24
- */
25
13
  _searchEngine;
26
- /**
27
- * Constructor
28
- * @param _filters the collection of filters
29
- * @param datasets the collection of datasets info
30
- * @param _interactiveTable table of interaction properties for each section
31
- */
32
- constructor(_filters = [], datasets = [], _interactiveTable) {
14
+ constructor(_filters = [], datasets = [], _interactiveTable, dependencies) {
33
15
  this._filters = _filters;
34
16
  this.datasets = datasets;
35
17
  this._interactiveTable = _interactiveTable;
36
- this._searchEngine = new FilterSearcher_1.FilterSearcher(_filters);
37
- this._builder = new FilterBuilder_1.FilterBuilder(_filters);
38
- this._adapt = new FilterAdapter_1.FilterAdapter(_filters, datasets, _interactiveTable);
18
+ this._searchEngine =
19
+ dependencies?.searchEngine ?? new FilterSearcher_1.FilterSearcher(_filters);
20
+ this._builder = dependencies?.builder ?? new FilterBuilder_1.FilterBuilder(_filters);
21
+ this._adapt =
22
+ dependencies?.adapt ??
23
+ new FilterAdapter_1.FilterAdapter(_filters, datasets, _interactiveTable);
39
24
  }
40
- /**
41
- * **************************************************************************************************
42
- ****************************************** Getters *************************************************
43
- ****************************************************************************************************
44
- */
45
- /**
46
- * Gets the adapt methods
47
- * @returns the adapt methods
48
- */
49
25
  get adapt() {
50
26
  return this._adapt;
51
27
  }
52
- /**
53
- * Gets the builder methods
54
- * @returns the builder methods
55
- */
56
28
  get builder() {
57
29
  return this._builder;
58
30
  }
59
- /**
60
- * Gets the filter collections
61
- * @returns the filters
62
- */
63
31
  get filters() {
64
32
  return this._filters;
65
33
  }
66
- /**
67
- * Gets the interactive table
68
- * @returns the interactive table
69
- */
70
34
  get interactiveTable() {
71
35
  return this._interactiveTable;
72
36
  }
73
- /**
74
- * Gets the search methods
75
- * @returns the search methods
76
- */
77
37
  get search() {
78
38
  return this._searchEngine;
79
39
  }
80
- /**
81
- * **************************************************************************************************
82
- ****************************************** Setters *************************************************
83
- ****************************************************************************************************
84
- */
85
- /**
86
- * Sets the datasets
87
- * @param datasets the collection of dataset info
88
- */
89
40
  setDatasets(datasets) {
90
41
  this._adapt.setDatasets(datasets);
91
42
  }
92
- /**
93
- * Sets the filters
94
- * @param filters the new collection of filters to set
95
- */
96
43
  setFilters(filters = []) {
97
44
  this._filters = filters;
98
45
  this._builder.setFilters(filters);
99
46
  this._searchEngine.setFilters(filters);
100
47
  this._adapt.setFilters(filters);
101
48
  }
102
- /**
103
- * Sets the table of interactive table
104
- * @param interactiveTable table of interaction properties for each section
105
- */
106
49
  setInteractiveTable(interactiveTable) {
107
50
  this._interactiveTable = interactiveTable;
108
51
  this._adapt.setInteractiveTable(this._interactiveTable);