@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/cjs/Chart.js CHANGED
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ChartDisplay = exports.didFiltersChange = exports.isEquivalent = void 0;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
- /* eslint-disable no-unused-vars */
9
8
  const react_1 = require("react");
10
9
  const useExport_1 = require("./hooks/useExport");
11
10
  const date_fns_1 = require("date-fns");
@@ -13,25 +12,21 @@ const BarList_1 = __importDefault(require("./components/Chart/BarList"));
13
12
  const PieChart_1 = __importDefault(require("./components/Chart/PieChart"));
14
13
  const Context_1 = require("./Context");
15
14
  const QuillTable_1 = __importDefault(require("./components/QuillTable"));
16
- const dataFetcher_1 = require("./utils/dataFetcher");
17
- const valueFormatter_1 = require("./utils/valueFormatter");
18
15
  const LineChart_1 = __importDefault(require("./components/Chart/LineChart"));
19
16
  const BarChart_1 = __importDefault(require("./components/Chart/BarChart"));
20
- const merge_1 = require("./utils/merge");
21
17
  const ChartSkeleton_1 = require("./components/Chart/ChartSkeleton");
22
18
  const ChartError_1 = __importDefault(require("./components/Chart/ChartError"));
23
- const dateRangePickerUtils_1 = require("./DateRangePicker/dateRangePickerUtils");
24
- const valueFormatter_2 = require("./utils/valueFormatter");
25
19
  const useTheme_1 = __importDefault(require("./hooks/useTheme"));
26
- const errorProcessing_1 = require("./utils/errorProcessing");
27
20
  const filterProcessing_1 = require("./utils/filterProcessing");
28
- const dashboard_1 = require("./utils/dashboard");
29
21
  const UiComponents_1 = require("./components/UiComponents");
30
22
  const DashboardFilter_1 = require("./components/Dashboard/DashboardFilter");
31
23
  const QuillSelect_1 = require("./components/QuillSelect");
32
24
  const QuillMultiSelect_1 = require("./components/QuillMultiSelect");
33
25
  const QuillDateRangePicker_1 = require("./DateRangePicker/QuillDateRangePicker");
34
- const constants_1 = require("./utils/constants");
26
+ const report_1 = require("./utils/report");
27
+ const paginationProcessing_1 = require("./utils/paginationProcessing");
28
+ const tableProcessing_1 = require("./utils/tableProcessing");
29
+ const MetricComponent_1 = __importDefault(require("./components/Dashboard/MetricComponent"));
35
30
  const MAX_ROWS_FOR_GENERIC_TABLE = 500;
36
31
  // @ts-ignore
