@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,8 +1,9 @@
1
1
  // FROM Logic structure = Old logic structure (v2.0)
2
2
  // TO Logic structure = Cleaner logic structure
3
3
  import { COLUMN } from "../../constants";
4
- import { isEmpty, _get } from "../../general";
5
- import { getFilterid, getUIValues } from "../helpers";
4
+ import { isEmpty, _get, _hasProperty } from "../../general";
5
+ import { FILTER_VALIDATOR_VALUE } from "../constants";
6
+ import { getFilterid, getUIValues, isNullValidator, } from "../helpers";
6
7
  /**
7
8
  * Adapts the Old logic structure (v2.0) to the flattened UI filter Structure.
8
9
  * @param logics The old logic structure (v2.0)
@@ -11,86 +12,100 @@ import { getFilterid, getUIValues } from "../helpers";
11
12
  export function logicToFlatUI(logics = []) {
12
13
  if (isEmpty(logics))
13
14
  return [];
14
- let uFilters = [];
15
+ const uFilters = [];
15
16
  logics.forEach(scopeItem => {
16
17
  if (scopeItem.filters.length > 0) {
17
18
  scopeItem.filters.forEach(filterItem => {
18
- filterItem.expressions[0].expressions.forEach(expression => {
19
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
20
- const uiExtras = expression.uiExtras;
21
- const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) : -1;
22
- if (index === -1 && (!uiExtras.nullValues || expression.validationType !== "IS_EMPTY" /* IS_NULL */)) {
23
- const scopeid = scopeItem.scope !== "GLOBAL" /* GLOBAL */ ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
24
- const uFilter = {
25
- collapsed: uiExtras.collapsed,
26
- column: {
27
- id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
28
- formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
29
- linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
30
- linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
31
- qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
32
- aggregate: (_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label,
33
- calculation: (_j = (_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.calculation) === null || _j === void 0 ? void 0 : _j.value,
34
- label: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.text,
35
- property: uiExtras.column.property,
36
- sorting: uiExtras.column.sorting,
37
- outputFormat: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.outputFormat,
38
- type: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.type,
39
- },
40
- dateSection: uiExtras.dateSection,
41
- displayed: true,
42
- enabled: expression.enabled,
43
- extras: {
44
- panelid: uiExtras.panelid,
45
- filterLabel: uiExtras.panelName,
46
- scopeid,
47
- scope: scopeItem.scope,
48
- section: uiExtras.section,
49
- scopeInfo: {
50
- collapsed: false,
51
- enabled: scopeItem.enabled,
52
- displayed: true,
53
- scope: scopeItem.scope,
54
- scopeid,
55
- },
56
- dataset: {
57
- collapsed: false,
58
- enabled: true,
59
- displayed: true,
60
- qrveyid: (_o = uiExtras.column) === null || _o === void 0 ? void 0 : _o.qrveyid,
61
- label: (_q = (_p = uiExtras.column) === null || _p === void 0 ? void 0 : _p.dataset) === null || _q === void 0 ? void 0 : _q.name,
62
- linkid: (_r = uiExtras.column) === null || _r === void 0 ? void 0 : _r.linkid,
63
- },
64
- },
65
- filterid: undefined,
66
- lookupDisplayIndex: uiExtras.lookupDisplayIndex,
67
- nullValues: uiExtras.nullValues,
68
- operator: uiExtras.operator,
69
- property: uiExtras.property,
70
- uiValues: getUIValues(uiExtras),
71
- validator: uiExtras.validator,
72
- values: uiExtras.column.type !== COLUMN.RANKING || !isEmpty(uiExtras.column.aggregate)
73
- ? (uiExtras.values || []).map((v, i) => (Object.assign(Object.assign({}, v), { enabled: uiExtras.uiValue[i].enabled != null ? uiExtras.uiValue[i].enabled : true }))) : [],
74
- };
75
- uFilter.filterid = getFilterid(uFilter);
76
- uFilters.push(uFilter);
77
- }
78
- if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
79
- // Restore uiExtras.values array into single IFilterDetail object values array
80
- if (index > -1)
81
- uFilters[index].values.push(uiExtras.values[0]);
82
- const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values), uiExtras.uiValue);
83
- if (index > -1)
84
- uFilters[index].values = refinedRankingValues;
85
- else
86
- uFilters[uFilters.length - 1].values = refinedRankingValues;
87
- }
19
+ filterItem.expressions.forEach((expression1) => {
20
+ _hasProperty(expression1, 'expressions') ? expression1.expressions.forEach((expression2) => {
21
+ buildFilterByExpression(expression2, scopeItem, uFilters);
22
+ }) : buildFilterByExpression(expression1, scopeItem, uFilters);
88
23
  });
