@qrvey/utils 1.1.0-9 → 1.1.2-1

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 (444) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +37 -0
  3. package/README.md +474 -285
  4. package/bitbucket-pipelines.yml +25 -0
  5. package/dist/cjs/constants/COLUMN.js +0 -1
  6. package/dist/cjs/constants/COLUMN_PROPERTY.d.ts +6 -0
  7. package/dist/cjs/constants/COLUMN_PROPERTY.js +0 -1
  8. package/dist/cjs/constants/COLUMN_PROPERTY_VALUE.js +4 -1
  9. package/dist/cjs/date/constants/DATE_DAY_HOURS.d.ts +1 -0
  10. package/dist/cjs/date/constants/DATE_DAY_HOURS.js +29 -0
  11. package/dist/cjs/date/constants/DATE_HOUR_MINUTES.d.ts +1 -0
  12. package/dist/cjs/date/constants/DATE_HOUR_MINUTES.js +65 -0
  13. package/dist/cjs/date/constants/DATE_MINUTE_SECONDS.d.ts +1 -0
  14. package/dist/cjs/date/constants/DATE_MINUTE_SECONDS.js +5 -0
  15. package/dist/cjs/date/constants/DATE_MONTH_DAYS.d.ts +1 -0
  16. package/dist/cjs/date/constants/DATE_MONTH_DAYS.js +36 -0
  17. package/dist/cjs/date/constants/DATE_PROPERTY.js +0 -1
  18. package/dist/cjs/date/constants/DATE_PROPERTY_VALUE.d.ts +8 -0
  19. package/dist/cjs/date/constants/DATE_PROPERTY_VALUE.js +17 -0
  20. package/dist/cjs/date/constants/DATE_P_PROPERTIES.d.ts +2 -0
  21. package/dist/cjs/date/constants/DATE_P_PROPERTIES.js +11 -0
  22. package/dist/cjs/date/constants/DATE_P_VALUES.d.ts +6 -0
  23. package/dist/cjs/date/constants/DATE_P_VALUES.js +8 -0
  24. package/dist/cjs/date/constants/DATE_TIME_P_VALUES.d.ts +6 -0
  25. package/dist/cjs/date/constants/DATE_TIME_P_VALUES.js +8 -0
  26. package/dist/cjs/date/constants/DATE_TIME_VALUES.js +1 -1
  27. package/dist/cjs/date/constants/DATE_WEEK_DAYS.d.ts +1 -0
  28. package/dist/cjs/date/constants/DATE_WEEK_DAYS.js +6 -0
  29. package/dist/cjs/date/constants/DATE_YEAR_DAYS.d.ts +1 -0
  30. package/dist/cjs/date/constants/DATE_YEAR_DAYS.js +370 -0
  31. package/dist/cjs/date/constants/DATE_YEAR_MONTHS.d.ts +1 -0
  32. package/dist/cjs/date/constants/DATE_YEAR_MONTHS.js +4 -0
  33. package/dist/cjs/date/constants/DATE_YEAR_QUARTERS.d.ts +1 -0
  34. package/dist/cjs/date/constants/DATE_YEAR_QUARTERS.js +4 -0
  35. package/dist/cjs/date/constants/index.d.ts +12 -0
  36. package/dist/cjs/date/constants/index.js +12 -0
  37. package/dist/cjs/date/range/getDateRange.js +26 -21
  38. package/dist/cjs/date/relative/Adapter.js +1 -1
  39. package/dist/cjs/date/relative/constants/DATE_FORMATS.d.ts +1 -1
  40. package/dist/cjs/date/relative/constants/DATE_FORMATS.js +3 -3
  41. package/dist/cjs/date/relative/helpers/formatStatement.js +6 -6
  42. package/dist/cjs/filters/adapters/FDToFlatUI.js +5 -12
  43. package/dist/cjs/filters/adapters/FDToUI.js +2 -3
  44. package/dist/cjs/filters/adapters/UIToFlatUI.js +5 -12
  45. package/dist/cjs/filters/adapters/UIToOldLogic.js +9 -1
  46. package/dist/cjs/filters/adapters/adaptFilterData.js +1 -1
  47. package/dist/cjs/filters/adapters/flatUIToFD.js +3 -7
  48. package/dist/cjs/filters/adapters/flatUIToOldLogic.js +41 -62
  49. package/dist/cjs/filters/adapters/flatUIToUI.js +2 -7
  50. package/dist/cjs/filters/adapters/logicToFlatUI.js +89 -74
  51. package/dist/cjs/filters/adapters/transformFilters.d.ts +1 -1
  52. package/dist/cjs/filters/adapters/transformFilters.js +18 -25
  53. package/dist/cjs/filters/constants/backend/FILTER_BACKEND_VALIDATOR.js +0 -1
  54. package/dist/cjs/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.d.ts +2 -0
  55. package/dist/cjs/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.js +4 -0
  56. package/dist/cjs/filters/constants/common/FILTER_OPERATOR.js +0 -1
  57. package/dist/cjs/filters/constants/common/FILTER_VALIDATOR.js +0 -1
  58. package/dist/cjs/filters/constants/common/index.d.ts +1 -0
  59. package/dist/cjs/filters/constants/common/index.js +1 -0
  60. package/dist/cjs/filters/helpers/backend/buildExpression.d.ts +6 -0
  61. package/dist/cjs/filters/helpers/backend/buildExpression.js +9 -2
  62. package/dist/cjs/filters/helpers/backend/getBackendGroupValue.js +2 -1
  63. package/dist/cjs/filters/helpers/backend/getBackendProperty.js +7 -2
  64. package/dist/cjs/filters/helpers/backend/getBackendValues.js +34 -18
  65. package/dist/cjs/filters/helpers/common/arePropertiesDateP.d.ts +8 -0
  66. package/dist/cjs/filters/helpers/common/arePropertiesDateP.js +16 -0
  67. package/dist/cjs/filters/helpers/common/getFilterColumnLabel.js +1 -1
  68. package/dist/cjs/filters/helpers/common/getFilterid.js +1 -1
  69. package/dist/cjs/filters/helpers/common/getFiltersByParams.js +5 -5
  70. package/dist/cjs/filters/helpers/common/getFiltersByVisibility.js +1 -1
  71. package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.d.ts +7 -0
  72. package/dist/cjs/filters/helpers/common/getMergeFiltersSettings.js +16 -0
  73. package/dist/cjs/filters/helpers/common/getParamsToGetFilterSettings.d.ts +5 -0
  74. package/dist/cjs/filters/helpers/common/getParamsToGetFilterSettings.js +11 -1
  75. package/dist/cjs/filters/helpers/common/index.d.ts +2 -0
  76. package/dist/cjs/filters/helpers/common/index.js +2 -0
  77. package/dist/cjs/filters/helpers/common/mergeFilters.d.ts +2 -1
  78. package/dist/cjs/filters/helpers/common/mergeFilters.js +27 -10
  79. package/dist/cjs/filters/helpers/common/resolveDatasetConditions.js +1 -1
  80. package/dist/cjs/filters/helpers/common/resolveFilterConditions.js +2 -3
  81. package/dist/cjs/filters/helpers/common/resolveScopeConditions.js +1 -1
  82. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.d.ts +1 -1
  83. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +18 -19
  84. package/dist/cjs/filters/helpers/getScopesByHierarchy.js +2 -2
  85. package/dist/cjs/filters/helpers/ui/excludeUIFlatFiltersByScopes.d.ts +1 -1
  86. package/dist/cjs/filters/helpers/ui/excludeUIFlatFiltersByScopes.js +1 -1
  87. package/dist/cjs/filters/helpers/ui/getUIFlatFilterByParams.d.ts +1 -1
  88. package/dist/cjs/filters/helpers/ui/getUIFlatFilterByParams.js +1 -1
  89. package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByParams.d.ts +1 -1
  90. package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByParams.js +1 -1
  91. package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByScopes.d.ts +1 -1
  92. package/dist/cjs/filters/helpers/ui/getUIFlatFiltersByScopes.js +1 -1
  93. package/dist/cjs/filters/helpers/ui/getUIValues.js +6 -5
  94. package/dist/cjs/filters/interfaces/OLD_IFilterDetail.d.ts +3 -0
  95. package/dist/cjs/filters/interfaces/common/IFSFilterExtras.d.ts +3 -0
  96. package/dist/cjs/filters/interfaces/common/IFSFilterExtrasInfo.d.ts +4 -0
  97. package/dist/cjs/filters/interfaces/common/IFSFilterExtrasInfo.js +2 -0
  98. package/dist/cjs/filters/interfaces/common/IFSMergeFiltersSettings.d.ts +7 -0
  99. package/dist/cjs/filters/interfaces/common/IFSMergeFiltersSettings.js +2 -0
  100. package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilter.d.ts +2 -1
  101. package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilterEnableds.d.ts +9 -0
  102. package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilterEnableds.js +2 -0
  103. package/dist/cjs/filters/interfaces/common/IFSParamsToGetFilterSettings.d.ts +5 -0
  104. package/dist/cjs/filters/interfaces/common/index.d.ts +3 -0
  105. package/dist/cjs/filters/interfaces/common/index.js +3 -0
  106. package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelBodyScopeScope.d.ts +1 -0
  107. package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelHeader.d.ts +1 -0
  108. package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelSettings.d.ts +4 -0
  109. package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.d.ts +7 -0
  110. package/dist/cjs/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.js +2 -0
  111. package/dist/cjs/filters/interfaces/panel/index.d.ts +1 -0
  112. package/dist/cjs/filters/interfaces/panel/index.js +1 -0
  113. package/dist/cjs/format/definition.d.ts +3 -2
  114. package/dist/cjs/format/format.d.ts +1 -1
  115. package/dist/cjs/format/format.js +25 -26
  116. package/dist/cjs/general/array/delete.d.ts +4 -4
  117. package/dist/cjs/general/array/delete.js +8 -6
  118. package/dist/cjs/general/array/filterNestedTree.js +1 -1
  119. package/dist/cjs/general/array/flattenDeep.d.ts +1 -1
  120. package/dist/cjs/general/array/flattenDeep.js +4 -2
  121. package/dist/cjs/general/array/getFirstIndexFromArray.d.ts +1 -1
  122. package/dist/cjs/general/array/getFirstIndexFromArray.js +7 -5
  123. package/dist/cjs/general/array/getLastIndexFromArray.d.ts +1 -1
  124. package/dist/cjs/general/array/getLastIndexFromArray.js +6 -4
  125. package/dist/cjs/general/function/debounce.d.ts +1 -1
  126. package/dist/cjs/general/function/throttled.d.ts +1 -1
  127. package/dist/cjs/general/function/throttled.js +1 -1
  128. package/dist/cjs/general/mix/importScripts.d.ts +1 -1
  129. package/dist/cjs/general/mix/isEmpty.d.ts +5 -4
  130. package/dist/cjs/general/mix/isEmpty.js +12 -6
  131. package/dist/cjs/general/mix/randomId.d.ts +1 -1
  132. package/dist/cjs/general/mix/randomId.js +1 -2
  133. package/dist/cjs/general/mix/size.d.ts +1 -1
  134. package/dist/cjs/general/object/cloneDeep.d.ts +4 -4
  135. package/dist/cjs/general/object/cloneDeep.js +14 -6
  136. package/dist/cjs/general/object/get.d.ts +47 -15
  137. package/dist/cjs/general/object/get.js +61 -37
  138. package/dist/cjs/general/object/getAttribute.d.ts +1 -1
  139. package/dist/cjs/general/object/hasProperty.d.ts +1 -1
  140. package/dist/cjs/general/object/hasProperty.js +1 -1
  141. package/dist/cjs/general/object/index.d.ts +1 -0
  142. package/dist/cjs/general/object/index.js +1 -0
  143. package/dist/cjs/general/object/isObject.d.ts +6 -0
  144. package/dist/cjs/general/object/isObject.js +12 -0
  145. package/dist/cjs/general/object/mapValues.d.ts +1 -1
  146. package/dist/cjs/general/object/mapValues.js +0 -1
  147. package/dist/cjs/general/object/omit.js +1 -1
  148. package/dist/cjs/general/object/pick.js +0 -1
  149. package/dist/cjs/index.d.ts +2 -0
  150. package/dist/cjs/index.js +2 -0
  151. package/dist/cjs/qrvey/getColumnsLabel.js +4 -4
  152. package/dist/cjs/qrvey/index.d.ts +3 -0
  153. package/dist/cjs/qrvey/index.js +15 -0
  154. package/dist/cjs/tokens/index.d.ts +1 -0
  155. package/dist/cjs/tokens/index.js +13 -0
  156. package/dist/cjs/tokens/isTokenLabel.d.ts +6 -0
  157. package/dist/cjs/tokens/isTokenLabel.js +16 -0
  158. package/dist/constants/COLUMN.js +0 -1
  159. package/dist/constants/COLUMN_PROPERTY.d.ts +6 -0
  160. package/dist/constants/COLUMN_PROPERTY.js +0 -1
  161. package/dist/constants/COLUMN_PROPERTY_VALUE.js +4 -1
  162. package/dist/date/constants/DATE_DAY_HOURS.d.ts +1 -0
  163. package/dist/date/constants/DATE_DAY_HOURS.js +26 -0
  164. package/dist/date/constants/DATE_HOUR_MINUTES.d.ts +1 -0
  165. package/dist/date/constants/DATE_HOUR_MINUTES.js +62 -0
  166. package/dist/date/constants/DATE_MINUTE_SECONDS.d.ts +1 -0
  167. package/dist/date/constants/DATE_MINUTE_SECONDS.js +2 -0
  168. package/dist/date/constants/DATE_MONTH_DAYS.d.ts +1 -0
  169. package/dist/date/constants/DATE_MONTH_DAYS.js +33 -0
  170. package/dist/date/constants/DATE_PROPERTY.js +0 -1
  171. package/dist/date/constants/DATE_PROPERTY_VALUE.d.ts +8 -0
  172. package/dist/date/constants/DATE_PROPERTY_VALUE.js +14 -0
  173. package/dist/date/constants/DATE_P_PROPERTIES.d.ts +2 -0
  174. package/dist/date/constants/DATE_P_PROPERTIES.js +8 -0
  175. package/dist/date/constants/DATE_P_VALUES.d.ts +6 -0
  176. package/dist/date/constants/DATE_P_VALUES.js +5 -0
  177. package/dist/date/constants/DATE_TIME_P_VALUES.d.ts +6 -0
  178. package/dist/date/constants/DATE_TIME_P_VALUES.js +5 -0
  179. package/dist/date/constants/DATE_TIME_VALUES.js +1 -1
  180. package/dist/date/constants/DATE_WEEK_DAYS.d.ts +1 -0
  181. package/dist/date/constants/DATE_WEEK_DAYS.js +3 -0
  182. package/dist/date/constants/DATE_YEAR_DAYS.d.ts +1 -0
  183. package/dist/date/constants/DATE_YEAR_DAYS.js +367 -0
  184. package/dist/date/constants/DATE_YEAR_MONTHS.d.ts +1 -0
  185. package/dist/date/constants/DATE_YEAR_MONTHS.js +1 -0
  186. package/dist/date/constants/DATE_YEAR_QUARTERS.d.ts +1 -0
  187. package/dist/date/constants/DATE_YEAR_QUARTERS.js +1 -0
  188. package/dist/date/constants/index.d.ts +12 -0
  189. package/dist/date/constants/index.js +12 -0
  190. package/dist/date/range/getDateRange.js +26 -21
  191. package/dist/date/relative/Adapter.js +2 -2
  192. package/dist/date/relative/constants/DATE_FORMATS.d.ts +1 -1
  193. package/dist/date/relative/constants/DATE_FORMATS.js +3 -3
  194. package/dist/date/relative/helpers/formatStatement.js +7 -7
  195. package/dist/filters/adapters/FDToFlatUI.js +5 -12
  196. package/dist/filters/adapters/FDToUI.js +2 -3
  197. package/dist/filters/adapters/UIToFlatUI.js +5 -12
  198. package/dist/filters/adapters/UIToOldLogic.js +9 -1
  199. package/dist/filters/adapters/adaptFilterData.js +1 -1
  200. package/dist/filters/adapters/flatUIToFD.js +3 -7
  201. package/dist/filters/adapters/flatUIToOldLogic.js +42 -63
  202. package/dist/filters/adapters/flatUIToUI.js +3 -8
  203. package/dist/filters/adapters/logicToFlatUI.js +91 -76
  204. package/dist/filters/adapters/transformFilters.d.ts +1 -1
  205. package/dist/filters/adapters/transformFilters.js +19 -26
  206. package/dist/filters/constants/backend/FILTER_BACKEND_VALIDATOR.js +0 -1
  207. package/dist/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.d.ts +2 -0
  208. package/dist/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.js +1 -0
  209. package/dist/filters/constants/common/FILTER_OPERATOR.js +0 -1
  210. package/dist/filters/constants/common/FILTER_VALIDATOR.js +0 -1
  211. package/dist/filters/constants/common/index.d.ts +1 -0
  212. package/dist/filters/constants/common/index.js +1 -0
  213. package/dist/filters/helpers/backend/buildExpression.d.ts +6 -0
  214. package/dist/filters/helpers/backend/buildExpression.js +9 -2
  215. package/dist/filters/helpers/backend/getBackendGroupValue.js +2 -1
  216. package/dist/filters/helpers/backend/getBackendProperty.js +8 -3
  217. package/dist/filters/helpers/backend/getBackendValues.js +34 -18
  218. package/dist/filters/helpers/common/arePropertiesDateP.d.ts +8 -0
  219. package/dist/filters/helpers/common/arePropertiesDateP.js +12 -0
  220. package/dist/filters/helpers/common/getFilterColumnLabel.js +1 -1
  221. package/dist/filters/helpers/common/getFilterid.js +1 -1
  222. package/dist/filters/helpers/common/getFiltersByParams.js +6 -6
  223. package/dist/filters/helpers/common/getFiltersByVisibility.js +1 -1
  224. package/dist/filters/helpers/common/getMergeFiltersSettings.d.ts +7 -0
  225. package/dist/filters/helpers/common/getMergeFiltersSettings.js +12 -0
  226. package/dist/filters/helpers/common/getParamsToGetFilterSettings.d.ts +5 -0
  227. package/dist/filters/helpers/common/getParamsToGetFilterSettings.js +11 -1
  228. package/dist/filters/helpers/common/index.d.ts +2 -0
  229. package/dist/filters/helpers/common/index.js +2 -0
  230. package/dist/filters/helpers/common/mergeFilters.d.ts +2 -1
  231. package/dist/filters/helpers/common/mergeFilters.js +27 -10
  232. package/dist/filters/helpers/common/resolveDatasetConditions.js +1 -1
  233. package/dist/filters/helpers/common/resolveFilterConditions.js +2 -3
  234. package/dist/filters/helpers/common/resolveScopeConditions.js +1 -1
  235. package/dist/filters/helpers/getAggFiltersFromFilterData.d.ts +1 -1
  236. package/dist/filters/helpers/getAggFiltersFromFilterData.js +18 -19
  237. package/dist/filters/helpers/getScopesByHierarchy.js +2 -2
  238. package/dist/filters/helpers/ui/excludeUIFlatFiltersByScopes.d.ts +1 -1
  239. package/dist/filters/helpers/ui/excludeUIFlatFiltersByScopes.js +1 -1
  240. package/dist/filters/helpers/ui/getUIFlatFilterByParams.d.ts +1 -1
  241. package/dist/filters/helpers/ui/getUIFlatFilterByParams.js +1 -1
  242. package/dist/filters/helpers/ui/getUIFlatFiltersByParams.d.ts +1 -1
  243. package/dist/filters/helpers/ui/getUIFlatFiltersByParams.js +1 -1
  244. package/dist/filters/helpers/ui/getUIFlatFiltersByScopes.d.ts +1 -1
  245. package/dist/filters/helpers/ui/getUIFlatFiltersByScopes.js +1 -1
  246. package/dist/filters/helpers/ui/getUIValues.js +6 -5
  247. package/dist/filters/interfaces/OLD_IFilterDetail.d.ts +3 -0
  248. package/dist/filters/interfaces/common/IFSFilterExtras.d.ts +3 -0
  249. package/dist/filters/interfaces/common/IFSFilterExtrasInfo.d.ts +4 -0
  250. package/dist/filters/interfaces/common/IFSFilterExtrasInfo.js +1 -0
  251. package/dist/filters/interfaces/common/IFSMergeFiltersSettings.d.ts +7 -0
  252. package/dist/filters/interfaces/common/IFSMergeFiltersSettings.js +1 -0
  253. package/dist/filters/interfaces/common/IFSParamsToGetFilter.d.ts +2 -1
  254. package/dist/filters/interfaces/common/IFSParamsToGetFilterEnableds.d.ts +9 -0
  255. package/dist/filters/interfaces/common/IFSParamsToGetFilterEnableds.js +1 -0
  256. package/dist/filters/interfaces/common/IFSParamsToGetFilterSettings.d.ts +5 -0
  257. package/dist/filters/interfaces/common/index.d.ts +3 -0
  258. package/dist/filters/interfaces/common/index.js +3 -0
  259. package/dist/filters/interfaces/panel/IFPSettingsFilterPanelBodyScopeScope.d.ts +1 -0
  260. package/dist/filters/interfaces/panel/IFPSettingsFilterPanelHeader.d.ts +1 -0
  261. package/dist/filters/interfaces/panel/IFPSettingsFilterPanelSettings.d.ts +4 -0
  262. package/dist/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.d.ts +7 -0
  263. package/dist/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.js +1 -0
  264. package/dist/filters/interfaces/panel/index.d.ts +1 -0
  265. package/dist/filters/interfaces/panel/index.js +1 -0
  266. package/dist/format/definition.d.ts +3 -2
  267. package/dist/format/format.d.ts +1 -1
  268. package/dist/format/format.js +12 -13
  269. package/dist/general/array/delete.d.ts +4 -4
  270. package/dist/general/array/delete.js +8 -6
  271. package/dist/general/array/filterNestedTree.js +1 -1
  272. package/dist/general/array/flattenDeep.d.ts +1 -1
  273. package/dist/general/array/flattenDeep.js +4 -2
  274. package/dist/general/array/getFirstIndexFromArray.d.ts +1 -1
  275. package/dist/general/array/getFirstIndexFromArray.js +7 -5
  276. package/dist/general/array/getLastIndexFromArray.d.ts +1 -1
  277. package/dist/general/array/getLastIndexFromArray.js +6 -4
  278. package/dist/general/function/debounce.d.ts +1 -1
  279. package/dist/general/function/throttled.d.ts +1 -1
  280. package/dist/general/function/throttled.js +1 -1
  281. package/dist/general/mix/importScripts.d.ts +1 -1
  282. package/dist/general/mix/isEmpty.d.ts +5 -4
  283. package/dist/general/mix/isEmpty.js +12 -6
  284. package/dist/general/mix/randomId.d.ts +1 -1
  285. package/dist/general/mix/randomId.js +1 -2
  286. package/dist/general/mix/size.d.ts +1 -1
  287. package/dist/general/object/cloneDeep.d.ts +4 -4
  288. package/dist/general/object/cloneDeep.js +14 -6
  289. package/dist/general/object/get.d.ts +47 -15
  290. package/dist/general/object/get.js +59 -34
  291. package/dist/general/object/getAttribute.d.ts +1 -1
  292. package/dist/general/object/hasProperty.d.ts +1 -1
  293. package/dist/general/object/hasProperty.js +1 -1
  294. package/dist/general/object/index.d.ts +1 -0
  295. package/dist/general/object/index.js +1 -0
  296. package/dist/general/object/isObject.d.ts +6 -0
  297. package/dist/general/object/isObject.js +8 -0
  298. package/dist/general/object/mapValues.d.ts +1 -1
  299. package/dist/general/object/mapValues.js +0 -1
  300. package/dist/general/object/omit.js +1 -1
  301. package/dist/general/object/pick.js +0 -1
  302. package/dist/index.d.ts +2 -0
  303. package/dist/index.js +2 -0
  304. package/dist/qrvey/getColumnsLabel.js +5 -5
  305. package/dist/qrvey/index.d.ts +3 -0
  306. package/dist/qrvey/index.js +3 -0
  307. package/dist/tokens/index.d.ts +1 -0
  308. package/dist/tokens/index.js +1 -0
  309. package/dist/tokens/isTokenLabel.d.ts +6 -0
  310. package/dist/tokens/isTokenLabel.js +12 -0
  311. package/package.json +17 -10
  312. package/prepareToPublish.js +52 -0
  313. package/src/constants/COLUMN.ts +1 -1
  314. package/src/constants/COLUMN_PROPERTY.ts +13 -2
  315. package/src/constants/COLUMN_PROPERTY_VALUE.ts +6 -1
  316. package/src/date/constants/DATE_DAY_HOURS.ts +27 -0
  317. package/src/date/constants/DATE_HOUR_MINUTES.ts +63 -0
  318. package/src/date/constants/DATE_MINUTE_SECONDS.ts +3 -0
  319. package/src/date/constants/DATE_MONTH_DAYS.ts +34 -0
  320. package/src/date/constants/DATE_PROPERTY.ts +1 -1
  321. package/src/date/constants/DATE_PROPERTY_VALUE.ts +16 -0
  322. package/src/date/constants/DATE_P_PROPERTIES.ts +10 -0
  323. package/src/date/constants/DATE_P_VALUES.ts +7 -0
  324. package/src/date/constants/DATE_TIME_PROPERTIES.ts +0 -1
  325. package/src/date/constants/DATE_TIME_P_VALUES.ts +7 -0
  326. package/src/date/constants/DATE_TIME_VALUES.ts +1 -1
  327. package/src/date/constants/DATE_WEEK_DAYS.ts +4 -0
  328. package/src/date/constants/DATE_YEAR_DAYS.ts +368 -0
  329. package/src/date/constants/DATE_YEAR_MONTHS.ts +2 -0
  330. package/src/date/constants/DATE_YEAR_QUARTERS.ts +1 -0
  331. package/src/date/constants/index.ts +12 -0
  332. package/src/date/range/getDateRange.ts +46 -42
  333. package/src/date/relative/Adapter.ts +2 -2
  334. package/src/date/relative/constants/DATE_FORMATS.ts +3 -4
  335. package/src/date/relative/constants/RELATIVE_CURSOR_VALUE.ts +1 -1
  336. package/src/date/relative/helpers/formatStatement.ts +8 -8
  337. package/src/date/relative/index.ts +1 -1
  338. package/src/filters/adapters/FDToFlatUI.ts +7 -3
  339. package/src/filters/adapters/FDToUI.ts +5 -6
  340. package/src/filters/adapters/UIToFD.ts +1 -1
  341. package/src/filters/adapters/UIToFlatUI.ts +9 -5
  342. package/src/filters/adapters/UIToOldLogic.ts +11 -3
  343. package/src/filters/adapters/adaptFilterData.ts +1 -1
  344. package/src/filters/adapters/flatUIToFD.ts +5 -1
  345. package/src/filters/adapters/flatUIToOldLogic.ts +57 -71
  346. package/src/filters/adapters/flatUIToUI.ts +4 -1
  347. package/src/filters/adapters/logicToFlatUI.ts +101 -77
  348. package/src/filters/adapters/transformFilters.ts +22 -30
  349. package/src/filters/constants/backend/FILTER_BACKEND_VALIDATOR.ts +1 -1
  350. package/src/filters/constants/common/FILTER_GROUPED_COLUMN_OPERATOR.ts +3 -0
  351. package/src/filters/constants/common/FILTER_OPERATOR.ts +1 -1
  352. package/src/filters/constants/common/FILTER_VALIDATOR.ts +1 -1
  353. package/src/filters/constants/common/index.ts +1 -0
  354. package/src/filters/helpers/backend/buildExpression.ts +11 -3
  355. package/src/filters/helpers/backend/buildFilters.ts +2 -2
  356. package/src/filters/helpers/backend/getBackendGroupValue.ts +2 -1
  357. package/src/filters/helpers/backend/getBackendProperty.ts +6 -3
  358. package/src/filters/helpers/backend/getBackendValues.ts +27 -23
  359. package/src/filters/helpers/builder/getFilterBuilderGeneralConfig.ts +1 -1
  360. package/src/filters/helpers/common/areFiltersEquals.ts +1 -1
  361. package/src/filters/helpers/common/arePropertiesDateP.ts +14 -0
  362. package/src/filters/helpers/common/excludeFiltersByParams.ts +1 -1
  363. package/src/filters/helpers/common/getFilterColumnLabel.ts +1 -1
  364. package/src/filters/helpers/common/getFilterLabel.ts +1 -1
  365. package/src/filters/helpers/common/getFilterid.ts +1 -1
  366. package/src/filters/helpers/common/getFiltersByAggregateColumn.ts +1 -1
  367. package/src/filters/helpers/common/getFiltersByParams.ts +6 -7
  368. package/src/filters/helpers/common/getFiltersByVisibility.ts +1 -1
  369. package/src/filters/helpers/common/getMergeFiltersSettings.ts +13 -0
  370. package/src/filters/helpers/common/getParamsToGetFilterSettings.ts +11 -1
  371. package/src/filters/helpers/common/index.ts +2 -0
  372. package/src/filters/helpers/common/isInValidator.ts +1 -1
  373. package/src/filters/helpers/common/mergeFilters.ts +30 -17
  374. package/src/filters/helpers/common/resolveDatasetConditions.ts +1 -1
  375. package/src/filters/helpers/common/resolveFilterConditions.ts +2 -3
  376. package/src/filters/helpers/common/resolveScopeConditions.ts +1 -1
  377. package/src/filters/helpers/getAggFiltersFromFilterData.ts +20 -23
  378. package/src/filters/helpers/getAvailableScopesIDsByConfig.ts +1 -1
  379. package/src/filters/helpers/getScopesByHierarchy.ts +2 -2
  380. package/src/filters/helpers/ui/excludeUIFlatFiltersByScopes.ts +2 -2
  381. package/src/filters/helpers/ui/getUIFlatFilterByParams.ts +1 -1
  382. package/src/filters/helpers/ui/getUIFlatFiltersByParams.ts +1 -1
  383. package/src/filters/helpers/ui/getUIFlatFiltersByScopes.ts +1 -1
  384. package/src/filters/helpers/ui/getUIValues.ts +9 -9
  385. package/src/filters/helpers/ui/resolveUIFlatFiltersByParams.ts +1 -1
  386. package/src/filters/interfaces/OLD_IFilterDetail.ts +4 -0
  387. package/src/filters/interfaces/backend/IFBExpression.ts +1 -1
  388. package/src/filters/interfaces/common/IFSFilterExtras.ts +4 -0
  389. package/src/filters/interfaces/common/IFSFilterExtrasInfo.ts +5 -0
  390. package/src/filters/interfaces/common/IFSMergeFiltersSettings.ts +8 -0
  391. package/src/filters/interfaces/common/IFSParamsToGetFilter.ts +2 -1
  392. package/src/filters/interfaces/common/IFSParamsToGetFilterEnableds.ts +9 -0
  393. package/src/filters/interfaces/common/IFSParamsToGetFilterSettings.ts +5 -0
  394. package/src/filters/interfaces/common/index.ts +3 -0
  395. package/src/filters/interfaces/panel/IFPSettingsFilterPanelBodyScopeScope.ts +1 -0
  396. package/src/filters/interfaces/panel/IFPSettingsFilterPanelHeader.ts +1 -0
  397. package/src/filters/interfaces/panel/IFPSettingsFilterPanelSettings.ts +4 -0
  398. package/src/filters/interfaces/panel/IFPSettingsFilterPanelSettingsScope.ts +7 -0
  399. package/src/filters/interfaces/panel/IFilterPanelConfig.ts +0 -2
  400. package/src/filters/interfaces/panel/index.ts +1 -0
  401. package/src/filters/interfaces/ui/IFUFilterExtras.ts +1 -1
  402. package/src/format/definition.ts +7 -8
  403. package/src/format/format.ts +19 -22
  404. package/src/general/array/delete.ts +10 -6
  405. package/src/general/array/filterNestedTree.ts +1 -1
  406. package/src/general/array/flattenDeep.ts +3 -2
  407. package/src/general/array/getFirstIndexFromArray.ts +8 -6
  408. package/src/general/array/getLastIndexFromArray.ts +7 -5
  409. package/src/general/function/debounce.ts +2 -2
  410. package/src/general/function/throttled.ts +3 -3
  411. package/src/general/mix/importScripts.ts +1 -1
  412. package/src/general/mix/isEmpty.ts +12 -7
  413. package/src/general/mix/isNull.ts +2 -2
  414. package/src/general/mix/randomId.ts +2 -2
  415. package/src/general/mix/size.ts +1 -1
  416. package/src/general/object/cloneDeep.ts +15 -6
  417. package/src/general/object/get.ts +59 -31
  418. package/src/general/object/getAttribute.ts +1 -1
  419. package/src/general/object/hasProperty.ts +1 -1
  420. package/src/general/object/index.ts +3 -2
  421. package/src/general/object/isObject.ts +8 -0
  422. package/src/general/object/mapValues.ts +2 -2
  423. package/src/general/object/omit.ts +2 -2
  424. package/src/general/object/pick.ts +1 -1
  425. package/src/general/string/capitalize.ts +1 -1
  426. package/src/index.ts +3 -1
  427. package/src/qrvey/getColumnsLabel.ts +5 -5
  428. package/src/qrvey/index.ts +3 -0
  429. package/src/qrvey/isComplexColumn.ts +1 -1
  430. package/src/qrvey/isDateColumn.ts +1 -1
  431. package/src/stencil/decorators/Config.ts +2 -2
  432. package/src/tokens/index.ts +1 -0
  433. package/src/tokens/isTokenLabel.ts +13 -0
  434. package/src/typescript/decorators/Debounce.ts +2 -2
  435. package/src/typescript/decorators/Throttled.ts +2 -2
  436. package/test/format.test.js +97 -5
  437. package/test/general/array/delete.test.js +64 -0
  438. package/test/general/array/flattenDeep.test.js +44 -0
  439. package/test/general/array/getFirstIndexFromArray.test.js +56 -0
  440. package/test/general/array/getLastIndexFromArray.test.js +56 -0
  441. package/test/general/mix/isEmpty.test.js +144 -0
  442. package/test/general/object/cloneDeep.test.js +152 -0
  443. package/test/general/object/get.test.js +247 -0
  444. package/test/relative.test.js +24 -24