37
32
  function sumByKey(arr, key) {
@@ -55,6 +50,15 @@ function isEquivalent(filters1, filters2) {
55
50
  return false;
56
51
  }
57
52
  const filter2 = filters2[i];
53
+ if (filter1.isUserFilter !== filter2.isUserFilter) {
54
+ return false;
55
+ }
56
+ else if (filter1.isUserFilter) {
57
+ if (filter1.operator !== filter2.operator ||
58
+ filter1.value !== filter2.value) {
59
+ return false;
60
+ }
61
+ }
58
62
  const filterType = filter2.filterType;
59
63
  if (filterType === 'string') {
60
64
  if (filter1.stringFilterType === 'multiselect') {
@@ -126,233 +130,132 @@ function didFiltersChange(dashboardItem, filters) {
126
130
  return !isEquivalent(dashboardItem.filtersApplied, filters);
127
131
  }
128
132
  exports.didFiltersChange = didFiltersChange;
129
- function fallbackMapColorsToFields(_report, _theme) {
130
- // By default, if the key is not in the map we use the colors array.
131
- return {};
132
- }
133
- /**
134
- * ### Quill Chart
135
- *
136
- * A simple component that displays the given data in one of many chart types.
137
- *
138
- * @example
139
- * ```js
140
- * // Usage with chart id (will auto-fetch data)
141
- * <Chart reportId="12345" />
142
- * ```
143
- *
144
- * @example
145
- * ```js
146
- * // Usage with a report (will not auto-fetch data)
147
- * <Chart config={report} />
148
- * ```
149
- *
150
- * ### Chart API
151
- * @see https://docs.quillsql.com/components/chart
152
- */
153
- const Chart = (props) => {
154
- // Cast the props to the internal version so we can use the inherited types.
155
- let data = props;
156
- if ('config' in data) {
157
- const isLoading = Boolean(!data.config);
158
- return ((0, jsx_runtime_1.jsx)(exports.ChartDisplay, { ...data, error: isLoading || data.config?.rows ? undefined : 'No rows found', loading: isLoading, isComparison: Boolean(data?.config?.compareRows?.length), onClickChartElement: props.onClickChartElement }));
159
- }
160
- const theme = (0, useTheme_1.default)();
161
- const chartColors = (0, react_1.useMemo)(() => {
162
- return data.colors?.length
163
- ? data.colors
164
- : theme && theme.chartColors.length
165
- ? theme.chartColors
166
- : ['#4E80EE', '#E14F62', '#55B5A6', '#E9A23B', '#6466E9', '#55B685'];
167
- }, [data.colors]);
168
- return ((0, jsx_runtime_1.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 }));
169
- };
170
- 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 = ChartSkeleton_1.QuillLoadingSkeleton, SelectComponent = QuillSelect_1.QuillSelectComponent, MultiSelectComponent = QuillMultiSelect_1.QuillMultiSelectComponent, DateRangePickerComponent = QuillDateRangePicker_1.QuillDateRangePicker, FilterContainerComponent = UiComponents_1.QuillFilterContainerComponent, filters, onClickChartElement, }) => {
171
- const { dispatch, dashboard } = (0, react_1.useContext)(Context_1.DashboardContext);
133
+ 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 = ChartSkeleton_1.QuillLoadingSkeleton, SelectComponent = QuillSelect_1.QuillSelectComponent, MultiSelectComponent = QuillMultiSelect_1.QuillMultiSelectComponent, DateRangePickerComponent = QuillDateRangePicker_1.QuillDateRangePicker, FilterContainerComponent = UiComponents_1.QuillFilterContainerComponent, filters, onClickChartElement, dateBucket, }) {
134
+ const [dashboard] = (0, react_1.useContext)(Context_1.DashboardContext);
172
135
  const { reportFiltersDispatch, reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
173
136
  const [initialLoad, setInitialLoad] = (0, react_1.useState)(true);
174
137
  const [loading, setLoading] = (0, react_1.useState)(true);
175
138
  const [paginating, setPaginating] = (0, react_1.useState)(false);
176
139
  const [error, setError] = (0, react_1.useState)(undefined);
177
- const [isComparison, setIsComparison] = (0, react_1.useState)(false);
178
140
  const [colorMap, setColorMap] = (0, react_1.useState)({});
179
- const [client, _] = (0, react_1.useContext)(Context_1.ClientContext);
141
+ const [client] = (0, react_1.useContext)(Context_1.ClientContext);
180
142
  const [customFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
181
143
  const [additionalProcessing, setAdditionProcessing] = (0, react_1.useState)({
182
144
  page: 0,
183
145
  });
184
146
  const [report, setReport] = (0, react_1.useState)(undefined);
185
- const [dateFilter, setDateFilter] = (0, react_1.useState)(undefined);
186
147
  const [chartFilters, setChartFilters] = (0, react_1.useState)([]);
187
148
  const [previousPage, setPreviousPage] = (0, react_1.useState)(0);
188
149
  const [filterUpdateIndex, setFilterUpdateIndex] = (0, react_1.useState)(-1);
189
- const [useReport, setUseReport] = (0, react_1.useState)(true);
150
+ const [previousDateBucket, setPreviousDateBucket] = (0, react_1.useState)(undefined);
190
151
  const theme = (0, useTheme_1.default)();
191
152
  const onPageChange = (page) => {
192
- if ((previousPage < page.currentPage &&
193
- (page.currentPage * page.rowsPerPage) % constants_1.MAX_COLUMN_ROWS_LIMIT === 0) ||
194
- (previousPage > page.currentPage &&
195
- (previousPage * page.rowsPerPage) % constants_1.MAX_COLUMN_ROWS_LIMIT === 0)) {
196
- getChartDataPaginate({ page });
153
+ if (additionalProcessing.page &&
154
+ (0, paginationProcessing_1.shouldFetchMore)(paginationProcessing_1.DEFAULT_PAGINATION, page, previousPage)) {
155
+ const newPagination = { ...additionalProcessing.page, page };
156
+ const updatedProcessing = {
157
+ ...additionalProcessing,
158
+ page: newPagination,
159
+ };
160
+ setAdditionProcessing(updatedProcessing);
161
+ updateTableRows(updatedProcessing);
162
+ }
163
+ if (page > previousPage) {
164
+ setPreviousPage(page);
197
165
  }
198
- setPreviousPage(page.currentPage);
199
166
  };
200
167
  const onSortChange = (sort) => {
201
- getChartDataPaginate({ sort });
168
+ if (report &&
169
+ (0, paginationProcessing_1.shouldSortInMemory)(paginationProcessing_1.DEFAULT_PAGINATION, report.rowCount, !!report.pivot)) {
170
+ return;
171
+ }
172
+ const updatedProcessing = { page: paginationProcessing_1.DEFAULT_PAGINATION, sort };
173
+ fetchReportHelper(true, additionalProcessing);
174
+ updateTableRows(updatedProcessing, true);
202
175
  setPreviousPage(0);
203
176
  };
204
- const getChartDataPaginate = async (processing) => {
205
- setPaginating(true);
206
- try {
207
- let updatedProcessing = { ...additionalProcessing, ...processing };
208
- if (processing && processing.sort) {
209
- if (!updatedProcessing.page) {
210
- updatedProcessing.page = {};
211
- }
212
- updatedProcessing.page.currentPage = 0;
213
- }
214
- // Remove extra fields on each filter so we don't confuse the backend.
215
- const allowDateRange = !hideDateRangeFilter;
216
- const minimalFilters = Object.values(dashboard.filters).length
217
- ? Object.values(chartFilters)
218
- .filter((f) => allowDateRange || f.filterType !== 'date_range')
219
- .map((filter) => {
220
- const newFilter = { ...filter };
221
- if (newFilter.filterType === 'date_range') {
222
- delete newFilter['field'];
223
- delete newFilter['options'];
224
- delete newFilter['selectedValue'];
225
- }
226
- return newFilter;
227
- })
228
- : [];
229
- if (filters) {
230
- minimalFilters.push(...filters);
231
- }
232
- const hostedBody = {
233
- metadata: {
234
- dashboardItemId: reportId,
235
- orgId: client.customerId || '*',
236
- clientId: client.publicKey,
237
- task: 'item',
238
- databaseType: client.databaseType,
239
- filters: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
240
- customFields,
241
- additionalProcessing: updatedProcessing,
242
- paginateTable: true,
243
- },
244
- };
245
- const cloudBody = {
246
- id: reportId,
247
- filters: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
248
- };
249
- setError(undefined);
250
- const resp = await (0, dataFetcher_1.getData)(client, 'itempost', 'omit', hostedBody, cloudBody);
251
- (0, errorProcessing_1.processFilterErrorList)(resp);
252
- if (resp && resp.name !== 'error' && !resp.errorMessage) {
253
- setIsComparison(!!resp.compareRows?.length);
254
- if (resp.compareRows) {
255
- (0, merge_1.mergeComparisonRange)(resp);
177
+ const updateTableRows = async (processing, resetRows = false) => {
178
+ if (!loading && report) {
179
+ setPaginating(true);
180
+ try {
181
+ const updatedProcessing = { ...additionalProcessing, ...processing };
182
+ const paginatedRows = await (0, tableProcessing_1.fetchTableByReport)(reportId, client, updatedProcessing, filters, customFields);
183
+ if (paginatedRows.error) {
184
+ throw new Error('Error fetching chart');
256
185
  }
257
- const dashboardItem = {
258
- ...resp,
259
- filtersApplied: minimalFilters.filter((f) => f.dashboardName === dashboard[reportId].dashboardName),
260
- };
261
- const cleanedReport = await (0, dashboard_1.cleanDashboardItem)(dashboardItem, filters, client);
262
- setReport(cleanedReport);
263
- if (mapColorsToFields) {
264
- setColorMap(mapColorsToFields(cleanedReport, theme));
186
+ let tempRows = [...report.rows, ...paginatedRows.rows];
187
+ if (resetRows) {
188
+ tempRows = paginatedRows.rows;
265
189
  }
190
+ setReport({ ...report, rows: tempRows });
191
+ setTimeout(() => {
192
+ setPaginating(false);
193
+ }, 200);
266
194
  }
267
- else {
268
- setError(resp?.errorMessage);
269
- }
270
- setAdditionProcessing(updatedProcessing);
271
- setTimeout(() => {
195
+ catch (e) {
196
+ console.log(e);
272
197
  setPaginating(false);
273
- }, 200);
274
- }
275
- catch (e) {
276
- console.log('Error fetching chart: ', e);
277
- setPaginating(false);
198
+ }
278
199
  }
279
200
  };
280
- const getChartData = async (useReportTask = true, reportFilterInfo) => {
281
- try {
282
- if (filterUpdateIndex === reportFilterInfo.updateIndex) {
283
- return;
284
- }
285
- const filters = reportFilterInfo.filters;
286
- setLoading(true);
287
- const hostedBody = {
288
- metadata: {
289
- reportId,
290
- dashboardItemId: reportId,
291
- orgId: client.customerId || '*',
292
- clientId: client.publicKey,
293
- task: useReportTask ? 'report' : 'item',
294
- getDefaultDashboardFilters: filters ? false : true,
295
- databaseType: client?.databaseType,
296
- customFields,
297
- filters,
298
- },
299
- };
300
- const cloudBody = {
301
- id: reportId,
302
- };
303
- const resp = await (0, dataFetcher_1.getData)(client, 'itempost', 'same-origin', hostedBody, cloudBody);
304
- (0, errorProcessing_1.processFilterErrorList)(resp);
305
- if (resp && resp.name !== 'error' && !resp.errorMessage) {
306
- setIsComparison(!!resp.compareRows?.length);
307
- if (resp.compareRows) {
308
- (0, merge_1.mergeComparisonRange)(resp);
309
- }
310
- const cleanedReport = await (0, dashboard_1.cleanDashboardItem)(resp, filters ? filters : resp.filters, client);
311
- if (cleanedReport.chartType === 'table' && cleanedReport.pivot) {
312
- cleanedReport.columns = cleanedReport.yAxisFields;
313
- }
314
- setReport(cleanedReport);
315
- let filterArray = filters;
316
- // THIS SHOULD ONLY BE UNDEFINED ON INITIAL LOAD
317
- if (!filterArray) {
318
- filterArray = resp.filters
319
- ? resp.filters.map((filter) => {
320
- return (0, filterProcessing_1.processFilterFromBackend)(filter, resp.rows);
321
- })
322
- : [];
323
- reportFiltersDispatch({
324
- type: 'UPDATE_REPORT_FILTER',
325
- id: reportId,
326
- data: {
327
- filters: filterArray,
328
- updateIndex: reportFilterInfo.updateIndex,
329
- },
330
- });
331
- }
332
- const dateFilter = filterArray.find((filter) => {
333
- return filter.filterType === 'date_range';
334
- });
335
- setFilterUpdateIndex(reportFilterInfo.updateIndex);
336
- setDateFilter(dateFilter);
337
- setChartFilters(filterArray);
338
- if (mapColorsToFields) {
339
- setColorMap(mapColorsToFields(resp, theme));
340
- }
341
- }
342
- else {
343
- setError(resp?.errorMessage);
344
- }
201
+ const fetchReportHelper = async (useReportTask = true, reportFilterInfo, processing) => {
202
+ const tempReport = dashboard[reportId];
203
+ const allowDateRange = !hideDateRangeFilter;
204
+ const minimalFilters = Object.values(reportFilterInfo.filters).length
205
+ ? Object.values(reportFilterInfo.filters)
206
+ .filter((f) => allowDateRange || f.filterType !== 'date_range')
207
+ .map((filter) => {
208
+ const newFilter = { ...filter };
209
+ return newFilter;
210
+ })
211
+ : [];
212
+ if (!didFiltersChange(tempReport, minimalFilters) &&
213
+ !loading &&
214
+ tempReport &&
215
+ !tempReport.triggerReload &&
216
+ !processing &&
217
+ dateBucket === previousDateBucket) {
345
218
  setLoading(false);
219
+ setReport(tempReport);
220
+ return;
346
221
  }
347
- catch (e) {
348
- if (useReportTask) {
349
- getChartData(false, reportFilterInfo);
350
- }
351
- else {
352
- console.log('Error fetching chart: ', e);
353
- setLoading(false);
354
- }
222
+ setLoading(true);
223
+ const { report, error } = await (0, report_1.fetchReport)(reportId, client, useReportTask, minimalFilters, processing, dateBucket, customFields);
224
+ if (error) {
225
+ setError(error);
226
+ setLoading(false);
227
+ return;
228
+ }
229
+ setPreviousDateBucket(dateBucket);
230
+ setReport(report);
231
+ if (mapColorsToFields && report) {
232
+ setColorMap(mapColorsToFields(report, theme));
233
+ }
234
+ let filterArray = minimalFilters;
235
+ // THIS SHOULD ONLY BE UNDEFINED ON INITIAL LOAD
236
+ if (!filterArray) {
237
+ filterArray = report.filtersApplied
238
+ ? report.filtersApplied.map((filter) => {
239
+ return (0, filterProcessing_1.processFilterFromBackend)(filter);
240
+ })
241
+ : [];
242
+ reportFiltersDispatch({
243
+ type: 'UPDATE_REPORT_FILTER',
244
+ id: reportId,
245
+ data: {
246
+ filters: filterArray,
247
+ updateIndex: reportFilterInfo.updateIndex,
248
+ },
249
+ });
250
+ }
251
+ setFilterUpdateIndex(reportFilterInfo.updateIndex);
252
+ setChartFilters(filterArray || []);
253
+ if (mapColorsToFields) {
254
+ setColorMap(mapColorsToFields(report, theme));
355
255
  }
256
+ setAdditionProcessing(processing);
257
+ setError(error);
258
+ setLoading(false);
356
259
  };
357
260
  (0, react_1.useEffect)(() => {
358
261
  if (!client) {
@@ -364,61 +267,62 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
364
267
  return;
365
268
  }
366
269
  setInitialLoad(false);
367
- let parsedReportFilters = reportFilters[reportId]
270
+ const parsedReportFilters = reportFilters[reportId]
368
271
  ? reportFilters[reportId]
369
- : { updateIndex: 0 };
370
- getChartData(true, parsedReportFilters);
371
- }, [client, reportId, reportFilters[reportId]?.updateIndex]);
272
+ : { updateIndex: 0, filters: [] };
273
+ if (filterUpdateIndex === parsedReportFilters.updateIndex) {
274
+ return;
275
+ }
276
+ fetchReportHelper(true, reportFilters[reportId] || { filters: [] }, additionalProcessing);
277
+ }, [client, reportId, reportFilters[reportId]?.updateIndex, dateBucket]);
372
278
  (0, react_1.useEffect)(() => {
373
- if (!dashboard || !dashboard[reportId]) {
279
+ const tempReport = dashboard[reportId];
280
+ if (!tempReport) {
374
281
  return;
375
282
  }
376
283
  setInitialLoad(false);
377
284
  setLoading(false);
378
- setReport(dashboard[reportId]);
379
- setChartFilters(dashboard[reportId].filtersApplied);
380
- const dateFilter = dashboard[reportId].filtersApplied.find((filter) => {
381
- return filter.filterType === 'date_range';
382
- });
383
- setDateFilter(dateFilter);
384
- }, []);
385
- return ((0, jsx_runtime_1.jsxs)("div", { children: [!hideFilters && ((0, jsx_runtime_1.jsx)("div", { style: {
386
- display: 'flex',
387
- boxSizing: 'content-box',
388
- flexDirection: 'row',
389
- alignItems: 'center',
390
- }, children: (0, jsx_runtime_1.jsx)(FilterContainerComponent, { children: chartFilters.map((filter, index) => ((0, jsx_runtime_1.jsx)(DashboardFilter_1.DashboardFilter, { filter: filter, onChangeFilter: (filter, value = null, comparison = null) => {
391
- const updatedFilters = chartFilters.map((f) => {
392
- if (f.field === filter.field ||
393
- (f.filterType === 'date_range' &&
394
- filter.filterType === 'date_range')) {
395
- return (0, filterProcessing_1.updateFilter)(f, value, comparison);
396
- }
397
- return f;
398
- });
399
- setChartFilters(updatedFilters);
400
- getChartData(true, {
285
+ let filtersApplied = [];
286
+ if (tempReport.filtersApplied && tempReport.filtersApplied.length > 0) {
287
+ filtersApplied = tempReport.filtersApplied.map((filter) => {
288
+ return filter;
289
+ });
290
+ }
291
+ setReport(tempReport);
292
+ setChartFilters(filtersApplied);
293
+ if (tempReport.error) {
294
+ setError(tempReport.error);
295
+ }
296
+ }, [dashboard[reportId]]);
297
+ if (error) {
298
+ return ((0, jsx_runtime_1.jsx)("div", { style: containerStyle, className: className, children: (0, jsx_runtime_1.jsx)(ChartError_1.default, { errorMessage: error }) }));
299
+ }
300
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [!hideFilters && ((0, jsx_runtime_1.jsx)(FilterContainerComponent, { children: chartFilters.map((filter, index) => ((0, jsx_runtime_1.jsx)(DashboardFilter_1.DashboardFilter, { filter: filter, onChangeFilter: (filter, value = null, comparison = null) => {
301
+ const updatedFilters = chartFilters.map((f) => {
302
+ if (f.field === filter.field ||
303
+ (f.filterType === 'date_range' &&
304
+ filter.filterType === 'date_range')) {
305
+ return (0, filterProcessing_1.updateFilter)(f, value, comparison);
306
+ }
307
+ return f;
308
+ });
309
+ setChartFilters(updatedFilters);
310
+ fetchReportHelper(true, {
311
+ filters: updatedFilters,
312
+ updateIndex: filterUpdateIndex + 1,
313
+ }, additionalProcessing);
314
+ reportFiltersDispatch({
315
+ type: 'UPDATE_REPORT_FILTER',
316
+ id: reportId,
317
+ data: {
401
318
  filters: updatedFilters,
402
319
  updateIndex: filterUpdateIndex + 1,
403
- });
404
- reportFiltersDispatch({
405
- type: 'UPDATE_REPORT_FILTER',
406
- id: reportId,
407
- data: {
408
- filters: updatedFilters,
409
- updateIndex: filterUpdateIndex + 1,
410
- },
411
- });
412
- }, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) }) })), (0, jsx_runtime_1.jsx)(exports.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 })] }));
413
- };
414
- 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 = ChartSkeleton_1.QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, dateBucket, overrideTheme, initialDateFilter, }) => {
415
- const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
416
- const specificDashboardFilter = (0, react_1.useMemo)(() => {
417
- if (!dashboardFilters) {
418
- return [];
419
- }
420
- return dashboardFilters.filter((f) => f && config && config.dashboardName === f.dashboardName);
421
- }, [dashboardFilters]);
320
+ },
321
+ });
322
+ }, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) })), (0, jsx_runtime_1.jsx)(exports.ChartDisplay, { config: report ? (0, report_1.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 })] }));
323
+ }
324
+ exports.default = Chart;
325
+ 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_1.default, colorMap, LoadingComponent = ChartSkeleton_1.QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, overrideTheme, }) => {
422
326
  const { downloadCSV } = (0, useExport_1.useExport)(reportId);
423
327
  const theme = overrideTheme ?? (0, useTheme_1.default)();
424
328
  const chartColors = (0, react_1.useMemo)(() => {
@@ -428,126 +332,42 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
428
332
  ? theme.chartColors
429
333
  : ['#4E80EE', '#E14F62', '#55B5A6', '#E9A23B', '#6466E9', '#55B685'];
430
334
  }, [colors]);
431
- const rows = config?.pivotRows ?? config?.rows ?? [];
432
335
  const getDateFilter = () => {
433
- if (!hideDateRangeFilter) {
434
- return (0, filterProcessing_1.findAndProcessDateFilter)(Object.values(specificDashboardFilter));
336
+ if (!hideDateRangeFilter && config && config.filtersApplied) {
337
+ return (0, filterProcessing_1.findAndProcessDateFilter)(config.filtersApplied.map((f) => f));
435
338
  }
436
339
  return undefined;
437
340
  };
438
- const [dateFilter, setDateFilter] = (0, react_1.useState)(initialDateFilter ?? getDateFilter());
439
- const getYAxisFields = (curDateFilter) => {
440
- if (config &&
441
- config.pivot &&
442
- config.pivotColumns &&
443
- config.pivot.columnField) {
444
- return (config?.pivotColumns
445
- .slice(1)
446
- .map((column) => {
447
- return { ...column, format: config?.yAxisFields[0].format };
448
- }) ?? []);
449
- }
450
- else if (config && config.pivot && config.pivotColumns) {
451
- return (config?.pivotColumns
452
- .slice(1)
453
- .map((column) => {
454
- return {
455
- ...column,
456
- label: config?.yAxisFields[0].label,
457
- format: config?.yAxisFields[0].format,
458
- };
459
- }) ?? []);
460
- }
461
- else {
462
- if (curDateFilter?.comparison &&
463
- curDateFilter.comparisonRange.value !== 'NO_COMPARISON') {
464
- const comparisonYAxisFields = config?.yAxisFields?.map((field) => {
465
- return {
466
- ...field,
467
- field: `comparison_${field.field}`,
468
- label: `comparison ${field.label ?? field.field}`,
469
- };
470
- });
471
- return (config?.pivotColumns ?? [
472
- ...config?.yAxisFields,
473
- ...comparisonYAxisFields,
474
- ] ??
475
- []);
476
- }
477
- return config?.pivotColumns ?? config?.yAxisFields ?? [];
478
- }
479
- };
480
- const [yAxisFields, setYAxisFields] = (0, react_1.useState)(getYAxisFields(dateFilter ?? getDateFilter()));
341
+ const [dateFilter, setDateFilter] = (0, react_1.useState)(getDateFilter());
481
342
  (0, react_1.useEffect)(() => {
482
- setYAxisFields(getYAxisFields(initialDateFilter ?? getDateFilter()));
483
- setDateFilter(initialDateFilter ?? getDateFilter());
484
- }, [config, specificDashboardFilter, initialDateFilter]);
485
- if (error) {
486
- return (0, jsx_runtime_1.jsx)(ChartError_1.default, { className: className, containerStyle: containerStyle });
487
- }
488
- else if (config &&
343
+ setDateFilter(getDateFilter());
344
+ }, [config]);
345
+ if (config &&
489
346
  !config.pivot &&
490
- config?.chartType !== 'metric' &&
491
- config?.chartType !== 'table' &&
492
- (config.rowCount > MAX_ROWS_FOR_GENERIC_TABLE ||
493
- (rows && rows.length > MAX_ROWS_FOR_GENERIC_TABLE))) {
494
- return ((0, jsx_runtime_1.jsx)(ChartError_1.default, { className: className, containerStyle: containerStyle, label: `Charts can only display ${MAX_ROWS_FOR_GENERIC_TABLE} rows. Please add a pivot or modify the query.` }));
347
+ config.chartType !== 'metric' &&
348
+ config.chartType !== 'table' &&
349
+ ((config.rowCount && config.rowCount > MAX_ROWS_FOR_GENERIC_TABLE) ||
350
+ (config?.rows && config?.rows.length > MAX_ROWS_FOR_GENERIC_TABLE))) {
351
+ return ((0, jsx_runtime_1.jsx)("div", { style: containerStyle, className: className, children: (0, jsx_runtime_1.jsx)(ErrorComponent, { errorMessage: `Charts can only display ${MAX_ROWS_FOR_GENERIC_TABLE} rows. Please add a pivot or modify the query.` }) }));
495
352
  }
496
- else if (!config || loading) {
353
+ else if (loading) {
497
354
  return ((0, jsx_runtime_1.jsx)("div", { className: className, style: containerStyle, children: (0, jsx_runtime_1.jsx)(LoadingComponent, {}) }));
498
355
  }
499
356
  const chartTypes = [config?.chartType];
500
357
  if (chartTypes.includes('pie')) {
501
- const xAxisField = config.xAxisField;
502
- return ((0, jsx_runtime_1.jsx)(PieChart_1.default, { className: className, containerStyle: containerStyle, data: rows.map((row) => {
358
+ return ((0, jsx_runtime_1.jsx)(PieChart_1.default, { className: className, containerStyle: containerStyle, data: config?.rows.map((row) => {
503
359
  return {
504
360
  ...row,
505
- count: parseInt(row[yAxisFields[0].field]) /
506
- sumByKey(rows, yAxisFields[0].field),
361
+ count:
362
+ // @ts-ignore
363
+ parseInt(row[config?.yAxisFields[0]?.field]) /
364
+ // @ts-ignore
365
+ sumByKey(rows, config?.yAxisFields[0].field),
507
366
  };
508
- }), category: yAxisFields[0].field, index: xAxisField, colors: chartColors, theme: theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
367
+ }) || [], category: config?.yAxisFields[0]?.field, index: config?.xAxisField, colors: chartColors, theme: theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
509
368
  }
510
369
  if (chartTypes.includes('table')) {
511
- const columns = yAxisFields;
512
- // FOR PIVOTS - ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
513
- const valueFieldType = config?.pivot?.valueFieldType || undefined;
514
- // Walk through data.columns and pick off the labels from yAxisFields
515
- columns.forEach((col, index) => {
516
- // ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
517
- if ((valueFieldType ||
518
- ['min', 'max'].includes(config?.pivot?.aggregationType)) &&
519
- index !== 0) {
520
- col.format = valueFieldType || 'two_decimal_places';
521
- }
522
- if (!yAxisFields)
523
- return;
524
- const matchingCol = yAxisFields.find((c) => c.field === col.field);
525
- if (!col.label && matchingCol) {
526
- col.label = matchingCol.label;
527
- col.format = matchingCol.format;
528
- }
529
- });
530
- const formattedRows = rows.map((row) => {
531
- return columns.reduce((formattedRow, column) => {
532
- // Apply the format function to each field in the row
533
- const formattedValue = (0, valueFormatter_2.quillFormat)({
534
- value: row[column.field],
535
- format: column.format,
536
- });
537
- formattedRow[column.field] = formattedValue;
538
- return formattedRow;
539
- }, {});
540
- });
541
- let numberOfRows = undefined;
542
- if (config.compareRows && config.compareRows[0]) {
543
- if (config.compareRows[0].COUNT) {
544
- numberOfRows = parseInt(config.compareRows[0].COUNT);
545
- }
546
- else if (config.compareRows[0].count) {
547
- numberOfRows = parseInt(config.compareRows[0].count);
548
- }
549
- }
550
- return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { rows: formattedRows ?? [], rowCount: numberOfRows, columns: columns ?? yAxisFields, currentPage: config.page, sort: config.sort, rowsPerPage: config?.rowsPerPage || 10, containerStyle: {
370
+ return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { 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: {
551
371
  width: containerStyle?.width || '100%',
552
372
  height: containerStyle?.height || '400px',
553
373
  ...containerStyle,
@@ -560,43 +380,18 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
560
380
  }, isLoading: paginating }));
561
381
  }
562
382
  if (chartTypes.includes('bar')) {
563
- return ((0, jsx_runtime_1.jsx)(BarList_1.default, { data: rows, theme: theme, yAxisFields: yAxisFields, colors: chartColors, xAxisField: config.xAxisField, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement }));
383
+ return ((0, jsx_runtime_1.jsx)(BarList_1.default, { 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 }));
564
384
  }
565
385
  if (chartTypes.includes('column')) {
566
- // Autofill the column chart with an empty column if there are no rows
567
- let barChartData = rows;
568
- if (dateFilter && (!barChartData || barChartData.length === 0)) {
569
- const xAxis = config.xAxisField;
570
- const yAxis = yAxisFields[0]?.field;
571
- barChartData = [{ [xAxis]: '', [yAxis]: '0' }];
572
- }
573
- let xAxisFormat = config.xAxisFormat;
574
- if (dateBucket) {
575
- switch (dateBucket) {
576
- case 'day':
577
- xAxisFormat = 'MMM_dd';
578
- break;
579
- case 'week':
580
- xAxisFormat = 'string';
581
- break;
582
- case 'month':
583
- xAxisFormat = 'MMM_yyyy';
584
- break;
585
- default:
586
- xAxisFormat = 'MMM_yyyy';
587
- break;
588
- }
589
- }
590
- return ((0, jsx_runtime_1.jsx)(BarChart_1.default, { 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 &&
386
+ return ((0, jsx_runtime_1.jsx)(BarChart_1.default, { colors: chartColors, theme: theme, isStacked: !!config?.pivot &&
387
+ 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 &&
591
388
  dateFilter.comparisonRange.value !== 'NO_COMPARISON', isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap, onClickChartElement: onClickChartElement, dateFilter: dateFilter }));
592
389
  }
593
390
  if (chartTypes.includes('metric')) {
594
- const isComparison = rows?.length > 0 &&
595
- Object.keys(rows[0]).includes(`comparison_${config.xAxisField}`);
596
- const primaryMetricLabel = config?.filtersApplied?.date_range?.preset?.label;
597
- const comparisonKey = config?.filtersApplied?.date_range?.comparisonRange?.value;
598
- const comparisonLabel = dateRangePickerUtils_1.COMPARISON_OPTIONS.find((opt) => opt.value === comparisonKey)?.text;
599
- if (rows?.length === 0 || rows[0][config.xAxisField] === null) {
391
+ if (!config?.rows ||
392
+ config?.rows?.length === 0 ||
393
+ // @ts-ignore
394
+ config?.rows[0][config?.xAxisField] === null) {
600
395
  return ((0, jsx_runtime_1.jsx)("div", { style: {
601
396
  display: 'flex',
602
397
  flex: '1 0 auto',
@@ -611,7 +406,7 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
611
406
  ...containerStyle,
612
407
  }, className: className, children: "No results" }));
613
408
  }
614
- return ((0, jsx_runtime_1.jsxs)("div", { style: {
409
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
615
410
  fontFamily: theme?.fontFamily,
616
411
  fontSize: 32,
617
412
  color: theme?.primaryTextColor,
@@ -628,84 +423,9 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
628
423
  width: '100%',
629
424
  flexDirection: 'row',
630
425
  ...containerStyle,
631
- }, className: className, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
632
- display: 'flex',
633
- gap: 4,
634
- alignItems: 'baseline',
635
- marginRight: 'auto',
636
- }, children: [(0, jsx_runtime_1.jsx)("span", { children: rows?.length > 0 &&
637
- (0, valueFormatter_1.valueFormatter)({
638
- value: rows[0][config.xAxisField] ?? 0,
639
- field: config.xAxisField,
640
- fields: [
641
- {
642
- field: config.xAxisField,
643
- format: config.xAxisFormat,
644
- label: config.xAxisLabel,
645
- _id: config._id || 'dummy',
646
- },
647
- ],
648
- }) }), isComparison && ((0, jsx_runtime_1.jsx)("span", { style: {
649
- fontSize: 13,
650
- fontWeight: '500',
651
- fontFamily: theme?.fontFamily,
652
- color: theme?.primaryTextColor,
653
- marginLeft: 2,
654
- }, children: primaryMetricLabel
655
- ? `in ${primaryMetricLabel.toLowerCase()}`
656
- : 'this period' }))] }), isComparison && ((0, jsx_runtime_1.jsxs)("div", { style: {
657
- display: 'flex',
658
- gap: 4,
659
- alignItems: 'baseline',
660
- paddingTop: 4,
661
- color: theme?.secondaryTextColor,
662
- }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
663
- fontSize: 28,
664
- fontWeight: '500',
665
- fontFamily: theme?.fontFamily,
666
- color: theme?.secondaryTextColor,
667
- }, children: rows?.length > 0 &&
668
- (0, valueFormatter_1.valueFormatter)({
669
- value: rows[0][`comparison_${config.xAxisField}`] ?? 0,
670
- field: config.xAxisField,
671
- fields: [
672
- {
673
- field: config.xAxisField,
674
- format: config.xAxisFormat,
675
- label: config.xAxisLabel,
676
- _id: config._id || 'dummy',
677
- },
678
- ],
679
- }) }), (0, jsx_runtime_1.jsx)("span", { style: {
680
- fontSize: 13,
681
- fontWeight: '500',
682
- fontFamily: theme?.fontFamily,
683
- color: theme?.secondaryTextColor,
684
- marginLeft: 2,
685
- }, children: comparisonLabel
686
- ? 'in ' + comparisonLabel.toLowerCase()
687
- : 'previous period' })] }))] }));
426
+ }, className: className, children: (0, jsx_runtime_1.jsx)(MetricComponent_1.default, { report: config ?? report_1.EMPTY_REPORT }) }));
688
427
  }
689
- // Autofill the line chart with two zero values, so they form a line at 0.0
690
- // when there are no rows on the config.
691
- let lineChartData = rows;
692
- const xAxisFieldFormat = config.columns.find((col) => col.field === config.xAxisField)?.format;
693
- if (dateFilter &&
694
- valueFormatter_1.DATE_FORMAT_TYPES.includes(xAxisFieldFormat) &&
695
- (!lineChartData || lineChartData.length === 0)) {
696
- const xAxis = config.xAxisField;
697
- const yAxis = yAxisFields[0]?.field;
698
- const format = config.pivot
699
- ? 'MMM_yyyy'
700
- : config.columns.find((c) => c.field === xAxis).format;
701
- const startDate = (0, valueFormatter_2.quillFormat)({ value: dateFilter?.startDate, format });
702
- const endDate = (0, valueFormatter_2.quillFormat)({ value: dateFilter?.endDate, format });
703
- lineChartData = [
704
- { [xAxis]: startDate, [yAxis]: '0' },
705
- { [xAxis]: endDate, [yAxis]: '0' },
706
- ];
707
- }
708
- return ((0, jsx_runtime_1.jsx)(LineChart_1.default, { 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 }));
428
+ return ((0, jsx_runtime_1.jsx)(LineChart_1.default, { 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 }));
709
429
  };
710
430
  exports.ChartDisplay = ChartDisplay;
711
431
  // Sort to put comparison first (ie. underneath) primary.
@@ -719,4 +439,3 @@ const sortComparisonFirst = (a, b) => {
719
439
  return 1;
720
440
  return 0;
721
441
  };
722
- exports.default = Chart;