@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
@@ -1,11 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /* eslint-disable no-unused-vars */
3
2
  import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
4
- import { ClientContext, DashboardContext, DashboardFiltersContext, SchemaContext, ThemeContext, } from './Context';
3
+ import { ClientContext, DashboardContext, DashboardDataContext, DashboardFiltersContext, SchemaContext, ThemeContext, } from './Context';
5
4
  import { getData, getDataFromCloud } from './utils/dataFetcher';
6
5
  import { PivotModal, generatePivotTable, isDateField, } from './internals/ReportBuilder/PivotModal';
7
6
  import { PivotCard } from './internals/ReportBuilder/PivotList';
8
- import Chart from './Chart';
7
+ import { ChartDisplay } from './Chart';
9
8
  import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, QuillTableComponent, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillChartBuilderFormContainer, QuillLoadingComponent, } from './components/UiComponents';
10
9
  import { mergeComparisonRange } from './utils/merge';
11
10
  import { removeDoubleQuotes, snakeAndCamelCaseToTitleCase, } from './utils/textProcessing';
@@ -16,6 +15,9 @@ import { convertColumnInfoToColumnInternal, convertFieldTypeToJSType, } from './
16
15
  import { createTableNameToTableAliasMap, getColumnsByTableFromASTAndSchema, getSelectFromAST, } from './utils/astProcessing';
17
16
  import { getSchemaInfoWithCustomFields } from './utils/schema';
18
17
  import { getDateBucketFromRange } from './utils/dates';
18
+ import { validateReport } from './utils/validation';
19
+ import { QuillChartErrorWithAction } from './components/Chart/ChartError';
20
+ import { convertInternalReportToReport } from './utils/report';
19
21
  const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
20
22
  const POSTGRES_DATE_TYPES = [
21
23
  'timestamp',
@@ -58,12 +60,12 @@ export function createInitialFormData(columns) {
58
60
  return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
59
61
  }),
60
62
  xAxisField: columns?.[0]?.field || '',
61
- xAxisFormat: columns?.[0]?.format || '',
63
+ xAxisFormat: columns?.[0]?.format || 'whole_number',
62
64
  yAxisFields: [
63
65
  {
64
66
  field: firstNumberColumn?.field || columns?.[0]?.field || '',
65
67
  label: '',
66
- format: firstNumberColumn?.format || columns?.[0]?.field || '',
68
+ format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
67
69
  },
68
70
  ],
69
71
  xAxisLabel: '',
@@ -74,18 +76,26 @@ export function createInitialFormData(columns) {
74
76
  };
75
77
  return formEmptyState;
76
78
  }