24
+ // (filterItem.expressions[0].expressions as OLD_IFilterExpression[]).forEach((expression: OLD_IFilterExpression) => {
25
+ // buildFilterByExpression(expression, scopeItem, uFilters);
26
+ // });
89
27
  });
90
28
  }
91
29
  });
92
30
  return uFilters;
93
31
  }
32
+ function buildFilterByExpression(expression, scopeItem, uFilters) {
33
+ const uiExtras = expression.uiExtras;
34
+ const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) : -1;
35
+ if (index === -1 && (!uiExtras.nullValues || expression.validationType !== "IS_EMPTY" /* IS_NULL */)) {
36
+ const uFilter = getFilterByExpression(expression, scopeItem);
37
+ uFilter.filterid = getFilterid(uFilter);
38
+ uFilters.push(uFilter);
39
+ }
40
+ if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
41
+ // Restore uiExtras.values array into single IFilterDetail object values array
42
+ if (index > -1)
43
+ uFilters[index].values.push(uiExtras.values[0]);
44
+ const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values), uiExtras.uiValue);
45
+ if (index > -1)
46
+ uFilters[index].values = refinedRankingValues;
47
+ else
48
+ uFilters[uFilters.length - 1].values = refinedRankingValues;
49
+ }
50
+ }
51
+ function getFilterByExpression(expression, scopeItem) {
52
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
53
+ const uiExtras = expression.uiExtras;
54
+ const scopeid = scopeItem.scope !== "GLOBAL" /* GLOBAL */ ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
55
+ const info = !isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
56
+ return {
57
+ collapsed: uiExtras.collapsed,
58
+ column: {
59
+ id: (_a = uiExtras.column) === null || _a === void 0 ? void 0 : _a.id,
60
+ formulaType: (_b = uiExtras.column) === null || _b === void 0 ? void 0 : _b.formulaType,
61
+ linkid: (_c = uiExtras.column) === null || _c === void 0 ? void 0 : _c.linkid,
62
+ linked: (_d = uiExtras.column) === null || _d === void 0 ? void 0 : _d.linked,
63
+ qrveyid: (_e = uiExtras.column) === null || _e === void 0 ? void 0 : _e.qrveyid,
64
+ aggregate: (_g = (_f = uiExtras.column) === null || _f === void 0 ? void 0 : _f.aggregate) === null || _g === void 0 ? void 0 : _g.label,
65
+ calculation: (_j = (_h = uiExtras.column) === null || _h === void 0 ? void 0 : _h.calculation) === null || _j === void 0 ? void 0 : _j.value,
66
+ label: (_k = uiExtras.column) === null || _k === void 0 ? void 0 : _k.text,
67
+ property: uiExtras.column.property,
68
+ sorting: uiExtras.column.sorting,
69
+ outputFormat: (_l = uiExtras.column) === null || _l === void 0 ? void 0 : _l.outputFormat,
70
+ type: (_m = uiExtras.column) === null || _m === void 0 ? void 0 : _m.type,
71
+ },
72
+ dateSection: uiExtras.dateSection,
73
+ displayed: true,
74
+ enabled: expression.enabled,
75
+ extras: Object.assign(Object.assign({}, uiExtras.extras), { panelid: uiExtras.panelid, filterLabel: uiExtras.panelName, info,
76
+ scopeid, scope: scopeItem.scope, section: uiExtras.section, scopeInfo: {
77
+ collapsed: (_o = scopeItem.uiExtras) === null || _o === void 0 ? void 0 : _o.collapsed,
78
+ enabled: scopeItem.enabled,
79
+ displayed: true,
80
+ scope: scopeItem.scope,
81
+ scopeid,
82
+ }, dataset: {
83
+ collapsed: false,
84
+ enabled: true,
85
+ displayed: true,
86
+ qrveyid: (_p = uiExtras.column) === null || _p === void 0 ? void 0 : _p.qrveyid,
87
+ label: (_r = (_q = uiExtras.column) === null || _q === void 0 ? void 0 : _q.dataset) === null || _r === void 0 ? void 0 : _r.name,
88
+ linkid: (_s = uiExtras.column) === null || _s === void 0 ? void 0 : _s.linkid,
89
+ } }),
90
+ filterid: undefined,
91
+ lookupDisplayIndex: uiExtras.lookupDisplayIndex,
92
+ nullValues: uiExtras.nullValues,
93
+ operator: uiExtras.operator,
94
+ property: uiExtras.property,
95
+ uiValues: getUIValues(uiExtras),
96
+ validator: uiExtras.validator,
97
+ values: getValues(uiExtras),
98
+ };
99
+ }
100
+ function getValues(uiExtras) {
101
+ if (isNullValidator(uiExtras.validator) && isEmpty(uiExtras.values)) {
102
+ return [{ value: FILTER_VALIDATOR_VALUE[uiExtras.validator].label, enabled: uiExtras.uiValue[0].enabled != null ? uiExtras.uiValue[0].enabled : true }];
103
+ }
104
+ if (uiExtras.column.type !== COLUMN.RANKING || !isEmpty(uiExtras.column.aggregate)) {
105
+ return uiExtras.values;
106
+ }
107
+ return [];
108
+ }
94
109
  /**
95
110
  * Get the filter or the index of the given array, validating an old filter structure.
96
111
  * @param filters The array of UI filters
@@ -99,7 +114,7 @@ export function logicToFlatUI(logics = []) {
99
114
  * @returns the index or the UI filter object
100
115
  */