@@ -1,5 +1,5 @@
1
- import { capitalize } from '../../general/index';
2
- import { get } from '../../general/object/get';
1
+ import { capitalize, _get } from '../../general/index';
2
+ import { isTokenLabel } from '../../tokens/isTokenLabel';
3
3
  import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE, FILTER_SECTION, FILTER_VALIDATOR } from '../constants/index';
4
4
 
5
5
 
@@ -58,7 +58,7 @@ import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE, FILTER_SECTION, FILTER_VALIDATO
58
58
  *
59
59
  * const filterData = transformFilters(oldPreferenceFilters, 'ANALYZE');
60
60
  */
61
- export function transformFilters(oldFiltersObj: object = {}, section: string = FILTER_SECTION.ANYWHERE) {
61
+ export function transformFilters(oldFiltersObj = {}, section: string = FILTER_SECTION.ANYWHERE) {
62
62
  const filterData = { enabled: true, logic: [], section };
63
63
  const tempScopes = {};
64
64
  Object.keys(oldFiltersObj).forEach(key => {
@@ -113,7 +113,7 @@ export function transformFilters(oldFiltersObj: object = {}, section: string = F
113
113
 
114
114
  function validateComplexTypes(oldFiltersItem, validations) {
115
115
  if (!['IMAGEUPLOAD', 'TEXTFIELD', 'LONGTEXT', 'NAME', 'ADDRESS', 'USADDRESS'].includes(oldFiltersItem.type)) return oldFiltersItem;
116
- const complexFiltersItem = { ...oldFiltersItem, values: [{}] }
116
+ const complexFiltersItem = { ...oldFiltersItem, values: [{}] };
117
117
  validations.forEach(valKey => {
118
118
  oldFiltersItem.values[0][valKey].forEach(value => {
119
119
  const newKey = `${valKey}|${(value.targetFilter || value.property || '').toLowerCase().replace('_text', '').replace('_type', 'type')}`;
@@ -218,14 +218,14 @@ function getValidator(oldValidation: string) {
218
218
 
219
219
  function getProperty(filterObjItem: any, validationKey: string) {
220
220
  if (filterObjItem.type === 'IMAGE') return 'answer_id';
221
- const value = get(filterObjItem, `values[0]['${validationKey}'][0]`, {});
221
+ const value = _get(filterObjItem, `values[0]['${validationKey}'][0]`, {});
222
222
  const property = filterObjItem.property || value.property || value.targetFilter;
223
223
  return property && property.toUpperCase();
224
224
  }
225
225
 
226
226
  function getDateProperty(validationKey, columnType: string, formulaType?: string) {
227
227
  if (![columnType, formulaType].includes('DATE')) return;
228
- return (['MONTH_YEAR', 'YEAR', 'QUARTER', 'WEEK', 'HOUR', 'MINUTE', 'SECOND'].includes(validationKey)) ? validationKey.split('_')[0].toLowerCase() : 'day';
228
+ return ['MONTH_YEAR', 'YEAR', 'QUARTER', 'WEEK', 'HOUR', 'MINUTE', 'SECOND'].includes(validationKey) ? validationKey.split('_')[0].toLowerCase() : 'day';
229
229
  }
230
230
 
231
231
  function getFilterRangeValue(range, minProp = 'min', maxProp = 'max', extras = {}) {
@@ -262,29 +262,31 @@ function getValues(values, columnType, oldValidation = 'EQUAL', destination = 'v
262
262
  case 'BETWEEN':
263
263
  case 'YEAR':
264
264
  case 'MONTH_YEAR':
265
- return (destination === 'value')
265
+ return destination === 'value'
266
266
  ? values.map(val => getFilterRangeValue(val.value.range || val.value, 'gte', 'lte'))
267
- : (destination === 'uiValue')
267
+ : destination === 'uiValue'
268
268
  ? values.map(val => getFilterRangeValue(val.value.range || val.value, 'min', 'max', { enabled: val.enabled, value: getUiRangeValue(val.value), validationLabel: oldValidation }))
269
269
  : ['YEAR', 'MONTH_YEAR', 'QUARTER'].includes(oldValidation)
270
270
  ? values.map(item => ({ value: getUiRangeValue(item.value) }))
271
271
  : values.map(val => getFilterRangeValue(val.value.range || val.value));
272
272
  case 'LESS_THAN':
273
- case 'GREATER_THAN':
274
- const prop = oldValidation === 'LESS_THAN' ? 'lte' : 'gte'
275
- return (destination === 'value')
273
+ case 'GREATER_THAN': {
274
+ const prop = oldValidation === 'LESS_THAN' ? 'lte' : 'gte';
275
+ return destination === 'value'
276
276
  ? values.map(val => getFilterRangeValue({ [prop]: val.value }, 'gte', 'lte'))
277
- : (destination === 'uiValue')
277
+ : destination === 'uiValue'
278
278
  ? values.map(val => getFilterRangeValue({ [prop]: val.value }, 'min', 'max', { enabled: val.enabled, value: val.value }))
279
279
  : values.map(val => getFilterRangeValue({ [prop]: val.value }));
280
+ }
280
281
  case 'IS_EMPTY':
281
- case 'IS_NOT_EMPTY':
282
+ case 'IS_NOT_EMPTY': {
282
283
  const valueClean = getValidator(oldValidation).toLowerCase().split('_').map(v => capitalize(v)).join(' ');
283
- return (destination === 'value')
284
+ return destination === 'value'
284
285
  ? [valueClean]
285
- : (destination === 'uiValue')
286
+ : destination === 'uiValue'
286
287
  ? values.map(val => ({ value: valueClean, enabled: val.enabled }))
287
288
  : [];
289
+ }
288
290
  default:
289
291
  return getFilterEqualValues(values, columnType, destination, formulaType);
290
292
  }
@@ -292,16 +294,16 @@ function getValues(values, columnType, oldValidation = 'EQUAL', destination = 'v
292
294
 
293
295
  function getFilterEqualValues(values, columnType, destination = 'value', formulaType?: string) {
294
296
  if (columnType === 'RANKING') {
295
- return (destination === 'value')
297
+ return destination === 'value'
296
298
  ? values.map(item => ({ position: +item.position, value: item.value }))
297
- : (destination === 'uiValue')
299
+ : destination === 'uiValue'
298
300
  ? values.map(item => ({ value: getUiRangeValue({ from: item.value, to: +item.position + 1 }), enabled: true }))
299
301
  : getRankingFBvalues(values);
300
302
  }
301
- const formattedValues = (destination === 'value')
303
+ const formattedValues = destination === 'value'
302
304
  ? values.map(item => {
303
305
  let value = item.value;
304
- if ([columnType, formulaType].includes('DATE') && !isTokenBoxLabel(value)) {
306
+ if ([columnType, formulaType].includes('DATE') && !isTokenLabel(value)) {
305
307
  value = getFilterRangeValue(item.value.range || item.value, 'gte', 'lte');
306
308
  } else if (columnType === 'YES_NO') {
307
309
  value = item.value.toLowerCase();
@@ -312,7 +314,7 @@ function getFilterEqualValues(values, columnType, destination = 'value', formula
312
314
  }
313
315
  return value;
314
316
  })
315
- : values.map(item => ({ value: columnType === 'YES_NO' ? item.value.toLowerCase() : ([columnType, formulaType].includes('DATE') ? item.value.label || item.value : String(item.value)), valueid: columnType === 'EXPRESSION' ? undefined : item.id || item.answerid, enabled: item.enabled || true }));
317
+ : values.map(item => ({ value: columnType === 'YES_NO' ? item.value.toLowerCase() : [columnType, formulaType].includes('DATE') ? item.value.label || item.value : String(item.value), valueid: columnType === 'EXPRESSION' ? undefined : item.id || item.answerid, enabled: item.enabled || true }));
316
318
  return formattedValues;
317
319
  }
318
320
 
@@ -378,13 +380,3 @@ function getExpressions(oldFiltersItem, validations, scopeLabel, scopeid, sectio
378
380
  });
379
381
  return expressions;
380
382
  }
381
-
382
- /**
383
- * Get a text and evaluate if it matchs with a token box label.
384
- * @param label string to evaluate
385
- * @return True is label matchs; otherwise false
386
- */
387
- function isTokenBoxLabel(label: string): boolean {
388
- const regex = new RegExp('^(\{\{)([^{}]+)(\}\})$', 'gi');
389
- return regex.test(label);
390
- }
@@ -18,4 +18,4 @@ export const enum FILTER_BACKEND_VALIDATOR {
18
18
  NOT_RANGE = 'NOT_RANGE',
19
19
  IN = 'IN',
20
20
  RELATIVE = 'RELATIVE'
21
- };
21
+ }
@@ -0,0 +1,3 @@
1
+ import { FILTER_OPERATOR } from "./FILTER_OPERATOR";
2
+
3
+ export const FILTER_GROUPED_COLUMN_OPERATOR = FILTER_OPERATOR.OR;
@@ -1,4 +1,4 @@
1
1
  export const enum FILTER_OPERATOR {
2
2
  AND = 'AND',
3
3
  OR = 'OR'
4
- };
4
+ }
@@ -20,4 +20,4 @@ export const enum FILTER_VALIDATOR {
20
20
  BEFORE_ON = 'BEFORE_ON',
21
21
  AFTER_ON = 'AFTER_ON',
22
22
  IN = 'IN'
23
- };
23
+ }
@@ -1,5 +1,6 @@
1
1
  export * from './FILTER_DATE_SECTION';
2
2
  export * from './FILTER_DATE_SECTIONS';
3
+ export * from './FILTER_GROUPED_COLUMN_OPERATOR';
3
4
  export * from './FILTER_OPERATOR';
4
5
  export * from './FILTER_SCOPE_LABEL';
5
6
  export * from './FILTER_SCOPE';
@@ -4,14 +4,22 @@ import { getBackendProperty } from "./getBackendProperty";
4
4
  import { getBackendValidator } from "./getBackendValidator";
5
5
  import { getBackendValues } from "./getBackendValues";
6
6
 
7
+ /**
8
+ * Builds filter expression by the filter data.
9
+ * - If the resulting value array is empty the enabled property will be false.
10
+ * @param filter The filter to transform
11
+ * @returns a filter expression
12
+ */
7
13
  export function buildExpression(filter: IFSFilter): IFBExpression {
8
- return {
9
- enabled: filter.enabled,
14
+ const expression = {
10
15
  groupValue: getBackendGroupValue(filter),
11
16
  questionid: filter.column.id,
12
17
  questionType: filter.column.type,
13
18
  property: getBackendProperty(filter),
14
19
  validationType: getBackendValidator(filter.validator),
15
20
  value: getBackendValues(filter),
16
- }
21
+ };
22
+ expression['enabled'] = expression.value.length > 0 ? filter.enabled : false;
23
+
24
+ return expression;
17
25
  }
@@ -33,7 +33,7 @@ export function buildFilters(filters: IFSFilter[], groupColumns = false): IFBFil
33
33
  if (_hasProperty(expressions[0], 'expressions')) {
34
34
  return expressions;
35
35
  } else {
36
- return [{ operator: FILTER_OPERATOR.AND, expressions }]
36
+ return [{ operator: FILTER_OPERATOR.AND, expressions }];
37
37
  }
38
38
  }
39
39
  }
@@ -57,7 +57,7 @@ function logicToNumeric (operator, priority = false) {
57
57
  function numericExpression(filters: IFSFilter[], groupColumns = false) {
58
58
  let expression = '';
59
59
  filters.forEach((item, index) => {
60
- const nextColumn = (filters[index + 1] || {}).column
60
+ const nextColumn = (filters[index + 1] || {}).column;
61
61
  const operator = logicToNumeric(item.operator, groupColumns && item.column?.id === nextColumn?.id);
62
62
  expression += `${item.filterid}${operator}`;
63
63
  });
@@ -1,6 +1,7 @@
1
1
  import { isEmpty } from "../../../general";
2
2
  import { isDateColumn } from "../../../qrvey/isDateColumn";
3
3
  import { IFProperty, IFSFilter } from "../../interfaces";
4
+ import { arePropertiesDateP } from "../common";
4
5
 
5
6
  /**
6
7
  * Gets a group value for the backend logic structure
@@ -8,7 +9,7 @@ import { IFProperty, IFSFilter } from "../../interfaces";
8
9
  * @returns a property
9
10
  */
10
11
  export function getBackendGroupValue(filter: IFSFilter): IFProperty {
11
- if (isEmpty(filter.column.aggregate) && isDateColumn(filter.column as any) && filter.property != null) {
12
+ if (!arePropertiesDateP(filter.column, filter.property) && isEmpty(filter.column.aggregate) && isDateColumn(filter.column as any) && filter.property != null) {
12
13
  return filter.property;
13
14
  }
14
15
  }
@@ -2,7 +2,7 @@ import { COLUMN, COLUMN_PROPERTY } from "../../../constants";
2
2
  import { isEmpty } from "../../../general";
3
3
  import { isDateColumn } from "../../../qrvey/isDateColumn";
4
4
  import { IFProperty, IFSFilter } from "../../interfaces";
5
- import { isNullValidator } from "../common";
5
+ import { arePropertiesDateP, isNullValidator } from "../common";
6
6
 
7
7
  /**
8
8
  * Gets a property for the logic structure
@@ -11,8 +11,11 @@ import { isNullValidator } from "../common";
11
11
  */
12
12
  export function getBackendProperty(filter: IFSFilter): IFProperty {
13
13
  if (isEmpty(filter.column.aggregate)) {
14
- if ((isDateColumn(filter.column as any) && filter.property != null) || isNullValidator(filter.validator)) return undefined;
15
- if ((filter.column.type === COLUMN.EXPRESSION && filter.property != null)) {
14
+ if (isNullValidator(filter.validator)) {
15
+ return undefined;
16
+ } else if (isDateColumn(filter.column as any)) {
17
+ return arePropertiesDateP(filter.column, filter.property) ? filter.property?.split('p&')[1] as IFProperty : undefined;
18
+ } else if (filter.column.type === COLUMN.EXPRESSION && filter.property != null) {
16
19
  return undefined;
17
20
  } else if (filter.column.type === COLUMN.LOOKUP && filter.property === COLUMN_PROPERTY.LOOKUP_DISPLAY && filter.lookupDisplayIndex != null) {
18
21
  return filter.property.concat('_').concat(filter.lookupDisplayIndex.toString()) as any;
@@ -20,40 +20,42 @@ export function getBackendValues(filter: IFSFilter): IFBackendExpressionValue[]
20
20
  case FILTER_VALIDATOR.NOT_START_WITH:
21
21
  case FILTER_VALIDATOR.ENDS_WITH:
22
22
  case FILTER_VALIDATOR.NOT_END_WITH:
23
- return (filter.values as IFSValue[]).map(value => value.value);
23
+ return (filter.values as IFSValue[]).map(value => value.enabled ? value.value : undefined);
24
24
  case FILTER_VALIDATOR.BETWEEN_INCLUSIVE:
25
- return (filter.values as IFSValueRange[]).map(value => (
25
+ return (filter.values as IFSValueRange[]).map(value => value.enabled ?
26
26
  { lte: value.max, gte: value.min }
27
- ));
27
+ : undefined).filter(Boolean);
28
28
  case FILTER_VALIDATOR.BETWEEN_EXCLUSIVE:
29
- return (filter.values as IFSValueRange[]).map(value => (
29
+ return (filter.values as IFSValueRange[]).map(value => value.enabled ?
30
30
  { lt: value.max, gt: value.min }
31
- ));
31
+ : undefined).filter(Boolean);
32
32
  case FILTER_VALIDATOR.BEFORE:
33
33
  case FILTER_VALIDATOR.LESS_THAN:
34
- return (filter.values as IFSValueRange[]).map(value => (
34
+ return (filter.values as IFSValueRange[]).map(value => value.enabled ?
35
35
  { lt: value.max }
36
- ));
36
+ : undefined).filter(Boolean);
37
37
  case FILTER_VALIDATOR.BEFORE_ON:
38
38
  case FILTER_VALIDATOR.LESS_THAN_EQUAL:
39
- return (filter.values as IFSValueRange[]).map(value => (
39
+ return (filter.values as IFSValueRange[]).map(value => value.enabled ?
40
40
  { lte: value.max }
41
- ));
41
+ : undefined).filter(Boolean);
42
42
  case FILTER_VALIDATOR.AFTER:
43
43
  case FILTER_VALIDATOR.GREATER_THAN:
44
- return (filter.values as IFSValueRange[]).map(value => (
44
+ return (filter.values as IFSValueRange[]).map(value => value.enabled ?
45
45
  { gt: value.min }
46
- ));
46
+ : undefined).filter(Boolean);
47
47
  case FILTER_VALIDATOR.AFTER_ON:
48
48
  case FILTER_VALIDATOR.GREATER_THAN_EQUAL:
49
- return (filter.values as IFSValueRange[]).map(value => (
49
+ return (filter.values as IFSValueRange[]).map(value => value.enabled ?
50
50
  { gte: value.min }
51
- ));
51
+ : undefined).filter(Boolean);
52
52
  case FILTER_VALIDATOR.IS_NULL:
53
- case FILTER_VALIDATOR.IS_NOT_NULL:
54
- return [FILTER_VALIDATOR_VALUE[filter.validator].label];
53
+ case FILTER_VALIDATOR.IS_NOT_NULL: {
54
+ const addValue = filter.values.length > 0 && (filter.values as IFSValue[]).every(value => value.enabled);
55
+ return addValue ? [FILTER_VALIDATOR_VALUE[filter.validator].label] : [];
56
+ }
55
57
  case FILTER_VALIDATOR.IN:
56
- return filter.values as IFBExpressionRelativeDate[];
58
+ return (filter.values as IFBExpressionRelativeDate[]).map(value => value.enabled ? value : undefined).filter(Boolean);
57
59
  default:
58
60
  return [];
59
61
  }
@@ -67,12 +69,14 @@ export function getBackendValues(filter: IFSFilter): IFBackendExpressionValue[]
67
69
  */
68
70
  function getResultValues(values: IFSValue[], filter: IFSFilter): IFBExpressionValue[] {
69
71
  return values.map((value: IFSValue) => {
70
- if (filter.column.type === COLUMN.IMAGE) {
71
- return value.valueid;
72
- } else {
73
- return value.value;
72
+ if (value.enabled) {
73
+ if (filter.column.type === COLUMN.IMAGE) {
74
+ return value.valueid;
75
+ } else {
76
+ return value.value;
77
+ }
74
78
  }
75
- }).filter(value => value);
79
+ }).filter(Boolean);
76
80
  }
77
81
 
78
82
  /**
@@ -83,8 +87,8 @@ function getResultValues(values: IFSValue[], filter: IFSFilter): IFBExpressionVa
83
87
  */
84
88
  function getRankingValues(values: IFSValueRanking[][], rankingGroupIndex?: number): IFBExpressionValueRanking[] {
85
89
  const flattenValues: IFSValueRanking[] = rankingGroupIndex == null ? flattenDeep(values) : values[rankingGroupIndex];
86
- return flattenValues.map(rankingValue => ({
90
+ return flattenValues.map(rankingValue => rankingValue.enabled ? {
87
91
  position: rankingValue.position - 1,
88
92
  value: rankingValue.value.value
89
- }));
93
+ } : undefined).filter(Boolean);
90
94
  }
@@ -1,5 +1,5 @@
1
1
  import { getAttribute } from '../../../general';
2
- import { IFilterBuilderGeneralConfig } from '../../interfaces'
2
+ import { IFilterBuilderGeneralConfig } from '../../interfaces';
3
3
 
4
4
  /**
5
5
  * Returns a filter builder config object by a any given config
@@ -12,5 +12,5 @@ export function areFiltersEquals(filter1: IFSFilter, filter2: IFSFilter): boolea
12
12
  filter1.extras.panelid === filter2.extras.panelid &&
13
13
  filter1.column.id === filter2.column.id &&
14
14
  filter1.column?.aggregate === filter2.column?.aggregate &&
15
- filter1.column?.calculation === filter2.column?.calculation
15
+ filter1.column?.calculation === filter2.column?.calculation;
16
16
  }
@@ -0,0 +1,14 @@
1
+ import { DATE_P_PROPERTIES } from "../../../date";
2
+ import { isEmpty } from "../../../general";
3
+ import { isDateColumn } from "../../../qrvey/isDateColumn";
4
+ import { IFProperty, IFSColumn, IFUColumn } from "../../interfaces";
5
+
6
+ /**
7
+ * Determines if the filter column and property is a distinct group dates type
8
+ * @param column The filter column
9
+ * @param property The filter property
10
+ * @returns True if the given property is included from distinct group dates type
11
+ */
12
+ export function arePropertiesDateP(column: IFUColumn | IFSColumn, property: IFProperty): boolean {
13
+ return isDateColumn(column as any) && isEmpty(column.aggregate) && DATE_P_PROPERTIES.includes(property);
14
+ }
@@ -78,5 +78,5 @@ function resolveFilterConditions(filter: IFSFilter, params: IFSParamsToGetFilter
78
78
  params.column?.qrveyid !== filter.column.qrveyid &&
79
79
  params.column?.linkid !== filter.column.linkid) &&
80
80
  params.column?.aggregate !== filter.column.aggregate) &&
81
- filter.values.length > 0
81
+ filter.values.length > 0;
82
82
  }
@@ -13,5 +13,5 @@ export function getFilterColumnLabel(column: IFUColumn): string {
13
13
  if (column.aggregate != null) labels.push(column.aggregate);
14
14
  if (column.calculation != null) labels.push(column.calculation);
15
15
 
16
- return (labels.length > 0) ? `(${labels.join(' - ')})` : '';
16
+ return labels.length > 0 ? `(${labels.join(' - ')})` : '';
17
17
  }
@@ -6,7 +6,7 @@ import { getFilterColumnLabel } from "./getFilterColumnLabel";
6
6
  * @param filter the UI filter
7
7
  * @returns a sring label
8
8
  */
9
- export function getFilterLabel(filter: IFUFilter) {
9
+ export function getFilterLabel(filter: IFUFilter): string {
10
10
  const text = filter.extras.filterLabel ?? filter.column.label;
11
11
  return text + ' ' + getFilterColumnLabel(filter.column);
12
12
  }
@@ -28,5 +28,5 @@ export function getFilterid(filter: IFSFilter, index?: number): string {
28
28
  if (filter.column?.calculation != null) filterid.push(filter.column?.calculation);
29
29
  if (index != null) filterid.push(index.toString());
30
30
 
31
- return (filterid.length > 0) ? filterid.join('|') : '';
31
+ return filterid.length > 0 ? filterid.join('|') : '';
32
32
  }
@@ -6,7 +6,7 @@ import { IFSData, IFSScope } from "../../interfaces";
6
6
  * @param filterData The filter data object
7
7
  * @returns The new filter data object that were get the aggregate filters
8
8
  */
9
- export function getFiltersByAggregateColumn(filterData: IFSData) {
9
+ export function getFiltersByAggregateColumn(filterData: IFSData): IFSData {
10
10
  if (isEmpty(filterData) || isEmpty(filterData.scopes)) return;
11
11
  filterData = cloneDeep(filterData);
12
12
 
@@ -1,4 +1,4 @@
1
- import { cloneDeep, isEmpty } from "../../../general";
1
+ import { cloneDeep, isEmpty, _hasProperty } from "../../../general";
2
2
  import { IFSData, IFSDataset, IFSFilter, IFSScope, IFSParamsToGetFilter, IFValue, IFSValueRanking, IFSValue, IFSValueRange, IFSValueRelativeDate, IFUData, IFSParamsToGetFilterSettings } from "../../interfaces";
3
3
  import { getParamsToGetFilterSettings } from "./getParamsToGetFilterSettings";
4
4
  import { resolveDatasetConditions } from "./resolveDatasetConditions";
@@ -20,7 +20,6 @@ import { resolveScopeConditions } from "./resolveScopeConditions";
20
20
  * @param params given parameters to validate the dataset
21
21
  * @returns a new Filter object structure
22
22
  */
23
-
24
23
  export function getFiltersByParams(filterData: IFSData | IFUData, params: IFSParamsToGetFilter, settings?: IFSParamsToGetFilterSettings): IFSData | IFUData {
25
24
  if (isEmpty(filterData) || isEmpty(filterData.scopes)) return;
26
25
  if (isEmpty(params)) return filterData;
@@ -44,21 +43,21 @@ export function getFiltersByParams(filterData: IFSData | IFUData, params: IFSPar
44
43
  if (Array.isArray(value) && value.length > 0) {
45
44
  const rankingValues = value as IFSValueRanking[];
46
45
  rankingValues.map(rValue => {
47
- if (params.enableds == null || params.enableds === rValue.enabled) return rValue;
46
+ if (!_hasProperty(params, 'enableds') || !_hasProperty(params.enableds, 'values') || params.enableds.values === rValue.enabled) return rValue;
48
47
  }).filter(Boolean);
49
48
  } else {
50
49
  value = value as IFSValue | IFSValueRange | IFSValueRelativeDate;
51
- if (params.enableds == null || params.enableds === value.enabled) return value;
50
+ if (!_hasProperty(params, 'enableds') || !_hasProperty(params.enableds, 'values') || params.enableds.values === value.enabled) return value;
52
51
  }
53
52
  }).filter(Boolean) };
54
53
  }
55
- }).filter(filter => !isEmpty(filter) && filter.values.length > 0)
54
+ }).filter(filter => !isEmpty(filter) && (!settings.filterEmptyArrays.filter || filter.values.length > 0))
56
55
  };
57
56
  }
58
- }).filter(dataset => !isEmpty(dataset) && dataset.filters.length > 0)
57
+ }).filter(dataset => !isEmpty(dataset) && (!settings.filterEmptyArrays.dataset || dataset.filters.length > 0))
59
58
  };
60
59
  }
61
- }).filter(scope => !isEmpty(scope) && scope.datasets.length > 0);
60
+ }).filter(scope => !isEmpty(scope) && (!settings.filterEmptyArrays.scope || scope.datasets.length > 0));
62
61
 
63
62
  return filterData.scopes.length > 0 ? filterData : undefined;
64
63
  }