77
- function getChartTypeOptions(formData) {
79
+ function getChartTypeOptions(formData, dashboard) {
80
+ let viableCharts = CHART_TYPES;
81
+ if (dashboard.dateFilter && dashboard.dateFilter.comparison) {
82
+ viableCharts = viableCharts.filter((chart) => !['table', 'metric', 'bar', 'pie'].includes(chart));
83
+ }
78
84
  if (formData.pivot && !formData.pivot.rowField) {
79
- return CHART_TYPES.filter((elem) => elem === 'metric' || elem === 'table').map((elem) => ({
85
+ return viableCharts
86
+ .filter((elem) => elem === 'metric' || elem === 'table')
87
+ .map((elem) => ({
80
88
  label: elem,
81
89
  value: elem,
82
90
  }));
83
91
  }
84
92
  else {
85
- return CHART_TYPES.filter((elem) => !((formData.pivot && elem === 'metric') ||
93
+ return viableCharts
94
+ .filter((elem) => !((formData.pivot && elem === 'metric') ||
86
95
  (formData.pivot &&
87
96
  formData.pivot.columnField &&
88
- (elem === 'bar' || elem === 'pie')))).map((elem) => ({ label: elem, value: elem }));
97
+ (elem === 'bar' || elem === 'pie'))))
98
+ .map((elem) => ({ label: elem, value: elem }));
89
99
  }
90
100
  }
91
101
  function getTablesHelper(ast, allTables) {
@@ -101,8 +111,9 @@ function getTablesHelper(ast, allTables) {
101
111
  // With statement column references
102
112
  if (ast.with) {
103
113
  for (const withStmt of ast.with) {
104
- if (withStmt.stmt.ast.from) {
105
- const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast, allTables, tableAliasMap);
114
+ const astFrom = withStmt.stmt.from ?? withStmt.stmt.ast.from;
115
+ if (astFrom) {
116
+ const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap);
106
117
  // @ts-ignore
107
118
  Object.keys(withReferencedColumns).forEach((tableName) => {
108
119
  if (referencedColumns[tableName]) {
@@ -129,7 +140,7 @@ function getTablesHelper(ast, allTables) {
129
140
  }) || [],
130
141
  };
131
142
  });
132
- let dateFields = allTables
143
+ const dateFields = allTables
133
144
  .filter((table) => onlyReferenceTables.includes(table.displayName))
134
145
  .map((table) => {
135
146
  return {
@@ -144,12 +155,32 @@ function getTablesHelper(ast, allTables) {
144
155
  return { referencedTablesAndColumns, dateFields };
145
156
  }
146
157
  async function getReferencedTables(client, sqlQuery, dbTables) {
147
- const resp = await getDataFromCloud(client, `astify`, { query: sqlQuery });
158
+ const resp = await getDataFromCloud(client, `astify`, {
159
+ query: sqlQuery,
160
+ useNewNodeSql: true,
161
+ });
148
162
  if (resp.success === false) {
149
163
  return getTablesHelper(getSelectFromAST({}), dbTables);
150
164
  }
151
165
  return getTablesHelper(getSelectFromAST(resp.ast), dbTables);
152
166
  }
167
+ function createReportFromForm(formData, report, selectedPivotTable, rows = []) {
168
+ return convertInternalReportToReport({
169
+ ...formData,
170
+ dashboardName: formData.dashboardName || '',
171
+ pivot: formData.pivot,
172
+ id: '',
173
+ order: -1,
174
+ compareRows: report?.compareRows || [],
175
+ filtersApplied: report?.filtersApplied || [],
176
+ queryString: '',
177
+ rows: selectedPivotTable?.rows ?? rows,
178
+ rowCount: report?.rowCount || selectedPivotTable?.rows?.length || rows.length || 0,
179
+ yAxisFields: formData.yAxisFields ?? [],
180
+ pivotColumns: selectedPivotTable?.columns ?? undefined,
181
+ pivotRows: selectedPivotTable?.rows ?? undefined,
182
+ });
183
+ }
153
184
  export const numberFormatOptions = [
154
185
  'whole_number',
155
186
  'one_decimal_place',
@@ -260,7 +291,7 @@ export function ChartBuilderWithModal(props) {
260
291
  * ### Chart Builder API
261
292
  * @see https://docs.quillsql.com/components/chart-builder
262
293
  */
263
- export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, TableComponent = QuillTableComponent, ModalComponent, LoadingComponent = QuillLoadingComponent, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, FormContainer = QuillChartBuilderFormContainer, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, rowCount, isLoading, isComparison, onClickChartElement, }) {
294
+ export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, TableComponent = QuillTableComponent, ModalComponent = MemoizedModal, LoadingComponent = QuillLoadingComponent, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, FormContainer = QuillChartBuilderFormContainer, ErrorComponent = QuillChartErrorWithAction, onClickChartError, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, rowCount, isLoading, isComparison, onClickChartElement, }) {
264
295
  const dateRange = dr;
265
296
  const [client] = useContext(ClientContext);
266
297
  const [theme] = useContext(ThemeContext);
@@ -268,15 +299,27 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
268
299
  const [windowWidth, setWindowWidth] = useState(1200);
269
300
  const [isSubmitting, setIsSubmitting] = useState(false);
270
301
  const [pivotCardWidth, setPivotCardWidth] = useState(665);
302
+ const [chartTypes, setChartTypes] = useState(CHART_TYPES.map((type) => {
303
+ return { label: type, value: type };
304
+ }));
271
305
  const [formWidth, setFormWidth] = useState(665);
272
306
  const inputRef = useRef(null);
273
307
  const selectRef = useRef(null);
274
- const { dispatch } = useContext(DashboardContext);
308
+ const [, dispatch] = useContext(DashboardContext);
275
309
  const [processedColumns, setProcessedColumns] = useState(columns);
276
310
  const parentRef = useRef(null);
277
311
  const deleteRef = useRef(null);
278
312
  const modalPadding = 20;
279
313
  const deleteButtonMargin = -12;
314
+ const validationHelper = (formData, dashboard, dateField, tables) => {
315
+ const issues = validateReport(formData, dashboard, dateField || defaultDateField, tables || allTables);
316
+ if (issues.length > 0) {
317
+ setFilterIssues(issues);
318
+ }
319
+ else {
320
+ setFilterIssues([]);
321
+ }
322
+ };
280
323
  useEffect(() => {
281
324
  if (schema) {
282
325
  const newProcessedColumns = columns.map((col) => {
@@ -361,18 +404,14 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
361
404
  const [dashboardOptions, setDashboardOptions] = useState([]);
362
405
  const [defaultDashboardName, setDefaultDashboardName] = useState(destinationDashboard || report?.dashboardName || '');
363
406
  const { dashboardFilters } = useContext(DashboardFiltersContext);
364
- const [chartRows, setChartRows] = useState(rows);
407
+ const { dashboardData } = useContext(DashboardDataContext);
365
408
  const specificDashboardFilter = useMemo(() => {
366
409
  return dashboardFilters.filter((f) => f && defaultDashboardName === f.dashboardName);
367
410
  }, [dashboardFilters]);
368
- const [dashboardFilters2, setDashboardFilters] = useState([]);
369
- const [dashboardHasDateFilter, setDashboardHasDateFilter] = useState(false);
370
- const [dashboardHasDateComparison, setDashboardHasDateComparison] = useState(false);
371
411
  const [showFilterModal, setShowFilterModal] = useState(false);
372
412
  const [filterIssues, setFilterIssues] = useState([]);
373
413
  const [showPivotPopover, setShowPivotPopover] = useState(false);
374
414
  const [isEdittingPivot, setIsEdittingPivot] = useState(false);
375
- const [intialLoad, setInitialLoad] = useState(true);
376
415
  const [selectedPivotIndex, setSelectedPivotIndex] = useState(-1);
377
416
  const [tableName, setTableName] = useState(undefined);
378
417
  const selectedTable = schema?.find((t) => t.displayName === tableName);
@@ -402,12 +441,12 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
402
441
  return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
403
442
  }),
404
443
  xAxisField: columns?.[0]?.field || '',
405
- xAxisFormat: columns?.[0]?.format || '',
444
+ xAxisFormat: columns?.[0]?.format || 'string',
406
445
  yAxisFields: [
407
446
  {
408
447
  field: firstNumberColumn?.field || columns?.[0]?.field || '',
409
448
  label: '',
410
- format: firstNumberColumn?.format || columns?.[0]?.field || '',
449
+ format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
411
450
  },
412
451
  ],
413
452
  xAxisLabel: '',
@@ -417,6 +456,9 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
417
456
  template: false,
418
457
  };
419
458
  const updateDashboardFilters = async (dashboardName) => {
459
+ if (dashboardData && dashboardData[dashboardName]) {
460
+ return dashboardData[dashboardName];
461
+ }
420
462
  const { queryEndpoint, queryHeaders, publicKey, customerId } = client;
421
463
  if (queryEndpoint) {
422
464
  const response = await fetch(queryEndpoint, {
@@ -432,22 +474,22 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
432
474
  name: dashboardName,
433
475
  clientId: publicKey,
434
476
  databaseType: client.databaseType,
477
+ useNewNodeSql: true,
435
478
  },
436
479
  }),
437
480
  credentials: 'omit', // If withCredentials is true, set to 'include'. Otherwise, set to 'omit'.
438
481
  });
439
482
  const responseData = (await response.json()).data;
440
483
  if (responseData) {
441
- setDashboardFilters(responseData.filters);
442
- setDashboardHasDateFilter(!!responseData.dateFilter);
443
- setDashboardHasDateComparison(responseData.dateFilter?.comparison || false);
484
+ return responseData;
444
485
  }
445
486
  }
446
487
  };
447
488
  const pivotFormData = (pivot) => {
448
489
  const yAxisField = pivot.columnField || pivot.valueField;
449
- const yAxisLabel = report?.yAxisFields?.length > 0
450
- ? report.yAxisFields[0].label
490
+ const yAxisLabel = report?.yAxisFields && report?.yAxisFields?.length > 0
491
+ ? // @ts-ignore
492
+ report.yAxisFields[0].label
451
493
  : pivot.valueField;
452
494
  // date labels for pivots should be treated like strings since they are
453
495
  const yAxisIsDate = pivot.columnField
@@ -461,6 +503,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
461
503
  xAxisFormat: isDateField(pivot.rowFieldType)
462
504
  ? 'string'
463
505
  : columns.find((col) => col.field === pivot.rowField)?.format ||
506
+ report?.xAxisFormat ||
464
507
  'whole_number',
465
508
  xAxisLabel: report?.xAxisLabel || pivot.rowField,
466
509
  yAxisFields: [
@@ -469,22 +512,33 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
469
512
  label: yAxisLabel,
470
513
  format: yAxisIsDate
471
514
  ? 'string'
472
- : report?.yAxisFields?.length > 0
473
- ? report?.yAxisFields[0].format
515
+ : report?.yAxisFields && report?.yAxisFields?.length > 0
516
+ ? // @ts-ignore
517
+ report?.yAxisFields[0].format
474
518
  : columns.find((col) => col.field === pivot.valueField)?.format ||
475
519
  'whole_number',
476
520
  },
477
521
  ],
478
522
  };
479
523
  };
480
- const [formData, setFormData] = useState(pivot
481
- ? {
524
+ const formFormDataFromReport = (report) => {
525
+ let pivotData = {};
526
+ let dateField = defaultDateField;
527
+ if (pivot) {
528
+ pivotData = pivotFormData(pivot);
529
+ }
530
+ if (report) {
531
+ dateField = report.dateField || defaultDateField;
532
+ }
533
+ return {
482
534
  ...formEmptyState,
483
535
  ...report,
484
- ...pivotFormData(pivot),
536
+ ...pivotData,
485
537
  ...(destinationDashboard && { dashboardName: destinationDashboard }),
486
- }
487
- : report || formEmptyState);
538
+ dateField: dateField,
539
+ };
540
+ };
541
+ const [formData, setFormData] = useState(formFormDataFromReport(report));
488
542
  useEffect(() => {
489
543
  if (!loadingFormData && triggeredEditChart) {
490
544
  editChart();
@@ -494,8 +548,14 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
494
548
  async function getFormData() {
495
549
  setLoadingFormData(true);
496
550
  const curFormData = formData;
497
- const resp = await getDataFromCloud(client, `dashnames/${client.publicKey}/`, null, 'GET');
498
- let dashboardOptions = resp.dashboardNames
551
+ let dashNames = Object.keys(dashboardData).map((dashboard) => {
552
+ return dashboard;
553
+ }) ?? [];
554
+ if (dashNames.length === 0) {
555
+ const resp = await getDataFromCloud(client, `dashnames/${client.publicKey}/`, null, 'GET');
556
+ dashNames = resp.dashboardNames;
557
+ }
558
+ let dashboardOptions = dashNames
499
559
  .filter((elem) => elem !== null)
500
560
  .map((key) => ({ label: key, value: key }));
501
561
  if (!dashboardOptions.length) {
@@ -508,13 +568,16 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
508
568
  { label: destinationDashboard, value: destinationDashboard },
509
569
  ];
510
570
  }
511
- await updateDashboardFilters(destinationDashboard ??
512
- (report ? report?.dashboardName : dashboardOptions[0]?.label));
571
+ let dashboardName = report?.dashboardName
572
+ ? report.dashboardName
573
+ : dashboardOptions[0]?.label || '';
574
+ if (destinationDashboard) {
575
+ dashboardName = destinationDashboard;
576
+ }
577
+ const curDashboard = await updateDashboardFilters(dashboardName);
513
578
  setDashboardOptions(dashboardOptions);
514
- const dashboardName = destinationDashboard ??
515
- (report ? report?.dashboardName : dashboardOptions[0]?.label);
516
579
  curFormData.dashboardName = dashboardName;
517
- setDefaultDashboardName(destinationDashboard ??
580
+ setDefaultDashboardName(dashboardName ??
518
581
  (report ? report?.dashboardName : dashboardOptions[0]?.label));
519
582
  let curSchemaData = schema;
520
583
  if (!curSchemaData || curSchemaData.length === 0) {
@@ -538,7 +601,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
538
601
  const tableNames = result.referencedTablesAndColumns.map((table) => table.name);
539
602
  setAllTables(tableNames);
540
603
  let customFieldUsage = false;
541
- for (let table of tableNames) {
604
+ for (const table of tableNames) {
542
605
  const tableInfo = curSchemaData.find((elem) => elem.name === table);
543
606
  if (tableInfo?.customFieldInfo) {
544
607
  customFieldUsage = true;
@@ -558,18 +621,22 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
558
621
  result.dateFields[0]?.columns[0]?.field ||
559
622
  '',
560
623
  };
561
- curFormData.dateField = dateField;
562
624
  let isTemplate = curFormData.template;
563
625
  if (customFieldUsage) {
564
626
  isTemplate = false;
565
627
  }
566
- setFormData({
567
- ...curFormData,
568
- dashboardName: report && report.dashboardName
628
+ curFormData.dashboardName =
629
+ report && report.dashboardName
569
630
  ? report?.dashboardName
570
- : dashboardOptions[0]?.label,
571
- template: isTemplate,
572
- });
631
+ : dashboardOptions[0]?.label;
632
+ curFormData.template = isTemplate;
633
+ if (!curFormData.dateField.field || !curFormData.dateField.table) {
634
+ if (dateField.field) {
635
+ curFormData.dateField = dateField;
636
+ }
637
+ }
638
+ setFormData(curFormData);
639
+ validationHelper(curFormData, curDashboard, curFormData.dateField ?? dateField, tableNames);
573
640
  setLoadingFormData(false);
574
641
  }
575
642
  getFormData();
@@ -577,7 +644,6 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
577
644
  const [selectedPivotTable, setSelectedPivotTable] = useState(pivotData || undefined);
578
645
  const fetchPivotData = async (pivot, uniqueValues, overrideDateRange) => {
579
646
  if (pivot && rows) {
580
- setInitialLoad(false);
581
647
  const dateFilter = report
582
648
  ? report.filtersApplied.find((filter) => {
583
649
  return filter.filterType === 'date_range';
@@ -633,8 +699,15 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
633
699
  }, {});
634
700
  });
635
701
  }
636
- }, [selectedPivotTable, formData.columns, formData.chartType, rows]);
637
- const handleChange = (value, fieldName, index) => {
702
+ }, [
703
+ selectedPivotTable,
704
+ formData.columns,
705
+ formData.chartType,
706
+ rows,
707
+ formData.pivot,
708
+ ]);
709
+ const handleChange = async (value, fieldName, index) => {
710
+ let updatedForm = { ...formData };
638
711
  try {
639
712
  // WE NEED TO REPROCESS THE PIVOT TABLE IF THE PIVOT COLUMN CHANGES
640
713
  // WE NEED TO UPDATE BOTH VALUEFIELDTYPE AND COLUMN FIELD TYPES
@@ -648,14 +721,14 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
648
721
  valueFieldType: value,
649
722
  };
650
723
  // @ts-ignore
651
- setFormData({ ...formData, pivot: updatedPivot });
652
- return;
724
+ updatedForm.pivot = updatedPivot;
653
725
  }
654
- if (index !== undefined) {
726
+ else if (index !== undefined) {
655
727
  // For dynamic array fields
656
728
  const [field, subfield] = fieldName.split('.');
657
729
  // @ts-ignore
658
730
  const updatedArray = formData[field].map((item, i) => i === index ? { ...item, [subfield]: value } : item);
731
+ updatedForm = { ...formData, [field]: updatedArray };
659
732
  setFormData({ ...formData, [field]: updatedArray });
660
733
  }
661
734
  else if (fieldName.includes('.')) {
@@ -665,19 +738,18 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
665
738
  const subfieldTypeFieldName = subfield + 'Type';
666
739
  if (value.length) {
667
740
  const subFieldType = columns.find((columns) => columns.field === value).fieldType;
668
- setFormData({
669
- ...formData,
741
+ updatedForm = {
742
+ ...updatedForm,
670
743
  // @ts-ignore
671
744
  [field]: {
672
- ...formData[field],
745
+ ...updatedForm[field],
673
746
  [subfield]: value,
674
747
  [subfieldTypeFieldName]: subFieldType,
675
748
  },
676
- });
677
- return;
749
+ };
678
750
  }
679
751
  else {
680
- setFormData({
752
+ updatedForm = {
681
753
  ...formData,
682
754
  // @ts-ignore
683
755
  [field]: {
@@ -685,36 +757,42 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
685
757
  [subfield]: '',
686
758
  [subfieldTypeFieldName]: '',
687
759
  },
688
- });
689
- return;
760
+ };
690
761
  }
691
762
  }
692
- if (field === 'dateField' &&
763
+ else if (field === 'dateField' &&
693
764
  subfield === 'table' &&
694
765
  !formData.dateField.field) {
695
766
  const field = schema?.find((elem) => elem.name === value)
696
767
  ?.columns?.[0]?.name;
697
- setFormData({
698
- ...formData,
768
+ updatedForm.dateField = {
699
769
  // @ts-ignore
700
- dateField: { ...formData[field], [subfield]: value, field: field },
701
- });
702
- return;
770
+ ...updatedForm[field],
771
+ [subfield]: value,
772
+ field: field,
773
+ };
703
774
  }
704
- setFormData({
705
- ...formData,
775
+ updatedForm = {
776
+ ...updatedForm,
706
777
  // @ts-ignore
707
- [field]: { ...formData[field], [subfield]: value },
708
- });
778
+ [field]: { ...updatedForm[field], [subfield]: value },
779
+ };
709
780
  }
710
781
  else {
711
782
  // For simple fields
712
- setFormData({ ...formData, [fieldName]: value });
783
+ updatedForm = { ...updatedForm, [fieldName]: value };
784
+ }
785
+ let dashboardName = updatedForm.dashboardName;
786
+ if (fieldName === 'dashboardName') {
787
+ dashboardName = value;
713
788
  }
789
+ validationHelper(updatedForm, dashboardData[dashboardName || '']);
790
+ setChartTypes(getChartTypeOptions(updatedForm, dashboardData[dashboardName || '']));
714
791
  }
715
792
  catch (e) {
716
- setFormData({ ...formData, [fieldName]: value });
793
+ updatedForm = { ...updatedForm, [fieldName]: value };
717
794
  }
795
+ setFormData(updatedForm);
718
796
  };
719
797
  const handleAddPivot = async (pivot, uniqueValues, dateRange, pivotData) => {
720
798
  const newPivotFormData = pivotFormData(pivot);
@@ -780,7 +858,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
780
858
  columnField: '',
781
859
  columnFieldType: '',
782
860
  valueField: '',
783
- aggregationType: '',
861
+ aggregationType: 'sum',
784
862
  },
785
863
  });
786
864
  }
@@ -801,12 +879,12 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
801
879
  event.preventDefault();
802
880
  };
803
881
  const deleteChart = async () => {
804
- if (!report._id || !client) {
882
+ if (!report?.id || !client) {
805
883
  return;
806
884
  }
807
885
  const { publicKey, customerId } = client;
808
886
  const cloudBody = {
809
- dashboardItemId: report._id,
887
+ dashboardItemId: report.id,
810
888
  };
811
889
  const searchParams = new URLSearchParams(customerId
812
890
  ? {
@@ -823,30 +901,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
823
901
  setIsOpen(false);
824
902
  setIsSubmitting(false);
825
903
  };
826
- const editChart = async (override = false) => {
827
- if (!override) {
828
- let dashboardDiscrepancyIssues = [];
829
- if (dashboardHasDateComparison && formData.chartType === 'pie') {
830
- dashboardDiscrepancyIssues.push(`The ${formData.dashboardName} dashboard is used for comparing date fields, you cannot add a pie chart to this dashboard.`);
831
- }
832
- if (dashboardHasDateFilter &&
833
- ((!defaultDateField.table && !defaultDateField.field) ||
834
- (!formData.dateField.field && !formData.dateField.table))) {
835
- dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" has a global date filter but this chart doesn't reference any tables with a date field.`);
836
- }
837
- dashboardFilters2.forEach((filter) => {
838
- const table = allTables.find((elem) => elem === filter.table);
839
- if (!table) {
840
- dashboardDiscrepancyIssues.push(`The dashboard "${formData.dashboardName}" a global filter on "${filter.table}" "${filter.field}" but this chart doesn't reference "${filter.table}".`);
841
- }
842
- });
843
- if (dashboardDiscrepancyIssues.length) {
844
- setFilterIssues(dashboardDiscrepancyIssues);
845
- setShowFilterModal(true);
846
- setTriggeredEditChart(false);
847
- return;
848
- }
849
- }
904
+ const editChart = async () => {
850
905
  if (isSubmitting) {
851
906
  setTriggeredEditChart(false);
852
907
  return;
@@ -858,8 +913,8 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
858
913
  return;
859
914
  }
860
915
  // If the dashbaordItem is a template but the editor isn't an admin, create a new dashboardItem and set the template to false
861
- let dashboardItemId = report ? report._id : undefined;
862
- if (report && !showAccessControlOptions && report.template) {
916
+ let dashboardItemId = report ? report.id : undefined;
917
+ if (report && !showAccessControlOptions && formData.template) {
863
918
  dashboardItemId = undefined;
864
919
  }
865
920
  const cloudBody = {
@@ -876,10 +931,11 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
876
931
  pivot: formData.pivot,
877
932
  referencedTables: allTables,
878
933
  referencedColumns,
879
- template: report && !showAccessControlOptions && report.template
934
+ template: report && !showAccessControlOptions && formData.template
880
935
  ? false
881
936
  : formData.template,
882
937
  customerId: customerId || '*',
938
+ useNewNodeSql: true,
883
939
  };
884
940
  // @ts-ignore
885
941
  if (cloudBody['rows']) {
@@ -897,6 +953,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
897
953
  databaseType: databaseType,
898
954
  ...cloudBody,
899
955
  orgId: customerId || '*',
956
+ useNewNodeSql: true,
900
957
  },
901
958
  };
902
959
  const searchParams = new URLSearchParams(customerId
@@ -966,14 +1023,8 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
966
1023
  maxWidth: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
967
1024
  }),
968
1025
  ...(!isHorizontalView && isOpen && { width: formWidth }),
969
- }, children: [((!isHorizontalView && windowWidth >= 1200) ||
970
- formData.chartType !== 'table') && (_jsx(Chart, { colors: theme.chartColors, config: {
971
- ...formData,
972
- rows: chartRows,
973
- pivotRows: selectedPivotTable?.rows || undefined,
974
- pivotColumns: selectedPivotTable?.columns || undefined,
975
- rowCount,
976
- }, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
1026
+ }, children: [report?.adminError || report?.error ? (_jsx(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : (((!isHorizontalView && windowWidth >= 1200) ||
1027
+ formData.chartType !== 'table') && (_jsx(ChartDisplay, { reportId: report ? report.id : undefined, config: createReportFromForm(formData, report, selectedPivotTable, rows), colors: theme.chartColors, loading: isLoading ? true : false, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
977
1028
  width: '100%',
978
1029
  height: formData.chartType === 'metric'
979
1030
  ? 100
@@ -983,7 +1034,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
983
1034
  : 'calc(100% - 10px)'
984
1035
  : 400,
985
1036
  ...(isHorizontalView && { flexGrow: 1 }),
986
- }, onClickChartElement: onClickChartElement })),
1037
+ }, onClickChartElement: onClickChartElement }))),
987
1038
  // Make sure to display non-pivoted table when using pivot chart
988
1039
  showTableFormatOptions &&
989
1040
  (isHorizontalView || (!isOpen && windowWidth < 1200)) && (_jsx("div", { style: {
@@ -1024,7 +1075,7 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
1024
1075
  })), width: 200 }) })), _jsx("div", { ref: selectRef, style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Chart type", value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
1025
1076
  // filter out metric for all pivots
1026
1077
  // filter out bar and pie for row and column pivot
1027
- options: getChartTypeOptions(formData), width: 200 }) })] }), _jsxs("div", { style: {
1078
+ options: chartTypes, width: 200 }) })] }), _jsxs("div", { style: {
1028
1079
  display: 'flex',
1029
1080
  flexDirection: 'column',
1030
1081
  gap: 6,
@@ -1059,7 +1110,11 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
1059
1110
  : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
1060
1111
  isDateField(formData.pivot.rowFieldType)
1061
1112
  ? [{ value: 'pivot_date', label: 'date' }]
1062
- : formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields.map((yAxisField, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: formData.pivot
1113
+ : formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields
1114
+ .filter((yAxisField) => {
1115
+ return !yAxisField.field.startsWith('comparison_');
1116
+ })
1117
+ .map((yAxisField, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: formData.pivot
1063
1118
  ? formData.pivot.valueField || 'count'
1064
1119
  : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
1065
1120
  ? [
@@ -1154,18 +1209,25 @@ export default function ChartBuilder({ TextInputComponent = QuillTextInput, Sele
1154
1209
  justifyContent: 'flex-end',
1155
1210
  marginTop: 'auto',
1156
1211
  gap: 10,
1157
- }, children: [!hideDeleteButton && !isHorizontalView && report && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && (_jsx(ButtonComponent, { onClick: () => {
1158
- if (loadingFormData) {
1159
- setTriggeredEditChart(true);
1160
- }
1161
- else {
1162
- editChart();
1163
- }
1164
- }, label: buttonLabel
1165
- ? buttonLabel
1166
- : report
1167
- ? 'Save changes'
1168
- : 'Add to dashboard' }))] })] }))] }), _jsx(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, issues: filterIssues, ButtonComponent: ButtonComponent })] }));
1212
+ }, children: [!hideDeleteButton && !isHorizontalView && report && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && (_jsxs("div", { style: {
1213
+ display: 'flex',
1214
+ flexDirection: 'row',
1215
+ width: '100%',
1216
+ justifyContent: 'space-between',
1217
+ alignItems: 'center',
1218
+ gap: 6,
1219
+ }, children: [filterIssues.length === 0 ? (_jsx("div", {})) : (_jsx(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), _jsx(ButtonComponent, { onClick: () => {
1220
+ if (loadingFormData) {
1221
+ setTriggeredEditChart(true);
1222
+ }
1223
+ else {
1224
+ editChart();
1225
+ }
1226
+ }, disabled: filterIssues.length !== 0, label: buttonLabel
1227
+ ? buttonLabel
1228
+ : report
1229
+ ? 'Save changes'
1230
+ : 'Add to dashboard' })] }))] })] }))] }), _jsx(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, issues: filterIssues, ButtonComponent: ButtonComponent, ModalComponent: ModalComponent })] }));
1169
1231
  }
1170
1232
  function SegmentedControl({ onChange, value, theme, organizationName, customFieldTableRef, }) {
1171
1233
  return (_jsxs("div", { style: {
@@ -1240,7 +1302,7 @@ export function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent
1240
1302
  boxSizing: 'border-box',
1241
1303
  overflow: 'scroll',
1242
1304
  maxHeight: 600,
1243
- }, children: [issues.map((issue, index) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("div", { style: {
1305
+ }, children: [issues.map((issue) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("div", { style: {
1244
1306
  display: 'flex',
1245
1307
  flexDirection: 'row',
1246
1308
  justifyContent: 'flex-end',