101
116
  function getFilter(filters, filter, getIndex = false) {
102
- const validator = (f) => (f.validator === filter.validator &&
117
+ const validator = (f) => f.validator === filter.validator &&
103
118
  f.column.id === filter.column.id &&
104
119
  f.column.qrveyid === filter.column.qrveyid &&
105
120
  f.column.linkid === filter.column.linkid &&
@@ -107,7 +122,7 @@ function getFilter(filters, filter, getIndex = false) {
107
122
  f.extras.scope === filter.scope &&
108
123
  f.extras.scopeid === filter.scopeid &&
109
124
  f.property === filter.property &&
110
- f.extras.panelid === filter.panelid);
125
+ f.extras.panelid === filter.panelid;
111
126
  return getIndex ? filters.findIndex(validator) : filters.find(validator);
112
127
  }
113
128
  /**
@@ -116,7 +131,7 @@ function getFilter(filters, filter, getIndex = false) {
116
131
  * @param uiValues Object with additional info about the values of the filter.
117
132
  * @returns the array of Ranking values
118
133
  */
119
- function refineRankingValues(values = [], uiValues) {
134
+ function refineRankingValues(values = [], uiValues = []) {
120
135
  return values.map(valueGroup => {
121
136
  return [
122
137
  ...valueGroup.map(value => {
@@ -53,7 +53,7 @@
53
53
  *
54
54
  * const filterData = transformFilters(oldPreferenceFilters, 'ANALYZE');
55
55
  */
56
- export declare function transformFilters(oldFiltersObj?: object, section?: string): {
56
+ export declare function transformFilters(oldFiltersObj?: {}, section?: string): {
57
57
  enabled: boolean;
58
58
  logic: any[];
59
59
  section: string;
@@ -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
  /**
4
4
  * Transform the old filters structure into the new one
5
5
  *
@@ -214,14 +214,14 @@ function getValidator(oldValidation) {
214
214
  function getProperty(filterObjItem, validationKey) {
215
215
  if (filterObjItem.type === 'IMAGE')
216
216
  return 'answer_id';
217
- const value = get(filterObjItem, `values[0]['${validationKey}'][0]`, {});
217
+ const value = _get(filterObjItem, `values[0]['${validationKey}'][0]`, {});
218
218
  const property = filterObjItem.property || value.property || value.targetFilter;
219
219
  return property && property.toUpperCase();
220
220
  }
221
221
  function getDateProperty(validationKey, columnType, formulaType) {
222
222
  if (![columnType, formulaType].includes('DATE'))
223
223
  return;
224
- return (['MONTH_YEAR', 'YEAR', 'QUARTER', 'WEEK', 'HOUR', 'MINUTE', 'SECOND'].includes(validationKey)) ? validationKey.split('_')[0].toLowerCase() : 'day';
224
+ return ['MONTH_YEAR', 'YEAR', 'QUARTER', 'WEEK', 'HOUR', 'MINUTE', 'SECOND'].includes(validationKey) ? validationKey.split('_')[0].toLowerCase() : 'day';
225
225
  }
226
226
  function getFilterRangeValue(range, minProp = 'min', maxProp = 'max', extras = {}) {
227
227
  return Object.assign({ [minProp]: range.from || range.gte, [maxProp]: range.to || range.lte }, extras);
@@ -252,45 +252,47 @@ function getValues(values, columnType, oldValidation = 'EQUAL', destination = 'v
252
252
  case 'BETWEEN':
253
253
  case 'YEAR':
254
254
  case 'MONTH_YEAR':
255
- return (destination === 'value')
255
+ return destination === 'value'
256
256
  ? values.map(val => getFilterRangeValue(val.value.range || val.value, 'gte', 'lte'))
257
- : (destination === 'uiValue')
257
+ : destination === 'uiValue'
258
258
  ? values.map(val => getFilterRangeValue(val.value.range || val.value, 'min', 'max', { enabled: val.enabled, value: getUiRangeValue(val.value), validationLabel: oldValidation }))
259
259
  : ['YEAR', 'MONTH_YEAR', 'QUARTER'].includes(oldValidation)
260
260
  ? values.map(item => ({ value: getUiRangeValue(item.value) }))
261
261
  : values.map(val => getFilterRangeValue(val.value.range || val.value));
262
262
  case 'LESS_THAN':
263
- case 'GREATER_THAN':
263
+ case 'GREATER_THAN': {
264
264
  const prop = oldValidation === 'LESS_THAN' ? 'lte' : 'gte';
265
- return (destination === 'value')
265
+ return destination === 'value'
266
266
  ? values.map(val => getFilterRangeValue({ [prop]: val.value }, 'gte', 'lte'))
267
- : (destination === 'uiValue')
267
+ : destination === 'uiValue'
268
268
  ? values.map(val => getFilterRangeValue({ [prop]: val.value }, 'min', 'max', { enabled: val.enabled, value: val.value }))
269
269
  : values.map(val => getFilterRangeValue({ [prop]: val.value }));
270
+ }
270
271
  case 'IS_EMPTY':
271
- case 'IS_NOT_EMPTY':
272
+ case 'IS_NOT_EMPTY': {
272
273
  const valueClean = getValidator(oldValidation).toLowerCase().split('_').map(v => capitalize(v)).join(' ');
273
- return (destination === 'value')
274
+ return destination === 'value'
274
275
  ? [valueClean]
275
- : (destination === 'uiValue')
276
+ : destination === 'uiValue'
276
277
  ? values.map(val => ({ value: valueClean, enabled: val.enabled }))
277
278
  : [];
279
+ }
278
280
  default:
279
281
  return getFilterEqualValues(values, columnType, destination, formulaType);
280
282
  }
281
283
  }
282
284
  function getFilterEqualValues(values, columnType, destination = 'value', formulaType) {
283
285
  if (columnType === 'RANKING') {
284
- return (destination === 'value')
286
+ return destination === 'value'
285
287
  ? values.map(item => ({ position: +item.position, value: item.value }))
286
- : (destination === 'uiValue')
288
+ : destination === 'uiValue'
287
289
  ? values.map(item => ({ value: getUiRangeValue({ from: item.value, to: +item.position + 1 }), enabled: true }))
288
290
  : getRankingFBvalues(values);
289
291
  }
290
- const formattedValues = (destination === 'value')
292
+ const formattedValues = destination === 'value'
291
293
  ? values.map(item => {
292
294
  let value = item.value;
293
- if ([columnType, formulaType].includes('DATE') && !isTokenBoxLabel(value)) {
295
+ if ([columnType, formulaType].includes('DATE') && !isTokenLabel(value)) {
294
296
  value = getFilterRangeValue(item.value.range || item.value, 'gte', 'lte');
295
297
  }
296
298
  else if (columnType === 'YES_NO') {
@@ -304,7 +306,7 @@ function getFilterEqualValues(values, columnType, destination = 'value', formula
304
306
  }
305
307
  return value;
306
308
  })
307
- : 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 }));
309
+ : 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 }));
308
310
  return formattedValues;
309
311
  }
310
312
  function getFormulaType(oldFiltersItem) {
@@ -362,12 +364,3 @@ function getExpressions(oldFiltersItem, validations, scopeLabel, scopeid, sectio
362
364
  });
363
365
  return expressions;
364
366
  }
365
- /**
366
- * Get a text and evaluate if it matchs with a token box label.
367
- * @param label string to evaluate
368
- * @return True is label matchs; otherwise false
369
- */
370
- function isTokenBoxLabel(label) {
371
- const regex = new RegExp('^(\{\{)([^{}]+)(\}\})$', 'gi');
372
- return regex.test(label);
373
- }
@@ -0,0 +1,2 @@
1
+ import { FILTER_OPERATOR } from "./FILTER_OPERATOR";
2
+ export declare const FILTER_GROUPED_COLUMN_OPERATOR = FILTER_OPERATOR.OR;
@@ -0,0 +1 @@
1
+ export const FILTER_GROUPED_COLUMN_OPERATOR = "OR" /* OR */;
@@ -1,2 +1 @@
1
- ;
2
1
  export {};
@@ -1,2 +1 @@
1
- ;
2
1
  export {};
@@ -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';
@@ -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';
@@ -1,2 +1,8 @@
1
1
  import { IFBExpression, IFSFilter } from "../../interfaces";
2
+ /**
3
+ * Builds filter expression by the filter data.
4
+ * - If the resulting value array is empty the enabled property will be false.
5
+ * @param filter The filter to transform
6
+ * @returns a filter expression
7
+ */
2
8
  export declare function buildExpression(filter: IFSFilter): IFBExpression;
@@ -2,9 +2,14 @@ import { getBackendGroupValue } from "./getBackendGroupValue";
2
2
  import { getBackendProperty } from "./getBackendProperty";
3
3
  import { getBackendValidator } from "./getBackendValidator";
4
4
  import { getBackendValues } from "./getBackendValues";
5
+ /**
6
+ * Builds filter expression by the filter data.
7
+ * - If the resulting value array is empty the enabled property will be false.
8
+ * @param filter The filter to transform
9
+ * @returns a filter expression
10
+ */
5
11
  export function buildExpression(filter) {
6
- return {
7
- enabled: filter.enabled,
12
+ const expression = {
8
13
  groupValue: getBackendGroupValue(filter),
9
14
  questionid: filter.column.id,
10
15
  questionType: filter.column.type,
@@ -12,4 +17,6 @@ export function buildExpression(filter) {
12
17
  validationType: getBackendValidator(filter.validator),
13
18
  value: getBackendValues(filter),
14
19
  };
20
+ expression['enabled'] = expression.value.length > 0 ? filter.enabled : false;
21
+ return expression;
15
22
  }
@@ -1,12 +1,13 @@
1
1
  import { isEmpty } from "../../../general";
2
2
  import { isDateColumn } from "../../../qrvey/isDateColumn";
3
+ import { arePropertiesDateP } from "../common";
3
4
  /**
4
5
  * Gets a group value for the backend logic structure
5
6
  * @param filter The filter
6
7
  * @returns a property
7
8
  */
8
9
  export function getBackendGroupValue(filter) {
9
- if (isEmpty(filter.column.aggregate) && isDateColumn(filter.column) && filter.property != null) {
10
+ if (!arePropertiesDateP(filter.column, filter.property) && isEmpty(filter.column.aggregate) && isDateColumn(filter.column) && filter.property != null) {
10
11
  return filter.property;
11
12
  }
12
13
  }
@@ -1,17 +1,22 @@
1
1
  import { COLUMN } from "../../../constants";
2
2
  import { isEmpty } from "../../../general";
3
3
  import { isDateColumn } from "../../../qrvey/isDateColumn";
4
- import { isNullValidator } from "../common";
4
+ import { arePropertiesDateP, isNullValidator } from "../common";
5
5
  /**
6
6
  * Gets a property for the logic structure
7
7
  * @param filter The filter
8
8
  * @returns a property
9
9
  */
10
10
  export function getBackendProperty(filter) {
11
+ var _a;
11
12
  if (isEmpty(filter.column.aggregate)) {
12
- if ((isDateColumn(filter.column) && filter.property != null) || isNullValidator(filter.validator))
13
+ if (isNullValidator(filter.validator)) {
13
14
  return undefined;
14
- if ((filter.column.type === COLUMN.EXPRESSION && filter.property != null)) {
15
+ }
16
+ else if (isDateColumn(filter.column)) {
17
+ return arePropertiesDateP(filter.column, filter.property) ? (_a = filter.property) === null || _a === void 0 ? void 0 : _a.split('p&')[1] : undefined;
18
+ }
19
+ else if (filter.column.type === COLUMN.EXPRESSION && filter.property != null) {
15
20
  return undefined;
16
21
  }
17
22
  else if (filter.column.type === COLUMN.LOOKUP && filter.property === "display" /* LOOKUP_DISPLAY */ && filter.lookupDisplayIndex != null) {
@@ -19,28 +19,42 @@ export function getBackendValues(filter) {
19
19
  case "NOT_START_WITH" /* NOT_START_WITH */:
20
20
  case "ENDS_WITH" /* ENDS_WITH */:
21
21
  case "NOT_END_WITH" /* NOT_END_WITH */:
22
- return filter.values.map(value => value.value);
22
+ return filter.values.map(value => value.enabled ? value.value : undefined);
23
23
  case "BETWEEN_INCLUSIVE" /* BETWEEN_INCLUSIVE */:
24
- return filter.values.map(value => ({ lte: value.max, gte: value.min }));
24
+ return filter.values.map(value => value.enabled ?
25
+ { lte: value.max, gte: value.min }
26
+ : undefined).filter(Boolean);
25
27
  case "BETWEEN_EXCLUSIVE" /* BETWEEN_EXCLUSIVE */:
26
- return filter.values.map(value => ({ lt: value.max, gt: value.min }));
28
+ return filter.values.map(value => value.enabled ?
29
+ { lt: value.max, gt: value.min }
30
+ : undefined).filter(Boolean);
27
31
  case "BEFORE" /* BEFORE */:
28
32
  case "LESS_THAN" /* LESS_THAN */:
29
- return filter.values.map(value => ({ lt: value.max }));
33
+ return filter.values.map(value => value.enabled ?
34
+ { lt: value.max }
35
+ : undefined).filter(Boolean);
30
36
  case "BEFORE_ON" /* BEFORE_ON */:
31
37
  case "LESS_THAN_EQUAL" /* LESS_THAN_EQUAL */:
32
- return filter.values.map(value => ({ lte: value.max }));
38
+ return filter.values.map(value => value.enabled ?
39
+ { lte: value.max }
40
+ : undefined).filter(Boolean);
33
41
  case "AFTER" /* AFTER */:
34
42
  case "GREATER_THAN" /* GREATER_THAN */:
35
- return filter.values.map(value => ({ gt: value.min }));
43
+ return filter.values.map(value => value.enabled ?
44
+ { gt: value.min }
45
+ : undefined).filter(Boolean);
36
46
  case "AFTER_ON" /* AFTER_ON */:
37
47
  case "GREATER_THAN_EQUAL" /* GREATER_THAN_EQUAL */:
38
- return filter.values.map(value => ({ gte: value.min }));
48
+ return filter.values.map(value => value.enabled ?
49
+ { gte: value.min }
50
+ : undefined).filter(Boolean);
39
51
  case "IS_NULL" /* IS_NULL */:
40
- case "IS_NOT_NULL" /* IS_NOT_NULL */:
41
- return [FILTER_VALIDATOR_VALUE[filter.validator].label];
52
+ case "IS_NOT_NULL" /* IS_NOT_NULL */: {
53
+ const addValue = filter.values.length > 0 && filter.values.every(value => value.enabled);
54
+ return addValue ? [FILTER_VALIDATOR_VALUE[filter.validator].label] : [];
55
+ }
42
56
  case "IN" /* IN */:
43
- return filter.values;
57
+ return filter.values.map(value => value.enabled ? value : undefined).filter(Boolean);
44
58
  default:
45
59
  return [];
46
60
  }
@@ -53,13 +67,15 @@ export function getBackendValues(filter) {
53
67
  */
54
68
  function getResultValues(values, filter) {
55
69
  return values.map((value) => {
56
- if (filter.column.type === COLUMN.IMAGE) {
57
- return value.valueid;
58
- }
59
- else {
60
- return value.value;
70
+ if (value.enabled) {
71
+ if (filter.column.type === COLUMN.IMAGE) {
72
+ return value.valueid;
73
+ }
74
+ else {
75
+ return value.value;
76
+ }
61
77
  }
62
- }).filter(value => value);
78
+ }).filter(Boolean);
63
79
  }
64
80
  /**
65
81
  * Gets the Ranking values.
@@ -69,8 +85,8 @@ function getResultValues(values, filter) {
69
85
  */
70
86
  function getRankingValues(values, rankingGroupIndex) {
71
87
  const flattenValues = rankingGroupIndex == null ? flattenDeep(values) : values[rankingGroupIndex];
72
- return flattenValues.map(rankingValue => ({
88
+ return flattenValues.map(rankingValue => rankingValue.enabled ? {
73
89
  position: rankingValue.position - 1,
74
90
  value: rankingValue.value.value
75
- }));
91
+ } : undefined).filter(Boolean);
76
92
  }