@quillsql/react 2.12.29 → 2.12.31

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 (530) hide show
  1. package/dist/cjs/Chart.d.ts +29 -46
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +187 -468
  4. package/dist/cjs/ChartBuilder.d.ts +30 -61
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +190 -131
  7. package/dist/cjs/ChartEditor.d.ts +14 -2
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +70 -125
  10. package/dist/cjs/Context.d.ts +4 -1
  11. package/dist/cjs/Context.d.ts.map +1 -1
  12. package/dist/cjs/Context.js +52 -6
  13. package/dist/cjs/Dashboard.d.ts +74 -118
  14. package/dist/cjs/Dashboard.d.ts.map +1 -1
  15. package/dist/cjs/Dashboard.js +273 -47
  16. package/dist/cjs/DateRangePicker/Calendar.d.ts.map +1 -1
  17. package/dist/cjs/DateRangePicker/Calendar.js +3 -6
  18. package/dist/cjs/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  19. package/dist/cjs/DateRangePicker/DateRangePicker.js +2 -29
  20. package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts +1 -2
  21. package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts.map +1 -1
  22. package/dist/cjs/DateRangePicker/DateRangePickerButton.js +2 -4
  23. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +2 -1
  24. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  25. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +4 -4
  26. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +1 -1
  27. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  28. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -15
  29. package/dist/cjs/ReportBuilder.d.ts +18 -6
  30. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  31. package/dist/cjs/ReportBuilder.js +477 -489
  32. package/dist/cjs/SQLEditor.d.ts +4 -11
  33. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  34. package/dist/cjs/SQLEditor.js +76 -88
  35. package/dist/cjs/Table.d.ts +19 -3
  36. package/dist/cjs/Table.d.ts.map +1 -1
  37. package/dist/cjs/Table.js +130 -114
  38. package/dist/cjs/TableChart.d.ts.map +1 -1
  39. package/dist/cjs/TableChart.js +0 -1
  40. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  41. package/dist/cjs/assets/ArrowDownIcon.d.ts.map +1 -1
  42. package/dist/cjs/assets/ArrowDownRightIcon.d.ts.map +1 -1
  43. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts.map +1 -1
  44. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts.map +1 -1
  45. package/dist/cjs/assets/ArrowRightIcon.d.ts.map +1 -1
  46. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts.map +1 -1
  47. package/dist/cjs/assets/ArrowUpIcon.d.ts.map +1 -1
  48. package/dist/cjs/assets/ArrowUpRightIcon.d.ts.map +1 -1
  49. package/dist/cjs/assets/CalendarIcon.d.ts.map +1 -1
  50. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts.map +1 -1
  51. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts.map +1 -1
  52. package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +1 -1
  53. package/dist/cjs/assets/LoadingSpinner.d.ts.map +1 -1
  54. package/dist/cjs/assets/SearchIcon.d.ts.map +1 -1
  55. package/dist/cjs/assets/XCircleIcon.d.ts.map +1 -1
  56. package/dist/cjs/components/Banner/index.d.ts +1 -1
  57. package/dist/cjs/components/Banner/index.d.ts.map +1 -1
  58. package/dist/cjs/components/Banner/index.js +1 -1
  59. package/dist/cjs/components/BigModal/BigModal.d.ts.map +1 -1
  60. package/dist/cjs/components/BigModal/BigModal.js +6 -12
  61. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  62. package/dist/cjs/components/Chart/BarChart.js +12 -1
  63. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
  64. package/dist/cjs/components/Chart/BarList.js +21 -14
  65. package/dist/cjs/components/Chart/ChartError.d.ts +8 -1
  66. package/dist/cjs/components/Chart/ChartError.d.ts.map +1 -1
  67. package/dist/cjs/components/Chart/ChartError.js +40 -5
  68. package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +1 -1
  69. package/dist/cjs/components/Chart/ChartTooltip.js +8 -2
  70. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  71. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  72. package/dist/cjs/components/Chart/LineChart.js +27 -3
  73. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
  74. package/dist/cjs/components/Chart/PieChart.js +1 -3
  75. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
  76. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  77. package/dist/cjs/components/Dashboard/ChartComponent.js +1 -1
  78. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +5 -1
  79. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  80. package/dist/cjs/components/Dashboard/DashboardFilter.js +10 -5
  81. package/dist/cjs/components/Dashboard/DataLoader.d.ts +8 -12
  82. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  83. package/dist/cjs/components/Dashboard/DataLoader.js +137 -194
  84. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  85. package/dist/cjs/components/Dashboard/MetricComponent.js +11 -45
  86. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -5
  87. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  88. package/dist/cjs/components/Dashboard/TableComponent.js +3 -32
  89. package/dist/cjs/components/Dropdown/Dropdown.d.ts.map +1 -1
  90. package/dist/cjs/components/Dropdown/Dropdown.js +1 -3
  91. package/dist/cjs/components/Dropdown/DropdownItem.d.ts.map +1 -1
  92. package/dist/cjs/components/Dropdown/DropdownItem.js +3 -8
  93. package/dist/cjs/components/Dropdown/index.d.ts +2 -2
  94. package/dist/cjs/components/Modal/Modal.d.ts.map +1 -1
  95. package/dist/cjs/components/Modal/Modal.js +2 -3
  96. package/dist/cjs/components/Modal/index.d.ts +1 -1
  97. package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
  98. package/dist/cjs/components/QuillMultiSelect.js +18 -3
  99. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  100. package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -3
  101. package/dist/cjs/components/QuillSelect.js +1 -1
  102. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  103. package/dist/cjs/components/QuillSelectWithCombo.js +6 -3
  104. package/dist/cjs/components/QuillTable.d.ts +1 -4
  105. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  106. package/dist/cjs/components/QuillTable.js +5 -11
  107. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +3 -1
  108. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  109. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +5 -8
  110. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  111. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +1 -3
  112. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  113. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +12 -1
  114. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +30 -0
  115. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -0
  116. package/dist/cjs/components/ReportBuilder/FilterModal.js +579 -0
  117. package/dist/cjs/components/ReportBuilder/ast.d.ts +2 -1
  118. package/dist/cjs/components/ReportBuilder/ast.d.ts.map +1 -1
  119. package/dist/cjs/components/ReportBuilder/ast.js +33 -6
  120. package/dist/cjs/components/ReportBuilder/constants.d.ts +18 -3
  121. package/dist/cjs/components/ReportBuilder/constants.d.ts.map +1 -1
  122. package/dist/cjs/components/ReportBuilder/constants.js +24 -3
  123. package/dist/cjs/components/ReportBuilder/convert.d.ts +18 -16
  124. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  125. package/dist/cjs/components/ReportBuilder/convert.js +378 -494
  126. package/dist/cjs/components/ReportBuilder/operators.d.ts +24 -4
  127. package/dist/cjs/components/ReportBuilder/operators.d.ts.map +1 -1
  128. package/dist/cjs/components/ReportBuilder/operators.js +32 -4
  129. package/dist/cjs/components/ReportBuilder/ui.d.ts +20 -0
  130. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  131. package/dist/cjs/components/ReportBuilder/ui.js +15 -5
  132. package/dist/cjs/components/ReportBuilder/util.d.ts +3 -11
  133. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  134. package/dist/cjs/components/ReportBuilder/util.js +15 -18
  135. package/dist/cjs/components/UiComponents.d.ts +36 -8
  136. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  137. package/dist/cjs/components/UiComponents.js +106 -12
  138. package/dist/cjs/components/selectUtils.d.ts +0 -1
  139. package/dist/cjs/components/selectUtils.d.ts.map +1 -1
  140. package/dist/cjs/components/selectUtils.js +1 -22
  141. package/dist/cjs/hooks/index.d.ts +4 -4
  142. package/dist/cjs/hooks/useAstToFilterTree.d.ts +11 -0
  143. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -0
  144. package/dist/cjs/hooks/useAstToFilterTree.js +26 -0
  145. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  146. package/dist/cjs/hooks/useDashboard.js +5 -1
  147. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  148. package/dist/cjs/hooks/useExport.js +3 -1
  149. package/dist/cjs/hooks/useOnClickOutside.js +4 -4
  150. package/dist/cjs/hooks/useOnWindowResize.d.ts.map +1 -1
  151. package/dist/cjs/hooks/useOnWindowResize.js +2 -2
  152. package/dist/cjs/hooks/useQuill.d.ts +10 -27
  153. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  154. package/dist/cjs/hooks/useQuill.js +133 -85
  155. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +1 -1
  156. package/dist/cjs/hooks/useSelectOnKeyDown.js +4 -4
  157. package/dist/cjs/hooks/useTheme.js +1 -1
  158. package/dist/cjs/index.d.ts +3 -1
  159. package/dist/cjs/index.d.ts.map +1 -1
  160. package/dist/cjs/index.js +3 -1
  161. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  162. package/dist/cjs/internals/ReportBuilder/PivotForm.js +8 -1
  163. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +2 -2
  164. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  165. package/dist/cjs/internals/ReportBuilder/PivotList.js +2 -2
  166. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
  167. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  168. package/dist/cjs/internals/ReportBuilder/PivotModal.js +8 -21
  169. package/dist/cjs/lib/utils.js +2 -2
  170. package/dist/cjs/models/Columns.d.ts +2 -1
  171. package/dist/cjs/models/Columns.d.ts.map +1 -1
  172. package/dist/cjs/models/Filter.d.ts +115 -4
  173. package/dist/cjs/models/Filter.d.ts.map +1 -1
  174. package/dist/cjs/models/Filter.js +99 -0
  175. package/dist/cjs/models/Pagination.d.ts +10 -0
  176. package/dist/cjs/models/Pagination.d.ts.map +1 -0
  177. package/dist/cjs/models/Pagination.js +2 -0
  178. package/dist/cjs/models/Report.d.ts +103 -0
  179. package/dist/cjs/models/Report.d.ts.map +1 -0
  180. package/dist/cjs/models/Report.js +2 -0
  181. package/dist/cjs/utils/aggregate.js +1 -1
  182. package/dist/cjs/utils/astFilterProcessing.d.ts +36 -0
  183. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -0
  184. package/dist/cjs/utils/astFilterProcessing.js +8091 -0
  185. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  186. package/dist/cjs/utils/astProcessing.js +4 -3
  187. package/dist/cjs/utils/axisFormatter.js +0 -71
  188. package/dist/cjs/utils/color.js +9 -87
  189. package/dist/cjs/utils/columnProcessing.d.ts +2 -0
  190. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  191. package/dist/cjs/utils/columnProcessing.js +54 -1
  192. package/dist/cjs/utils/csv.d.ts.map +1 -1
  193. package/dist/cjs/utils/dashboard.d.ts +1 -1
  194. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  195. package/dist/cjs/utils/dashboard.js +6 -59
  196. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  197. package/dist/cjs/utils/dataFetcher.js +63 -1
  198. package/dist/cjs/utils/dataProcessing.d.ts +10 -0
  199. package/dist/cjs/utils/dataProcessing.d.ts.map +1 -0
  200. package/dist/cjs/utils/dataProcessing.js +144 -0
  201. package/dist/cjs/utils/dates.d.ts +2 -1
  202. package/dist/cjs/utils/dates.d.ts.map +1 -1
  203. package/dist/cjs/utils/dates.js +23 -1
  204. package/dist/cjs/utils/error.d.ts +5 -0
  205. package/dist/cjs/utils/error.d.ts.map +1 -0
  206. package/dist/cjs/utils/error.js +12 -0
  207. package/dist/cjs/utils/filterConstants.d.ts +34 -0
  208. package/dist/cjs/utils/filterConstants.d.ts.map +1 -0
  209. package/dist/cjs/utils/filterConstants.js +36 -0
  210. package/dist/cjs/utils/filterProcessing.d.ts +7 -1
  211. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  212. package/dist/cjs/utils/filterProcessing.js +104 -17
  213. package/dist/cjs/utils/logging.d.ts.map +1 -1
  214. package/dist/cjs/utils/logging.js +1 -0
  215. package/dist/cjs/utils/merge.js +0 -21
  216. package/dist/cjs/utils/{monacoAutocomplete.d.ts → monacoConfig.d.ts} +3 -2
  217. package/dist/cjs/utils/monacoConfig.d.ts.map +1 -0
  218. package/dist/cjs/utils/monacoConfig.js +324 -0
  219. package/dist/cjs/utils/paginationProcessing.d.ts +5 -0
  220. package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -0
  221. package/dist/cjs/utils/paginationProcessing.js +30 -0
  222. package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
  223. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  224. package/dist/cjs/utils/pivotConstructor.js +16 -1
  225. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  226. package/dist/cjs/utils/pivotProcessing.js +12 -6
  227. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  228. package/dist/cjs/utils/queryConstructor.js +4 -3
  229. package/dist/cjs/utils/report.d.ts +10 -0
  230. package/dist/cjs/utils/report.d.ts.map +1 -0
  231. package/dist/cjs/utils/report.js +180 -0
  232. package/dist/cjs/utils/schema.d.ts.map +1 -1
  233. package/dist/cjs/utils/schema.js +35 -6
  234. package/dist/cjs/utils/styles.d.ts +1 -1
  235. package/dist/cjs/utils/styles.d.ts.map +1 -1
  236. package/dist/cjs/utils/tableProcessing.d.ts +22 -8
  237. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  238. package/dist/cjs/utils/tableProcessing.js +116 -35
  239. package/dist/cjs/utils/textProcessing.js +3 -3
  240. package/dist/cjs/utils/validation.d.ts +9 -0
  241. package/dist/cjs/utils/validation.d.ts.map +1 -0
  242. package/dist/cjs/utils/validation.js +24 -0
  243. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  244. package/dist/cjs/utils/valueFormatter.js +8 -4
  245. package/dist/esm/Chart.d.ts +29 -46
  246. package/dist/esm/Chart.d.ts.map +1 -1
  247. package/dist/esm/Chart.js +189 -471
  248. package/dist/esm/ChartBuilder.d.ts +30 -61
  249. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  250. package/dist/esm/ChartBuilder.js +191 -129
  251. package/dist/esm/ChartEditor.d.ts +14 -2
  252. package/dist/esm/ChartEditor.d.ts.map +1 -1
  253. package/dist/esm/ChartEditor.js +71 -126
  254. package/dist/esm/Context.d.ts +4 -1
  255. package/dist/esm/Context.d.ts.map +1 -1
  256. package/dist/esm/Context.js +51 -5
  257. package/dist/esm/Dashboard.d.ts +74 -118
  258. package/dist/esm/Dashboard.d.ts.map +1 -1
  259. package/dist/esm/Dashboard.js +275 -49
  260. package/dist/esm/DateRangePicker/Calendar.d.ts.map +1 -1
  261. package/dist/esm/DateRangePicker/Calendar.js +5 -8
  262. package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  263. package/dist/esm/DateRangePicker/DateRangePicker.js +2 -29
  264. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +1 -2
  265. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +1 -1
  266. package/dist/esm/DateRangePicker/DateRangePickerButton.js +2 -4
  267. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +2 -1
  268. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  269. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +4 -4
  270. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -1
  271. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  272. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -15
  273. package/dist/esm/ReportBuilder.d.ts +18 -6
  274. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  275. package/dist/esm/ReportBuilder.js +484 -496
  276. package/dist/esm/SQLEditor.d.ts +4 -11
  277. package/dist/esm/SQLEditor.d.ts.map +1 -1
  278. package/dist/esm/SQLEditor.js +75 -87
  279. package/dist/esm/Table.d.ts +19 -3
  280. package/dist/esm/Table.d.ts.map +1 -1
  281. package/dist/esm/Table.js +132 -116
  282. package/dist/esm/TableChart.d.ts.map +1 -1
  283. package/dist/esm/TableChart.js +0 -1
  284. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  285. package/dist/esm/assets/ArrowDownIcon.d.ts.map +1 -1
  286. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +1 -1
  287. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +1 -1
  288. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +1 -1
  289. package/dist/esm/assets/ArrowRightIcon.d.ts.map +1 -1
  290. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +1 -1
  291. package/dist/esm/assets/ArrowUpIcon.d.ts.map +1 -1
  292. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +1 -1
  293. package/dist/esm/assets/CalendarIcon.d.ts.map +1 -1
  294. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +1 -1
  295. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +1 -1
  296. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +1 -1
  297. package/dist/esm/assets/LoadingSpinner.d.ts.map +1 -1
  298. package/dist/esm/assets/SearchIcon.d.ts.map +1 -1
  299. package/dist/esm/assets/XCircleIcon.d.ts.map +1 -1
  300. package/dist/esm/components/Banner/index.d.ts +1 -1
  301. package/dist/esm/components/Banner/index.d.ts.map +1 -1
  302. package/dist/esm/components/Banner/index.js +1 -1
  303. package/dist/esm/components/BigModal/BigModal.d.ts.map +1 -1
  304. package/dist/esm/components/BigModal/BigModal.js +7 -13
  305. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  306. package/dist/esm/components/Chart/BarChart.js +13 -2
  307. package/dist/esm/components/Chart/BarList.d.ts.map +1 -1
  308. package/dist/esm/components/Chart/BarList.js +21 -14
  309. package/dist/esm/components/Chart/ChartError.d.ts +8 -1
  310. package/dist/esm/components/Chart/ChartError.d.ts.map +1 -1
  311. package/dist/esm/components/Chart/ChartError.js +39 -6
  312. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +1 -1
  313. package/dist/esm/components/Chart/ChartTooltip.js +8 -2
  314. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  315. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  316. package/dist/esm/components/Chart/LineChart.js +28 -4
  317. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
  318. package/dist/esm/components/Chart/PieChart.js +1 -3
  319. package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
  320. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  321. package/dist/esm/components/Dashboard/ChartComponent.js +1 -1
  322. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +5 -1
  323. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  324. package/dist/esm/components/Dashboard/DashboardFilter.js +10 -5
  325. package/dist/esm/components/Dashboard/DataLoader.d.ts +8 -12
  326. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  327. package/dist/esm/components/Dashboard/DataLoader.js +137 -194
  328. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  329. package/dist/esm/components/Dashboard/MetricComponent.js +11 -45
  330. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -5
  331. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  332. package/dist/esm/components/Dashboard/TableComponent.js +3 -32
  333. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  334. package/dist/esm/components/Dropdown/Dropdown.js +2 -4
  335. package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +1 -1
  336. package/dist/esm/components/Dropdown/DropdownItem.js +4 -9
  337. package/dist/esm/components/Dropdown/index.d.ts +2 -2
  338. package/dist/esm/components/Dropdown/index.js +2 -2
  339. package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
  340. package/dist/esm/components/Modal/Modal.js +2 -3
  341. package/dist/esm/components/Modal/index.d.ts +1 -1
  342. package/dist/esm/components/Modal/index.js +1 -1
  343. package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
  344. package/dist/esm/components/QuillMultiSelect.js +18 -3
  345. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  346. package/dist/esm/components/QuillMultiSelectWithCombo.js +18 -3
  347. package/dist/esm/components/QuillSelect.js +1 -1
  348. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  349. package/dist/esm/components/QuillSelectWithCombo.js +7 -4
  350. package/dist/esm/components/QuillTable.d.ts +1 -4
  351. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  352. package/dist/esm/components/QuillTable.js +5 -11
  353. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +3 -1
  354. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  355. package/dist/esm/components/ReportBuilder/AddColumnModal.js +8 -11
  356. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  357. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -4
  358. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  359. package/dist/esm/components/ReportBuilder/AddSortPopover.js +12 -1
  360. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +30 -0
  361. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -0
  362. package/dist/esm/components/ReportBuilder/FilterModal.js +576 -0
  363. package/dist/esm/components/ReportBuilder/ast.d.ts +2 -1
  364. package/dist/esm/components/ReportBuilder/ast.d.ts.map +1 -1
  365. package/dist/esm/components/ReportBuilder/ast.js +31 -5
  366. package/dist/esm/components/ReportBuilder/constants.d.ts +18 -3
  367. package/dist/esm/components/ReportBuilder/constants.d.ts.map +1 -1
  368. package/dist/esm/components/ReportBuilder/constants.js +24 -3
  369. package/dist/esm/components/ReportBuilder/convert.d.ts +18 -16
  370. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  371. package/dist/esm/components/ReportBuilder/convert.js +375 -493
  372. package/dist/esm/components/ReportBuilder/convert.uspec.d.ts +2 -0
  373. package/dist/esm/components/ReportBuilder/convert.uspec.d.ts.map +1 -0
  374. package/dist/esm/components/ReportBuilder/convert.uspec.js +1419 -0
  375. package/dist/esm/components/ReportBuilder/operators.d.ts +24 -4
  376. package/dist/esm/components/ReportBuilder/operators.d.ts.map +1 -1
  377. package/dist/esm/components/ReportBuilder/operators.js +32 -4
  378. package/dist/esm/components/ReportBuilder/ui.d.ts +20 -0
  379. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  380. package/dist/esm/components/ReportBuilder/ui.js +13 -4
  381. package/dist/esm/components/ReportBuilder/util.d.ts +3 -11
  382. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  383. package/dist/esm/components/ReportBuilder/util.js +16 -19
  384. package/dist/esm/components/UiComponents.d.ts +36 -8
  385. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  386. package/dist/esm/components/UiComponents.js +104 -11
  387. package/dist/esm/components/selectUtils.d.ts +0 -1
  388. package/dist/esm/components/selectUtils.d.ts.map +1 -1
  389. package/dist/esm/components/selectUtils.js +0 -20
  390. package/dist/esm/hooks/index.d.ts +4 -4
  391. package/dist/esm/hooks/index.js +4 -4
  392. package/dist/esm/hooks/useAstToFilterTree.d.ts +11 -0
  393. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -0
  394. package/dist/esm/hooks/useAstToFilterTree.js +24 -0
  395. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  396. package/dist/esm/hooks/useDashboard.js +5 -1
  397. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  398. package/dist/esm/hooks/useExport.js +4 -2
  399. package/dist/esm/hooks/useOnClickOutside.js +5 -5
  400. package/dist/esm/hooks/useOnWindowResize.d.ts.map +1 -1
  401. package/dist/esm/hooks/useOnWindowResize.js +3 -3
  402. package/dist/esm/hooks/useQuill.d.ts +10 -27
  403. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  404. package/dist/esm/hooks/useQuill.js +133 -85
  405. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +1 -1
  406. package/dist/esm/hooks/useSelectOnKeyDown.js +5 -5
  407. package/dist/esm/hooks/useTheme.js +1 -1
  408. package/dist/esm/index.d.ts +3 -1
  409. package/dist/esm/index.d.ts.map +1 -1
  410. package/dist/esm/index.js +1 -0
  411. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  412. package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -2
  413. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +2 -2
  414. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  415. package/dist/esm/internals/ReportBuilder/PivotList.js +3 -3
  416. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
  417. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  418. package/dist/esm/internals/ReportBuilder/PivotModal.js +11 -24
  419. package/dist/esm/lib/utils.js +2 -2
  420. package/dist/esm/models/Columns.d.ts +2 -1
  421. package/dist/esm/models/Columns.d.ts.map +1 -1
  422. package/dist/esm/models/Filter.d.ts +115 -4
  423. package/dist/esm/models/Filter.d.ts.map +1 -1
  424. package/dist/esm/models/Filter.js +98 -1
  425. package/dist/esm/models/Pagination.d.ts +10 -0
  426. package/dist/esm/models/Pagination.d.ts.map +1 -0
  427. package/dist/esm/models/Pagination.js +1 -0
  428. package/dist/esm/models/Report.d.ts +103 -0
  429. package/dist/esm/models/Report.d.ts.map +1 -0
  430. package/dist/esm/models/Report.js +1 -0
  431. package/dist/esm/test-utils/constants.d.ts +56 -0
  432. package/dist/esm/test-utils/constants.d.ts.map +1 -0
  433. package/dist/esm/test-utils/constants.js +271 -0
  434. package/dist/esm/test-utils/generators.d.ts +4 -0
  435. package/dist/esm/test-utils/generators.d.ts.map +1 -0
  436. package/dist/esm/test-utils/generators.js +37 -0
  437. package/dist/esm/utils/aggregate.js +1 -1
  438. package/dist/esm/utils/astFilterProcessing.d.ts +36 -0
  439. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -0
  440. package/dist/esm/utils/astFilterProcessing.js +8084 -0
  441. package/dist/esm/utils/astFilterProcessing.uspec.d.ts +2 -0
  442. package/dist/esm/utils/astFilterProcessing.uspec.d.ts.map +1 -0
  443. package/dist/esm/utils/astFilterProcessing.uspec.js +2877 -0
  444. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  445. package/dist/esm/utils/astProcessing.js +4 -3
  446. package/dist/esm/utils/axisFormatter.js +0 -71
  447. package/dist/esm/utils/color.js +9 -87
  448. package/dist/esm/utils/columnProcessing.d.ts +2 -0
  449. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  450. package/dist/esm/utils/columnProcessing.js +52 -0
  451. package/dist/esm/utils/columnProcessing.uspec.d.ts +2 -0
  452. package/dist/esm/utils/columnProcessing.uspec.d.ts.map +1 -0
  453. package/dist/esm/utils/columnProcessing.uspec.js +65 -0
  454. package/dist/esm/utils/csv.d.ts.map +1 -1
  455. package/dist/esm/utils/dashboard.d.ts +1 -1
  456. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  457. package/dist/esm/utils/dashboard.js +6 -59
  458. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  459. package/dist/esm/utils/dataFetcher.js +63 -1
  460. package/dist/esm/utils/dataProcessing.d.ts +10 -0
  461. package/dist/esm/utils/dataProcessing.d.ts.map +1 -0
  462. package/dist/esm/utils/dataProcessing.js +138 -0
  463. package/dist/esm/utils/dataProcessing.uspec.d.ts +2 -0
  464. package/dist/esm/utils/dataProcessing.uspec.d.ts.map +1 -0
  465. package/dist/esm/utils/dataProcessing.uspec.js +205 -0
  466. package/dist/esm/utils/dates.d.ts +2 -1
  467. package/dist/esm/utils/dates.d.ts.map +1 -1
  468. package/dist/esm/utils/dates.js +21 -0
  469. package/dist/esm/utils/error.d.ts +5 -0
  470. package/dist/esm/utils/error.d.ts.map +1 -0
  471. package/dist/esm/utils/error.js +8 -0
  472. package/dist/esm/utils/filterConstants.d.ts +34 -0
  473. package/dist/esm/utils/filterConstants.d.ts.map +1 -0
  474. package/dist/esm/utils/filterConstants.js +33 -0
  475. package/dist/esm/utils/filterProcessing.d.ts +7 -1
  476. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  477. package/dist/esm/utils/filterProcessing.js +101 -16
  478. package/dist/esm/utils/filterProcessing.uspec.d.ts +2 -0
  479. package/dist/esm/utils/filterProcessing.uspec.d.ts.map +1 -0
  480. package/dist/esm/utils/filterProcessing.uspec.js +245 -0
  481. package/dist/esm/utils/logging.d.ts.map +1 -1
  482. package/dist/esm/utils/logging.js +1 -0
  483. package/dist/esm/utils/merge.js +0 -21
  484. package/dist/esm/utils/{monacoAutocomplete.d.ts → monacoConfig.d.ts} +3 -2
  485. package/dist/esm/utils/monacoConfig.d.ts.map +1 -0
  486. package/dist/esm/utils/monacoConfig.js +319 -0
  487. package/dist/esm/utils/paginationProcessing.d.ts +5 -0
  488. package/dist/esm/utils/paginationProcessing.d.ts.map +1 -0
  489. package/dist/esm/utils/paginationProcessing.js +25 -0
  490. package/dist/esm/utils/pivotConstructor.d.ts +2 -1
  491. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  492. package/dist/esm/utils/pivotConstructor.js +16 -1
  493. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  494. package/dist/esm/utils/pivotProcessing.js +12 -6
  495. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  496. package/dist/esm/utils/queryConstructor.js +4 -3
  497. package/dist/esm/utils/queryConstructor.uspec.js +21 -21
  498. package/dist/esm/utils/report.d.ts +10 -0
  499. package/dist/esm/utils/report.d.ts.map +1 -0
  500. package/dist/esm/utils/report.ispec.d.ts +2 -0
  501. package/dist/esm/utils/report.ispec.d.ts.map +1 -0
  502. package/dist/esm/utils/report.ispec.js +46 -0
  503. package/dist/esm/utils/report.js +174 -0
  504. package/dist/esm/utils/report.uspec.d.ts +2 -0
  505. package/dist/esm/utils/report.uspec.d.ts.map +1 -0
  506. package/dist/esm/utils/report.uspec.js +66 -0
  507. package/dist/esm/utils/schema.d.ts.map +1 -1
  508. package/dist/esm/utils/schema.js +35 -6
  509. package/dist/esm/utils/styles.d.ts +1 -1
  510. package/dist/esm/utils/styles.d.ts.map +1 -1
  511. package/dist/esm/utils/tableProcessing.d.ts +22 -8
  512. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  513. package/dist/esm/utils/tableProcessing.ispec.d.ts +2 -0
  514. package/dist/esm/utils/tableProcessing.ispec.d.ts.map +1 -0
  515. package/dist/esm/utils/tableProcessing.ispec.js +61 -0
  516. package/dist/esm/utils/tableProcessing.js +112 -33
  517. package/dist/esm/utils/textProcessing.js +3 -3
  518. package/dist/esm/utils/validation.d.ts +9 -0
  519. package/dist/esm/utils/validation.d.ts.map +1 -0
  520. package/dist/esm/utils/validation.js +20 -0
  521. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  522. package/dist/esm/utils/valueFormatter.js +8 -4
  523. package/package.json +1 -1
  524. package/dist/cjs/utils/monacoAutocomplete.d.ts.map +0 -1
  525. package/dist/cjs/utils/monacoAutocomplete.js +0 -145
  526. package/dist/cjs/utils/queryConstructor.uspec.d.ts +0 -2
  527. package/dist/cjs/utils/queryConstructor.uspec.d.ts.map +0 -1
  528. package/dist/cjs/utils/queryConstructor.uspec.js +0 -225
  529. package/dist/esm/utils/monacoAutocomplete.d.ts.map +0 -1
  530. package/dist/esm/utils/monacoAutocomplete.js +0 -140
