@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
@@ -13,7 +13,7 @@ import { UIToFD } from "./UIToFD";
13
13
  * @param datasetsInfo Collection of datasets information. If getUIFilterData is true, the datasetsInfo should be mandatory
14
14
  * @returns A new filter data structure v2.1
15
15
  */
16
- export function adaptFilterData(filterData: IFSData | IFUData | OLD_IFilterData, getUIFilterData = false, datasetsInfo: IQrveyDataset[] = []): IFSData | IFUData {
16
+ export function adaptFilterData(filterData: IFSData | IFUData | OLD_IFilterData, getUIFilterData = true, datasetsInfo: IQrveyDataset[] = []): IFSData | IFUData {
17
17
  if (isEmpty(filterData)) return;
18
18
  filterData = cloneDeep(filterData);
19
19
 
@@ -1,3 +1,4 @@
1
+ import { isEmpty } from "../../general";
1
2
  import { FILTER_SECTION, FILTER_STRUCTURE_VERSION } from "../constants";
2
3
  import { IFSData, IFSDataset, IFSection, IFSFilter, IFSScope, IFUFlattenedFilter } from "../interfaces";
3
4
 
@@ -13,7 +14,7 @@ export function flatUIToFD(uFilters: IFUFlattenedFilter[] = [], section: IFSecti
13
14
  section,
14
15
  version,
15
16
  scopes: buildScopes(uFilters)
16
- }
17
+ };
17
18
  }
18
19
 
19
20
  /**
@@ -81,6 +82,7 @@ function buildDataset(uFilter: IFUFlattenedFilter): IFSDataset {
81
82
  * @returns an filter structure
82
83
  */
83
84
  function buildFilter(uFilter: IFUFlattenedFilter): IFSFilter {
85
+ const info = !isEmpty(uFilter.extras.info) ? { icon: uFilter.extras.info.icon, label: uFilter.extras.info.label } : undefined;
84
86
  return {
85
87
  collapsed: uFilter.collapsed,
86
88
  column: {
@@ -96,8 +98,10 @@ function buildFilter(uFilter: IFUFlattenedFilter): IFSFilter {
96
98
  filterid: uFilter.filterid,
97
99
  enabled: uFilter.enabled,
98
100
  extras: {
101
+ ...uFilter.extras,
99
102
  panelid: uFilter.extras.panelid,
100
103
  filterLabel: uFilter.extras.filterLabel,
104
+ info,
101
105
  scope: uFilter.extras.scope,
102
106
  scopeid: uFilter.extras.scopeid,
103
107
  section: uFilter.extras.section,
@@ -1,8 +1,8 @@
1
- import { IFSection, IFSValue, IFSValueRange, IFSValueRanking, IFValue, OLD_IFilterData, OLD_IFilterDetail, OLD_IFilterExpression, OLD_IFilterLogic, IFUFlattenedFilter, IFSValueRelativeDate, IFProperty, IFBackendValidator, IFBackendExpressionValue } from "../interfaces";
1
+ import { IFSection, IFSValue, IFSValueRange, IFSValueRanking, IFValue, OLD_IFilterData, OLD_IFilterDetail, OLD_IFilterExpression, OLD_IFilterLogic, IFUFlattenedFilter, IFSValueRelativeDate, IFProperty, IFBackendValidator, IFBackendExpressionValue, IFBExpressionRelativeDate } from "../interfaces";
2
2
  import { FILTER_BACKEND_VALIDATOR, FILTER_OPERATOR, FILTER_SECTION, FILTER_VALIDATOR, FILTER_VALIDATOR_VALUE } from "../constants";
3
3
  import { cloneDeep, flattenDeep, isEmpty, isNull, _get } from "../../general";
4
4
  import { COLUMN, COLUMN_PROPERTY } from "../../constants";
5
- import { getBackendValidator, isNullValidator } from "../helpers";
5
+ import { arePropertiesDateP, getBackendValidator, getUIValues, isNullValidator } from "../helpers";
6
6
  import { RELATIVE_CURSOR, RELATIVE_CURSOR_VALUE } from "../../date";
7
7
  import { isDateColumn } from "../../qrvey/isDateColumn";
8
8
 
@@ -22,7 +22,7 @@ export function flatUIToOldLogic(uFilters: IFUFlattenedFilter[], section: IFSect
22
22
  enabled: true,
23
23
  section,
24
24
  logic: getLogicBody(filterDetails),
25
- }
25
+ };
26
26
  }
27
27
 
28
28
  const flatUIToOldFilterDetail = (uFilters: IFUFlattenedFilter[] = []): OLD_IFilterDetail[] => {
@@ -67,7 +67,9 @@ const flatUIToOldFilterDetail = (uFilters: IFUFlattenedFilter[] = []): OLD_IFilt
67
67
  },
68
68
  dateSection: filter.dateSection,
69
69
  enabled: filter.enabled,
70
+ extras: filter.extras,
70
71
  lookupDisplayIndex: filter.lookupDisplayIndex,
72
+ info: filter.extras.info,
71
73
  nullValues: filter.nullValues,
72
74
  operator: filter.operator,
73
75
  property: filter.property,
@@ -77,11 +79,12 @@ const flatUIToOldFilterDetail = (uFilters: IFUFlattenedFilter[] = []): OLD_IFilt
77
79
  panelid: filter.extras.panelid,
78
80
  panelName: filter.extras.filterLabel,
79
81
  section: filter.extras.section,
80
- // uiValue: getUIValues(filter, true),
82
+ uiValue: getUIValues(filter, true),
81
83
  validator: filter.validator,
82
- values: filter.values
83
- }
84
- })
84
+ values: filter.values,
85
+ _newFilters: { ...filter }
86
+ };
87
+ });
85
88
  };