package/dist/esm/Chart.js CHANGED
@@ -1,31 +1,26 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable no-unused-vars */
3
- import { useState, useEffect, useContext, useMemo } from 'react';
2
+ import { useState, useEffect, useContext, useMemo, } from 'react';
4
3
  import { useExport } from './hooks/useExport';
5
4
  import { differenceInHours } from 'date-fns';
6
5
  import BarList from './components/Chart/BarList';
7
6
  import PieChart from './components/Chart/PieChart';
8
- import { ClientContext, CustomFieldContext, DashboardContext, DashboardFiltersContext, ReportFiltersContext, } from './Context';
7
+ import { ClientContext, CustomFieldContext, DashboardContext, ReportFiltersContext, } from './Context';
9
8
  import QuillTable from './components/QuillTable';
10
- import { getData } from './utils/dataFetcher';
11
- import { DATE_FORMAT_TYPES, valueFormatter } from './utils/valueFormatter';
12
9
  import LineChart from './components/Chart/LineChart';
13
10
  import BarChart from './components/Chart/BarChart';
14
- import { mergeComparisonRange } from './utils/merge';
15
11
  import { QuillLoadingSkeleton } from './components/Chart/ChartSkeleton';
16
12
  import ChartError from './components/Chart/ChartError';
17
- import { COMPARISON_OPTIONS, } from './DateRangePicker/dateRangePickerUtils';
18
- import { quillFormat } from './utils/valueFormatter';
19
13
  import useTheme from './hooks/useTheme';
20
- import { processFilterErrorList } from './utils/errorProcessing';
21
14
  import { findAndProcessDateFilter, processFilterFromBackend, updateFilter, } from './utils/filterProcessing';
22
- import { cleanDashboardItem } from './utils/dashboard';
23
15
  import { QuillFilterContainerComponent, } from './components/UiComponents';
24
16
  import { DashboardFilter } from './components/Dashboard/DashboardFilter';
25
17
  import { QuillSelectComponent } from './components/QuillSelect';
26
18
  import { QuillMultiSelectComponent } from './components/QuillMultiSelect';
27
- import { QuillDateRangePicker, } from './DateRangePicker/QuillDateRangePicker';
28
- import { MAX_COLUMN_ROWS_LIMIT } from './utils/constants';
19
+ import { QuillDateRangePicker } from './DateRangePicker/QuillDateRangePicker';
20
+ import { convertInternalReportToReport, EMPTY_REPORT, fetchReport, } from './utils/report';
21
+ import { shouldFetchMore, DEFAULT_PAGINATION, shouldSortInMemory, } from './utils/paginationProcessing';
22
+ import { fetchTableByReport } from './utils/tableProcessing';
23
+ import QuillMetricComponent from './components/Dashboard/MetricComponent';
29
24
  const MAX_ROWS_FOR_GENERIC_TABLE = 500;