86
89
 
87
90
 
@@ -107,7 +110,7 @@ export function getLogicBody(uFilters: OLD_IFilterDetail[]): OLD_IFilterLogic[]
107
110
  filters: [filterItem],
108
111
  uiExtras: {
109
112
  scopeid: props.scopeid,
110
- collapsed: props.collapsed,
113
+ collapsed: _get(props, '_newFilters.extras.scopeInfo.collapsed', false),
111
114
  }
112
115
  });
113
116
  } else {
@@ -135,7 +138,7 @@ function getExpressions(props: OLD_IFilterDetail): OLD_IFilterExpression[] {
135
138
  return expressions;
136
139
  }
137
140
 
138
- export function getExpressionId(props: OLD_IFilterDetail) {
141
+ export function getExpressionId(props: OLD_IFilterDetail): string {
139
142
  return `${props.column && props.column.id}|${props.scopeid}|${props.panelid || ''}`;
140
143
  }
141
144
 
@@ -149,13 +152,13 @@ function getRankingExpressions(props: OLD_IFilterDetail): OLD_IFilterExpression[
149
152
  return {
150
153
  ...expression,
151
154
  value: getValues(props, index),
152
- uiExtras: { ...expression.uiExtras, uiValue: getUIValues(props, index) }
153
- }
155
+ uiExtras: { ...expression.uiExtras, uiValue: getUIValuess(props, index) }
156
+ };
154
157
  });
155
158
  }
156
159
 