30
25
  // @ts-ignore
31
26
  function sumByKey(arr, key) {
@@ -49,6 +44,15 @@ export function isEquivalent(filters1, filters2) {
49
44
  return false;
50
45
  }
51
46
  const filter2 = filters2[i];
47
+ if (filter1.isUserFilter !== filter2.isUserFilter) {
48
+ return false;
49
+ }
50
+ else if (filter1.isUserFilter) {
51
+ if (filter1.operator !== filter2.operator ||
52
+ filter1.value !== filter2.value) {
53
+ return false;
54
+ }
55
+ }
52
56
  const filterType = filter2.filterType;
53
57
  if (filterType === 'string') {
54
58
  if (filter1.stringFilterType === 'multiselect') {
@@ -118,233 +122,132 @@ export function didFiltersChange(dashboardItem, filters) {
118
122
  }
119
123
  return !isEquivalent(dashboardItem.filtersApplied, filters);
120
124
  }
121
- function fallbackMapColorsToFields(_report, _theme) {
122
- // By default, if the key is not in the map we use the colors array.
123
- return {};
124
- }
125
- /**
126
- * ### Quill Chart
127
- *
128
- * A simple component that displays the given data in one of many chart types.
129
- *
130
- * @example
131
- * ```js
132
- * // Usage with chart id (will auto-fetch data)
133
- * <Chart reportId="12345" />
134
- * ```
135
- *
136
- * @example
137
- * ```js
138
- * // Usage with a report (will not auto-fetch data)
139
- * <Chart config={report} />
140
- * ```
141
- *
142
- * ### Chart API
143
- * @see https://docs.quillsql.com/components/chart
144
- */
145
- const Chart = (props) => {
146
- // Cast the props to the internal version so we can use the inherited types.
147
- let data = props;
148
- if ('config' in data) {
149
- const isLoading = Boolean(!data.config);
150
- return (_jsx(ChartDisplay, { ...data, error: isLoading || data.config?.rows ? undefined : 'No rows found', loading: isLoading, isComparison: Boolean(data?.config?.compareRows?.length), onClickChartElement: props.onClickChartElement }));
151
- }
152
- const theme = useTheme();
153
- const chartColors = useMemo(() => {
154
- return data.colors?.length
155
- ? data.colors
156
- : theme && theme.chartColors.length
157
- ? theme.chartColors
158
- : ['#4E80EE', '#E14F62', '#55B5A6', '#E9A23B', '#6466E9', '#55B685'];
159
- }, [data.colors]);
160
- return (_jsx(ChartUpdater, { reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, colors: chartColors, isAnimationActive: data.isAnimationActive, hideXAxis: data.hideXAxis, hideYAxis: data.hideYAxis, hideCartesianGrid: data.hideCartesianGrid, hideHorizontalCartesianGrid: data.hideHorizontalCartesianGrid, hideVerticalCartesianGrid: data.hideVerticalCartesianGrid, hideSubsequentXAxisTicks: data.hideSubsequentXAxisTicks, hideDateRangeFilter: data.hideDateRangeFilter, cartesianGridLineStyle: data.cartesianGridLineStyle, cartesianGridLineColor: data.cartesianGridLineColor, comparisonLineStyle: data.comparisonLineStyle, mapColorsToFields: data.mapColorsToFields ?? fallbackMapColorsToFields, LoadingComponent: data.LoadingComponent, filters: data.filters, onClickChartElement: props.onClickChartElement, SelectComponent: data.SelectComponent, MultiSelectComponent: data.MultiSelectComponent, DateRangePickerComponent: data.DateRangePickerComponent, FilterContainerComponent: data.FilterContainerComponent, hideFilters: data.hideFilters }));
161
- };
162
- const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, hideDateRangeFilter = false, hideFilters = false, mapColorsToFields, LoadingComponent = QuillLoadingSkeleton, SelectComponent = QuillSelectComponent, MultiSelectComponent = QuillMultiSelectComponent, DateRangePickerComponent = QuillDateRangePicker, FilterContainerComponent = QuillFilterContainerComponent, filters, onClickChartElement, }) => {
163
- const { dispatch, dashboard } = useContext(DashboardContext);
125
+ export default function Chart({ colors, reportId, className, containerStyle, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, hideDateRangeFilter = false, hideFilters = false, mapColorsToFields, LoadingComponent = QuillLoadingSkeleton, SelectComponent = QuillSelectComponent, MultiSelectComponent = QuillMultiSelectComponent, DateRangePickerComponent = QuillDateRangePicker, FilterContainerComponent = QuillFilterContainerComponent, filters, onClickChartElement, dateBucket, }) {
126
+ const [dashboard] = useContext(DashboardContext);
164
127
  const { reportFiltersDispatch, reportFilters } = useContext(ReportFiltersContext);
165
128
  const [initialLoad, setInitialLoad] = useState(true);
166
129
  const [loading, setLoading] = useState(true);
167
130
  const [paginating, setPaginating] = useState(false);
168
131
  const [error, setError] = useState(undefined);
169
- const [isComparison, setIsComparison] = useState(false);
170
132
  const [colorMap, setColorMap] = useState({});
171
- const [client, _] = useContext(ClientContext);
133
+ const [client] = useContext(ClientContext);
172
134
  const [customFields] = useContext(CustomFieldContext);
173
135
  const [additionalProcessing, setAdditionProcessing] = useState({
174
136
  page: 0,
175
137
  });
176
138
  const [report, setReport] = useState(undefined);
177
- const [dateFilter, setDateFilter] = useState(undefined);
178
139
  const [chartFilters, setChartFilters] = useState([]);
179
140
  const [previousPage, setPreviousPage] = useState(0);
180
141
  const [filterUpdateIndex, setFilterUpdateIndex] = useState(-1);
181
- const [useReport, setUseReport] = useState(true);
142
+ const [previousDateBucket, setPreviousDateBucket] = useState(undefined);
182
143
  const theme = useTheme();
183
144
  const onPageChange = (page) => {
184
- if ((previousPage < page.currentPage &&
185
- (page.currentPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT === 0) ||
186
- (previousPage > page.currentPage &&
187
- (previousPage * page.rowsPerPage) % MAX_COLUMN_ROWS_LIMIT === 0)) {
188
- getChartDataPaginate({ page });
145
+ if (additionalProcessing.page &&
146
+ shouldFetchMore(DEFAULT_PAGINATION, page, previousPage)) {
147
+ const newPagination = { ...additionalProcessing.page, page };
148
+ const updatedProcessing = {
149
+ ...additionalProcessing,
150
+ page: newPagination,
151
+ };
152
+ setAdditionProcessing(updatedProcessing);
153
+ updateTableRows(updatedProcessing);
154
+ }
155
+ if (page > previousPage) {
156
+ setPreviousPage(page);
189
157
  }
190
- setPreviousPage(page.currentPage);
191
158
  };
192
159
  const onSortChange = (sort) => {
193
- getChartDataPaginate({ sort });
160
+ if (report &&
161
+ shouldSortInMemory(DEFAULT_PAGINATION, report.rowCount, !!report.pivot)) {
162
+ return;
163
+ }
164
+ const updatedProcessing = { page: DEFAULT_PAGINATION, sort };
165
+ fetchReportHelper(true, additionalProcessing);
166
+ updateTableRows(updatedProcessing, true);
194
167
  setPreviousPage(0);
195
168
  };
196
- const getChartDataPaginate = async (processing) => {
197
- setPaginating(true);
198
- try {
199
- let updatedProcessing = { ...additionalProcessing, ...processing };
200
- if (processing && processing.sort) {
201
- if (!updatedProcessing.page) {
202
- updatedProcessing.page = {};
169
+ const updateTableRows = async (processing, resetRows = false) => {
170
+ if (!loading && report) {
171
+ setPaginating(true);
172
+ try {
173
+ const updatedProcessing = { ...additionalProcessing, ...processing };
174
+ const paginatedRows = await fetchTableByReport(reportId, client, updatedProcessing, filters, customFields);
175
+ if (paginatedRows.error) {
176
+ throw new Error('Error fetching chart');
203
177
  }
204
- updatedProcessing.page.currentPage = 0;
205
- }
206
- // Remove extra fields on each filter so we don't confuse the backend.
207
- const allowDateRange = !hideDateRangeFilter;
208
- const minimalFilters = Object.values(dashboard.filters).length
209
- ? Object.values(chartFilters)
210
- .filter((f) => allowDateRange || f.filterType !== 'date_range')
211
- .map((filter) => {
212
- const newFilter = { ...filter };
213
- if (newFilter.filterType === 'date_range') {
214
- delete newFilter['field'];
215
- delete newFilter['options'];
216
- delete newFilter['selectedValue'];
217
- }
218
- return newFilter;
219
- })
220
- : [];
221
- if (filters) {
222
- minimalFilters.push(...filters);
223
- }
224
- const hostedBody = {
225
- metadata: {
226
- dashboardItemId: reportId,
227
- orgId: client.customerId || '*',
228
- clientId: client.publicKey,
229
- task: 'item',
230
- databaseType: client.databaseType,
231
- filters: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
232
- customFields,
233
- additionalProcessing: updatedProcessing,
234
- paginateTable: true,
235
- },
236
- };
237
- const cloudBody = {
238
- id: reportId,
239
- filters: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
240
- };
241
- setError(undefined);
242
- const resp = await getData(client, 'itempost', 'omit', hostedBody, cloudBody);
243
- processFilterErrorList(resp);
244
- if (resp && resp.name !== 'error' && !resp.errorMessage) {
245
- setIsComparison(!!resp.compareRows?.length);
246
- if (resp.compareRows) {
247
- mergeComparisonRange(resp);
248
- }
249
- const dashboardItem = {
250
- ...resp,
251
- filtersApplied: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
252
- };
253
- const cleanedReport = await cleanDashboardItem(dashboardItem, filters, client);
254
- setReport(cleanedReport);
255
- if (mapColorsToFields) {
256
- setColorMap(mapColorsToFields(cleanedReport, theme));
178
+ let tempRows = [...report.rows, ...paginatedRows.rows];
179
+ if (resetRows) {
180
+ tempRows = paginatedRows.rows;
257
181
  }
182
+ setReport({ ...report, rows: tempRows });
183
+ setTimeout(() => {
184
+ setPaginating(false);
185
+ }, 200);
258
186
  }
259
- else {
260
- setError(resp?.errorMessage);
261
- }
262
- setAdditionProcessing(updatedProcessing);
263
- setTimeout(() => {
187
+ catch (e) {
188
+ console.log(e);
264
189
  setPaginating(false);
265
- }, 200);
266
- }
267
- catch (e) {
268
- console.log('Error fetching chart: ', e);
269
- setPaginating(false);
190
+ }
270
191
  }
271
192
  };
272
- const getChartData = async (useReportTask = true, reportFilterInfo) => {
273
- try {
274
- if (filterUpdateIndex === reportFilterInfo.updateIndex) {
275
- return;
276
- }
277
- const filters = reportFilterInfo.filters;
278
- setLoading(true);
279
- const hostedBody = {
280
- metadata: {
281
- reportId,
282
- dashboardItemId: reportId,
283
- orgId: client.customerId || '*',
284
- clientId: client.publicKey,
285
- task: useReportTask ? 'report' : 'item',
286
- getDefaultDashboardFilters: filters ? false : true,
287
- databaseType: client?.databaseType,
288
- customFields,
289
- filters,
290
- },
291
- };
292
- const cloudBody = {
293
- id: reportId,
294
- };
295
- const resp = await getData(client, 'itempost', 'same-origin', hostedBody, cloudBody);
296
- processFilterErrorList(resp);
297
- if (resp && resp.name !== 'error' && !resp.errorMessage) {
298
- setIsComparison(!!resp.compareRows?.length);
299
- if (resp.compareRows) {
300
- mergeComparisonRange(resp);
301
- }
302
- const cleanedReport = await cleanDashboardItem(resp, filters ? filters : resp.filters, client);
303
- if (cleanedReport.chartType === 'table' && cleanedReport.pivot) {
304
- cleanedReport.columns = cleanedReport.yAxisFields;
305
- }
306
- setReport(cleanedReport);
307
- let filterArray = filters;
308
- // THIS SHOULD ONLY BE UNDEFINED ON INITIAL LOAD
309
- if (!filterArray) {
310
- filterArray = resp.filters
311
- ? resp.filters.map((filter) => {
312
- return processFilterFromBackend(filter, resp.rows);
313
- })
314
- : [];
315
- reportFiltersDispatch({
316
- type: 'UPDATE_REPORT_FILTER',
317
- id: reportId,
318
- data: {
319
- filters: filterArray,
320
- updateIndex: reportFilterInfo.updateIndex,
321
- },
322
- });
323
- }
324
- const dateFilter = filterArray.find((filter) => {
325
- return filter.filterType === 'date_range';
326
- });
327
- setFilterUpdateIndex(reportFilterInfo.updateIndex);
328
- setDateFilter(dateFilter);
329
- setChartFilters(filterArray);
330
- if (mapColorsToFields) {
331
- setColorMap(mapColorsToFields(resp, theme));
332
- }
333
- }
334
- else {
335
- setError(resp?.errorMessage);
336
- }
193
+ const fetchReportHelper = async (useReportTask = true, reportFilterInfo, processing) => {
194
+ const tempReport = dashboard[reportId];
195
+ const allowDateRange = !hideDateRangeFilter;
196
+ const minimalFilters = Object.values(reportFilterInfo.filters).length
197
+ ? Object.values(reportFilterInfo.filters)
198
+ .filter((f) => allowDateRange || f.filterType !== 'date_range')
199
+ .map((filter) => {
200
+ const newFilter = { ...filter };
201
+ return newFilter;
202
+ })
203
+ : [];
204
+ if (!didFiltersChange(tempReport, minimalFilters) &&
205
+ !loading &&
206
+ tempReport &&
207
+ !tempReport.triggerReload &&
208
+ !processing &&
209
+ dateBucket === previousDateBucket) {
337
210
  setLoading(false);
211
+ setReport(tempReport);
212
+ return;
338
213
  }
339
- catch (e) {
340
- if (useReportTask) {
341
- getChartData(false, reportFilterInfo);
342
- }
343
- else {
344
- console.log('Error fetching chart: ', e);
345
- setLoading(false);
346
- }
214
+ setLoading(true);
215
+ const { report, error } = await fetchReport(reportId, client, useReportTask, minimalFilters, processing, dateBucket, customFields);
216
+ if (error) {
217
+ setError(error);
218
+ setLoading(false);
219
+ return;
220
+ }
221
+ setPreviousDateBucket(dateBucket);
222
+ setReport(report);
223
+ if (mapColorsToFields && report) {
224
+ setColorMap(mapColorsToFields(report, theme));
225
+ }
226
+ let filterArray = minimalFilters;
227
+ // THIS SHOULD ONLY BE UNDEFINED ON INITIAL LOAD
228
+ if (!filterArray) {
229
+ filterArray = report.filtersApplied
230
+ ? report.filtersApplied.map((filter) => {
231
+ return processFilterFromBackend(filter);
232
+ })
233
+ : [];
234
+ reportFiltersDispatch({
235
+ type: 'UPDATE_REPORT_FILTER',
236
+ id: reportId,
237
+ data: {
238
+ filters: filterArray,
239
+ updateIndex: reportFilterInfo.updateIndex,
240
+ },
241
+ });
347
242
  }
243
+ setFilterUpdateIndex(reportFilterInfo.updateIndex);
244
+ setChartFilters(filterArray || []);
245
+ if (mapColorsToFields) {
246
+ setColorMap(mapColorsToFields(report, theme));
247
+ }
248
+ setAdditionProcessing(processing);
249
+ setError(error);
250
+ setLoading(false);
348
251
  };
349
252
  useEffect(() => {
350
253
  if (!client) {
@@ -356,61 +259,61 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
356
259
  return;
357
260
  }
358
261
  setInitialLoad(false);
359
- let parsedReportFilters = reportFilters[reportId]
262
+ const parsedReportFilters = reportFilters[reportId]
360
263
  ? reportFilters[reportId]
361
- : { updateIndex: 0 };
362
- getChartData(true, parsedReportFilters);
363
- }, [client, reportId, reportFilters[reportId]?.updateIndex]);
264
+ : { updateIndex: 0, filters: [] };
265
+ if (filterUpdateIndex === parsedReportFilters.updateIndex) {
266
+ return;
267
+ }
268
+ fetchReportHelper(true, reportFilters[reportId] || { filters: [] }, additionalProcessing);
269
+ }, [client, reportId, reportFilters[reportId]?.updateIndex, dateBucket]);
364
270
  useEffect(() => {
365
- if (!dashboard || !dashboard[reportId]) {
271
+ const tempReport = dashboard[reportId];
272
+ if (!tempReport) {
366
273
  return;
367
274
  }
368
275
  setInitialLoad(false);
369
276
  setLoading(false);
370
- setReport(dashboard[reportId]);
371
- setChartFilters(dashboard[reportId].filtersApplied);
372
- const dateFilter = dashboard[reportId].filtersApplied.find((filter) => {
373
- return filter.filterType === 'date_range';
374
- });
375
- setDateFilter(dateFilter);
376
- }, []);
377
- return (_jsxs("div", { children: [!hideFilters && (_jsx("div", { style: {
378
- display: 'flex',
379
- boxSizing: 'content-box',
380
- flexDirection: 'row',
381
- alignItems: 'center',
382
- }, children: _jsx(FilterContainerComponent, { children: chartFilters.map((filter, index) => (_jsx(DashboardFilter, { filter: filter, onChangeFilter: (filter, value = null, comparison = null) => {
383
- const updatedFilters = chartFilters.map((f) => {
384
- if (f.field === filter.field ||
385
- (f.filterType === 'date_range' &&
386
- filter.filterType === 'date_range')) {
387
- return updateFilter(f, value, comparison);
388
- }
389
- return f;
390
- });
391
- setChartFilters(updatedFilters);
392
- getChartData(true, {
277
+ let filtersApplied = [];
278
+ if (tempReport.filtersApplied && tempReport.filtersApplied.length > 0) {
279
+ filtersApplied = tempReport.filtersApplied.map((filter) => {
280
+ return filter;
281
+ });
282
+ }
283
+ setReport(tempReport);
284
+ setChartFilters(filtersApplied);
285
+ if (tempReport.error) {
286
+ setError(tempReport.error);
287
+ }
288
+ }, [dashboard[reportId]]);
289
+ if (error) {
290
+ return (_jsx("div", { style: containerStyle, className: className, children: _jsx(ChartError, { errorMessage: error }) }));
291
+ }
292
+ return (_jsxs("div", { children: [!hideFilters && (_jsx(FilterContainerComponent, { children: chartFilters.map((filter, index) => (_jsx(DashboardFilter, { filter: filter, onChangeFilter: (filter, value = null, comparison = null) => {
293
+ const updatedFilters = chartFilters.map((f) => {
294
+ if (f.field === filter.field ||
295
+ (f.filterType === 'date_range' &&
296
+ filter.filterType === 'date_range')) {
297
+ return updateFilter(f, value, comparison);
298
+ }
299
+ return f;
300
+ });
301
+ setChartFilters(updatedFilters);
302
+ fetchReportHelper(true, {
303
+ filters: updatedFilters,
304
+ updateIndex: filterUpdateIndex + 1,
305
+ }, additionalProcessing);
306
+ reportFiltersDispatch({
307
+ type: 'UPDATE_REPORT_FILTER',
308
+ id: reportId,
309
+ data: {
393
310
  filters: updatedFilters,
394
311
  updateIndex: filterUpdateIndex + 1,
395
- });
396
- reportFiltersDispatch({
397
- type: 'UPDATE_REPORT_FILTER',
398
- id: reportId,
399
- data: {
400
- filters: updatedFilters,
401
- updateIndex: filterUpdateIndex + 1,
402
- },
403
- });
404
- }, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) }) })), _jsx(ChartDisplay, { config: report, reportId: reportId, colors: colors, className: className, containerStyle: containerStyle, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, isComparison: isComparison, loading: loading || initialLoad, paginating: paginating, error: error, colorMap: colorMap, LoadingComponent: LoadingComponent, onPageChange: onPageChange, onSortChange: onSortChange, onClickChartElement: onClickChartElement, initialDateFilter: dateFilter })] }));
405
- };
406
- export const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading = false, paginating = false, error = undefined, isComparison = false, colorMap, LoadingComponent = QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, dateBucket, overrideTheme, initialDateFilter, }) => {
407
- const { dashboardFilters } = useContext(DashboardFiltersContext);
408
- const specificDashboardFilter = useMemo(() => {
409
- if (!dashboardFilters) {
410
- return [];
411
- }
412
- return dashboardFilters.filter((f) => f && config && config.dashboardName === f.dashboardName);
413
- }, [dashboardFilters]);
312
+ },
313
+ });
314
+ }, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) })), _jsx(ChartDisplay, { config: report ? convertInternalReportToReport(report) : undefined, reportId: reportId, colors: colors, className: className, containerStyle: containerStyle, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, loading: loading || initialLoad, paginating: paginating, colorMap: colorMap, LoadingComponent: LoadingComponent, onPageChange: onPageChange, onSortChange: onSortChange, onClickChartElement: onClickChartElement })] }));
315
+ }
316
+ export const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading = false, paginating = false, ErrorComponent = ChartError, colorMap, LoadingComponent = QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, overrideTheme, }) => {
414
317
  const { downloadCSV } = useExport(reportId);
415
318
  const theme = overrideTheme ?? useTheme();
416
319
  const chartColors = useMemo(() => {
@@ -420,126 +323,42 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
420
323
  ? theme.chartColors
421
324
  : ['#4E80EE', '#E14F62', '#55B5A6', '#E9A23B', '#6466E9', '#55B685'];
422
325
  }, [colors]);
423
- const rows = config?.pivotRows ?? config?.rows ?? [];
424
326
  const getDateFilter = () => {
425
- if (!hideDateRangeFilter) {
426
- return findAndProcessDateFilter(Object.values(specificDashboardFilter));
327
+ if (!hideDateRangeFilter && config && config.filtersApplied) {
328
+ return findAndProcessDateFilter(config.filtersApplied.map((f) => f));
427
329
  }
428
330
  return undefined;
429
331
  };
430
- const [dateFilter, setDateFilter] = useState(initialDateFilter ?? getDateFilter());
431
- const getYAxisFields = (curDateFilter) => {
432
- if (config &&
433
- config.pivot &&
434
- config.pivotColumns &&
435
- config.pivot.columnField) {
436
- return (config?.pivotColumns
437
- .slice(1)
438
- .map((column) => {
439
- return { ...column, format: config?.yAxisFields[0].format };
440
- }) ?? []);
441
- }
442
- else if (config && config.pivot && config.pivotColumns) {
443
- return (config?.pivotColumns
444
- .slice(1)
445
- .map((column) => {
446
- return {
447
- ...column,
448
- label: config?.yAxisFields[0].label,
449
- format: config?.yAxisFields[0].format,
450
- };
451
- }) ?? []);
452
- }
453
- else {
454
- if (curDateFilter?.comparison &&
455
- curDateFilter.comparisonRange.value !== 'NO_COMPARISON') {
456
- const comparisonYAxisFields = config?.yAxisFields?.map((field) => {
457
- return {
458
- ...field,
459
- field: `comparison_${field.field}`,
460
- label: `comparison ${field.label ?? field.field}`,
461
- };
462
- });
463
- return (config?.pivotColumns ?? [
464
- ...config?.yAxisFields,
465
- ...comparisonYAxisFields,
466
- ] ??
467
- []);
468
- }
469
- return config?.pivotColumns ?? config?.yAxisFields ?? [];
470
- }
471
- };
472
- const [yAxisFields, setYAxisFields] = useState(getYAxisFields(dateFilter ?? getDateFilter()));
332
+ const [dateFilter, setDateFilter] = useState(getDateFilter());
473
333
  useEffect(() => {
474
- setYAxisFields(getYAxisFields(initialDateFilter ?? getDateFilter()));
475
- setDateFilter(initialDateFilter ?? getDateFilter());
476
- }, [config, specificDashboardFilter, initialDateFilter]);
477
- if (error) {
478
- return _jsx(ChartError, { className: className, containerStyle: containerStyle });
479
- }
480
- else if (config &&
334
+ setDateFilter(getDateFilter());
335
+ }, [config]);
336
+ if (config &&
481
337
  !config.pivot &&
482
- config?.chartType !== 'metric' &&
483
- config?.chartType !== 'table' &&
484
- (config.rowCount > MAX_ROWS_FOR_GENERIC_TABLE ||
485
- (rows && rows.length > MAX_ROWS_FOR_GENERIC_TABLE))) {
486
- return (_jsx(ChartError, { className: className, containerStyle: containerStyle, label: `Charts can only display ${MAX_ROWS_FOR_GENERIC_TABLE} rows. Please add a pivot or modify the query.` }));
338
+ config.chartType !== 'metric' &&
339
+ config.chartType !== 'table' &&
340
+ ((config.rowCount && config.rowCount > MAX_ROWS_FOR_GENERIC_TABLE) ||
341
+ (config?.rows && config?.rows.length > MAX_ROWS_FOR_GENERIC_TABLE))) {
342
+ return (_jsx("div", { style: containerStyle, className: className, children: _jsx(ErrorComponent, { errorMessage: `Charts can only display ${MAX_ROWS_FOR_GENERIC_TABLE} rows. Please add a pivot or modify the query.` }) }));
487
343
  }
488
- else if (!config || loading) {
344
+ else if (loading) {
489
345
  return (_jsx("div", { className: className, style: containerStyle, children: _jsx(LoadingComponent, {}) }));
490
346
  }
491
347
  const chartTypes = [config?.chartType];
492
348
  if (chartTypes.includes('pie')) {
493
- const xAxisField = config.xAxisField;
494
- return (_jsx(PieChart, { className: className, containerStyle: containerStyle, data: rows.map((row) => {
349
+ return (_jsx(PieChart, { className: className, containerStyle: containerStyle, data: config?.rows.map((row) => {
495
350
  return {
496
351
  ...row,
497
- count: parseInt(row[yAxisFields[0].field]) /
498
- sumByKey(rows, yAxisFields[0].field),
352
+ count:
353
+ // @ts-ignore
354
+ parseInt(row[config?.yAxisFields[0]?.field]) /
355
+ // @ts-ignore
356
+ sumByKey(rows, config?.yAxisFields[0].field),
499
357
  };
500
- }), category: yAxisFields[0].field, index: xAxisField, colors: chartColors, theme: theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
358
+ }) || [], category: config?.yAxisFields[0]?.field, index: config?.xAxisField, colors: chartColors, theme: theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
501
359
  }
502
360
  if (chartTypes.includes('table')) {
503
- const columns = yAxisFields;
504
- // FOR PIVOTS - ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
505
- const valueFieldType = config?.pivot?.valueFieldType || undefined;
506
- // Walk through data.columns and pick off the labels from yAxisFields
507
- columns.forEach((col, index) => {
508
- // ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
509
- if ((valueFieldType ||
510
- ['min', 'max'].includes(config?.pivot?.aggregationType)) &&
511
- index !== 0) {
512
- col.format = valueFieldType || 'two_decimal_places';
513
- }
514
- if (!yAxisFields)
515
- return;
516
- const matchingCol = yAxisFields.find((c) => c.field === col.field);
517
- if (!col.label && matchingCol) {
518
- col.label = matchingCol.label;
519
- col.format = matchingCol.format;
520
- }
521
- });
522
- const formattedRows = rows.map((row) => {
523
- return columns.reduce((formattedRow, column) => {
524
- // Apply the format function to each field in the row
525
- const formattedValue = quillFormat({
526
- value: row[column.field],
527
- format: column.format,
528
- });
529
- formattedRow[column.field] = formattedValue;
530
- return formattedRow;
531
- }, {});
532
- });
533
- let numberOfRows = undefined;
534
- if (config.compareRows && config.compareRows[0]) {
535
- if (config.compareRows[0].COUNT) {
536
- numberOfRows = parseInt(config.compareRows[0].COUNT);
537
- }
538
- else if (config.compareRows[0].count) {
539
- numberOfRows = parseInt(config.compareRows[0].count);
540
- }
541
- }
542
- return (_jsx(QuillTable, { rows: formattedRows ?? [], rowCount: numberOfRows, columns: columns ?? yAxisFields, currentPage: config.page, sort: config.sort, rowsPerPage: config?.rowsPerPage || 10, containerStyle: {
361
+ return (_jsx(QuillTable, { rows: config?.rows ?? [], rowCount: config?.rowCount, columns: config?.columns ?? config?.yAxisFields ?? [], currentPage: config?.pagination?.page || 1, sort: config?.sort, rowsPerPage: config?.pagination?.rowsPerPage || 10, containerStyle: {
543
362
  width: containerStyle?.width || '100%',
544
363
  height: containerStyle?.height || '400px',
545
364
  ...containerStyle,
@@ -552,43 +371,18 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
552
371
  }, isLoading: paginating }));
553
372
  }
554
373
  if (chartTypes.includes('bar')) {
555
- return (_jsx(BarList, { data: rows, theme: theme, yAxisFields: yAxisFields, colors: chartColors, xAxisField: config.xAxisField, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement }));
374
+ return (_jsx(BarList, { data: config?.rows || [], theme: theme, yAxisFields: config?.yAxisFields || [], colors: chartColors, xAxisField: config?.xAxisField || '', xAxisFormat: config?.xAxisFormat || 'string', containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement }));
556
375
  }
557
376
  if (chartTypes.includes('column')) {
558
- // Autofill the column chart with an empty column if there are no rows
559
- let barChartData = rows;
560
- if (dateFilter && (!barChartData || barChartData.length === 0)) {
561
- const xAxis = config.xAxisField;
562
- const yAxis = yAxisFields[0]?.field;
563
- barChartData = [{ [xAxis]: '', [yAxis]: '0' }];
564
- }
565
- let xAxisFormat = config.xAxisFormat;
566
- if (dateBucket) {
567
- switch (dateBucket) {
568
- case 'day':
569
- xAxisFormat = 'MMM_dd';
570
- break;
571
- case 'week':
572
- xAxisFormat = 'string';
573
- break;
574
- case 'month':
575
- xAxisFormat = 'MMM_yyyy';
576
- break;
577
- default:
578
- xAxisFormat = 'MMM_yyyy';
579
- break;
580
- }
581
- }
582
- return (_jsx(BarChart, { colors: chartColors, theme: theme, isStacked: config.pivot && yAxisFields.length > (dateFilter?.comparison ? 2 : 1), yAxisFields: yAxisFields, data: barChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: xAxisFormat, containerStyle: containerStyle, className: className, comparison: dateFilter?.comparison &&
377
+ return (_jsx(BarChart, { colors: chartColors, theme: theme, isStacked: !!config?.pivot &&
378
+ config?.yAxisFields?.length > (dateFilter?.comparison ? 2 : 1), yAxisFields: config?.yAxisFields || [], data: config?.rows || [], xAxisField: config?.xAxisField || '', xAxisLabel: config?.xAxisLabel || '', xAxisFormat: config?.xAxisFormat || 'string', containerStyle: containerStyle, className: className, comparison: dateFilter?.comparison &&
583
379
  dateFilter.comparisonRange.value !== 'NO_COMPARISON', isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
584
380
  }
585
381
  if (chartTypes.includes('metric')) {
586
- const isComparison = rows?.length > 0 &&
587
- Object.keys(rows[0]).includes(`comparison_${config.xAxisField}`);
588
- const primaryMetricLabel = config?.filtersApplied?.date_range?.preset?.label;
589
- const comparisonKey = config?.filtersApplied?.date_range?.comparisonRange?.value;
590
- const comparisonLabel = COMPARISON_OPTIONS.find((opt) => opt.value === comparisonKey)?.text;
591
- if (rows?.length === 0 || rows[0][config.xAxisField] === null) {
382
+ if (!config?.rows ||
383
+ config?.rows?.length === 0 ||
384
+ // @ts-ignore
385
+ config?.rows[0][config?.xAxisField] === null) {
592
386
  return (_jsx("div", { style: {
593
387
  display: 'flex',
594
388
  flex: '1 0 auto',
@@ -603,7 +397,7 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
603
397
  ...containerStyle,
604
398
  }, className: className, children: "No results" }));
605
399
  }
606
- return (_jsxs("div", { style: {
400
+ return (_jsx("div", { style: {
607
401
  fontFamily: theme?.fontFamily,
608
402
  fontSize: 32,
609
403
  color: theme?.primaryTextColor,
@@ -620,84 +414,9 @@ export const ChartDisplay = ({ reportId, config, colors, className, containerSty
620
414
  width: '100%',
621
415
  flexDirection: 'row',
622
416
  ...containerStyle,
623
- }, className: className, children: [_jsxs("div", { style: {
624
- display: 'flex',
625
- gap: 4,
626
- alignItems: 'baseline',
627
- marginRight: 'auto',
628
- }, children: [_jsx("span", { children: rows?.length > 0 &&
629
- valueFormatter({
630
- value: rows[0][config.xAxisField] ?? 0,
631
- field: config.xAxisField,
632
- fields: [
633
- {
634
- field: config.xAxisField,
635
- format: config.xAxisFormat,
636
- label: config.xAxisLabel,
637
- _id: config._id || 'dummy',
638
- },
639
- ],
640
- }) }), isComparison && (_jsx("span", { style: {
641
- fontSize: 13,
642
- fontWeight: '500',
643
- fontFamily: theme?.fontFamily,
644
- color: theme?.primaryTextColor,
645
- marginLeft: 2,
646
- }, children: primaryMetricLabel
647
- ? `in ${primaryMetricLabel.toLowerCase()}`
648
- : 'this period' }))] }), isComparison && (_jsxs("div", { style: {
649
- display: 'flex',
650
- gap: 4,
651
- alignItems: 'baseline',
652
- paddingTop: 4,
653
- color: theme?.secondaryTextColor,
654
- }, children: [_jsx("span", { style: {
655
- fontSize: 28,
656
- fontWeight: '500',
657
- fontFamily: theme?.fontFamily,
658
- color: theme?.secondaryTextColor,
659
- }, children: rows?.length > 0 &&
660
- valueFormatter({
661
- value: rows[0][`comparison_${config.xAxisField}`] ?? 0,
662
- field: config.xAxisField,
663
- fields: [
664
- {
665
- field: config.xAxisField,
666
- format: config.xAxisFormat,
667
- label: config.xAxisLabel,
668
- _id: config._id || 'dummy',
669
- },
670
- ],
671
- }) }), _jsx("span", { style: {
672
- fontSize: 13,
673
- fontWeight: '500',
674
- fontFamily: theme?.fontFamily,
675
- color: theme?.secondaryTextColor,
676
- marginLeft: 2,
677
- }, children: comparisonLabel
678
- ? 'in ' + comparisonLabel.toLowerCase()
679
- : 'previous period' })] }))] }));
680
- }
681
- // Autofill the line chart with two zero values, so they form a line at 0.0
682
- // when there are no rows on the config.
683
- let lineChartData = rows;
684
- const xAxisFieldFormat = config.columns.find((col) => col.field === config.xAxisField)?.format;
685
- if (dateFilter &&
686
- DATE_FORMAT_TYPES.includes(xAxisFieldFormat) &&
687
- (!lineChartData || lineChartData.length === 0)) {
688
- const xAxis = config.xAxisField;
689
- const yAxis = yAxisFields[0]?.field;
690
- const format = config.pivot
691
- ? 'MMM_yyyy'
692
- : config.columns.find((c) => c.field === xAxis).format;
693
- const startDate = quillFormat({ value: dateFilter?.startDate, format });
694
- const endDate = quillFormat({ value: dateFilter?.endDate, format });
695
- lineChartData = [
696
- { [xAxis]: startDate, [yAxis]: '0' },
697
- { [xAxis]: endDate, [yAxis]: '0' },
698
- ];
417
+ }, className: className, children: _jsx(QuillMetricComponent, { report: config ?? EMPTY_REPORT }) }));
699
418
  }
700
- return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: yAxisFields.sort(sortComparisonFirst), data: lineChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, theme: theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
419
+ return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: config?.yAxisFields.sort(sortComparisonFirst) || [], data: config?.rows || [], xAxisField: config?.xAxisField || '', xAxisLabel: config?.xAxisLabel || '', xAxisFormat: config?.xAxisFormat || 'string', containerStyle: containerStyle, className: className, theme: theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
701
420
  };
702
421
  // Sort to put comparison first (ie. underneath) primary.
703
422
  const sortComparisonFirst = (a, b) => {
@@ -710,4 +429,3 @@ const sortComparisonFirst = (a, b) => {
710
429
  return 1;
711
430
  return 0;
712
431
  };
713
- export default Chart;