157
160
  function getRegularExpression(props: OLD_IFilterDetail): OLD_IFilterExpression {
158
- const uiValue = getUIValues(props);
161
+ const uiValue = getUIValuess(props);
159
162
  return {
160
163
  enabled: props.enabled,
161
164
  groupValue: getGroupValue(props),
@@ -175,17 +178,19 @@ function getRegularExpression(props: OLD_IFilterDetail): OLD_IFilterExpression {
175
178
  }
176
179
 
177
180
  function getGroupValue(props: OLD_IFilterDetail): IFProperty {
178
- if (isEmpty(props.column.aggregate) && isDateColumn(props.column) && props.property) {
181
+ if (!arePropertiesDateP(props.column as any, props.property) && isEmpty(props.column.aggregate) && isDateColumn(props.column) && props.property) {
179
182
  return props.property;
180
183
  }
181
184
  }
182
185
 
183
186
  function getProperty(props: OLD_IFilterDetail) {
184
187
  if (isEmpty(props.column.aggregate)) {
185
- if ((isDateColumn(props.column) && props.property) || isNullValidator(props.validator)) return undefined;
186
- if ((props.column.type === COLUMN.EXPRESSION && props.property != null)
187
- /*|| (props.column.type === QUESTIONS_TYPES.DATE && props.property === PROPERTY_TYPE.DATE_DAY)*/) {
188
+ if (isNullValidator(props.validator)) {
188
189
  return undefined;
190
+ } else if (isDateColumn(props.column as any)) {
191
+ return arePropertiesDateP(props.column as any, props.property) ? props.property?.split('p&')[1] as IFProperty : undefined;
192
+ } else if (props.column.type === COLUMN.EXPRESSION && props.property != null) {
193
+ return undefined;
189
194
  } else if (props.column.type === COLUMN.LOOKUP && props.property === COLUMN_PROPERTY.LOOKUP_DISPLAY && props.lookupDisplayIndex != null) {
190
195
  return props.property.concat('_').concat(props.lookupDisplayIndex.toString()) as any;
191
196
  } else if (props.column.type === COLUMN.IMAGE) {
@@ -267,69 +272,48 @@ function getValues(props: OLD_IFilterDetail, rankingGroupIndex?: number): IFBack
267
272
  case FILTER_VALIDATOR.NOT_START_WITH:
268
273
  case FILTER_VALIDATOR.ENDS_WITH:
269
274
  case FILTER_VALIDATOR.NOT_END_WITH:
270
- return (props.values as IFSValue[]).map(value => value.value);
275
+ return (props.values as IFSValue[]).map(value => value.enabled ? value.value : undefined);
271
276
  case FILTER_VALIDATOR.BETWEEN_INCLUSIVE:
272
- // return rangeValues.map(value => ({
273
- // lte: isDateProperty ? getDateRange(value.max, props.property).to : value.max,
274
- // gte: isDateProperty ? getDateRange(value.min, props.property).from : value.min
275
- // }));
276
- return (props.values as IFSValueRange[]).map(value => ({
277
- lte: value.max,
278
- gte: value.min
279
- }));
277
+ return (props.values as IFSValueRange[]).map(value => value.enabled ? (
278
+ { lte: value.max, gte: value.min }
279
+ ) : undefined).filter(Boolean);
280
280
  case FILTER_VALIDATOR.BETWEEN_EXCLUSIVE:
281
- return (props.values as IFSValueRange[]).map(value => {
282
- // const { min, max } = getExclusiveRangeValuesByProperty(value, props);
283
- // return {
284
- // [isDateProperty && !includeDateTokens(max, dateFormat) ? 'lte' : 'lt'] : isDateProperty ? getDateRange(max, props.property).to : max,
285
- // [isDateProperty && !includeDateTokens(min, dateFormat) ? 'gte' : 'gt'] : isDateProperty ? getDateRange(min, props.property).from : min
286
- // };
287
- return {
288
- lt: value.max,
289
- gt: value.min
290
- }
291
- });
281
+ return (props.values as IFSValueRange[]).map(value => value.enabled ? (
282
+ { lt: value.max, gt: value.min }
283
+ ) : undefined).filter(Boolean);
292
284
  case FILTER_VALIDATOR.BEFORE:
293
285
  case FILTER_VALIDATOR.LESS_THAN:
294
- return (props.values as IFSValueRange[]).map(value => {
295
- // const { max } = getExclusiveRangeValuesByProperty(value, props);
296
- // return { [isDateProperty && !includeDateTokens(max, dateFormat) ? 'lte' : 'lt'] : isDateProperty ? getDateRange(max, props.property).to : max };
297
- return { lt: value.max };
298
- });
286
+ return (props.values as IFSValueRange[]).map(value => value.enabled ? (
287
+ { lt: value.max }
288
+ ) : undefined).filter(Boolean);
299
289
  case FILTER_VALIDATOR.BEFORE_ON:
300
290
  case FILTER_VALIDATOR.LESS_THAN_EQUAL:
301
- return (props.values as IFSValueRange[]).map(value => (
302
- // {
303
- // lte: isDateProperty ? getDateRange(value.max, props.property).to : value.max
304
- // }
291
+ return (props.values as IFSValueRange[]).map(value => value.enabled ? (
305
292
  { lte: value.max }
306
- ));
293
+ ) : undefined).filter(Boolean);
307
294
  case FILTER_VALIDATOR.AFTER:
308
295
  case FILTER_VALIDATOR.GREATER_THAN:
309
- return (props.values as IFSValueRange[]).map(value => {
310
- // const { min } = getExclusiveRangeValuesByProperty(value, props);
311
- // return { [isDateProperty && !includeDateTokens(min, dateFormat) ? 'gte' : 'gt'] : isDateProperty ? getDateRange(min, props.property).from : min };
312
- return { gt: value.min };
313
- });
296
+ return (props.values as IFSValueRange[]).map(value => value.enabled ? (
297
+ { gt: value.min }
298
+ ) : undefined).filter(Boolean);
314
299
  case FILTER_VALIDATOR.AFTER_ON:
315
300
  case FILTER_VALIDATOR.GREATER_THAN_EQUAL:
316
- return (props.values as IFSValueRange[]).map(value => (
317
- // {
318
- // gte: isDateProperty ? getDateRange(value.min, props.property).from : value.min
319
- // }
301
+ return (props.values as IFSValueRange[]).map(value => value.enabled ? (
320
302
  { gte: value.min }
321
- ));
303
+ ) : undefined).filter(Boolean);
322
304
  case FILTER_VALIDATOR.IS_NULL:
323
- case FILTER_VALIDATOR.IS_NOT_NULL:
324
- return [FILTER_VALIDATOR_VALUE[props.validator].label];
305
+ case FILTER_VALIDATOR.IS_NOT_NULL: {
306
+ const addValue = props.values.length > 0 && (props.values as IFSValue[]).every(value => value.enabled);
307
+ return addValue ? [FILTER_VALIDATOR_VALUE[props.validator].label] : [];
308
+ }
325
309
  case FILTER_VALIDATOR.IN:
326
- return _get(props, 'values', [])
310
+ return (props.values as IFBExpressionRelativeDate[]).map(value => value.enabled ? value : undefined).filter(Boolean);
327
311
  default:
328
312
  return [];
329
313
  }
330
314
  }
331
315
 
332
- function getUIValues(props: OLD_IFilterDetail, rankingGroupIndex?: number) {
316
+ function getUIValuess(props: OLD_IFilterDetail, rankingGroupIndex?: number) {
333
317
  switch (props.validator) {
334
318
  case FILTER_VALIDATOR.AFTER:
335
319
  case FILTER_VALIDATOR.GREATER_THAN:
@@ -358,14 +342,14 @@ function getUIValues(props: OLD_IFilterDetail, rankingGroupIndex?: number) {
358
342
  }));
359
343
  case FILTER_VALIDATOR.IS_NULL:
360
344
  case FILTER_VALIDATOR.IS_NOT_NULL:
361
- return [{ value: FILTER_VALIDATOR_VALUE[props.validator].label, enabled: props.enabled }];
345
+ return [{ value: FILTER_VALIDATOR_VALUE[props.validator].label, enabled: (props.values as IFSValue[])[0]?.enabled ?? props.enabled }];
362
346
  case FILTER_VALIDATOR.IN:
363
347
  return (props.values as IFSValueRelativeDate[]).map(value => ({
364
348
  ...value,
365
349
  value:
366
350
  `${RELATIVE_CURSOR_VALUE[value.cursor].label} ${value.cursor !== RELATIVE_CURSOR.THIS && value.number > 1 ? value.number : ''} ${getValueUiUnitRelativeDate(value)} ${value.cursor !== RELATIVE_CURSOR.THIS ? `from ${value.anchor || 'current date'}`: ''}`,
367
351
  enabled: props.enabled
368
- }))
352
+ }));
369
353
  default:
370
354
  if (props.column.type === COLUMN.RANKING && isEmpty(props.column.aggregate)) {
371
355
  return getRankingUIValues(props.values as IFSValueRanking[][], rankingGroupIndex);
@@ -380,10 +364,10 @@ function getValueUiUnitRelativeDate(relative: IFSValueRelativeDate) {
380
364
 
381
365
  function getRankingValues(values: IFSValueRanking[][], rankingGroupIndex?: number) {
382
366
  const flattenValues = isNull(rankingGroupIndex) ? flattenDeep(values) : values[rankingGroupIndex];
383
- return flattenValues.map(rankingValue => ({
367
+ return flattenValues.map(rankingValue => rankingValue.enabled ? ({
384
368
  position: rankingValue.position - 1,
385
369
  value: rankingValue.value.value
386
- }));
370
+ }) : undefined).filter(Boolean);
387
371
  }
388
372
 
389
373
  function getRankingUIValues(values: IFSValueRanking[][], rankingGroupIndex?: number) {
@@ -397,13 +381,15 @@ function getRankingValues(values: IFSValueRanking[][], rankingGroupIndex?: numbe
397
381
  }
398
382
 
399
383
  function getResultValues(values: IFSValue[], props: OLD_IFilterDetail) {
400
- return values.map((value: IFSValue) => {
401
- if (props.column.type === COLUMN.IMAGE) {
402
- return value.valueid;
403
- } else {
404
- return value.value;
405
- }
406
- }).filter(value => value);
384
+ return values.map((value: IFSValue) => {
385
+ if (value.enabled) {
386
+ if (props.column.type === COLUMN.IMAGE) {
387
+ return value.valueid;
388
+ } else {
389
+ return value.value;
390
+ }
391
+ }
392
+ }).filter(Boolean);
407
393
  // return values.map((value: IFBResultValue) => {
408
394
  // if (!isEmpty(props.column.aggregate)) {
409
395
  // return value.value || '';
@@ -15,7 +15,7 @@ export function flatUIToUI(uFilters: IFUFlattenedFilter[] = [], section: IFSecti
15
15
  section,
16
16
  version,
17
17
  scopes: buildScopes(uFilters)
18
- }
18
+ };
19
19
  }
20
20
 
21
21
  /**
@@ -88,6 +88,7 @@ function buildDataset(uFilter: IFUFlattenedFilter): IFUDataset {
88
88
  * @returns an filter structure
89
89
  */
90
90
  function buildFilter(uFilter: IFUFlattenedFilter): IFUFilter {
91
+ const info = !isEmpty(uFilter.extras.info) ? { icon: uFilter.extras.info.icon, label: uFilter.extras.info.label } : undefined;
91
92
  return {
92
93
  collapsed: uFilter.collapsed,
93
94
  column: {
@@ -110,8 +111,10 @@ function buildFilter(uFilter: IFUFlattenedFilter): IFUFilter {
110
111
  filterid: uFilter.filterid,
111
112
  enabled: uFilter.enabled,
112
113
  extras: {
114
+ ...uFilter.extras,
113
115
  panelid: uFilter.extras.panelid,
114
116
  filterLabel: uFilter.extras.filterLabel,
117
+ info,
115
118
  scope: uFilter.extras.scope,
116
119
  scopeid: uFilter.extras.scopeid,
117
120
  section: uFilter.extras.section,
@@ -2,10 +2,10 @@
2
2
  // TO Logic structure = Cleaner logic structure
3
3
 
4
4
  import { COLUMN } from "../../constants";
5
- import { isEmpty, _get } from "../../general";
6
- import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE } from "../constants";
7
- import { getFilterid, getUIValues } from "../helpers";
8
- import { IFSValueRanking, IFUFlattenedFilter, OLD_IFilterDetail, OLD_IFilterLogic } from "../interfaces";
5
+ import { isEmpty, _get, _hasProperty } from "../../general";
6
+ import { FILTER_BACKEND_VALIDATOR, FILTER_SCOPE, FILTER_VALIDATOR_VALUE } from "../constants";
7
+ import { getFilterid, getUIValues, isNullValidator, } from "../helpers";
8
+ import { IFSValueRanking, IFUFlattenedFilter, OLD_IFilterDetail, OLD_IFilterExpression, OLD_IFilterLogic } from "../interfaces";
9
9
 
10
10
  /**
11
11
  * Adapts the Old logic structure (v2.0) to the flattened UI filter Structure.
@@ -15,86 +15,110 @@ import { IFSValueRanking, IFUFlattenedFilter, OLD_IFilterDetail, OLD_IFilterLogi
15
15
  export function logicToFlatUI(logics: OLD_IFilterLogic[] = []): IFUFlattenedFilter[] {
16
16
  if (isEmpty(logics)) return [];
17
17
 
18
- let uFilters: IFUFlattenedFilter[] = [];
18
+ const uFilters: IFUFlattenedFilter[] = [];
19
19
  logics.forEach(scopeItem => {
20
20
  if (scopeItem.filters.length > 0) {
21
21
  scopeItem.filters.forEach(filterItem => {
22
- filterItem.expressions[0].expressions.forEach(expression => {
23
- const uiExtras = expression.uiExtras;
24
- const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) as number : -1;
25
- if (index === -1 && (!uiExtras.nullValues || expression.validationType !== FILTER_BACKEND_VALIDATOR.IS_NULL)) {
26
- const scopeid = scopeItem.scope !== FILTER_SCOPE.GLOBAL ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
27
- const uFilter: IFUFlattenedFilter = {
28
- collapsed: uiExtras.collapsed,
29
- column: {
30
- id: uiExtras.column?.id,
31
- formulaType: uiExtras.column?.formulaType,
32
- linkid: uiExtras.column?.linkid,
33
- linked: uiExtras.column?.linked,
34
- qrveyid: uiExtras.column?.qrveyid,
35
- aggregate: uiExtras.column?.aggregate?.label,
36
- calculation: uiExtras.column?.calculation?.value,
37
- label: uiExtras.column?.text,
38
- property: uiExtras.column.property,
39
- sorting: uiExtras.column.sorting,
40
- outputFormat: uiExtras.column?.outputFormat,
41
- type: uiExtras.column?.type,
42
- },
43
- dateSection: uiExtras.dateSection,
44
- displayed: true,
45
- enabled: expression.enabled,
46
- extras: {
47
- panelid: uiExtras.panelid,
48
- filterLabel: uiExtras.panelName,
49
- scopeid,
50
- scope: scopeItem.scope,
51
- section: uiExtras.section,
52
- scopeInfo: {
53
- collapsed: false,
54
- enabled: scopeItem.enabled,
55
- displayed: true,
56
- scope: scopeItem.scope,
57
- scopeid,
58
- },
59
- dataset: {
60
- collapsed: false,
61
- enabled: true,
62
- displayed: true,
63
- qrveyid: uiExtras.column?.qrveyid,
64
- label: uiExtras.column?.dataset?.name,
65
- linkid: uiExtras.column?.linkid,
66
- },
67
- },
68
- filterid: undefined,
69
- lookupDisplayIndex: uiExtras.lookupDisplayIndex,
70
- nullValues: uiExtras.nullValues,
71
- operator: uiExtras.operator,
72
- property: uiExtras.property,
73
- uiValues: getUIValues(uiExtras as any),
74
- validator: uiExtras.validator,
75
- values: uiExtras.column.type !== COLUMN.RANKING || !isEmpty(uiExtras.column.aggregate)
76
- ? (uiExtras.values || [] as any[]).map((v, i) => ({
77
- ...v,
78
- enabled: uiExtras.uiValue[i].enabled != null ? uiExtras.uiValue[i].enabled : true
79
- })) : [],
80
- }
81
- uFilter.filterid = getFilterid(uFilter);
82
- uFilters.push(uFilter);
83
- }
84
- if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
85
- // Restore uiExtras.values array into single IFilterDetail object values array
86
- if (index > -1) uFilters[index].values.push(uiExtras.values[0]);
87
- const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values ) as IFSValueRanking[][], uiExtras.uiValue);
88
- if (index > -1) uFilters[index].values = refinedRankingValues;
89
- else uFilters[uFilters.length - 1].values = refinedRankingValues;
90
- }
22
+ filterItem.expressions.forEach((expression1: OLD_IFilterExpression) => {
23
+ _hasProperty(expression1, 'expressions') ? expression1.expressions.forEach((expression2: OLD_IFilterExpression) => {
24
+ buildFilterByExpression(expression2, scopeItem, uFilters);
25
+ }) : buildFilterByExpression(expression1, scopeItem, uFilters);
91
26
  });
27
+ // (filterItem.expressions[0].expressions as OLD_IFilterExpression[]).forEach((expression: OLD_IFilterExpression) => {
28
+ // buildFilterByExpression(expression, scopeItem, uFilters);
29
+ // });
92
30
  });
93
31
  }
94
32
  });
95
33
  return uFilters;
96
34
  }
97
35
 
36
+ function buildFilterByExpression(expression: OLD_IFilterExpression, scopeItem: OLD_IFilterLogic, uFilters: IFUFlattenedFilter[]) {
37
+ const uiExtras = expression.uiExtras;
38
+ const index = uiExtras.column.type === COLUMN.RANKING ? getFilter(uFilters, expression.uiExtras, true) as number : -1;
39
+ if (index === -1 && (!uiExtras.nullValues || expression.validationType !== FILTER_BACKEND_VALIDATOR.IS_NULL)) {
40
+ const uFilter: IFUFlattenedFilter = getFilterByExpression(expression, scopeItem);
41
+ uFilter.filterid = getFilterid(uFilter);
42
+ uFilters.push(uFilter);
43
+ }
44
+ if (uiExtras.column.type === COLUMN.RANKING && isEmpty(uiExtras.column.aggregate)) {
45
+ // Restore uiExtras.values array into single IFilterDetail object values array
46
+ if (index > -1) uFilters[index].values.push(uiExtras.values[0]);
47
+ const refinedRankingValues = refineRankingValues((index > -1 ? uFilters[index].values : uiExtras.values ) as IFSValueRanking[][], uiExtras.uiValue);
48
+ if (index > -1) uFilters[index].values = refinedRankingValues;
49
+ else uFilters[uFilters.length - 1].values = refinedRankingValues;
50
+ }
51
+ }
52
+
53
+ function getFilterByExpression(expression: OLD_IFilterExpression, scopeItem: OLD_IFilterLogic) {
54
+ const uiExtras = expression.uiExtras;
55
+ const scopeid = scopeItem.scope !== FILTER_SCOPE.GLOBAL ? _get(scopeItem, 'uiExtras.scopeid') : undefined;
56
+ const info = !isEmpty(uiExtras.info) ? { icon: uiExtras.info.icon, label: uiExtras.info.label } : undefined;
57
+ return {
58
+ collapsed: uiExtras.collapsed,
59
+ column: {
60
+ id: uiExtras.column?.id,
61
+ formulaType: uiExtras.column?.formulaType,
62
+ linkid: uiExtras.column?.linkid,
63
+ linked: uiExtras.column?.linked,
64
+ qrveyid: uiExtras.column?.qrveyid,
65
+ aggregate: uiExtras.column?.aggregate?.label,
66
+ calculation: uiExtras.column?.calculation?.value,
67
+ label: uiExtras.column?.text,
68
+ property: uiExtras.column.property,
69
+ sorting: uiExtras.column.sorting,
70
+ outputFormat: uiExtras.column?.outputFormat,
71
+ type: uiExtras.column?.type,
72
+ },
73
+ dateSection: uiExtras.dateSection,
74
+ displayed: true,
75
+ enabled: expression.enabled,
76
+ extras: {
77
+ ...uiExtras.extras,
78
+ panelid: uiExtras.panelid,
79
+ filterLabel: uiExtras.panelName,
80
+ info,
81
+ scopeid,
82
+ scope: scopeItem.scope,
83
+ section: uiExtras.section,
84
+ scopeInfo: {
85
+ collapsed: scopeItem.uiExtras?.collapsed,
86
+ enabled: scopeItem.enabled,
87
+ displayed: true,
88
+ scope: scopeItem.scope,
89
+ scopeid,
90
+ },
91
+ dataset: {
92
+ collapsed: false,
93
+ enabled: true,
94
+ displayed: true,
95
+ qrveyid: uiExtras.column?.qrveyid,
96
+ label: uiExtras.column?.dataset?.name,
97
+ linkid: uiExtras.column?.linkid,
98
+ },
99
+ },
100
+ filterid: undefined,
101
+ lookupDisplayIndex: uiExtras.lookupDisplayIndex,
102
+ nullValues: uiExtras.nullValues,
103
+ operator: uiExtras.operator,
104
+ property: uiExtras.property,
105
+ uiValues: getUIValues(uiExtras as any),
106
+ validator: uiExtras.validator,
107
+ values: getValues(uiExtras),
108
+ };
109
+ }
110
+
111
+ function getValues(uiExtras: OLD_IFilterDetail) {
112
+ if (isNullValidator(uiExtras.validator) && isEmpty(uiExtras.values)) {
113
+ return [{ value: FILTER_VALIDATOR_VALUE[uiExtras.validator].label, enabled: uiExtras.uiValue[0].enabled != null ? uiExtras.uiValue[0].enabled : true }];
114
+ }
115
+ if (uiExtras.column.type !== COLUMN.RANKING || !isEmpty(uiExtras.column.aggregate)) {
116
+ return uiExtras.values;
117
+ }
118
+ return [];
119
+
120
+ }
121
+
98
122
  /**
99
123
  * Get the filter or the index of the given array, validating an old filter structure.
100
124
  * @param filters The array of UI filters
@@ -103,7 +127,7 @@ export function logicToFlatUI(logics: OLD_IFilterLogic[] = []): IFUFlattenedFilt
103
127
  * @returns the index or the UI filter object
104
128
  */
105
129
  function getFilter(filters: IFUFlattenedFilter[], filter: OLD_IFilterDetail, getIndex = false): number | IFUFlattenedFilter {
106
- const validator = (f: IFUFlattenedFilter) => (f.validator === filter.validator &&
130
+ const validator = (f: IFUFlattenedFilter) => f.validator === filter.validator &&
107
131
  f.column.id === filter.column.id &&
108
132
  f.column.qrveyid === filter.column.qrveyid &&
109
133
  f.column.linkid === filter.column.linkid &&
@@ -111,7 +135,7 @@ function getFilter(filters: IFUFlattenedFilter[], filter: OLD_IFilterDetail, get
111
135
  f.extras.scope === filter.scope &&
112
136
  f.extras.scopeid === filter.scopeid &&
113
137
  f.property === filter.property &&
114
- f.extras.panelid === filter.panelid);
138
+ f.extras.panelid === filter.panelid;
115
139
  return getIndex ? filters.findIndex(validator) : filters.find(validator);
116
140
  }
117
141
 
@@ -121,7 +145,7 @@ function getFilter(filters: IFUFlattenedFilter[], filter: OLD_IFilterDetail, get
121
145
  * @param uiValues Object with additional info about the values of the filter.
122
146
  * @returns the array of Ranking values
123
147
  */
124
- function refineRankingValues(values: IFSValueRanking[][] = [], uiValues): IFSValueRanking[][] {
148
+ function refineRankingValues(values: IFSValueRanking[][] = [], uiValues = []): IFSValueRanking[][] {
125
149
  return values.map(valueGroup => {
126
150
  return [
127
151
  ...valueGroup.map(value => {