@quillsql/react 2.15.2 → 2.15.4

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 (1037) hide show
  1. package/dist/index.cjs +51544 -0
  2. package/dist/index.d.cts +3367 -0
  3. package/dist/index.d.ts +3367 -0
  4. package/dist/index.js +51680 -0
  5. package/package.json +12 -12
  6. package/dist/cjs/Chart.d.ts +0 -233
  7. package/dist/cjs/Chart.d.ts.map +0 -1
  8. package/dist/cjs/Chart.js +0 -612
  9. package/dist/cjs/ChartBuilder.d.ts +0 -375
  10. package/dist/cjs/ChartBuilder.d.ts.map +0 -1
  11. package/dist/cjs/ChartBuilder.js +0 -2282
  12. package/dist/cjs/ChartEditor.d.ts +0 -211
  13. package/dist/cjs/ChartEditor.d.ts.map +0 -1
  14. package/dist/cjs/ChartEditor.js +0 -139
  15. package/dist/cjs/Context.d.ts +0 -255
  16. package/dist/cjs/Context.d.ts.map +0 -1
  17. package/dist/cjs/Context.js +0 -1432
  18. package/dist/cjs/Dashboard.d.ts +0 -329
  19. package/dist/cjs/Dashboard.d.ts.map +0 -1
  20. package/dist/cjs/Dashboard.js +0 -824
  21. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +0 -37
  22. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  23. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +0 -291
  24. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +0 -94
  25. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  26. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +0 -901
  27. package/dist/cjs/QuillProvider.d.ts +0 -192
  28. package/dist/cjs/QuillProvider.d.ts.map +0 -1
  29. package/dist/cjs/QuillProvider.js +0 -107
  30. package/dist/cjs/ReportBuilder.d.ts +0 -326
  31. package/dist/cjs/ReportBuilder.d.ts.map +0 -1
  32. package/dist/cjs/ReportBuilder.js +0 -272
  33. package/dist/cjs/SQLEditor.d.ts +0 -302
  34. package/dist/cjs/SQLEditor.d.ts.map +0 -1
  35. package/dist/cjs/SQLEditor.js +0 -980
  36. package/dist/cjs/StaticChart.d.ts +0 -8
  37. package/dist/cjs/StaticChart.d.ts.map +0 -1
  38. package/dist/cjs/StaticChart.js +0 -27
  39. package/dist/cjs/Table.d.ts +0 -187
  40. package/dist/cjs/Table.d.ts.map +0 -1
  41. package/dist/cjs/Table.js +0 -169
  42. package/dist/cjs/assets/AdjustmentsIcon.d.ts +0 -5
  43. package/dist/cjs/assets/AdjustmentsIcon.d.ts.map +0 -1
  44. package/dist/cjs/assets/AdjustmentsIcon.js +0 -5
  45. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts +0 -5
  46. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  47. package/dist/cjs/assets/ArrowDownHeadIcon.js +0 -5
  48. package/dist/cjs/assets/ArrowDownIcon.d.ts +0 -5
  49. package/dist/cjs/assets/ArrowDownIcon.d.ts.map +0 -1
  50. package/dist/cjs/assets/ArrowDownIcon.js +0 -5
  51. package/dist/cjs/assets/ArrowDownRightIcon.d.ts +0 -5
  52. package/dist/cjs/assets/ArrowDownRightIcon.d.ts.map +0 -1
  53. package/dist/cjs/assets/ArrowDownRightIcon.js +0 -5
  54. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts +0 -5
  55. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  56. package/dist/cjs/assets/ArrowLeftHeadIcon.js +0 -5
  57. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts +0 -5
  58. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  59. package/dist/cjs/assets/ArrowRightHeadIcon.js +0 -5
  60. package/dist/cjs/assets/ArrowRightIcon.d.ts +0 -5
  61. package/dist/cjs/assets/ArrowRightIcon.d.ts.map +0 -1
  62. package/dist/cjs/assets/ArrowRightIcon.js +0 -5
  63. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts +0 -5
  64. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  65. package/dist/cjs/assets/ArrowUpHeadIcon.js +0 -5
  66. package/dist/cjs/assets/ArrowUpIcon.d.ts +0 -5
  67. package/dist/cjs/assets/ArrowUpIcon.d.ts.map +0 -1
  68. package/dist/cjs/assets/ArrowUpIcon.js +0 -5
  69. package/dist/cjs/assets/ArrowUpRightIcon.d.ts +0 -5
  70. package/dist/cjs/assets/ArrowUpRightIcon.d.ts.map +0 -1
  71. package/dist/cjs/assets/ArrowUpRightIcon.js +0 -5
  72. package/dist/cjs/assets/CalendarIcon.d.ts +0 -5
  73. package/dist/cjs/assets/CalendarIcon.d.ts.map +0 -1
  74. package/dist/cjs/assets/CalendarIcon.js +0 -5
  75. package/dist/cjs/assets/CalendarNormalIcon.d.ts +0 -5
  76. package/dist/cjs/assets/CalendarNormalIcon.d.ts.map +0 -1
  77. package/dist/cjs/assets/CalendarNormalIcon.js +0 -5
  78. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  79. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  80. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.js +0 -5
  81. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  82. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  83. package/dist/cjs/assets/DoubleArrowRightHeadIcon.js +0 -5
  84. package/dist/cjs/assets/ExclamationFilledIcon.d.ts +0 -5
  85. package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +0 -1
  86. package/dist/cjs/assets/ExclamationFilledIcon.js +0 -5
  87. package/dist/cjs/assets/FilterIcon.d.ts +0 -5
  88. package/dist/cjs/assets/FilterIcon.d.ts.map +0 -1
  89. package/dist/cjs/assets/FilterIcon.js +0 -5
  90. package/dist/cjs/assets/RefreshIcon.d.ts +0 -5
  91. package/dist/cjs/assets/RefreshIcon.d.ts.map +0 -1
  92. package/dist/cjs/assets/RefreshIcon.js +0 -5
  93. package/dist/cjs/assets/SearchIcon.d.ts +0 -5
  94. package/dist/cjs/assets/SearchIcon.d.ts.map +0 -1
  95. package/dist/cjs/assets/SearchIcon.js +0 -5
  96. package/dist/cjs/assets/UpLeftArrowsIcon.d.ts +0 -5
  97. package/dist/cjs/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  98. package/dist/cjs/assets/UpLeftArrowsIcon.js +0 -5
  99. package/dist/cjs/assets/XCircleIcon.d.ts +0 -5
  100. package/dist/cjs/assets/XCircleIcon.d.ts.map +0 -1
  101. package/dist/cjs/assets/XCircleIcon.js +0 -5
  102. package/dist/cjs/assets/XIcon.d.ts +0 -5
  103. package/dist/cjs/assets/XIcon.d.ts.map +0 -1
  104. package/dist/cjs/assets/XIcon.js +0 -5
  105. package/dist/cjs/assets/index.d.ts +0 -21
  106. package/dist/cjs/assets/index.d.ts.map +0 -1
  107. package/dist/cjs/assets/index.js +0 -46
  108. package/dist/cjs/components/Banner/index.d.ts +0 -2
  109. package/dist/cjs/components/Banner/index.d.ts.map +0 -1
  110. package/dist/cjs/components/Banner/index.js +0 -27
  111. package/dist/cjs/components/Chart/BarChart.d.ts +0 -29
  112. package/dist/cjs/components/Chart/BarChart.d.ts.map +0 -1
  113. package/dist/cjs/components/Chart/BarChart.js +0 -129
  114. package/dist/cjs/components/Chart/BarList.d.ts +0 -23
  115. package/dist/cjs/components/Chart/BarList.d.ts.map +0 -1
  116. package/dist/cjs/components/Chart/BarList.js +0 -155
  117. package/dist/cjs/components/Chart/ChartError.d.ts +0 -13
  118. package/dist/cjs/components/Chart/ChartError.d.ts.map +0 -1
  119. package/dist/cjs/components/Chart/ChartError.js +0 -67
  120. package/dist/cjs/components/Chart/ChartSkeleton.d.ts +0 -8
  121. package/dist/cjs/components/Chart/ChartSkeleton.d.ts.map +0 -1
  122. package/dist/cjs/components/Chart/ChartSkeleton.js +0 -24
  123. package/dist/cjs/components/Chart/ChartTooltip.d.ts +0 -29
  124. package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +0 -1
  125. package/dist/cjs/components/Chart/ChartTooltip.js +0 -206
  126. package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts +0 -5
  127. package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  128. package/dist/cjs/components/Chart/ChartTooltipFrame.js +0 -17
  129. package/dist/cjs/components/Chart/ChartTooltipGroup.d.ts +0 -12
  130. package/dist/cjs/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  131. package/dist/cjs/components/Chart/ChartTooltipGroup.js +0 -29
  132. package/dist/cjs/components/Chart/ChartTooltipRow.d.ts +0 -9
  133. package/dist/cjs/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  134. package/dist/cjs/components/Chart/ChartTooltipRow.js +0 -44
  135. package/dist/cjs/components/Chart/CustomBar.d.ts +0 -18
  136. package/dist/cjs/components/Chart/CustomBar.d.ts.map +0 -1
  137. package/dist/cjs/components/Chart/CustomBar.js +0 -70
  138. package/dist/cjs/components/Chart/CustomLegend.d.ts +0 -2
  139. package/dist/cjs/components/Chart/CustomLegend.d.ts.map +0 -1
  140. package/dist/cjs/components/Chart/CustomLegend.js +0 -20
  141. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +0 -2
  142. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +0 -1
  143. package/dist/cjs/components/Chart/CustomReferenceLine.js +0 -27
  144. package/dist/cjs/components/Chart/GaugeChart.d.ts +0 -11
  145. package/dist/cjs/components/Chart/GaugeChart.d.ts.map +0 -1
  146. package/dist/cjs/components/Chart/GaugeChart.js +0 -277
  147. package/dist/cjs/components/Chart/InternalChart.d.ts +0 -25
  148. package/dist/cjs/components/Chart/InternalChart.d.ts.map +0 -1
  149. package/dist/cjs/components/Chart/InternalChart.js +0 -496
  150. package/dist/cjs/components/Chart/LineChart.d.ts +0 -33
  151. package/dist/cjs/components/Chart/LineChart.d.ts.map +0 -1
  152. package/dist/cjs/components/Chart/LineChart.js +0 -192
  153. package/dist/cjs/components/Chart/MapChart.d.ts +0 -36
  154. package/dist/cjs/components/Chart/MapChart.d.ts.map +0 -1
  155. package/dist/cjs/components/Chart/MapChart.js +0 -634
  156. package/dist/cjs/components/Chart/PieChart.d.ts +0 -79
  157. package/dist/cjs/components/Chart/PieChart.d.ts.map +0 -1
  158. package/dist/cjs/components/Chart/PieChart.js +0 -289
  159. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +0 -3
  160. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +0 -1
  161. package/dist/cjs/components/Dashboard/ChartComponent.js +0 -67
  162. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +0 -56
  163. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +0 -1
  164. package/dist/cjs/components/Dashboard/DashboardFilter.js +0 -93
  165. package/dist/cjs/components/Dashboard/DashboardSection.d.ts +0 -6
  166. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +0 -1
  167. package/dist/cjs/components/Dashboard/DashboardSection.js +0 -25
  168. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts +0 -2
  169. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  170. package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +0 -12
  171. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +0 -13
  172. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +0 -1
  173. package/dist/cjs/components/Dashboard/DashboardTemplate.js +0 -70
  174. package/dist/cjs/components/Dashboard/DataLoader.d.ts +0 -56
  175. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +0 -1
  176. package/dist/cjs/components/Dashboard/DataLoader.js +0 -720
  177. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +0 -3
  178. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +0 -1
  179. package/dist/cjs/components/Dashboard/MetricComponent.js +0 -138
  180. package/dist/cjs/components/Dashboard/TableComponent.d.ts +0 -16
  181. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +0 -1
  182. package/dist/cjs/components/Dashboard/TableComponent.js +0 -74
  183. package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts +0 -3
  184. package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts.map +0 -1
  185. package/dist/cjs/components/Dashboard/TemplateChartComponent.js +0 -23
  186. package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts +0 -3
  187. package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts.map +0 -1
  188. package/dist/cjs/components/Dashboard/TemplateMetricComponent.js +0 -23
  189. package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts +0 -14
  190. package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts.map +0 -1
  191. package/dist/cjs/components/Dashboard/TemplateTableComponent.js +0 -23
  192. package/dist/cjs/components/Dashboard/util.d.ts +0 -8
  193. package/dist/cjs/components/Dashboard/util.d.ts.map +0 -1
  194. package/dist/cjs/components/Dashboard/util.js +0 -100
  195. package/dist/cjs/components/QuillCard.d.ts +0 -9
  196. package/dist/cjs/components/QuillCard.d.ts.map +0 -1
  197. package/dist/cjs/components/QuillCard.js +0 -60
  198. package/dist/cjs/components/QuillMultiSelect.d.ts +0 -11
  199. package/dist/cjs/components/QuillMultiSelect.d.ts.map +0 -1
  200. package/dist/cjs/components/QuillMultiSelect.js +0 -212
  201. package/dist/cjs/components/QuillMultiSelectSectionList.d.ts +0 -39
  202. package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +0 -1
  203. package/dist/cjs/components/QuillMultiSelectSectionList.js +0 -366
  204. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +0 -15
  205. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +0 -1
  206. package/dist/cjs/components/QuillMultiSelectWithCombo.js +0 -507
  207. package/dist/cjs/components/QuillSelect.d.ts +0 -6
  208. package/dist/cjs/components/QuillSelect.d.ts.map +0 -1
  209. package/dist/cjs/components/QuillSelect.js +0 -252
  210. package/dist/cjs/components/QuillSelectWithCombo.d.ts +0 -6
  211. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +0 -1
  212. package/dist/cjs/components/QuillSelectWithCombo.js +0 -249
  213. package/dist/cjs/components/QuillTable.d.ts +0 -38
  214. package/dist/cjs/components/QuillTable.d.ts.map +0 -1
  215. package/dist/cjs/components/QuillTable.js +0 -303
  216. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +0 -28
  217. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +0 -1
  218. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +0 -267
  219. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +0 -26
  220. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +0 -1
  221. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +0 -60
  222. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +0 -30
  223. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +0 -1
  224. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +0 -61
  225. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts +0 -49
  226. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts.map +0 -1
  227. package/dist/cjs/components/ReportBuilder/ColumnComponent.js +0 -46
  228. package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts +0 -17
  229. package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts.map +0 -1
  230. package/dist/cjs/components/ReportBuilder/DraggableColumns.js +0 -52
  231. package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts +0 -17
  232. package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts.map +0 -1
  233. package/dist/cjs/components/ReportBuilder/DraggableItem.js +0 -17
  234. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts +0 -65
  235. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts.map +0 -1
  236. package/dist/cjs/components/ReportBuilder/FilterComponent.js +0 -51
  237. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +0 -29
  238. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +0 -1
  239. package/dist/cjs/components/ReportBuilder/FilterModal.js +0 -703
  240. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +0 -28
  241. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +0 -1
  242. package/dist/cjs/components/ReportBuilder/FilterStack.js +0 -54
  243. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts +0 -42
  244. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts.map +0 -1
  245. package/dist/cjs/components/ReportBuilder/LimitComponent.js +0 -50
  246. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts +0 -66
  247. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts.map +0 -1
  248. package/dist/cjs/components/ReportBuilder/PivotComponent.js +0 -47
  249. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts +0 -162
  250. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts.map +0 -1
  251. package/dist/cjs/components/ReportBuilder/SaveReport.js +0 -31
  252. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts +0 -42
  253. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts.map +0 -1
  254. package/dist/cjs/components/ReportBuilder/SortComponent.js +0 -50
  255. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts +0 -28
  256. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts.map +0 -1
  257. package/dist/cjs/components/ReportBuilder/TableComponent.js +0 -24
  258. package/dist/cjs/components/ReportBuilder/ast.d.ts +0 -523
  259. package/dist/cjs/components/ReportBuilder/ast.d.ts.map +0 -1
  260. package/dist/cjs/components/ReportBuilder/ast.js +0 -257
  261. package/dist/cjs/components/ReportBuilder/bigDateMap.d.ts +0 -7
  262. package/dist/cjs/components/ReportBuilder/bigDateMap.d.ts.map +0 -1
  263. package/dist/cjs/components/ReportBuilder/bigDateMap.js +0 -690
  264. package/dist/cjs/components/ReportBuilder/constants.d.ts +0 -117
  265. package/dist/cjs/components/ReportBuilder/constants.d.ts.map +0 -1
  266. package/dist/cjs/components/ReportBuilder/constants.js +0 -164
  267. package/dist/cjs/components/ReportBuilder/convert.d.ts +0 -42
  268. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +0 -1
  269. package/dist/cjs/components/ReportBuilder/convert.js +0 -922
  270. package/dist/cjs/components/ReportBuilder/operators.d.ts +0 -462
  271. package/dist/cjs/components/ReportBuilder/operators.d.ts.map +0 -1
  272. package/dist/cjs/components/ReportBuilder/operators.js +0 -585
  273. package/dist/cjs/components/ReportBuilder/postgres.d.ts +0 -150
  274. package/dist/cjs/components/ReportBuilder/postgres.d.ts.map +0 -1
  275. package/dist/cjs/components/ReportBuilder/postgres.js +0 -365
  276. package/dist/cjs/components/ReportBuilder/schema.d.ts +0 -30
  277. package/dist/cjs/components/ReportBuilder/schema.d.ts.map +0 -1
  278. package/dist/cjs/components/ReportBuilder/schema.js +0 -2
  279. package/dist/cjs/components/ReportBuilder/ui.d.ts +0 -136
  280. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +0 -1
  281. package/dist/cjs/components/ReportBuilder/ui.js +0 -453
  282. package/dist/cjs/components/ReportBuilder/util.d.ts +0 -78
  283. package/dist/cjs/components/ReportBuilder/util.d.ts.map +0 -1
  284. package/dist/cjs/components/ReportBuilder/util.js +0 -842
  285. package/dist/cjs/components/UiComponents.d.ts +0 -246
  286. package/dist/cjs/components/UiComponents.d.ts.map +0 -1
  287. package/dist/cjs/components/UiComponents.js +0 -994
  288. package/dist/cjs/components/selectUtils.d.ts +0 -9
  289. package/dist/cjs/components/selectUtils.d.ts.map +0 -1
  290. package/dist/cjs/components/selectUtils.js +0 -26
  291. package/dist/cjs/contexts/BaseColorContext.d.ts +0 -3
  292. package/dist/cjs/contexts/BaseColorContext.d.ts.map +0 -1
  293. package/dist/cjs/contexts/BaseColorContext.js +0 -5
  294. package/dist/cjs/contexts/HoveredValueContext.d.ts +0 -8
  295. package/dist/cjs/contexts/HoveredValueContext.d.ts.map +0 -1
  296. package/dist/cjs/contexts/HoveredValueContext.js +0 -7
  297. package/dist/cjs/contexts/RootStylesContext.d.ts +0 -3
  298. package/dist/cjs/contexts/RootStylesContext.d.ts.map +0 -1
  299. package/dist/cjs/contexts/RootStylesContext.js +0 -5
  300. package/dist/cjs/contexts/SelectedValueContext.d.ts +0 -7
  301. package/dist/cjs/contexts/SelectedValueContext.d.ts.map +0 -1
  302. package/dist/cjs/contexts/SelectedValueContext.js +0 -8
  303. package/dist/cjs/contexts/index.d.ts +0 -5
  304. package/dist/cjs/contexts/index.d.ts.map +0 -1
  305. package/dist/cjs/contexts/index.js +0 -14
  306. package/dist/cjs/hooks/index.d.ts +0 -5
  307. package/dist/cjs/hooks/index.d.ts.map +0 -1
  308. package/dist/cjs/hooks/index.js +0 -14
  309. package/dist/cjs/hooks/useAskQuill.d.ts +0 -27
  310. package/dist/cjs/hooks/useAskQuill.d.ts.map +0 -1
  311. package/dist/cjs/hooks/useAskQuill.js +0 -254
  312. package/dist/cjs/hooks/useAstToFilterTree.d.ts +0 -16
  313. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +0 -1
  314. package/dist/cjs/hooks/useAstToFilterTree.js +0 -29
  315. package/dist/cjs/hooks/useDashboard.d.ts +0 -86
  316. package/dist/cjs/hooks/useDashboard.d.ts.map +0 -1
  317. package/dist/cjs/hooks/useDashboard.js +0 -885
  318. package/dist/cjs/hooks/useExport.d.ts +0 -22
  319. package/dist/cjs/hooks/useExport.d.ts.map +0 -1
  320. package/dist/cjs/hooks/useExport.js +0 -316
  321. package/dist/cjs/hooks/useFormat.d.ts +0 -5
  322. package/dist/cjs/hooks/useFormat.d.ts.map +0 -1
  323. package/dist/cjs/hooks/useFormat.js +0 -29
  324. package/dist/cjs/hooks/useInternalState.d.ts +0 -3
  325. package/dist/cjs/hooks/useInternalState.d.ts.map +0 -1
  326. package/dist/cjs/hooks/useInternalState.js +0 -16
  327. package/dist/cjs/hooks/useLongLoading.d.ts +0 -13
  328. package/dist/cjs/hooks/useLongLoading.d.ts.map +0 -1
  329. package/dist/cjs/hooks/useLongLoading.js +0 -67
  330. package/dist/cjs/hooks/useOnClickOutside.d.ts +0 -6
  331. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +0 -1
  332. package/dist/cjs/hooks/useOnClickOutside.js +0 -59
  333. package/dist/cjs/hooks/useOnWindowResize.d.ts +0 -5
  334. package/dist/cjs/hooks/useOnWindowResize.d.ts.map +0 -1
  335. package/dist/cjs/hooks/useOnWindowResize.js +0 -16
  336. package/dist/cjs/hooks/useQuill.d.ts +0 -24
  337. package/dist/cjs/hooks/useQuill.d.ts.map +0 -1
  338. package/dist/cjs/hooks/useQuill.js +0 -235
  339. package/dist/cjs/hooks/useReport.d.ts +0 -12
  340. package/dist/cjs/hooks/useReport.d.ts.map +0 -1
  341. package/dist/cjs/hooks/useReport.js +0 -50
  342. package/dist/cjs/hooks/useReportBuilder.d.ts +0 -178
  343. package/dist/cjs/hooks/useReportBuilder.d.ts.map +0 -1
  344. package/dist/cjs/hooks/useReportBuilder.js +0 -1495
  345. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts +0 -3
  346. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  347. package/dist/cjs/hooks/useSelectOnKeyDown.js +0 -65
  348. package/dist/cjs/hooks/useVirtualTables.d.ts +0 -23
  349. package/dist/cjs/hooks/useVirtualTables.d.ts.map +0 -1
  350. package/dist/cjs/hooks/useVirtualTables.js +0 -131
  351. package/dist/cjs/index.d.ts +0 -49
  352. package/dist/cjs/index.d.ts.map +0 -1
  353. package/dist/cjs/index.js +0 -77
  354. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +0 -55
  355. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +0 -1
  356. package/dist/cjs/internals/ReportBuilder/PivotForm.js +0 -208
  357. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +0 -39
  358. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  359. package/dist/cjs/internals/ReportBuilder/PivotList.js +0 -101
  360. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +0 -163
  361. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  362. package/dist/cjs/internals/ReportBuilder/PivotModal.js +0 -1570
  363. package/dist/cjs/lib/font.d.ts +0 -14
  364. package/dist/cjs/lib/font.d.ts.map +0 -1
  365. package/dist/cjs/lib/font.js +0 -16
  366. package/dist/cjs/lib/index.d.ts +0 -4
  367. package/dist/cjs/lib/index.d.ts.map +0 -1
  368. package/dist/cjs/lib/index.js +0 -19
  369. package/dist/cjs/lib/inputTypes.d.ts +0 -21
  370. package/dist/cjs/lib/inputTypes.d.ts.map +0 -1
  371. package/dist/cjs/lib/inputTypes.js +0 -56
  372. package/dist/cjs/lib/utils.d.ts +0 -10
  373. package/dist/cjs/lib/utils.d.ts.map +0 -1
  374. package/dist/cjs/lib/utils.js +0 -53
  375. package/dist/cjs/models/Client.d.ts +0 -52
  376. package/dist/cjs/models/Client.d.ts.map +0 -1
  377. package/dist/cjs/models/Client.js +0 -2
  378. package/dist/cjs/models/Columns.d.ts +0 -14
  379. package/dist/cjs/models/Columns.d.ts.map +0 -1
  380. package/dist/cjs/models/Columns.js +0 -2
  381. package/dist/cjs/models/Dashboard.d.ts +0 -26
  382. package/dist/cjs/models/Dashboard.d.ts.map +0 -1
  383. package/dist/cjs/models/Dashboard.js +0 -2
  384. package/dist/cjs/models/Data.d.ts +0 -20
  385. package/dist/cjs/models/Data.d.ts.map +0 -1
  386. package/dist/cjs/models/Data.js +0 -2
  387. package/dist/cjs/models/Filter.d.ts +0 -318
  388. package/dist/cjs/models/Filter.d.ts.map +0 -1
  389. package/dist/cjs/models/Filter.js +0 -452
  390. package/dist/cjs/models/Pagination.d.ts +0 -10
  391. package/dist/cjs/models/Pagination.d.ts.map +0 -1
  392. package/dist/cjs/models/Pagination.js +0 -2
  393. package/dist/cjs/models/Pivot.d.ts +0 -57
  394. package/dist/cjs/models/Pivot.d.ts.map +0 -1
  395. package/dist/cjs/models/Pivot.js +0 -2
  396. package/dist/cjs/models/Report.d.ts +0 -147
  397. package/dist/cjs/models/Report.d.ts.map +0 -1
  398. package/dist/cjs/models/Report.js +0 -4
  399. package/dist/cjs/models/ReportBuilder.d.ts +0 -46
  400. package/dist/cjs/models/ReportBuilder.d.ts.map +0 -1
  401. package/dist/cjs/models/ReportBuilder.js +0 -19
  402. package/dist/cjs/models/Schema.d.ts +0 -18
  403. package/dist/cjs/models/Schema.d.ts.map +0 -1
  404. package/dist/cjs/models/Schema.js +0 -2
  405. package/dist/cjs/models/Tables.d.ts +0 -36
  406. package/dist/cjs/models/Tables.d.ts.map +0 -1
  407. package/dist/cjs/models/Tables.js +0 -2
  408. package/dist/cjs/utils/astFilterProcessing.d.ts +0 -45
  409. package/dist/cjs/utils/astFilterProcessing.d.ts.map +0 -1
  410. package/dist/cjs/utils/astFilterProcessing.js +0 -11768
  411. package/dist/cjs/utils/astProcessing.d.ts +0 -94
  412. package/dist/cjs/utils/astProcessing.d.ts.map +0 -1
  413. package/dist/cjs/utils/astProcessing.js +0 -616
  414. package/dist/cjs/utils/axisFormatter.d.ts +0 -19
  415. package/dist/cjs/utils/axisFormatter.d.ts.map +0 -1
  416. package/dist/cjs/utils/axisFormatter.js +0 -216
  417. package/dist/cjs/utils/client.d.ts +0 -20
  418. package/dist/cjs/utils/client.d.ts.map +0 -1
  419. package/dist/cjs/utils/client.js +0 -108
  420. package/dist/cjs/utils/color.d.ts +0 -203
  421. package/dist/cjs/utils/color.d.ts.map +0 -1
  422. package/dist/cjs/utils/color.js +0 -441
  423. package/dist/cjs/utils/columnProcessing.d.ts +0 -26
  424. package/dist/cjs/utils/columnProcessing.d.ts.map +0 -1
  425. package/dist/cjs/utils/columnProcessing.js +0 -402
  426. package/dist/cjs/utils/constants.d.ts +0 -9
  427. package/dist/cjs/utils/constants.d.ts.map +0 -1
  428. package/dist/cjs/utils/constants.js +0 -15
  429. package/dist/cjs/utils/crypto.d.ts +0 -2
  430. package/dist/cjs/utils/crypto.d.ts.map +0 -1
  431. package/dist/cjs/utils/crypto.js +0 -13
  432. package/dist/cjs/utils/csv.d.ts +0 -7
  433. package/dist/cjs/utils/csv.d.ts.map +0 -1
  434. package/dist/cjs/utils/csv.js +0 -78
  435. package/dist/cjs/utils/dashboard.d.ts +0 -36
  436. package/dist/cjs/utils/dashboard.d.ts.map +0 -1
  437. package/dist/cjs/utils/dashboard.js +0 -418
  438. package/dist/cjs/utils/dataFetcher.d.ts +0 -13
  439. package/dist/cjs/utils/dataFetcher.d.ts.map +0 -1
  440. package/dist/cjs/utils/dataFetcher.js +0 -402
  441. package/dist/cjs/utils/dataProcessing.d.ts +0 -15
  442. package/dist/cjs/utils/dataProcessing.d.ts.map +0 -1
  443. package/dist/cjs/utils/dataProcessing.js +0 -163
  444. package/dist/cjs/utils/dates.d.ts +0 -23
  445. package/dist/cjs/utils/dates.d.ts.map +0 -1
  446. package/dist/cjs/utils/dates.js +0 -106
  447. package/dist/cjs/utils/error.d.ts +0 -5
  448. package/dist/cjs/utils/error.d.ts.map +0 -1
  449. package/dist/cjs/utils/error.js +0 -12
  450. package/dist/cjs/utils/errorProcessing.d.ts +0 -2
  451. package/dist/cjs/utils/errorProcessing.d.ts.map +0 -1
  452. package/dist/cjs/utils/errorProcessing.js +0 -8
  453. package/dist/cjs/utils/filterConstants.d.ts +0 -34
  454. package/dist/cjs/utils/filterConstants.d.ts.map +0 -1
  455. package/dist/cjs/utils/filterConstants.js +0 -36
  456. package/dist/cjs/utils/filterProcessing.d.ts +0 -38
  457. package/dist/cjs/utils/filterProcessing.d.ts.map +0 -1
  458. package/dist/cjs/utils/filterProcessing.js +0 -605
  459. package/dist/cjs/utils/getDomain.d.ts +0 -11
  460. package/dist/cjs/utils/getDomain.d.ts.map +0 -1
  461. package/dist/cjs/utils/getDomain.js +0 -65
  462. package/dist/cjs/utils/logging.d.ts +0 -2
  463. package/dist/cjs/utils/logging.d.ts.map +0 -1
  464. package/dist/cjs/utils/logging.js +0 -10
  465. package/dist/cjs/utils/merge.d.ts +0 -18
  466. package/dist/cjs/utils/merge.d.ts.map +0 -1
  467. package/dist/cjs/utils/merge.js +0 -233
  468. package/dist/cjs/utils/monacoConfig.d.ts +0 -22
  469. package/dist/cjs/utils/monacoConfig.d.ts.map +0 -1
  470. package/dist/cjs/utils/monacoConfig.js +0 -324
  471. package/dist/cjs/utils/paginationProcessing.d.ts +0 -6
  472. package/dist/cjs/utils/paginationProcessing.d.ts.map +0 -1
  473. package/dist/cjs/utils/paginationProcessing.js +0 -33
  474. package/dist/cjs/utils/parserBigQuery.d.ts +0 -6
  475. package/dist/cjs/utils/parserBigQuery.d.ts.map +0 -1
  476. package/dist/cjs/utils/parserBigQuery.js +0 -60
  477. package/dist/cjs/utils/parserPostgres.d.ts +0 -3
  478. package/dist/cjs/utils/parserPostgres.d.ts.map +0 -1
  479. package/dist/cjs/utils/parserPostgres.js +0 -42
  480. package/dist/cjs/utils/pivotConstructor.d.ts +0 -25
  481. package/dist/cjs/utils/pivotConstructor.d.ts.map +0 -1
  482. package/dist/cjs/utils/pivotConstructor.js +0 -300
  483. package/dist/cjs/utils/pivotProcessing.d.ts +0 -33
  484. package/dist/cjs/utils/pivotProcessing.d.ts.map +0 -1
  485. package/dist/cjs/utils/pivotProcessing.js +0 -185
  486. package/dist/cjs/utils/queryConstructor.d.ts +0 -15
  487. package/dist/cjs/utils/queryConstructor.d.ts.map +0 -1
  488. package/dist/cjs/utils/queryConstructor.js +0 -949
  489. package/dist/cjs/utils/report.d.ts +0 -121
  490. package/dist/cjs/utils/report.d.ts.map +0 -1
  491. package/dist/cjs/utils/report.js +0 -628
  492. package/dist/cjs/utils/reportBuilder.d.ts +0 -97
  493. package/dist/cjs/utils/reportBuilder.d.ts.map +0 -1
  494. package/dist/cjs/utils/reportBuilder.js +0 -524
  495. package/dist/cjs/utils/schema.d.ts +0 -39
  496. package/dist/cjs/utils/schema.d.ts.map +0 -1
  497. package/dist/cjs/utils/schema.js +0 -233
  498. package/dist/cjs/utils/styles.d.ts +0 -17
  499. package/dist/cjs/utils/styles.d.ts.map +0 -1
  500. package/dist/cjs/utils/styles.js +0 -19
  501. package/dist/cjs/utils/tableProcessing.d.ts +0 -197
  502. package/dist/cjs/utils/tableProcessing.d.ts.map +0 -1
  503. package/dist/cjs/utils/tableProcessing.js +0 -665
  504. package/dist/cjs/utils/tenants.d.ts +0 -9
  505. package/dist/cjs/utils/tenants.d.ts.map +0 -1
  506. package/dist/cjs/utils/tenants.js +0 -2
  507. package/dist/cjs/utils/textProcessing.d.ts +0 -7
  508. package/dist/cjs/utils/textProcessing.d.ts.map +0 -1
  509. package/dist/cjs/utils/textProcessing.js +0 -117
  510. package/dist/cjs/utils/ui.d.ts +0 -2
  511. package/dist/cjs/utils/ui.d.ts.map +0 -1
  512. package/dist/cjs/utils/ui.js +0 -18
  513. package/dist/cjs/utils/validation.d.ts +0 -9
  514. package/dist/cjs/utils/validation.d.ts.map +0 -1
  515. package/dist/cjs/utils/validation.js +0 -30
  516. package/dist/cjs/utils/valueFormatter.d.ts +0 -34
  517. package/dist/cjs/utils/valueFormatter.d.ts.map +0 -1
  518. package/dist/cjs/utils/valueFormatter.js +0 -444
  519. package/dist/cjs/utils/width.d.ts +0 -12
  520. package/dist/cjs/utils/width.d.ts.map +0 -1
  521. package/dist/cjs/utils/width.js +0 -25
  522. package/dist/esm/Chart.d.ts +0 -233
  523. package/dist/esm/Chart.d.ts.map +0 -1
  524. package/dist/esm/Chart.js +0 -570
  525. package/dist/esm/ChartBuilder.d.ts +0 -375
  526. package/dist/esm/ChartBuilder.d.ts.map +0 -1
  527. package/dist/esm/ChartBuilder.js +0 -2273
  528. package/dist/esm/ChartEditor.d.ts +0 -211
  529. package/dist/esm/ChartEditor.d.ts.map +0 -1
  530. package/dist/esm/ChartEditor.js +0 -133
  531. package/dist/esm/Context.d.ts +0 -255
  532. package/dist/esm/Context.d.ts.map +0 -1
  533. package/dist/esm/Context.js +0 -1425
  534. package/dist/esm/Dashboard.d.ts +0 -329
  535. package/dist/esm/Dashboard.d.ts.map +0 -1
  536. package/dist/esm/Dashboard.js +0 -785
  537. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +0 -37
  538. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  539. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -288
  540. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +0 -94
  541. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  542. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +0 -887
  543. package/dist/esm/QuillProvider.d.ts +0 -192
  544. package/dist/esm/QuillProvider.d.ts.map +0 -1
  545. package/dist/esm/QuillProvider.js +0 -104
  546. package/dist/esm/ReportBuilder.d.ts +0 -326
  547. package/dist/esm/ReportBuilder.d.ts.map +0 -1
  548. package/dist/esm/ReportBuilder.js +0 -269
  549. package/dist/esm/SQLEditor.d.ts +0 -302
  550. package/dist/esm/SQLEditor.d.ts.map +0 -1
  551. package/dist/esm/SQLEditor.js +0 -972
  552. package/dist/esm/StaticChart.d.ts +0 -8
  553. package/dist/esm/StaticChart.d.ts.map +0 -1
  554. package/dist/esm/StaticChart.js +0 -24
  555. package/dist/esm/Table.d.ts +0 -187
  556. package/dist/esm/Table.d.ts.map +0 -1
  557. package/dist/esm/Table.js +0 -164
  558. package/dist/esm/assets/AdjustmentsIcon.d.ts +0 -5
  559. package/dist/esm/assets/AdjustmentsIcon.d.ts.map +0 -1
  560. package/dist/esm/assets/AdjustmentsIcon.js +0 -3
  561. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +0 -5
  562. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  563. package/dist/esm/assets/ArrowDownHeadIcon.js +0 -3
  564. package/dist/esm/assets/ArrowDownIcon.d.ts +0 -5
  565. package/dist/esm/assets/ArrowDownIcon.d.ts.map +0 -1
  566. package/dist/esm/assets/ArrowDownIcon.js +0 -3
  567. package/dist/esm/assets/ArrowDownRightIcon.d.ts +0 -5
  568. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +0 -1
  569. package/dist/esm/assets/ArrowDownRightIcon.js +0 -3
  570. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts +0 -5
  571. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  572. package/dist/esm/assets/ArrowLeftHeadIcon.js +0 -3
  573. package/dist/esm/assets/ArrowRightHeadIcon.d.ts +0 -5
  574. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  575. package/dist/esm/assets/ArrowRightHeadIcon.js +0 -3
  576. package/dist/esm/assets/ArrowRightIcon.d.ts +0 -5
  577. package/dist/esm/assets/ArrowRightIcon.d.ts.map +0 -1
  578. package/dist/esm/assets/ArrowRightIcon.js +0 -3
  579. package/dist/esm/assets/ArrowUpHeadIcon.d.ts +0 -5
  580. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  581. package/dist/esm/assets/ArrowUpHeadIcon.js +0 -3
  582. package/dist/esm/assets/ArrowUpIcon.d.ts +0 -5
  583. package/dist/esm/assets/ArrowUpIcon.d.ts.map +0 -1
  584. package/dist/esm/assets/ArrowUpIcon.js +0 -3
  585. package/dist/esm/assets/ArrowUpRightIcon.d.ts +0 -5
  586. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +0 -1
  587. package/dist/esm/assets/ArrowUpRightIcon.js +0 -3
  588. package/dist/esm/assets/CalendarIcon.d.ts +0 -5
  589. package/dist/esm/assets/CalendarIcon.d.ts.map +0 -1
  590. package/dist/esm/assets/CalendarIcon.js +0 -3
  591. package/dist/esm/assets/CalendarNormalIcon.d.ts +0 -5
  592. package/dist/esm/assets/CalendarNormalIcon.d.ts.map +0 -1
  593. package/dist/esm/assets/CalendarNormalIcon.js +0 -3
  594. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  595. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  596. package/dist/esm/assets/DoubleArrowLeftHeadIcon.js +0 -3
  597. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  598. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  599. package/dist/esm/assets/DoubleArrowRightHeadIcon.js +0 -3
  600. package/dist/esm/assets/ExclamationFilledIcon.d.ts +0 -5
  601. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +0 -1
  602. package/dist/esm/assets/ExclamationFilledIcon.js +0 -3
  603. package/dist/esm/assets/FilterIcon.d.ts +0 -5
  604. package/dist/esm/assets/FilterIcon.d.ts.map +0 -1
  605. package/dist/esm/assets/FilterIcon.js +0 -3
  606. package/dist/esm/assets/RefreshIcon.d.ts +0 -5
  607. package/dist/esm/assets/RefreshIcon.d.ts.map +0 -1
  608. package/dist/esm/assets/RefreshIcon.js +0 -3
  609. package/dist/esm/assets/SearchIcon.d.ts +0 -5
  610. package/dist/esm/assets/SearchIcon.d.ts.map +0 -1
  611. package/dist/esm/assets/SearchIcon.js +0 -3
  612. package/dist/esm/assets/UpLeftArrowsIcon.d.ts +0 -5
  613. package/dist/esm/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  614. package/dist/esm/assets/UpLeftArrowsIcon.js +0 -3
  615. package/dist/esm/assets/XCircleIcon.d.ts +0 -5
  616. package/dist/esm/assets/XCircleIcon.d.ts.map +0 -1
  617. package/dist/esm/assets/XCircleIcon.js +0 -3
  618. package/dist/esm/assets/XIcon.d.ts +0 -5
  619. package/dist/esm/assets/XIcon.d.ts.map +0 -1
  620. package/dist/esm/assets/XIcon.js +0 -3
  621. package/dist/esm/assets/index.d.ts +0 -21
  622. package/dist/esm/assets/index.d.ts.map +0 -1
  623. package/dist/esm/assets/index.js +0 -20
  624. package/dist/esm/components/Banner/index.d.ts +0 -2
  625. package/dist/esm/components/Banner/index.d.ts.map +0 -1
  626. package/dist/esm/components/Banner/index.js +0 -24
  627. package/dist/esm/components/Chart/BarChart.d.ts +0 -29
  628. package/dist/esm/components/Chart/BarChart.d.ts.map +0 -1
  629. package/dist/esm/components/Chart/BarChart.js +0 -123
  630. package/dist/esm/components/Chart/BarList.d.ts +0 -23
  631. package/dist/esm/components/Chart/BarList.d.ts.map +0 -1
  632. package/dist/esm/components/Chart/BarList.js +0 -149
  633. package/dist/esm/components/Chart/ChartError.d.ts +0 -13
  634. package/dist/esm/components/Chart/ChartError.d.ts.map +0 -1
  635. package/dist/esm/components/Chart/ChartError.js +0 -63
  636. package/dist/esm/components/Chart/ChartSkeleton.d.ts +0 -8
  637. package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +0 -1
  638. package/dist/esm/components/Chart/ChartSkeleton.js +0 -19
  639. package/dist/esm/components/Chart/ChartTooltip.d.ts +0 -29
  640. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +0 -1
  641. package/dist/esm/components/Chart/ChartTooltip.js +0 -200
  642. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -5
  643. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  644. package/dist/esm/components/Chart/ChartTooltipFrame.js +0 -14
  645. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts +0 -12
  646. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  647. package/dist/esm/components/Chart/ChartTooltipGroup.js +0 -23
  648. package/dist/esm/components/Chart/ChartTooltipRow.d.ts +0 -9
  649. package/dist/esm/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  650. package/dist/esm/components/Chart/ChartTooltipRow.js +0 -41
  651. package/dist/esm/components/Chart/CustomBar.d.ts +0 -18
  652. package/dist/esm/components/Chart/CustomBar.d.ts.map +0 -1
  653. package/dist/esm/components/Chart/CustomBar.js +0 -68
  654. package/dist/esm/components/Chart/CustomLegend.d.ts +0 -2
  655. package/dist/esm/components/Chart/CustomLegend.d.ts.map +0 -1
  656. package/dist/esm/components/Chart/CustomLegend.js +0 -16
  657. package/dist/esm/components/Chart/CustomReferenceLine.d.ts +0 -2
  658. package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +0 -1
  659. package/dist/esm/components/Chart/CustomReferenceLine.js +0 -24
  660. package/dist/esm/components/Chart/GaugeChart.d.ts +0 -11
  661. package/dist/esm/components/Chart/GaugeChart.d.ts.map +0 -1
  662. package/dist/esm/components/Chart/GaugeChart.js +0 -241
  663. package/dist/esm/components/Chart/InternalChart.d.ts +0 -25
  664. package/dist/esm/components/Chart/InternalChart.d.ts.map +0 -1
  665. package/dist/esm/components/Chart/InternalChart.js +0 -491
  666. package/dist/esm/components/Chart/LineChart.d.ts +0 -33
  667. package/dist/esm/components/Chart/LineChart.d.ts.map +0 -1
  668. package/dist/esm/components/Chart/LineChart.js +0 -186
  669. package/dist/esm/components/Chart/MapChart.d.ts +0 -36
  670. package/dist/esm/components/Chart/MapChart.d.ts.map +0 -1
  671. package/dist/esm/components/Chart/MapChart.js +0 -594
  672. package/dist/esm/components/Chart/PieChart.d.ts +0 -79
  673. package/dist/esm/components/Chart/PieChart.d.ts.map +0 -1
  674. package/dist/esm/components/Chart/PieChart.js +0 -276
  675. package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -3
  676. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +0 -1
  677. package/dist/esm/components/Dashboard/ChartComponent.js +0 -61
  678. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +0 -56
  679. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +0 -1
  680. package/dist/esm/components/Dashboard/DashboardFilter.js +0 -90
  681. package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -6
  682. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +0 -1
  683. package/dist/esm/components/Dashboard/DashboardSection.js +0 -22
  684. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -2
  685. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  686. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -9
  687. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +0 -13
  688. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +0 -1
  689. package/dist/esm/components/Dashboard/DashboardTemplate.js +0 -64
  690. package/dist/esm/components/Dashboard/DataLoader.d.ts +0 -56
  691. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +0 -1
  692. package/dist/esm/components/Dashboard/DataLoader.js +0 -712
  693. package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -3
  694. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +0 -1
  695. package/dist/esm/components/Dashboard/MetricComponent.js +0 -132
  696. package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -16
  697. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +0 -1
  698. package/dist/esm/components/Dashboard/TableComponent.js +0 -68
  699. package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts +0 -3
  700. package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts.map +0 -1
  701. package/dist/esm/components/Dashboard/TemplateChartComponent.js +0 -17
  702. package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts +0 -3
  703. package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts.map +0 -1
  704. package/dist/esm/components/Dashboard/TemplateMetricComponent.js +0 -17
  705. package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts +0 -14
  706. package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts.map +0 -1
  707. package/dist/esm/components/Dashboard/TemplateTableComponent.js +0 -17
  708. package/dist/esm/components/Dashboard/util.d.ts +0 -8
  709. package/dist/esm/components/Dashboard/util.d.ts.map +0 -1
  710. package/dist/esm/components/Dashboard/util.js +0 -96
  711. package/dist/esm/components/QuillCard.d.ts +0 -9
  712. package/dist/esm/components/QuillCard.d.ts.map +0 -1
  713. package/dist/esm/components/QuillCard.js +0 -57
  714. package/dist/esm/components/QuillMultiSelect.d.ts +0 -11
  715. package/dist/esm/components/QuillMultiSelect.d.ts.map +0 -1
  716. package/dist/esm/components/QuillMultiSelect.js +0 -207
  717. package/dist/esm/components/QuillMultiSelectSectionList.d.ts +0 -39
  718. package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +0 -1
  719. package/dist/esm/components/QuillMultiSelectSectionList.js +0 -328
  720. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +0 -15
  721. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +0 -1
  722. package/dist/esm/components/QuillMultiSelectWithCombo.js +0 -469
  723. package/dist/esm/components/QuillSelect.d.ts +0 -6
  724. package/dist/esm/components/QuillSelect.d.ts.map +0 -1
  725. package/dist/esm/components/QuillSelect.js +0 -216
  726. package/dist/esm/components/QuillSelectWithCombo.d.ts +0 -6
  727. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +0 -1
  728. package/dist/esm/components/QuillSelectWithCombo.js +0 -213
  729. package/dist/esm/components/QuillTable.d.ts +0 -38
  730. package/dist/esm/components/QuillTable.d.ts.map +0 -1
  731. package/dist/esm/components/QuillTable.js +0 -300
  732. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +0 -28
  733. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +0 -1
  734. package/dist/esm/components/ReportBuilder/AddColumnModal.js +0 -264
  735. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +0 -26
  736. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +0 -1
  737. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +0 -55
  738. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +0 -30
  739. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +0 -1
  740. package/dist/esm/components/ReportBuilder/AddSortPopover.js +0 -56
  741. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts +0 -49
  742. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts.map +0 -1
  743. package/dist/esm/components/ReportBuilder/ColumnComponent.js +0 -39
  744. package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts +0 -17
  745. package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts.map +0 -1
  746. package/dist/esm/components/ReportBuilder/DraggableColumns.js +0 -46
  747. package/dist/esm/components/ReportBuilder/DraggableItem.d.ts +0 -17
  748. package/dist/esm/components/ReportBuilder/DraggableItem.d.ts.map +0 -1
  749. package/dist/esm/components/ReportBuilder/DraggableItem.js +0 -14
  750. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts +0 -65
  751. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts.map +0 -1
  752. package/dist/esm/components/ReportBuilder/FilterComponent.js +0 -44
  753. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +0 -29
  754. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +0 -1
  755. package/dist/esm/components/ReportBuilder/FilterModal.js +0 -700
  756. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +0 -28
  757. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +0 -1
  758. package/dist/esm/components/ReportBuilder/FilterStack.js +0 -51
  759. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts +0 -42
  760. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts.map +0 -1
  761. package/dist/esm/components/ReportBuilder/LimitComponent.js +0 -46
  762. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts +0 -66
  763. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts.map +0 -1
  764. package/dist/esm/components/ReportBuilder/PivotComponent.js +0 -40
  765. package/dist/esm/components/ReportBuilder/SaveReport.d.ts +0 -162
  766. package/dist/esm/components/ReportBuilder/SaveReport.d.ts.map +0 -1
  767. package/dist/esm/components/ReportBuilder/SaveReport.js +0 -31
  768. package/dist/esm/components/ReportBuilder/SortComponent.d.ts +0 -42
  769. package/dist/esm/components/ReportBuilder/SortComponent.d.ts.map +0 -1
  770. package/dist/esm/components/ReportBuilder/SortComponent.js +0 -46
  771. package/dist/esm/components/ReportBuilder/TableComponent.d.ts +0 -28
  772. package/dist/esm/components/ReportBuilder/TableComponent.d.ts.map +0 -1
  773. package/dist/esm/components/ReportBuilder/TableComponent.js +0 -20
  774. package/dist/esm/components/ReportBuilder/ast.d.ts +0 -523
  775. package/dist/esm/components/ReportBuilder/ast.d.ts.map +0 -1
  776. package/dist/esm/components/ReportBuilder/ast.js +0 -230
  777. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts +0 -7
  778. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts.map +0 -1
  779. package/dist/esm/components/ReportBuilder/bigDateMap.js +0 -687
  780. package/dist/esm/components/ReportBuilder/constants.d.ts +0 -117
  781. package/dist/esm/components/ReportBuilder/constants.d.ts.map +0 -1
  782. package/dist/esm/components/ReportBuilder/constants.js +0 -161
  783. package/dist/esm/components/ReportBuilder/convert.d.ts +0 -42
  784. package/dist/esm/components/ReportBuilder/convert.d.ts.map +0 -1
  785. package/dist/esm/components/ReportBuilder/convert.js +0 -906
  786. package/dist/esm/components/ReportBuilder/operators.d.ts +0 -462
  787. package/dist/esm/components/ReportBuilder/operators.d.ts.map +0 -1
  788. package/dist/esm/components/ReportBuilder/operators.js +0 -581
  789. package/dist/esm/components/ReportBuilder/postgres.d.ts +0 -150
  790. package/dist/esm/components/ReportBuilder/postgres.d.ts.map +0 -1
  791. package/dist/esm/components/ReportBuilder/postgres.js +0 -355
  792. package/dist/esm/components/ReportBuilder/schema.d.ts +0 -30
  793. package/dist/esm/components/ReportBuilder/schema.d.ts.map +0 -1
  794. package/dist/esm/components/ReportBuilder/schema.js +0 -1
  795. package/dist/esm/components/ReportBuilder/ui.d.ts +0 -136
  796. package/dist/esm/components/ReportBuilder/ui.d.ts.map +0 -1
  797. package/dist/esm/components/ReportBuilder/ui.js +0 -433
  798. package/dist/esm/components/ReportBuilder/util.d.ts +0 -78
  799. package/dist/esm/components/ReportBuilder/util.d.ts.map +0 -1
  800. package/dist/esm/components/ReportBuilder/util.js +0 -801
  801. package/dist/esm/components/UiComponents.d.ts +0 -246
  802. package/dist/esm/components/UiComponents.d.ts.map +0 -1
  803. package/dist/esm/components/UiComponents.js +0 -924
  804. package/dist/esm/components/selectUtils.d.ts +0 -9
  805. package/dist/esm/components/selectUtils.d.ts.map +0 -1
  806. package/dist/esm/components/selectUtils.js +0 -17
  807. package/dist/esm/contexts/BaseColorContext.d.ts +0 -3
  808. package/dist/esm/contexts/BaseColorContext.d.ts.map +0 -1
  809. package/dist/esm/contexts/BaseColorContext.js +0 -3
  810. package/dist/esm/contexts/HoveredValueContext.d.ts +0 -8
  811. package/dist/esm/contexts/HoveredValueContext.d.ts.map +0 -1
  812. package/dist/esm/contexts/HoveredValueContext.js +0 -5
  813. package/dist/esm/contexts/RootStylesContext.d.ts +0 -3
  814. package/dist/esm/contexts/RootStylesContext.d.ts.map +0 -1
  815. package/dist/esm/contexts/RootStylesContext.js +0 -3
  816. package/dist/esm/contexts/SelectedValueContext.d.ts +0 -7
  817. package/dist/esm/contexts/SelectedValueContext.d.ts.map +0 -1
  818. package/dist/esm/contexts/SelectedValueContext.js +0 -6
  819. package/dist/esm/contexts/index.d.ts +0 -5
  820. package/dist/esm/contexts/index.d.ts.map +0 -1
  821. package/dist/esm/contexts/index.js +0 -4
  822. package/dist/esm/hooks/index.d.ts +0 -5
  823. package/dist/esm/hooks/index.d.ts.map +0 -1
  824. package/dist/esm/hooks/index.js +0 -4
  825. package/dist/esm/hooks/useAskQuill.d.ts +0 -27
  826. package/dist/esm/hooks/useAskQuill.d.ts.map +0 -1
  827. package/dist/esm/hooks/useAskQuill.js +0 -250
  828. package/dist/esm/hooks/useAstToFilterTree.d.ts +0 -16
  829. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +0 -1
  830. package/dist/esm/hooks/useAstToFilterTree.js +0 -27
  831. package/dist/esm/hooks/useDashboard.d.ts +0 -86
  832. package/dist/esm/hooks/useDashboard.d.ts.map +0 -1
  833. package/dist/esm/hooks/useDashboard.js +0 -876
  834. package/dist/esm/hooks/useExport.d.ts +0 -22
  835. package/dist/esm/hooks/useExport.d.ts.map +0 -1
  836. package/dist/esm/hooks/useExport.js +0 -309
  837. package/dist/esm/hooks/useFormat.d.ts +0 -5
  838. package/dist/esm/hooks/useFormat.d.ts.map +0 -1
  839. package/dist/esm/hooks/useFormat.js +0 -25
  840. package/dist/esm/hooks/useInternalState.d.ts +0 -3
  841. package/dist/esm/hooks/useInternalState.d.ts.map +0 -1
  842. package/dist/esm/hooks/useInternalState.js +0 -14
  843. package/dist/esm/hooks/useLongLoading.d.ts +0 -13
  844. package/dist/esm/hooks/useLongLoading.d.ts.map +0 -1
  845. package/dist/esm/hooks/useLongLoading.js +0 -64
  846. package/dist/esm/hooks/useOnClickOutside.d.ts +0 -6
  847. package/dist/esm/hooks/useOnClickOutside.d.ts.map +0 -1
  848. package/dist/esm/hooks/useOnClickOutside.js +0 -55
  849. package/dist/esm/hooks/useOnWindowResize.d.ts +0 -5
  850. package/dist/esm/hooks/useOnWindowResize.d.ts.map +0 -1
  851. package/dist/esm/hooks/useOnWindowResize.js +0 -14
  852. package/dist/esm/hooks/useQuill.d.ts +0 -24
  853. package/dist/esm/hooks/useQuill.d.ts.map +0 -1
  854. package/dist/esm/hooks/useQuill.js +0 -231
  855. package/dist/esm/hooks/useReport.d.ts +0 -12
  856. package/dist/esm/hooks/useReport.d.ts.map +0 -1
  857. package/dist/esm/hooks/useReport.js +0 -45
  858. package/dist/esm/hooks/useReportBuilder.d.ts +0 -178
  859. package/dist/esm/hooks/useReportBuilder.d.ts.map +0 -1
  860. package/dist/esm/hooks/useReportBuilder.js +0 -1490
  861. package/dist/esm/hooks/useSelectOnKeyDown.d.ts +0 -3
  862. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  863. package/dist/esm/hooks/useSelectOnKeyDown.js +0 -63
  864. package/dist/esm/hooks/useVirtualTables.d.ts +0 -23
  865. package/dist/esm/hooks/useVirtualTables.d.ts.map +0 -1
  866. package/dist/esm/hooks/useVirtualTables.js +0 -127
  867. package/dist/esm/index.d.ts +0 -49
  868. package/dist/esm/index.d.ts.map +0 -1
  869. package/dist/esm/index.js +0 -31
  870. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +0 -55
  871. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +0 -1
  872. package/dist/esm/internals/ReportBuilder/PivotForm.js +0 -205
  873. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +0 -39
  874. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  875. package/dist/esm/internals/ReportBuilder/PivotList.js +0 -96
  876. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +0 -163
  877. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  878. package/dist/esm/internals/ReportBuilder/PivotModal.js +0 -1565
  879. package/dist/esm/lib/font.d.ts +0 -14
  880. package/dist/esm/lib/font.d.ts.map +0 -1
  881. package/dist/esm/lib/font.js +0 -13
  882. package/dist/esm/lib/index.d.ts +0 -4
  883. package/dist/esm/lib/index.d.ts.map +0 -1
  884. package/dist/esm/lib/index.js +0 -3
  885. package/dist/esm/lib/inputTypes.d.ts +0 -21
  886. package/dist/esm/lib/inputTypes.d.ts.map +0 -1
  887. package/dist/esm/lib/inputTypes.js +0 -55
  888. package/dist/esm/lib/utils.d.ts +0 -10
  889. package/dist/esm/lib/utils.d.ts.map +0 -1
  890. package/dist/esm/lib/utils.js +0 -42
  891. package/dist/esm/models/Client.d.ts +0 -52
  892. package/dist/esm/models/Client.d.ts.map +0 -1
  893. package/dist/esm/models/Client.js +0 -1
  894. package/dist/esm/models/Columns.d.ts +0 -14
  895. package/dist/esm/models/Columns.d.ts.map +0 -1
  896. package/dist/esm/models/Columns.js +0 -1
  897. package/dist/esm/models/Dashboard.d.ts +0 -26
  898. package/dist/esm/models/Dashboard.d.ts.map +0 -1
  899. package/dist/esm/models/Dashboard.js +0 -1
  900. package/dist/esm/models/Data.d.ts +0 -20
  901. package/dist/esm/models/Data.d.ts.map +0 -1
  902. package/dist/esm/models/Data.js +0 -1
  903. package/dist/esm/models/Filter.d.ts +0 -318
  904. package/dist/esm/models/Filter.d.ts.map +0 -1
  905. package/dist/esm/models/Filter.js +0 -446
  906. package/dist/esm/models/Pagination.d.ts +0 -10
  907. package/dist/esm/models/Pagination.d.ts.map +0 -1
  908. package/dist/esm/models/Pagination.js +0 -1
  909. package/dist/esm/models/Pivot.d.ts +0 -57
  910. package/dist/esm/models/Pivot.d.ts.map +0 -1
  911. package/dist/esm/models/Pivot.js +0 -1
  912. package/dist/esm/models/Report.d.ts +0 -147
  913. package/dist/esm/models/Report.d.ts.map +0 -1
  914. package/dist/esm/models/Report.js +0 -1
  915. package/dist/esm/models/ReportBuilder.d.ts +0 -46
  916. package/dist/esm/models/ReportBuilder.d.ts.map +0 -1
  917. package/dist/esm/models/ReportBuilder.js +0 -16
  918. package/dist/esm/models/Schema.d.ts +0 -18
  919. package/dist/esm/models/Schema.d.ts.map +0 -1
  920. package/dist/esm/models/Schema.js +0 -1
  921. package/dist/esm/models/Tables.d.ts +0 -36
  922. package/dist/esm/models/Tables.d.ts.map +0 -1
  923. package/dist/esm/models/Tables.js +0 -1
  924. package/dist/esm/utils/astFilterProcessing.d.ts +0 -45
  925. package/dist/esm/utils/astFilterProcessing.d.ts.map +0 -1
  926. package/dist/esm/utils/astFilterProcessing.js +0 -11759
  927. package/dist/esm/utils/astProcessing.d.ts +0 -94
  928. package/dist/esm/utils/astProcessing.d.ts.map +0 -1
  929. package/dist/esm/utils/astProcessing.js +0 -596
  930. package/dist/esm/utils/axisFormatter.d.ts +0 -19
  931. package/dist/esm/utils/axisFormatter.d.ts.map +0 -1
  932. package/dist/esm/utils/axisFormatter.js +0 -212
  933. package/dist/esm/utils/client.d.ts +0 -20
  934. package/dist/esm/utils/client.d.ts.map +0 -1
  935. package/dist/esm/utils/client.js +0 -103
  936. package/dist/esm/utils/color.d.ts +0 -203
  937. package/dist/esm/utils/color.d.ts.map +0 -1
  938. package/dist/esm/utils/color.js +0 -431
  939. package/dist/esm/utils/columnProcessing.d.ts +0 -26
  940. package/dist/esm/utils/columnProcessing.d.ts.map +0 -1
  941. package/dist/esm/utils/columnProcessing.js +0 -388
  942. package/dist/esm/utils/constants.d.ts +0 -9
  943. package/dist/esm/utils/constants.d.ts.map +0 -1
  944. package/dist/esm/utils/constants.js +0 -12
  945. package/dist/esm/utils/crypto.d.ts +0 -2
  946. package/dist/esm/utils/crypto.d.ts.map +0 -1
  947. package/dist/esm/utils/crypto.js +0 -10
  948. package/dist/esm/utils/csv.d.ts +0 -7
  949. package/dist/esm/utils/csv.d.ts.map +0 -1
  950. package/dist/esm/utils/csv.js +0 -74
  951. package/dist/esm/utils/dashboard.d.ts +0 -36
  952. package/dist/esm/utils/dashboard.d.ts.map +0 -1
  953. package/dist/esm/utils/dashboard.js +0 -414
  954. package/dist/esm/utils/dataFetcher.d.ts +0 -13
  955. package/dist/esm/utils/dataFetcher.d.ts.map +0 -1
  956. package/dist/esm/utils/dataFetcher.js +0 -395
  957. package/dist/esm/utils/dataProcessing.d.ts +0 -15
  958. package/dist/esm/utils/dataProcessing.d.ts.map +0 -1
  959. package/dist/esm/utils/dataProcessing.js +0 -156
  960. package/dist/esm/utils/dates.d.ts +0 -23
  961. package/dist/esm/utils/dates.d.ts.map +0 -1
  962. package/dist/esm/utils/dates.js +0 -98
  963. package/dist/esm/utils/error.d.ts +0 -5
  964. package/dist/esm/utils/error.d.ts.map +0 -1
  965. package/dist/esm/utils/error.js +0 -8
  966. package/dist/esm/utils/errorProcessing.d.ts +0 -2
  967. package/dist/esm/utils/errorProcessing.d.ts.map +0 -1
  968. package/dist/esm/utils/errorProcessing.js +0 -5
  969. package/dist/esm/utils/filterConstants.d.ts +0 -34
  970. package/dist/esm/utils/filterConstants.d.ts.map +0 -1
  971. package/dist/esm/utils/filterConstants.js +0 -33
  972. package/dist/esm/utils/filterProcessing.d.ts +0 -38
  973. package/dist/esm/utils/filterProcessing.d.ts.map +0 -1
  974. package/dist/esm/utils/filterProcessing.js +0 -590
  975. package/dist/esm/utils/getDomain.d.ts +0 -11
  976. package/dist/esm/utils/getDomain.d.ts.map +0 -1
  977. package/dist/esm/utils/getDomain.js +0 -62
  978. package/dist/esm/utils/logging.d.ts +0 -2
  979. package/dist/esm/utils/logging.d.ts.map +0 -1
  980. package/dist/esm/utils/logging.js +0 -7
  981. package/dist/esm/utils/merge.d.ts +0 -18
  982. package/dist/esm/utils/merge.d.ts.map +0 -1
  983. package/dist/esm/utils/merge.js +0 -227
  984. package/dist/esm/utils/monacoConfig.d.ts +0 -22
  985. package/dist/esm/utils/monacoConfig.d.ts.map +0 -1
  986. package/dist/esm/utils/monacoConfig.js +0 -319
  987. package/dist/esm/utils/paginationProcessing.d.ts +0 -6
  988. package/dist/esm/utils/paginationProcessing.d.ts.map +0 -1
  989. package/dist/esm/utils/paginationProcessing.js +0 -28
  990. package/dist/esm/utils/parserBigQuery.d.ts +0 -6
  991. package/dist/esm/utils/parserBigQuery.d.ts.map +0 -1
  992. package/dist/esm/utils/parserBigQuery.js +0 -52
  993. package/dist/esm/utils/parserPostgres.d.ts +0 -3
  994. package/dist/esm/utils/parserPostgres.d.ts.map +0 -1
  995. package/dist/esm/utils/parserPostgres.js +0 -37
  996. package/dist/esm/utils/pivotConstructor.d.ts +0 -25
  997. package/dist/esm/utils/pivotConstructor.d.ts.map +0 -1
  998. package/dist/esm/utils/pivotConstructor.js +0 -296
  999. package/dist/esm/utils/pivotProcessing.d.ts +0 -33
  1000. package/dist/esm/utils/pivotProcessing.d.ts.map +0 -1
  1001. package/dist/esm/utils/pivotProcessing.js +0 -177
  1002. package/dist/esm/utils/queryConstructor.d.ts +0 -15
  1003. package/dist/esm/utils/queryConstructor.d.ts.map +0 -1
  1004. package/dist/esm/utils/queryConstructor.js +0 -935
  1005. package/dist/esm/utils/report.d.ts +0 -121
  1006. package/dist/esm/utils/report.d.ts.map +0 -1
  1007. package/dist/esm/utils/report.js +0 -616
  1008. package/dist/esm/utils/reportBuilder.d.ts +0 -97
  1009. package/dist/esm/utils/reportBuilder.d.ts.map +0 -1
  1010. package/dist/esm/utils/reportBuilder.js +0 -513
  1011. package/dist/esm/utils/schema.d.ts +0 -39
  1012. package/dist/esm/utils/schema.d.ts.map +0 -1
  1013. package/dist/esm/utils/schema.js +0 -226
  1014. package/dist/esm/utils/styles.d.ts +0 -17
  1015. package/dist/esm/utils/styles.d.ts.map +0 -1
  1016. package/dist/esm/utils/styles.js +0 -16
  1017. package/dist/esm/utils/tableProcessing.d.ts +0 -197
  1018. package/dist/esm/utils/tableProcessing.d.ts.map +0 -1
  1019. package/dist/esm/utils/tableProcessing.js +0 -651
  1020. package/dist/esm/utils/tenants.d.ts +0 -9
  1021. package/dist/esm/utils/tenants.d.ts.map +0 -1
  1022. package/dist/esm/utils/tenants.js +0 -1
  1023. package/dist/esm/utils/textProcessing.d.ts +0 -7
  1024. package/dist/esm/utils/textProcessing.d.ts.map +0 -1
  1025. package/dist/esm/utils/textProcessing.js +0 -109
  1026. package/dist/esm/utils/ui.d.ts +0 -2
  1027. package/dist/esm/utils/ui.d.ts.map +0 -1
  1028. package/dist/esm/utils/ui.js +0 -14
  1029. package/dist/esm/utils/validation.d.ts +0 -9
  1030. package/dist/esm/utils/validation.d.ts.map +0 -1
  1031. package/dist/esm/utils/validation.js +0 -26
  1032. package/dist/esm/utils/valueFormatter.d.ts +0 -34
  1033. package/dist/esm/utils/valueFormatter.d.ts.map +0 -1
  1034. package/dist/esm/utils/valueFormatter.js +0 -436
  1035. package/dist/esm/utils/width.d.ts +0 -12
  1036. package/dist/esm/utils/width.d.ts.map +0 -1
  1037. package/dist/esm/utils/width.js +0 -21
@@ -1,2273 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
3
- import { ClientContext, DashboardConfigContext, DashboardFiltersContext, EventTrackingContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, ThemeContext, } from './Context';
4
- import { PivotModal, generatePivotTable, isDateField, } from './internals/ReportBuilder/PivotModal';
5
- import { PivotCard } from './internals/ReportBuilder/PivotList';
6
- import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, QuillTableComponent, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillChartBuilderFormContainer, QuillLoadingComponent, QuillToolTip, QuillChartBuilderCheckboxComponent, } from './components/UiComponents';
7
- import { removeDoubleQuotes, snakeAndCamelCaseToTitleCase, } from './utils/textProcessing';
8
- import { QuillSelectComponent } from './components/QuillSelect';
9
- import { TEMP_REPORT_ID, } from './models/Report';
10
- import { QuillCard } from './components/QuillCard';
11
- import { quillAutoFormat, NUMBER_FORMAT_TYPES, quillFormat, } from './utils/valueFormatter';
12
- import { convertFieldTypeToJSType, isDateType, isNumberType, isStringType, } from './utils/columnProcessing';
13
- import { getSelectFromAST, getTablesHelper } from './utils/astProcessing';
14
- import { validateReport } from './utils/validation';
15
- import { QuillChartErrorWithAction } from './components/Chart/ChartError';
16
- import { convertInternalReportToReport, saveReport } from './utils/report';
17
- import { mergeComparisonRange } from './utils/merge';
18
- import { ExclamationFilledIcon } from './assets';
19
- import InternalChart from './components/Chart/InternalChart';
20
- import { shouldFetchMore,
21
- // shouldSortInMemory,
22
- } from './utils/paginationProcessing';
23
- import { fetchResultsByQuery, getUniqueValuesByQuery, } from './utils/tableProcessing';
24
- import { getDateBucketFromRange } from './utils/dates';
25
- import { QuillMultiSelectComponentWithCombo as MultiSelectComponent } from './components/QuillMultiSelectWithCombo';
26
- import { QuillMultiSelectSectionList } from './components/QuillMultiSelectSectionList';
27
- import { ALL_TENANTS, REFERENCE_LINE, SINGLE_TENANT } from './utils/constants';
28
- import { disambiguatedValueField } from './utils/pivotConstructor';
29
- import { useAllReports, useDashboardInternal, useDashboardReports, } from './hooks/useDashboard';
30
- const CHART_TYPES = [
31
- 'column',
32
- 'stacked',
33
- 'line',
34
- 'table',
35
- 'metric',
36
- 'gauge',
37
- 'bar',
38
- 'pie',
39
- 'US map',
40
- 'World map',
41
- ];
42
- const CHART_TO_LABELS = {
43
- column: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
44
- line: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
45
- table: {},
46
- metric: {},
47
- bar: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
48
- stacked: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
49
- pie: { xAxisLabel: 'Category', yAxisLabel: 'Count' },
50
- 'US map': { xAxisLabel: 'State', yAxisLabel: 'Value' },
51
- 'World map': { xAxisLabel: 'Country', yAxisLabel: 'Value' },
52
- gauge: { xAxisLabel: 'Value' },
53
- };
54
- function getPivotMetricOptions(pivot, selectedPivotTable, chartType) {
55
- if (['metric', 'gauge'].includes(chartType) && selectedPivotTable) {
56
- return selectedPivotTable.columns.map((elem) => ({
57
- label: elem.field === pivot?.rowField
58
- ? `Pivot Row (${elem.field})`
59
- : elem.field,
60
- value: elem.field,
61
- }));
62
- }
63
- if (!pivot.rowField) {
64
- const valueField = disambiguatedValueField(pivot);
65
- return [
66
- {
67
- label: `Pivot Value (${valueField})`,
68
- value: valueField ?? '',
69
- },
70
- ];
71
- }
72
- else {
73
- return [
74
- {
75
- label: `Pivot Row (${pivot.rowField})`,
76
- value: pivot.rowField,
77
- },
78
- ];
79
- }
80
- }
81
- export function createInitialFormData(columns) {
82
- const firstNumberColumn = columns?.find((col) => numberFormatOptions.includes(col.format));
83
- const firstStringColumn = columns?.find((col) => !numberFormatOptions.includes(col.format) &&
84
- !dateFormatOptions.includes(col.format));
85
- const firstDateColumn = columns?.find((col) => dateFormatOptions.includes(col.format));
86
- const xAxisField = firstStringColumn?.field ||
87
- firstDateColumn?.field ||
88
- firstNumberColumn?.field ||
89
- columns?.[0]?.field ||
90
- '';
91
- const xAxisFormat = firstStringColumn?.format ||
92
- firstDateColumn?.format ||
93
- firstNumberColumn?.format ||
94
- columns?.[0]?.format ||
95
- 'string';
96
- const formEmptyState = {
97
- name: '',
98
- columns: columns.map((col) => {
99
- return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
100
- }),
101
- xAxisField,
102
- xAxisFormat,
103
- yAxisFields: [
104
- {
105
- field: firstNumberColumn?.field || columns?.[0]?.field || '',
106
- label: '',
107
- format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
108
- },
109
- ],
110
- xAxisLabel: '',
111
- chartType: firstNumberColumn ? 'line' : 'table',
112
- pivot: null,
113
- template: true,
114
- referenceLines: [],
115
- };
116
- return formEmptyState;
117
- }
118
- function getChartTypeOptions(formData, dashboard) {
119
- let viableCharts = CHART_TYPES;
120
- if (dashboard && dashboard.dateFilter && dashboard.dateFilter.comparison) {
121
- viableCharts = viableCharts.filter((chart) => ![
122
- 'table',
123
- 'metric',
124
- 'gauge',
125
- 'bar',
126
- 'stacked',
127
- 'pie',
128
- 'US map',
129
- 'World map',
130
- ].includes(chart));
131
- }
132
- if (formData.pivot && !formData.pivot.rowField) {
133
- return viableCharts
134
- .filter((elem) => ['table', 'metric', 'gauge'].includes(elem))
135
- .map((elem) => ({
136
- label: elem,
137
- value: elem,
138
- }));
139
- }
140
- else {
141
- return viableCharts
142
- .filter((elem) => !(formData.pivot &&
143
- formData.pivot.columnField &&
144
- (elem === 'bar' ||
145
- elem === 'pie' ||
146
- elem === 'US map' ||
147
- elem === 'World map')))
148
- .map((elem) => ({ label: elem, value: elem }));
149
- }
150
- }
151
- export function createReportFromForm(formData, report, eventTracking, selectedPivotTable, rows = [], filtersApplied = [], referenceLineQueryResults) {
152
- const newReport = convertInternalReportToReport(mergeComparisonRange({
153
- ...formData,
154
- dashboardName: formData.dashboardName || '',
155
- pivot: formData.pivot,
156
- id: report.id,
157
- order: -1,
158
- compareRows: report?.compareRows,
159
- filtersApplied: report?.filtersApplied || [],
160
- queryString: '',
161
- rows: rows,
162
- rowCount: selectedPivotTable?.rowCount ||
163
- report?.rowCount ||
164
- selectedPivotTable?.rows?.length ||
165
- rows.length ||
166
- 0,
167
- yAxisFields: formData.yAxisFields ?? [],
168
- pivotColumns: selectedPivotTable?.columns ?? undefined,
169
- pivotRows: selectedPivotTable?.rows ?? undefined,
170
- columnInternal: report?.columnInternal ?? [],
171
- referenceLines: formData.referenceLines?.map((elem) => ({
172
- label: elem.label,
173
- query: elem.label === REFERENCE_LINE
174
- ? [Number(elem.y1) || 0, Number(elem.y2) || 0]
175
- : elem.label,
176
- })) || [],
177
- referenceLineYValues: formData.referenceLines?.map((elem, index) => ({
178
- label: elem.label,
179
- query: elem.label === REFERENCE_LINE
180
- ? [Number(elem.y1) || 0, Number(elem.y2) || 0]
181
- : referenceLineQueryResults?.[index],
182
- })) || [],
183
- }), filtersApplied, eventTracking);
184
- return newReport;
185
- }
186
- export const numberFormatOptions = [
187
- 'whole_number',
188
- 'one_decimal_place',
189
- 'two_decimal_places',
190
- 'dollar_amount',
191
- 'dollar_cents',
192
- 'percentage',
193
- ];
194
- export const dateFormatOptions = [
195
- 'MMM_yyyy',
196
- 'MMM_dd',
197
- 'MMM_dd_yyyy',
198
- 'MMM_dd_hh:mm_ap_pm',
199
- 'hh_ap_pm',
200
- 'date',
201
- 'timestamptz',
202
- ];
203
- const NUMBER_OPTIONS = [
204
- { value: 'whole_number', label: 'whole number' },
205
- { value: 'one_decimal_place', label: 'one decimal place' },
206
- { value: 'two_decimal_places', label: 'two decimal places' },
207
- { value: 'dollar_amount', label: 'dollar amount' },
208
- { value: 'dollar_cents', label: 'dollar and cent amount' },
209
- { value: 'percent', label: 'percentage' },
210
- ];
211
- const DATE_OPTIONS = [
212
- { value: 'MMM_yyyy', label: 'month' },
213
- { value: 'MMM_dd', label: 'day' },
214
- { value: 'MMM_dd_yyyy', label: 'day and year' },
215
- { value: 'MMM_dd_hh:mm_ap_pm', label: 'day and time' },
216
- { value: 'hh_ap_pm', label: 'hour' },
217
- ];
218
- const ALL_FORMAT_OPTIONS = [
219
- ...NUMBER_OPTIONS,
220
- ...DATE_OPTIONS,
221
- { value: 'string', label: 'string' },
222
- ];
223
- /**
224
- * ### Quill Chart Builder with Modal
225
- *
226
- * Renders a ChartBuilder component with a modal.
227
- *
228
- * @example
229
- * ```js
230
- * // Usage without custom components
231
- * <ChartBuilder />
232
- * ```
233
- *
234
- * @example
235
- * ```js
236
- * // You can also pass your own components
237
- * <ChartBuilder
238
- * ButtonComponent={MyButton}
239
- * SecondaryButtonComponent={MySecondaryButton}
240
- * />
241
- * ```
242
- *
243
- * ### Chart Builder API
244
- * @see https://docs.quillsql.com/components/chart-builder#with-modal
245
- */
246
- export function ChartBuilderWithModal(props) {
247
- const parentRef = useRef(null);
248
- const [modalWidth, setModalWidth] = useState(200);
249
- const [modalHeight, setModalHeight] = useState(200);
250
- const { isOpen, setIsOpen, title, isHorizontalView } = props;
251
- const Modal = props.ModalComponent ?? MemoizedModal;
252
- const { dashboardReports: dashboard } = useDashboardReports(props.destinationDashboard);
253
- const [filtersEnabledState, setFiltersEnabledState] = useState(!!props.reportId);
254
- useEffect(() => {
255
- function handleResize() {
256
- const screenSize = window.innerWidth;
257
- if (screenSize >= 1200) {
258
- setModalWidth(window.innerWidth - 80);
259
- }
260
- else {
261
- setModalWidth(undefined); // use dynamic width of contents
262
- }
263
- setModalHeight(window.innerHeight - 80);
264
- }
265
- handleResize();
266
- window.addEventListener('resize', handleResize);
267
- return () => {
268
- window.removeEventListener('resize', handleResize);
269
- };
270
- }, []);
271
- return (_jsx("div", { style: { height: '100%' }, ref: parentRef, children: _jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
272
- // For isHorizontalView, use full viewport size minus 80px for padding,
273
- // otherwise use the default layout method of the modal (contents).
274
- width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (props.reportId
275
- ? (dashboard[props.reportId] ?? props.tempReport)
276
- : props.tempReport) ? (_jsx(ChartBuilder, { ...props, filtersEnabled: filtersEnabledState, onFiltersEnabledChanged: setFiltersEnabledState, runQueryOnMount: filtersEnabledState })) : (_jsx("div", { style: { padding: 20 }, children: _jsx(QuillLoadingComponent, {}) })) }) }));
277
- }
278
- /**
279
- * ### Quill Chart Builder
280
- *
281
- * A simple form that lets users turn a SQL query into a chart, metric, or table
282
- * and then add that dashboard item into one of their dashboards.
283
- *
284
- * @example
285
- * ```js
286
- * // Usage without custom components
287
- * <ChartBuilder />
288
- * ```
289
- *
290
- * @example
291
- * ```js
292
- * // You can also pass your own components
293
- * <ChartBuilder
294
- * ButtonComponent={MyButton}
295
- * SecondaryButtonComponent={MySecondaryButton}
296
- * />
297
- * ```
298
- *
299
- * ### Chart Builder API
300
- * @see https://docs.quillsql.com/components/chart-builder
301
- */
302
- export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent,
303
- // MultiSelectComponent = QuillMultiSelectComponentWithCombo,
304
- 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, CheckboxComponent = QuillChartBuilderCheckboxComponent, onClickChartError, isOpen, isHorizontalView = true, setIsOpen, dateRange, isAdmin = false, showDashboardDropdown = true, hidePivotForm = false, onAddToDashboardComplete, onDelete, onDiscardChanges, reportId, tempReport, recommendedPivots: rp = [], createdPivots: cp = [], dateColumn, buttonLabel, organizationName, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, showTableFormatOptions, initialUniqueValues, initialUniqueValuesIsLoading, pivotRecommendationsEnabled = true, hideTableView = false, hideChartView = false, hideChartType = false, hideDiscardChanges = false, filtersEnabled, onFiltersEnabledChanged,
305
- // isLoading,
306
- destinationDashboard, destinationSection, onClickChartElement, isEditingMode = false, disableSort = true, runQueryOnMount = false, }) {
307
- const [client] = useContext(ClientContext);
308
- const [theme] = useContext(ThemeContext);
309
- const [schemaData] = useContext(SchemaDataContext);
310
- const { getToken, quillFetchWithToken } = useContext(FetchContext);
311
- const { eventTracking } = useContext(EventTrackingContext);
312
- const { addReport } = useDashboardReports(destinationDashboard);
313
- const { reload: reloadDashboard } = useDashboardInternal(destinationDashboard);
314
- const { allReportsById } = useAllReports();
315
- const { dashboardConfig } = useContext(DashboardConfigContext);
316
- const { tenants, flags } = useContext(TenantContext);
317
- const report = useMemo(() => {
318
- return reportId && !tempReport ? allReportsById[reportId] : tempReport;
319
- }, [reportId]);
320
- const [windowWidth, setWindowWidth] = useState(1200);
321
- const [rows, setRows] = useState(report?.rows ?? []);
322
- const [itemQuery, setItemQuery] = useState(report?.itemQuery);
323
- const [rowCount, setRowCount] = useState(report?.rowCount ?? 0);
324
- const [maxPage, setMaxPage] = useState(0);
325
- const [isLoading, setIsLoading] = useState(false);
326
- const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
327
- const [isSubmitting, setIsSubmitting] = useState(false);
328
- const [pivotCardWidth, setPivotCardWidth] = useState(665);
329
- const [formWidth, setFormWidth] = useState(665);
330
- const inputRef = useRef(null);
331
- const selectRef = useRef(null);
332
- const processColumns = (columns) => {
333
- if (schemaData.schemaWithCustomFields) {
334
- const newProcessedColumns = columns?.map((col) => {
335
- if (col.jsType) {
336
- return col;
337
- }
338
- const newCol = { ...col };
339
- let foundColumn;
340
- schemaData.schemaWithCustomFields.forEach((table) => {
341
- if (table.columns) {
342
- const matchedColumn = table.columns.find((c) => c.field === col.field);
343
- if (matchedColumn) {
344
- foundColumn = matchedColumn;
345
- }
346
- }
347
- });
348
- if (!foundColumn) {
349
- return col;
350
- }
351
- newCol.fieldType = foundColumn.fieldType;
352
- newCol.jsType = convertFieldTypeToJSType(foundColumn.fieldType);
353
- return newCol;
354
- });
355
- return newProcessedColumns;
356
- }
357
- return columns;
358
- };
359
- const [processedColumns, setProcessedColumns] = useState(processColumns(report?.columnInternal ?? []));
360
- const [currentPage, setCurrentPage] = useState(0);
361
- const parentRef = useRef(null);
362
- const deleteRef = useRef(null);
363
- const modalPadding = 20;
364
- const deleteButtonMargin = -12;
365
- const { dashboardFilters } = useContext(DashboardFiltersContext);
366
- const specificDashboardFilters = useMemo(() => {
367
- return Object.values(dashboardFilters[report?.dashboardName ?? ''] ?? {}).map((f) => f.filter);
368
- }, [dashboardFilters, report?.dashboardName]);
369
- const validationHelper = (formData, dashboard, dateField, tables) => {
370
- const issues = validateReport(formData, dashboard, dateField || defaultDateField, tables || allTables);
371
- if (issues.length > 0) {
372
- setFilterIssues(issues);
373
- }
374
- else {
375
- setFilterIssues([]);
376
- }
377
- };
378
- useEffect(() => {
379
- const handleResize = () => {
380
- setWindowWidth(window.innerWidth);
381
- // The pivot card should be the same width as the row of inputs
382
- // above it (an input, two selects, plus the gaps between them).
383
- if (inputRef.current && selectRef.current) {
384
- const inputSize = inputRef.current?.getBoundingClientRect();
385
- const selectSize = selectRef.current?.getBoundingClientRect();
386
- const selectWidth = selectSize.width;
387
- const showDash = showDashboardDropdown && !report?.dashboardName;
388
- const spaceBetween = selectSize.left - inputSize.right;
389
- const gap = showDash ? (spaceBetween - selectWidth) / 2 : spaceBetween;
390
- const width = inputSize.width + 2 * gap + 2 * selectWidth;
391
- setPivotCardWidth(width);
392
- // Calculate the form width by adding the width of the delete button
393
- const deleteSize = deleteRef.current?.getBoundingClientRect();
394
- const deleteWidth = deleteSize?.width ?? 0;
395
- setFormWidth(width + deleteWidth);
396
- }
397
- };
398
- handleResize();
399
- window.addEventListener('resize', handleResize);
400
- return () => {
401
- window.removeEventListener('resize', handleResize);
402
- };
403
- }, [isOpen]);
404
- const [dashboardOptions, setDashboardOptions] = useState([]);
405
- const { reportFilters, loadFiltersForReport, reportFiltersDispatch, abortLoadingFilters, } = useContext(ReportFiltersContext);
406
- const { reportsDispatch } = useContext(ReportsContext);
407
- const initialFilters = useRef(reportFilters[report?.id ?? TEMP_REPORT_ID]);
408
- const [reportFiltersLoaded, setReportFiltersLoaded] = useState(!filtersEnabled);
409
- useEffect(() => {
410
- if (!reportFilters[report?.id ?? TEMP_REPORT_ID]) {
411
- loadFiltersForReport(report?.id ?? TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, report?.dashboardName);
412
- }
413
- setReportFiltersLoaded(true);
414
- return () => {
415
- abortLoadingFilters(report?.id ?? tempReport?.id ?? TEMP_REPORT_ID);
416
- if (initialFilters.current) {
417
- reportFiltersDispatch({
418
- type: 'ADD_REPORT_FILTERS',
419
- id: report?.id ?? TEMP_REPORT_ID,
420
- data: Object.values(initialFilters.current),
421
- });
422
- }
423
- else {
424
- reportFiltersDispatch({
425
- type: 'CLEAR_REPORT_FILTERS',
426
- id: report?.id ?? TEMP_REPORT_ID,
427
- });
428
- }
429
- };
430
- }, []);
431
- const currentDashboardFilters = useMemo(() => {
432
- return Object.values(reportFilters[report?.id ?? TEMP_REPORT_ID] ?? {}).map((f) => f.filter);
433
- }, [reportFilters, report?.id]);
434
- const [showFilterModal, setShowFilterModal] = useState(false);
435
- const [filterIssues, setFilterIssues] = useState([]);
436
- const [showPivotPopover, setShowPivotPopover] = useState(false);
437
- const [isEdittingPivot, setIsEdittingPivot] = useState(false);
438
- const [selectedPivotIndex, setSelectedPivotIndex] = useState(-1);
439
- const [tableName, setTableName] = useState(undefined);
440
- const [includeCustomFields, setIncludeCustomFields] = useState(report
441
- ? !!report.includeCustomFields
442
- : !!client?.featureFlags?.customFieldsEnabled);
443
- const selectedTable = schemaData.schema?.find((t) => t.displayName === tableName);
444
- const [pivotPopUpTitle, setPivotPopUpTitle] = useState('Add pivot');
445
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
446
- const [pivotError, setPivotError] = useState(undefined);
447
- const pivotData = report?.pivotRows && report?.pivotColumns
448
- ? {
449
- rows: report.pivotRows,
450
- columns: report.pivotColumns,
451
- rowCount: report.pivotRowCount ?? report.pivotRows.length,
452
- pivotQuery: report.pivotQuery ?? '',
453
- comparisonPivotQuery: report.comparisonPivotQuery,
454
- }
455
- : undefined;
456
- const columns = report?.columnInternal ?? [];
457
- const destinationDashboardName = report?.dashboardName || destinationDashboard;
458
- const query = report?.queryString;
459
- const [loadingFormData, setLoadingFormData] = useState(false);
460
- const [triggeredEditChart, setTriggeredEditChart] = useState(false);
461
- const [createdPivots, setCreatedPivots] = useState(report?.pivot ? [report.pivot] : cp);
462
- const [recommendedPivots, setRecommendedPivots] = useState(rp);
463
- const [pivotRowField, setPivotRowField] = useState(report?.pivot?.rowField);
464
- const [pivotColumnField, setPivotColumnField] = useState(report?.pivot?.columnField);
465
- const [pivotAggregations, setPivotAggregations] = useState(report?.pivot?.aggregations ?? [
466
- {
467
- valueField: report?.pivot?.valueField,
468
- valueField2: report?.pivot?.valueField2,
469
- aggregationType: report?.pivot?.aggregationType,
470
- },
471
- ]);
472
- const [pivotLimit, setPivotLimit] = useState(report?.pivot?.rowLimit);
473
- const [pivotSort, setPivotSort] = useState(report?.pivot?.sort &&
474
- report?.pivot?.sortDirection &&
475
- report?.pivot?.sortField
476
- ? {
477
- sortField: report.pivot.sortField,
478
- sortDirection: report.pivot.sortDirection,
479
- }
480
- : undefined);
481
- const baseProcessing = {
482
- page: report?.pagination ?? {
483
- page: 0,
484
- rowsPerPage: 10,
485
- rowsPerRequest: report?.chartType === 'table' ? 50 : 500,
486
- },
487
- };
488
- const [currentProcessing, setCurrentProcessing] = useState(baseProcessing);
489
- const [customTenantAccess, setCustomTenantAccess] = useState(!!Object.values(report?.flags ?? {}).length);
490
- // initial state is the fields array passed in, but can eventually be changed to be the pivot fields
491
- const [dateFieldOptions, setDateFieldOptions] = useState([]);
492
- const [allTables, setAllTables] = useState([]);
493
- const [customFieldTableRef, setCustomFieldTableRef] = useState(false);
494
- const [referencedColumns, setReferencedColumns] = useState({});
495
- const [referencedColumnsWithoutStar, setReferencedColumnsWithoutStar] = useState({});
496
- const [filterMap, setFilterMap] = useState(report?.filterMap ?? {});
497
- const canonicalFilterMap = useMemo(() => {
498
- return Object.fromEntries(Object.entries(filterMap).filter((f) => f[1].table !== undefined && f[1].field !== undefined));
499
- }, [filterMap]);
500
- const validFilter = useMemo(() => {
501
- return specificDashboardFilters.reduce((acc, filter) => {
502
- if (filter.filterType === 'date_range') {
503
- acc[filter.label] = true;
504
- return acc;
505
- }
506
- acc[filter.label] =
507
- !!allTables.find((table) => table === (filterMap[filter.label] ?? filter).table) &&
508
- !!schemaData.schemaWithCustomFields
509
- ?.find((table) => {
510
- return (table.displayName === (filterMap[filter.label] ?? filter).table);
511
- })
512
- ?.columns.find((col) => col.field === (filterMap[filter.label] ?? filter).field);
513
- return acc;
514
- }, {});
515
- }, [specificDashboardFilters, filterMap, allTables]);
516
- const [formFlags, setFormFlags] = useState(report?.flags
517
- ? Object.fromEntries(Object.entries(report.flags).map(([key, value]) => {
518
- if (value === ALL_TENANTS) {
519
- const tenantType = client?.allTenantTypes?.find((t) => t.tenantField === key);
520
- return [
521
- key,
522
- tenantType?.tenantField === SINGLE_TENANT
523
- ? (tenantType?.flags ?? [])
524
- : (tenantType?.tenantIds?.map((id) => id.flag) ?? []),
525
- ];
526
- }
527
- else {
528
- return [key, value];
529
- }
530
- }))
531
- : undefined);
532
- const [defaultDateField, setDefaultDateField] = useState({
533
- table: dateFieldOptions[0]?.name || '',
534
- field: dateFieldOptions[0]?.columns[0]?.field || '',
535
- });
536
- const firstNumberColumn = report?.columnInternal?.find((col) => numberFormatOptions.includes(col.format));
537
- const formEmptyState = {
538
- name: report?.name ?? '',
539
- dashboardName: dashboardOptions[0]?.label ?? '',
540
- columns: report?.columns?.map((col) => {
541
- return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
542
- }) ?? [],
543
- xAxisField: report?.columns?.[0]?.field ?? '',
544
- xAxisFormat: report?.columns?.[0]?.format ?? 'string',
545
- yAxisFields: [
546
- {
547
- field: firstNumberColumn?.field ?? report?.columns?.[0]?.field ?? '',
548
- label: '',
549
- format: firstNumberColumn?.format ?? report?.columns?.[0]?.format ?? 'string',
550
- },
551
- ],
552
- xAxisLabel: '',
553
- chartType: firstNumberColumn ? 'line' : 'table',
554
- pivot: null,
555
- dateField: defaultDateField,
556
- template: true,
557
- referenceLines: [],
558
- };
559
- const updateDashboardFilters = async (dashboardName) => {
560
- if (dashboardConfig && dashboardConfig[dashboardName]) {
561
- return dashboardConfig[dashboardName];
562
- }
563
- if (!client) {
564
- return;
565
- }
566
- const { data: responseData } = await quillFetchWithToken({
567
- client,
568
- task: 'dashboard',
569
- metadata: {
570
- name: dashboardName,
571
- clientId: client.clientId,
572
- databaseType: client.databaseType,
573
- useNewNodeSql: true,
574
- tenants,
575
- },
576
- });
577
- if (responseData) {
578
- return {
579
- ...responseData,
580
- createdAt: responseData.createdAt && new Date(responseData.createdAt),
581
- dateFilter: responseData.dateFilter
582
- ? {
583
- ...responseData.dateFilter,
584
- presetOptions: responseData.dateFilter.presetOptions?.map((preset) => ({
585
- ...preset,
586
- loopStart: preset.loopStart
587
- ? new Date(preset.loopStart)
588
- : undefined,
589
- loopEnd: preset.loopEnd
590
- ? new Date(preset.loopEnd)
591
- : undefined,
592
- })),
593
- defaultPresetRanges: responseData.dateFilter.defaultPresetRanges?.map((preset) => ({
594
- ...preset,
595
- loopStart: preset.loopStart
596
- ? new Date(preset.loopStart)
597
- : undefined,
598
- loopEnd: preset.loopEnd
599
- ? new Date(preset.loopEnd)
600
- : undefined,
601
- })),
602
- }
603
- : undefined,
604
- };
605
- }
606
- };
607
- const pivotFormData = (pivot, reportChartType) => {
608
- const yAxisField = pivot.columnField ?? disambiguatedValueField(pivot) ?? '';
609
- const yAxisLabel = report?.yAxisFields && report?.yAxisFields?.length > 0
610
- ? (report.yAxisFields[0]?.label ?? '')
611
- : (disambiguatedValueField(pivot) ?? '');
612
- // date labels for pivots should be treated like strings since they are
613
- const yAxisIsDate = pivot.columnField
614
- ? isDateField(pivot.columnFieldType ?? '')
615
- : false;
616
- const chartType = reportChartType ??
617
- formData?.chartType ??
618
- (pivot.rowField ? 'column' : 'metric');
619
- const rowColumn = (selectedPivotTable?.columns ?? columns).find((col) => col.field === pivot.rowField);
620
- const xAxisField = pivot.rowField &&
621
- !(['metric', 'gauge'].includes(chartType) &&
622
- !NUMBER_FORMAT_TYPES.includes(rowColumn?.format ?? ''))
623
- ? pivot.rowField
624
- : disambiguatedValueField(pivot);
625
- const result = {
626
- pivot,
627
- chartType: chartType,
628
- xAxisField,
629
- xAxisFormat: chartType === 'gauge'
630
- ? 'percent'
631
- : chartType === 'metric'
632
- ? 'whole_number'
633
- : isDateType(pivot.rowFieldType ?? '')
634
- ? 'string'
635
- : isNumberType(pivot.rowFieldType ?? '')
636
- ? 'whole_number'
637
- : isNumberType(disambiguatedValueField(pivot) ?? '')
638
- ? 'whole_number'
639
- : 'string',
640
- xAxisLabel: report?.xAxisLabel || pivot.rowField,
641
- yAxisFields: [
642
- {
643
- field: yAxisField,
644
- label: yAxisLabel,
645
- format: yAxisIsDate
646
- ? 'string'
647
- : report?.yAxisFields && report?.yAxisFields?.length > 0
648
- ? (report?.yAxisFields[0]?.format ?? 'whole_number')
649
- : (report?.columns.find((col) => col.field === disambiguatedValueField(pivot))?.format ?? 'whole_number'),
650
- },
651
- ],
652
- };
653
- return result;
654
- };
655
- const getReferencedTables = async (client, sqlQuery, dbTables, skipStar) => {
656
- const { data: resp } = await quillFetchWithToken({
657
- client,
658
- task: 'astify',
659
- metadata: {
660
- query: sqlQuery,
661
- clientId: client.clientId,
662
- useNewNodeSql: true,
663
- },
664
- });
665
- if (resp.success === false) {
666
- return getTablesHelper(getSelectFromAST({}), dbTables, skipStar);
667
- }
668
- return getTablesHelper(getSelectFromAST(resp.ast), dbTables, skipStar);
669
- };
670
- const getCurrentSection = () => dashboardConfig[destinationDashboard]?.config.sectionOrder?.find((section) => section.reportOrder?.includes(report?.id ?? ''))?.section ?? '';
671
- const formFormDataFromReport = (report, section) => {
672
- let pivotData = {};
673
- let dateField = defaultDateField;
674
- if (report?.pivot && report.pivot.rowField && !report.yAxisFields?.length) {
675
- pivotData = pivotFormData(report.pivot, report.chartType);
676
- }
677
- if (report) {
678
- dateField = report.dateField || defaultDateField;
679
- }
680
- const chartBuilderData = {
681
- ...formEmptyState,
682
- ...report,
683
- ...pivotData,
684
- dateField: dateField,
685
- referenceLines: report?.referenceLines
686
- ? report.referenceLines?.map(({ label, query }) => {
687
- if (typeof query === 'string') {
688
- return { label, y1: undefined, y2: undefined };
689
- }
690
- return {
691
- label,
692
- y1: query[0],
693
- y2: query[1],
694
- };
695
- })
696
- : [],
697
- section,
698
- };
699
- const chartType = report?.chartType ?? formEmptyState.chartType;
700
- const chartTypeOptions = getChartTypeOptions(chartBuilderData, dashboardConfig[report?.dashboardName || destinationDashboard || '']);
701
- if (!chartTypeOptions.find((option) => option.value === chartType)) {
702
- chartBuilderData.chartType = chartTypeOptions[0]?.value ?? 'table';
703
- }
704
- return chartBuilderData;
705
- };
706
- const [formData, setFormData] = useState(formFormDataFromReport(report, destinationSection ?? getCurrentSection()));
707
- const reportCustomFields = useMemo(() => {
708
- return (report?.columnsWithCustomFields?.filter((col) => !report?.columns?.some((c) => col.field === c.field)) ?? []);
709
- }, [report?.columnsWithCustomFields, report?.columns]);
710
- const referenceLineQueryResults = useMemo(() => {
711
- return formData?.referenceLines?.map((line) => {
712
- if (line.label === REFERENCE_LINE) {
713
- return [Number(line.y1) || 0, Number(line.y2) || 0];
714
- }
715
- // line.label is a field
716
- // Get the first and last row of the field
717
- const field = formData.columns.find((col) => col.field === line.label);
718
- if (!field) {
719
- return [0, 0];
720
- }
721
- // return [Number(rows[0]?.[field.field]) || 0, Number(rows[rows.length - 1]?.[field.field]) || 0];
722
- return (pivotData?.rows ? pivotData.rows : rows).map((row) => Number(row[field.field]) || 0);
723
- });
724
- }, [formData?.referenceLines]);
725
- const currentDashboard = useMemo(() => {
726
- return dashboardConfig[formData.dashboardName ?? report?.dashboardName ?? '']?.config;
727
- }, [dashboardConfig, formData.dashboardName, report?.dashboardName]);
728
- const currentDashboardTenants = useMemo(() => {
729
- return (currentDashboard?.tenantKeys?.map((tenantKey) => client?.allTenantTypes?.find((t) => t.tenantField === tenantKey)) ?? []);
730
- }, [client?.allTenantTypes, currentDashboard?.tenantKeys]);
731
- const dashboardOwner = currentDashboardTenants?.[0];
732
- const currentTenantAsFormFlags = useMemo(() => {
733
- if (!tenants || !tenants.length) {
734
- return undefined;
735
- }
736
- const tenantField = typeof tenants[0] !== 'object'
737
- ? dashboardOwner?.name
738
- : tenants[0]?.tenantField;
739
- if (!tenantField) {
740
- return undefined;
741
- }
742
- const tenantIds = typeof tenants[0] !== 'object' ? tenants : tenants[0]?.tenantIds;
743
- return { [tenantField]: tenantIds };
744
- }, [tenants, dashboardOwner]);
745
- const invalidColumns = useMemo(() => {
746
- if (!rows || !rows.length) {
747
- return [];
748
- }
749
- if (report?.pivot || pivotData) {
750
- return [];
751
- }
752
- const columnsObservedInRows = rows[0] ? Object.keys(rows[0]) : [];
753
- return columns.filter((col) => !columnsObservedInRows.includes(col.field));
754
- }, [rows]);
755
- const [chartTypes, setChartTypes] = useState((() => {
756
- const data = formFormDataFromReport(report, destinationSection ?? getCurrentSection());
757
- return getChartTypeOptions(data, dashboardConfig[data.dashboardName || '']);
758
- })());
759
- const reportContainsCustomFields = useMemo(() => {
760
- // Check whether report query contains custom fields
761
- const customFieldsMap = schemaData.customFields;
762
- const reportQueryContainsCustomFields = allTables.some((table) => {
763
- const tableColumns = referencedColumnsWithoutStar[table] ?? [];
764
- const customFieldColumns = customFieldsMap?.[table] ?? [];
765
- return tableColumns.some((column) => customFieldColumns.some((field) => field.field === column));
766
- });
767
- return reportQueryContainsCustomFields;
768
- }, [allTables, referencedColumnsWithoutStar]);
769
- const chartBuilderFormDataContainsCustomFields = useMemo(() => {
770
- const customFields = allTables
771
- .map((table) => schemaData.customFields?.[table] ?? [])
772
- .flat();
773
- const customFieldsMap = schemaData.customFields;
774
- const pivotContainsCustomFields = customFields.some((field) => field.field === formData.pivot?.columnField ||
775
- field.field === formData.pivot?.rowField ||
776
- field.field === formData.pivot?.valueField);
777
- const xAxisFieldContainsCustomFields = customFields.some((field) => field.field === formData.xAxisField);
778
- const yAxisFieldsContainsCustomFields = formData.yAxisFields.some((yAxisField) => {
779
- return customFields.some((field) => field.field === yAxisField.field);
780
- });
781
- const dateFieldContainsCustomFields = customFields.some((field) => field.field === formData.dateField?.field);
782
- const canonicalFilterMapContainsCustomFields = Object.values(canonicalFilterMap).some((filter) => {
783
- return customFieldsMap?.[filter.table || '']?.some((field) => field.field === filter.field);
784
- });
785
- return (pivotContainsCustomFields ||
786
- xAxisFieldContainsCustomFields ||
787
- yAxisFieldsContainsCustomFields ||
788
- dateFieldContainsCustomFields ||
789
- canonicalFilterMapContainsCustomFields);
790
- }, [
791
- allTables,
792
- formData.pivot,
793
- formData.xAxisField,
794
- formData.yAxisFields,
795
- formData.dateField,
796
- canonicalFilterMap,
797
- ]);
798
- const customFieldsInTabularColumns = useMemo(() => {
799
- const customFields = allTables
800
- .map((table) => schemaData.customFields?.[table] ?? [])
801
- .flat();
802
- return formData.columns.some((col) => {
803
- return customFields.some((field) => field.field === col.field);
804
- });
805
- }, [allTables, formData.columns]);
806
- const containsCustomFields = useMemo(() => {
807
- return (reportContainsCustomFields ||
808
- customFieldsInTabularColumns ||
809
- chartBuilderFormDataContainsCustomFields);
810
- }, [
811
- reportContainsCustomFields,
812
- customFieldsInTabularColumns,
813
- chartBuilderFormDataContainsCustomFields,
814
- ]);
815
- useEffect(() => {
816
- if (!loadingFormData && triggeredEditChart) {
817
- editChart();
818
- }
819
- }, [loadingFormData]);
820
- useEffect(() => {
821
- async function getFormData() {
822
- if (!client) {
823
- return;
824
- }
825
- setLoadingFormData(true);
826
- const curFormData = formData;
827
- let dashNames = Object.keys(dashboardConfig);
828
- if (dashNames.length === 0) {
829
- const { data: resp } = await quillFetchWithToken({
830
- client,
831
- task: 'dashnames',
832
- metadata: {
833
- clientId: client.clientId,
834
- },
835
- });
836
- dashNames = resp.dashboardNames;
837
- }
838
- let dashboardOptions = dashNames
839
- .filter((elem) => elem !== null)
840
- .map((key) => ({ label: key, value: key }));
841
- if (!dashboardOptions.length) {
842
- dashboardOptions = [
843
- { label: 'New - Dashboard', value: 'New - Dashboard' },
844
- ];
845
- }
846
- if (destinationDashboardName) {
847
- dashboardOptions = [
848
- { label: destinationDashboardName, value: destinationDashboardName },
849
- ];
850
- }
851
- let dashboardName = report?.dashboardName ?? dashboardOptions[0]?.label ?? '';
852
- if (destinationDashboardName) {
853
- dashboardName = destinationDashboardName;
854
- }
855
- const curDashboard = await updateDashboardFilters(dashboardName);
856
- setDashboardOptions(dashboardOptions);
857
- curFormData.dashboardName = dashboardName;
858
- const curSchemaData = schemaData.schemaWithCustomFields;
859
- if (!query) {
860
- setLoadingFormData(false);
861
- return;
862
- }
863
- const result = await getReferencedTables(client, query, curSchemaData);
864
- const referencedTablesWithoutStar = await getReferencedTables(client, query, curSchemaData, true);
865
- setDateFieldOptions(result.dateFields);
866
- if (result.dateFields[0] && result.dateFields[0].columns[0]) {
867
- setDefaultDateField({
868
- table: result.dateFields[0].name,
869
- field: result.dateFields[0].columns[0].field,
870
- });
871
- }
872
- // check if the referenced table is a table with custom field info.. If so block template settings
873
- const tableNames = result.referencedTablesAndColumns.map((table) => table.name);
874
- setAllTables(tableNames);
875
- let customFieldUsage = false;
876
- for (const table of tableNames) {
877
- const tableInfo = curSchemaData.find((elem) => elem.name === table);
878
- if (tableInfo?.customFieldInfo) {
879
- customFieldUsage = true;
880
- break;
881
- }
882
- }
883
- setCustomFieldTableRef(customFieldUsage);
884
- const referencedColumns = result.referencedTablesAndColumns.reduce((acc, table) => {
885
- acc[table.name] = table.columns.map((col) => col.field);
886
- return acc;
887
- }, {});
888
- const referencedColumnsWithoutStar = referencedTablesWithoutStar.referencedTablesAndColumns.reduce((acc, table) => {
889
- acc[table.name] = table.columns.map((col) => col.field);
890
- return acc;
891
- }, {});
892
- setReferencedColumnsWithoutStar(referencedColumnsWithoutStar);
893
- setReferencedColumns(referencedColumns);
894
- setTableName(result.dateFields[0]?.name);
895
- const dateField = {
896
- table: result.dateFields[0]?.name || '',
897
- field: dateColumn || result.dateFields[0]?.columns[0]?.field || '',
898
- };
899
- let isTemplate = curFormData.template;
900
- if (customFieldUsage) {
901
- isTemplate = false;
902
- }
903
- curFormData.dashboardName =
904
- report && report.dashboardName
905
- ? report?.dashboardName
906
- : dashboardOptions[0]?.label;
907
- curFormData.template = isTemplate;
908
- if (!curFormData.dateField) {
909
- curFormData.dateField = { field: '', table: '' };
910
- }
911
- if (!curFormData.dateField.field || !curFormData.dateField.table) {
912
- if (dateField && dateField.field) {
913
- curFormData.dateField = dateField;
914
- }
915
- }
916
- setFormData(curFormData);
917
- validationHelper(curFormData, curDashboard, curFormData.dateField ?? dateField, tableNames);
918
- setLoadingFormData(false);
919
- }
920
- getFormData();
921
- }, []);
922
- const ranMountQuery = useRef(false);
923
- useEffect(() => {
924
- if (runQueryOnMount &&
925
- reportFiltersLoaded &&
926
- filtersEnabled &&
927
- !ranMountQuery.current) {
928
- ranMountQuery.current = true;
929
- handleRunQuery(baseProcessing, currentDashboardFilters);
930
- }
931
- }, [runQueryOnMount, reportFiltersLoaded, filtersEnabled]);
932
- const allTenantMap = useMemo(() => {
933
- return (client?.allTenantTypes?.reduce((acc, tenantType) => {
934
- if (tenantType.scope === 'database') {
935
- acc[tenantType.tenantField] =
936
- tenantType.flags?.map((t) => ({
937
- label: t.toString(),
938
- value: t.toString(),
939
- })) ?? [];
940
- }
941
- else {
942
- acc[tenantType.tenantField] =
943
- tenantType.tenantIds?.map((t) => ({
944
- label: t.label.toString(),
945
- value: t.flag.toString(),
946
- })) ?? [];
947
- }
948
- return acc;
949
- }, {}) ?? {});
950
- }, [client?.allTenantTypes]);
951
- const [selectedPivotTable, setSelectedPivotTable] = useState(pivotData);
952
- const pivotCardTable = useMemo(() => {
953
- return {
954
- pivot: formData.pivot,
955
- rows: selectedPivotTable?.rows ?? [],
956
- columns: selectedPivotTable?.columns ?? [],
957
- };
958
- }, [selectedPivotTable, formData.pivot]);
959
- const chartData = useMemo(() => {
960
- const data = createReportFromForm(formData, report ? { ...report, rowCount } : tempReport, eventTracking, selectedPivotTable, rows, currentDashboardFilters, referenceLineQueryResults);
961
- return {
962
- ...data,
963
- filterMap: canonicalFilterMap,
964
- };
965
- }, [
966
- formData,
967
- selectedPivotTable,
968
- report,
969
- rows,
970
- rowCount,
971
- currentDashboardFilters,
972
- ]);
973
- const xAxisFormatOptions = useMemo(() => {
974
- return chartData?.chartType === 'gauge'
975
- ? [
976
- { value: 'whole_number', label: 'whole number' },
977
- { value: 'two_decimal_places', label: 'two decimal places' },
978
- { value: 'percent', label: 'percentage' },
979
- ]
980
- : ALL_FORMAT_OPTIONS;
981
- }, [chartData?.chartType]);
982
- const fetchPivotData = async (pivot, tableInfo, uniqueValues, overrideFilters) => {
983
- const dashboardFilters = filtersEnabled
984
- ? (overrideFilters ?? currentDashboardFilters)
985
- : undefined;
986
- if (pivot) {
987
- let dateBucket = undefined;
988
- let dateFilter = undefined;
989
- if (filtersEnabled) {
990
- dateFilter = dashboardFilters?.find((f) => f.filterType === 'date_range');
991
- dateBucket =
992
- dateFilter?.startDate && dateFilter?.endDate
993
- ? getDateBucketFromRange({
994
- start: dateFilter?.startDate,
995
- end: dateFilter?.endDate,
996
- })
997
- : undefined;
998
- }
999
- try {
1000
- const pivotTable = await generatePivotTable({
1001
- pivot,
1002
- dateBucket,
1003
- dateFilter,
1004
- report: report
1005
- ? { ...report, ...(tableInfo ?? { itemQuery }) }
1006
- : undefined,
1007
- client,
1008
- uniqueValues,
1009
- dashboardName: destinationDashboardName,
1010
- tenants,
1011
- additionalProcessing: baseProcessing,
1012
- getToken,
1013
- eventTracking,
1014
- });
1015
- setSelectedPivotTable(pivotTable);
1016
- return pivotTable;
1017
- }
1018
- catch (e) {
1019
- console.log('error', e);
1020
- eventTracking?.logError?.({
1021
- type: 'bug', // TODO: determine type
1022
- severity: 'high',
1023
- message: 'Error fetching pivot',
1024
- errorMessage: e.message,
1025
- errorStack: e.stack,
1026
- errorData: {
1027
- caller: 'ChartBuilder',
1028
- function: 'fetchPivotData',
1029
- },
1030
- });
1031
- if (e instanceof Error) {
1032
- setPivotError(e.message);
1033
- }
1034
- }
1035
- }
1036
- else {
1037
- setSelectedPivotTable(undefined);
1038
- }
1039
- };
1040
- const formattedRows = useMemo(() => {
1041
- if (selectedPivotTable &&
1042
- selectedPivotTable.columns &&
1043
- formData.chartType === 'table') {
1044
- const columns = selectedPivotTable.columns;
1045
- columns.forEach((col, index) => {
1046
- // ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
1047
- if (['min', 'max'].includes(formData.pivot?.aggregations?.[0]?.aggregationType ?? '') &&
1048
- index !== 0) {
1049
- col.format = 'two_decimal_places';
1050
- }
1051
- });
1052
- return selectedPivotTable.rows.map((row) => {
1053
- return columns.reduce((formattedRow, column) => {
1054
- // Apply the format function to each field in the row
1055
- const formattedValue = quillFormat({
1056
- value: row[column.field],
1057
- format: column.format,
1058
- });
1059
- formattedRow[column.field] = formattedValue;
1060
- return formattedRow;
1061
- }, {});
1062
- });
1063
- }
1064
- else {
1065
- if (!rows)
1066
- return [];
1067
- return rows.map((row) => {
1068
- const columns = formData.includeCustomFields && !containsCustomFields
1069
- ? formData.columns.concat(reportCustomFields)
1070
- : formData.columns;
1071
- return columns.reduce((formattedRow, column) => {
1072
- // Apply the format function to each field in the row
1073
- const formattedValue = column.inferFormat
1074
- ? quillAutoFormat(row[column.field])
1075
- : quillFormat({
1076
- value: row[column.field],
1077
- format: column.format,
1078
- });
1079
- formattedRow[column.field] = formattedValue;
1080
- return formattedRow;
1081
- }, {});
1082
- });
1083
- }
1084
- }, [
1085
- selectedPivotTable,
1086
- formData.columns,
1087
- formData.chartType,
1088
- rows,
1089
- formData.pivot,
1090
- ]);
1091
- const fetchRowCount = async (processing, overrideFilters) => {
1092
- if (!client || !query) {
1093
- return;
1094
- }
1095
- setRowCountIsLoading(true);
1096
- const tableInfo = await fetchResultsByQuery({
1097
- query,
1098
- client,
1099
- getToken,
1100
- eventTracking,
1101
- tenants,
1102
- processing,
1103
- customFields: schemaData.customFields,
1104
- filters: filtersEnabled ? overrideFilters : undefined,
1105
- dateField: filtersEnabled
1106
- ? (report?.dateField ?? formData.dateField)
1107
- : undefined,
1108
- rowsOnly: false,
1109
- rowCountOnly: true,
1110
- filterMap: canonicalFilterMap,
1111
- dashboardName: destinationDashboardName,
1112
- });
1113
- if (tableInfo.rowCount !== undefined) {
1114
- setRowCount(tableInfo.rowCount);
1115
- }
1116
- setRowCountIsLoading(false);
1117
- };
1118
- const onDashboardFilterChange = (label, value) => {
1119
- const updatedFilters = currentDashboardFilters.map((filter) => {
1120
- if (filter.label === label) {
1121
- return {
1122
- ...filter,
1123
- ...value,
1124
- };
1125
- }
1126
- return filter;
1127
- });
1128
- loadFiltersForReport(report?.id ?? TEMP_REPORT_ID, 'ChartBuilder', updatedFilters, label, undefined, report?.dashboardName).then(() => {
1129
- setCurrentPage(0);
1130
- setMaxPage(0);
1131
- handleRunQuery(baseProcessing, updatedFilters);
1132
- });
1133
- };
1134
- const filtersEnabledRef = useRef(filtersEnabled);
1135
- useEffect(() => {
1136
- // Previous strategy of using mounted.current was not working in StrictMode
1137
- if (filtersEnabledRef.current !== filtersEnabled) {
1138
- filtersEnabledRef.current = filtersEnabled;
1139
- setCurrentPage(0);
1140
- setMaxPage(0);
1141
- handleRunQuery(baseProcessing, currentDashboardFilters);
1142
- }
1143
- }, [filtersEnabled]);
1144
- const handleRunQuery = async (processing, overrideFilters) => {
1145
- if (!client || !query) {
1146
- return;
1147
- }
1148
- try {
1149
- setIsLoading(true);
1150
- const tableInfo = await fetchResultsByQuery({
1151
- query,
1152
- client,
1153
- tenants,
1154
- processing,
1155
- customFields: schemaData.customFields,
1156
- filters: filtersEnabled ? overrideFilters : undefined,
1157
- dateField: filtersEnabled
1158
- ? (report?.dateField ?? formData.dateField)
1159
- : undefined,
1160
- rowsOnly: true,
1161
- rowCountOnly: false,
1162
- filterMap: canonicalFilterMap,
1163
- dashboardName: destinationDashboardName,
1164
- getToken,
1165
- eventTracking,
1166
- });
1167
- setCurrentProcessing(processing);
1168
- setRows(tableInfo.rows);
1169
- setProcessedColumns(processColumns(tableInfo.columns));
1170
- setItemQuery(tableInfo.itemQuery);
1171
- fetchRowCount(processing, overrideFilters);
1172
- if (formData.pivot) {
1173
- try {
1174
- const uniqueValues = await getUniqueValuesByQuery({
1175
- columns: tableInfo.columns.filter((column) => column.field === formData.pivot?.columnField),
1176
- query: report.queryString,
1177
- client,
1178
- getToken,
1179
- tenants,
1180
- customFields: schemaData.customFields ?? {},
1181
- filters: overrideFilters,
1182
- dashboardName: destinationDashboardName ?? '',
1183
- eventTracking,
1184
- });
1185
- fetchPivotData(formData.pivot, tableInfo, uniqueValues ?? {}, overrideFilters);
1186
- }
1187
- catch (e) {
1188
- console.log('error fetching pivot', e);
1189
- eventTracking?.logError?.({
1190
- type: 'bug', // TODO: determine type
1191
- severity: 'high',
1192
- message: 'Error running query with pivot',
1193
- errorMessage: e.message,
1194
- errorStack: e.stack,
1195
- errorData: {
1196
- caller: 'ChartBuilder',
1197
- function: 'handleRunQuery',
1198
- },
1199
- });
1200
- setPivotError(e.message);
1201
- }
1202
- }
1203
- setTimeout(() => {
1204
- setIsLoading(false);
1205
- }, 1000); // timeout to avoid a flash
1206
- }
1207
- catch (e) {
1208
- eventTracking?.logError?.({
1209
- type: 'bug', // TODO: determine type
1210
- severity: 'high',
1211
- message: 'Error running query',
1212
- errorMessage: e.message,
1213
- errorStack: e.stack,
1214
- errorData: {
1215
- caller: 'ChartBuilder',
1216
- function: 'handleRunQuery',
1217
- },
1218
- });
1219
- console.log(e);
1220
- }
1221
- };
1222
- const onPageChange = (page, isPivotTable) => {
1223
- // only fetch if report is valid, else use query task
1224
- if (currentProcessing.page &&
1225
- shouldFetchMore(currentProcessing.page, page, maxPage)) {
1226
- const newPagination = {
1227
- ...currentProcessing.page,
1228
- page,
1229
- };
1230
- const updatedProcessing = {
1231
- ...currentProcessing,
1232
- page: newPagination,
1233
- };
1234
- setCurrentProcessing(updatedProcessing);
1235
- updateTableRows(updatedProcessing, false, isPivotTable);
1236
- }
1237
- if (page > maxPage) {
1238
- setMaxPage(page);
1239
- }
1240
- };
1241
- const onSortChange = (sort, isPivotTable) => {
1242
- // if (shouldSortInMemory(baseProcessing.page, rowCount)) {
1243
- // return;
1244
- // }
1245
- const updatedProcessing = { ...baseProcessing, sort };
1246
- updateTableRows(updatedProcessing, true, isPivotTable);
1247
- setCurrentProcessing(updatedProcessing);
1248
- setCurrentPage(0);
1249
- setMaxPage(0);
1250
- };
1251
- const updateTableRows = async (processing, resetRows = false, isPivotTable = false) => {
1252
- if (!client) {
1253
- return;
1254
- }
1255
- if (!isLoading && report && query) {
1256
- setIsLoading(true);
1257
- try {
1258
- const updatedProcessing = { ...currentProcessing, ...processing };
1259
- const paginatedRows = await fetchResultsByQuery({
1260
- query: isPivotTable && report.pivotQuery ? report.pivotQuery : query,
1261
- comparisonQuery: isPivotTable && report.comparisonPivotQuery
1262
- ? report.comparisonPivotQuery
1263
- : undefined,
1264
- client,
1265
- getToken,
1266
- tenants,
1267
- processing: updatedProcessing,
1268
- customFields: schemaData.customFields,
1269
- filters: filtersEnabled ? currentDashboardFilters : undefined,
1270
- dateField: filtersEnabled
1271
- ? (report?.dateField ?? formData.dateField)
1272
- : undefined,
1273
- rowsOnly: false,
1274
- rowCountOnly: false,
1275
- filterMap: canonicalFilterMap,
1276
- dashboardName: destinationDashboardName,
1277
- pivot: isPivotTable ? report.pivot : undefined,
1278
- getPivotRowCount: false,
1279
- eventTracking,
1280
- });
1281
- if (paginatedRows.error) {
1282
- throw new Error('Error fetching chart');
1283
- }
1284
- const prevRows = isPivotTable && selectedPivotTable ? selectedPivotTable.rows : rows;
1285
- let updatedRows = [...prevRows, ...paginatedRows.rows];
1286
- if (resetRows) {
1287
- updatedRows = paginatedRows.rows;
1288
- }
1289
- if (isPivotTable && selectedPivotTable) {
1290
- setSelectedPivotTable({ ...selectedPivotTable, rows: updatedRows });
1291
- }
1292
- else {
1293
- setRows(updatedRows);
1294
- }
1295
- setCurrentProcessing(updatedProcessing);
1296
- }
1297
- catch (e) {
1298
- console.log(e);
1299
- eventTracking?.logError?.({
1300
- type: 'bug', // TODO: determine type
1301
- severity: 'high',
1302
- message: 'Error updating table rows',
1303
- errorMessage: e.message,
1304
- errorStack: e.stack,
1305
- errorData: {
1306
- caller: 'ChartBuilder',
1307
- function: 'updateTableRows',
1308
- },
1309
- });
1310
- }
1311
- finally {
1312
- setTimeout(() => {
1313
- setIsLoading(false);
1314
- }, 500);
1315
- }
1316
- }
1317
- };
1318
- const handleChange = async (value, fieldName, index) => {
1319
- let updatedForm = { ...formData };
1320
- try {
1321
- if (index !== undefined) {
1322
- // For dynamic array fields
1323
- const [field, subfield] = fieldName.split('.');
1324
- if (field === 'pivot' && !!subfield) {
1325
- if (!selectedPivotTable) {
1326
- return;
1327
- }
1328
- let newLabel = undefined;
1329
- if (subfield === 'field') {
1330
- newLabel = snakeAndCamelCaseToTitleCase(value);
1331
- }
1332
- const newColumns = selectedPivotTable.columns.map((col, i) => i === index
1333
- ? {
1334
- ...col,
1335
- label: newLabel ? newLabel : col.label,
1336
- [subfield]: value,
1337
- }
1338
- : col);
1339
- setSelectedPivotTable({
1340
- ...selectedPivotTable,
1341
- columns: newColumns,
1342
- });
1343
- }
1344
- else {
1345
- let newLabel = undefined;
1346
- if (field === 'columns' && subfield === 'field') {
1347
- if (!formData['columns'][index]?.label) {
1348
- newLabel = snakeAndCamelCaseToTitleCase(value);
1349
- }
1350
- }
1351
- // @ts-ignore
1352
- const updatedArray = formData[field].map((item, i) => i === index
1353
- ? {
1354
- ...item,
1355
- label: newLabel ? newLabel : item.label,
1356
- [subfield]: value,
1357
- }
1358
- : item);
1359
- updatedForm = { ...formData, [field]: updatedArray };
1360
- setFormData(updatedForm);
1361
- setChartTypes(getChartTypeOptions(updatedForm, dashboardConfig[updatedForm.dashboardName ?? '']));
1362
- }
1363
- }
1364
- else if (fieldName.includes('.')) {
1365
- // For nested fields
1366
- const [field, subfield] = fieldName.split('.');
1367
- if (field === 'dateField' &&
1368
- subfield === 'table' &&
1369
- !formData.dateField?.field) {
1370
- const field = schemaData.schemaWithCustomFields?.find((elem) => elem.name === value)?.columns?.[0]?.field;
1371
- updatedForm.dateField = {
1372
- // @ts-ignore
1373
- ...updatedForm[field],
1374
- [subfield]: value,
1375
- field: field,
1376
- };
1377
- }
1378
- updatedForm = {
1379
- ...updatedForm,
1380
- // @ts-ignore
1381
- [field]: { ...updatedForm[field], [subfield]: value },
1382
- };
1383
- }
1384
- else {
1385
- // For simple fields
1386
- updatedForm = { ...updatedForm, [fieldName]: value };
1387
- }
1388
- if (fieldName === 'chartType') {
1389
- if (value === 'metric') {
1390
- updatedForm.xAxisFormat = 'whole_number';
1391
- const currentXAxisColumn = (selectedPivotTable?.columns ?? columns).find((c) => c.field === updatedForm.xAxisField);
1392
- if (!NUMBER_FORMAT_TYPES.includes(currentXAxisColumn?.format ?? '')) {
1393
- updatedForm.xAxisField =
1394
- (selectedPivotTable?.columns ?? columns).find((c) => NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1395
- }
1396
- }
1397
- else if (value === 'gauge') {
1398
- updatedForm.xAxisFormat = 'percent';
1399
- const currentXAxisColumn = (selectedPivotTable?.columns ?? columns).find((c) => c.field === updatedForm.xAxisField);
1400
- if (!NUMBER_FORMAT_TYPES.includes(currentXAxisColumn?.format ?? '')) {
1401
- updatedForm.xAxisField =
1402
- (selectedPivotTable?.columns ?? columns).find((c) => NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1403
- }
1404
- }
1405
- }
1406
- let dashboardName = updatedForm.dashboardName;
1407
- if (fieldName === 'dashboardName') {
1408
- dashboardName = value;
1409
- }
1410
- validationHelper(updatedForm, dashboardConfig[dashboardName || '']);
1411
- setChartTypes(getChartTypeOptions(updatedForm, dashboardConfig[dashboardName || '']));
1412
- }
1413
- catch (e) {
1414
- updatedForm = { ...updatedForm, [fieldName]: value };
1415
- eventTracking?.logError?.({
1416
- type: 'bug', // TODO: determine type
1417
- severity: 'high',
1418
- message: 'Error changing form',
1419
- errorMessage: e.message,
1420
- errorStack: e.stack,
1421
- errorData: {
1422
- caller: 'ChartBuilder',
1423
- function: 'handleChange',
1424
- },
1425
- });
1426
- }
1427
- setFormData(updatedForm);
1428
- };
1429
- const handleAddPivot = async (pivot, uniqueValues, pivotData) => {
1430
- const newPivotFormData = pivotFormData(pivot);
1431
- // Only keep the old chart type if the shapes of the pivots are the same
1432
- // since the valid chart types for some pivots might have changed (eg. going
1433
- // from a 1D pivot to a 2D pivot would make bar lists not an option).
1434
- // They don't have to have the same value, just same 'truthiness'.
1435
- const isPivotSameShape = Boolean(formData.pivot?.rowField) === Boolean(pivot.rowField) &&
1436
- Boolean(formData.pivot?.columnField) === Boolean(pivot.columnField);
1437
- const isNewChartType = formData.chartType !== newPivotFormData.chartType;
1438
- const keepOldChartType = isNewChartType && isPivotSameShape;
1439
- if (pivotData) {
1440
- setSelectedPivotTable({
1441
- rows: pivotData.rows,
1442
- columns: pivotData.columns,
1443
- rowCount: pivotData.rowCount,
1444
- pivotQuery: pivotData.pivotQuery,
1445
- comparisonPivotQuery: pivotData.comparisonPivotQuery,
1446
- });
1447
- }
1448
- else {
1449
- pivotData = await fetchPivotData(pivot, undefined, uniqueValues);
1450
- }
1451
- // NOTE: we are setting the date field to the rowField if it is a date
1452
- // This method is *potentially* flawed because it chooses the first matching field it finds
1453
- // which may not be robust to joins, aliases, disambiguations, etc.
1454
- // unfortunately the pivot doesn't store the table of the rowField so we can't do better
1455
- const dateField = pivot.rowField && isDateField(pivot.rowFieldType ?? '')
1456
- ? dateFieldOptions.find((table) => {
1457
- return table.columns.find((col) => col.field === pivot.rowField);
1458
- })
1459
- : undefined;
1460
- setFormData((formData) => ({
1461
- ...formData,
1462
- ...newPivotFormData,
1463
- ...(keepOldChartType && { chartType: formData.chartType }),
1464
- dateField: dateField
1465
- ? { table: dateField.name, field: pivot.rowField }
1466
- : formData.dateField,
1467
- }));
1468
- setChartTypes(getChartTypeOptions({ ...formData, ...newPivotFormData }, dashboardConfig[formData.dashboardName || '']));
1469
- // maybe validate
1470
- };
1471
- const handleDeletePivot = () => {
1472
- if (!formData.pivot) {
1473
- return;
1474
- }
1475
- setFormData({
1476
- ...formEmptyState,
1477
- ...formData,
1478
- dashboardName: formData.dashboardName,
1479
- pivot: null,
1480
- chartType: formEmptyState.chartType,
1481
- xAxisField: formEmptyState.xAxisField,
1482
- xAxisFormat: formEmptyState.xAxisFormat,
1483
- xAxisLabel: formEmptyState.xAxisLabel,
1484
- yAxisFields: formEmptyState.yAxisFields,
1485
- });
1486
- // maybe validate
1487
- setSelectedPivotTable(undefined);
1488
- setChartTypes(getChartTypeOptions({ ...formEmptyState, pivot: null }, dashboardConfig[formData.dashboardName || '']));
1489
- };
1490
- const handleAddField = (fieldName) => {
1491
- if (fieldName === 'columns') {
1492
- setFormData({
1493
- ...formData,
1494
- columns: [
1495
- ...formData.columns,
1496
- { label: '', field: '', format: 'string' },
1497
- ],
1498
- });
1499
- }
1500
- else if (fieldName === 'yAxisFields') {
1501
- setFormData({
1502
- ...formData,
1503
- yAxisFields: [
1504
- ...formData.yAxisFields,
1505
- { label: '', field: '', format: 'string' },
1506
- ],
1507
- });
1508
- }
1509
- else if (fieldName === 'pivot') {
1510
- setFormData({
1511
- ...formData,
1512
- pivot: {
1513
- title: '',
1514
- rowField: '',
1515
- rowFieldType: '',
1516
- columnField: '',
1517
- columnFieldType: '',
1518
- valueField: '',
1519
- aggregationType: 'sum',
1520
- },
1521
- });
1522
- }
1523
- else if (fieldName === 'referenceLines') {
1524
- setFormData({
1525
- ...formData,
1526
- referenceLines: [
1527
- ...formData.referenceLines,
1528
- { label: '', y1: undefined, y2: undefined },
1529
- ],
1530
- });
1531
- }
1532
- };
1533
- const handleRemoveField = (fieldName, index) => {
1534
- if (fieldName === 'pivot') {
1535
- setFormData({
1536
- ...formData,
1537
- pivot: null,
1538
- });
1539
- return;
1540
- }
1541
- // @ts-ignore
1542
- const updatedArray = formData[fieldName].filter((_, i) => i !== index);
1543
- setFormData({ ...formData, [fieldName]: updatedArray });
1544
- };
1545
- const handleSubmit = (event) => {
1546
- event.preventDefault();
1547
- };
1548
- const deleteChart = async () => {
1549
- if (onDelete && onDelete()) {
1550
- setIsOpen(false);
1551
- setIsSubmitting(false);
1552
- }
1553
- };
1554
- const editChart = async () => {
1555
- if (!client) {
1556
- return;
1557
- }
1558
- if (isSubmitting) {
1559
- setTriggeredEditChart(false);
1560
- return;
1561
- }
1562
- setIsSubmitting(true);
1563
- if (!client) {
1564
- setTriggeredEditChart(false);
1565
- return;
1566
- }
1567
- // If the dashboardItem is a template but the editor isn't an admin, create a new dashboardItem and set the template to false
1568
- let dashboardItemId = reportId ? reportId : undefined;
1569
- if (report && !isAdmin && formData.template) {
1570
- dashboardItemId = undefined;
1571
- }
1572
- const newReport = {
1573
- ...formData,
1574
- yAxisFields: formData.yAxisFields.slice(0, formData.chartType === 'pie' ? 1 : formData.yAxisFields.length),
1575
- filterMap,
1576
- columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
1577
- ...(formData.dateField?.table
1578
- ? {}
1579
- : { dateField: { ...defaultDateField } }),
1580
- dashboardName: destinationDashboardName,
1581
- query: report?.queryString ?? '',
1582
- pivot: formData.pivot,
1583
- referencedTables: allTables,
1584
- referencedColumns,
1585
- includeCustomFields: includeCustomFields || containsCustomFields,
1586
- template: tenants
1587
- ? undefined
1588
- : report && !isAdmin && formData.template
1589
- ? false
1590
- : formData.template,
1591
- reportFlags: containsCustomFields
1592
- ? currentTenantAsFormFlags
1593
- : formFlags
1594
- ? Object.fromEntries(Object.entries(formFlags)
1595
- .filter(([, value]) => value.length > 0)
1596
- .map(([key, value]) => {
1597
- return [
1598
- key,
1599
- Object.keys(allTenantMap).length > 1 &&
1600
- allTenantMap[key]?.length === value.length
1601
- ? ALL_TENANTS
1602
- : value,
1603
- ];
1604
- }))
1605
- : undefined,
1606
- referenceLines: formData.referenceLines.map((line) => {
1607
- return {
1608
- label: line.label,
1609
- query: line.label === REFERENCE_LINE
1610
- ? [Number(line.y1 ?? 0) || 0, Number(line.y2 ?? 0) || 0]
1611
- : '',
1612
- };
1613
- }),
1614
- };
1615
- const resp = await saveReport({
1616
- report: { ...newReport, rows: undefined, pivotRows: undefined }, // stop including rows in request
1617
- dashboardItemId,
1618
- client,
1619
- getToken,
1620
- eventTracking,
1621
- });
1622
- if (resp && resp.name !== 'error') {
1623
- const data = {
1624
- ...resp,
1625
- rows,
1626
- columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
1627
- pivotRows: selectedPivotTable?.rows || undefined,
1628
- pivotColumns: selectedPivotTable?.columns || undefined,
1629
- triggerReload: true,
1630
- error: undefined,
1631
- section: formData.section,
1632
- };
1633
- addReport(data);
1634
- reportsDispatch({
1635
- type: 'ADD_REPORT',
1636
- id: resp.id,
1637
- data,
1638
- });
1639
- if (onAddToDashboardComplete) {
1640
- onAddToDashboardComplete(data);
1641
- }
1642
- else {
1643
- // if no explicit onAddToDashboardComplete, default to reloading the dashboard
1644
- // TODO: Should probably always reload the dashboard, but currently, in the admin library, onAddToDashboardComplete
1645
- // handles the reload way upstream, and it's a bit spooky to change that right now
1646
- reloadDashboard(destinationDashboard, true, {
1647
- report: data,
1648
- action: 'upsert',
1649
- });
1650
- }
1651
- }
1652
- setIsOpen(false);
1653
- setIsSubmitting(false);
1654
- setTriggeredEditChart(false);
1655
- };
1656
- // Prevent horizontal view on small screens.
1657
- isHorizontalView = windowWidth < 1200 ? false : isHorizontalView;
1658
- if (!schemaData.schema) {
1659
- return _jsx("div", { children: "No schema" });
1660
- }
1661
- return (_jsxs("div", { style: {
1662
- width: '100%',
1663
- height: '100%',
1664
- display: 'flex',
1665
- flexDirection: 'column',
1666
- flexGrow: 1,
1667
- }, children: [_jsxs("div", { id: "quill-chart-modal", style: {
1668
- width: '100%',
1669
- height: '100%',
1670
- maxWidth: '100%',
1671
- display: 'flex',
1672
- padding: modalPadding,
1673
- paddingTop: windowWidth < 1200 && isOpen ? 0 : modalPadding,
1674
- gap: '20px',
1675
- flexDirection: isHorizontalView ? 'row' : 'column',
1676
- boxSizing: 'border-box',
1677
- }, children: [hideChartView ? null : (_jsxs("div", { style: {
1678
- display: 'flex',
1679
- flexDirection: 'column',
1680
- gap: isOpen ? 16 : 20,
1681
- overflowY: 'scroll',
1682
- height: isHorizontalView || !isOpen ? '100%' : 800,
1683
- ...(isHorizontalView && {
1684
- // flexGrow: 1,
1685
- width: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
1686
- }),
1687
- ...(!isHorizontalView && isOpen && { width: formWidth }),
1688
- }, children: [!isEditingMode && (report?.adminError || report?.error) ? (_jsx(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : ((isHorizontalView || (!isOpen && windowWidth > 1200)) && (_jsx(InternalChart, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
1689
- onFiltersEnabledChanged(hide);
1690
- }, colors: theme?.chartColors, loading: isLoading || !reportFiltersLoaded, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
1691
- width: '100%',
1692
- // height:
1693
- // formData.chartType === 'metric'
1694
- // ? 100
1695
- // : `calc(${filtersEnabled ? 50 : 70}%)`,
1696
- ...(isHorizontalView && {
1697
- flexGrow: !['table'].includes(formData.chartType) ? 1 : 0,
1698
- }),
1699
- }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, LoadingComponent: LoadingComponent }))),
1700
- // Make sure to display non-pivoted table when using pivot chart
1701
- !hideChartView &&
1702
- (isHorizontalView || (!isOpen && windowWidth < 1200)) && (_jsxs("div", { style: {
1703
- width: '100%',
1704
- // height:
1705
- // isHorizontalView || !isOpen
1706
- // ? `calc(${filtersEnabled ? 30 : 50}%)`
1707
- // : 400,
1708
- flexGrow: 1,
1709
- display: 'flex',
1710
- flexDirection: 'column',
1711
- gap: 8,
1712
- }, children: [windowWidth < 1200 && (_jsx(InternalChart, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
1713
- onFiltersEnabledChanged(hide);
1714
- }, colors: theme?.chartColors, loading: isLoading || !reportFiltersLoaded, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
1715
- width: '100%',
1716
- // height:
1717
- // formData.chartType === 'table'
1718
- // ? 200
1719
- // : formData.chartType === 'metric'
1720
- // ? 300
1721
- // : 500,
1722
- flexGrow: formData.chartType !== 'table' ? 1 : 0,
1723
- }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen })), hideTableView ? null : formData.chartType !== 'table' ? (_jsx(TableComponent, { rows: formattedRows, columns: includeCustomFields && !containsCustomFields
1724
- ? formData.columns.concat(reportCustomFields)
1725
- : formData.columns, onPageChange: (page) => {
1726
- onPageChange(page);
1727
- setCurrentPage(page);
1728
- }, onSortChange: (sort) => {
1729
- onSortChange && onSortChange(sort);
1730
- }, currentPage: currentPage, rowCount: rowCount, isLoading: isLoading || !reportFiltersLoaded, rowCountIsLoading: rowCountIsLoading, disableSort: disableSort, hideLabels: false })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1731
- ? selectedPivotTable.columns
1732
- : includeCustomFields && !containsCustomFields
1733
- ? formData.columns.concat(reportCustomFields)
1734
- : formData.columns, onPageChange: (page) => {
1735
- onPageChange(page, true);
1736
- setCurrentPage(page);
1737
- }, onSortChange: (sort) => {
1738
- onSortChange && onSortChange(sort, true);
1739
- }, currentPage: currentPage, rowCount: selectedPivotTable ? pivotData?.rowCount : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading || !reportFiltersLoaded, disableSort: disableSort, hideLabels: false }))] }))] })), isOpen && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
1740
- display: 'flex',
1741
- flexDirection: 'column',
1742
- gap: 20,
1743
- ...(isHorizontalView && {
1744
- height: '100%',
1745
- minWidth: formWidth,
1746
- maxWidth: formWidth,
1747
- width: formWidth,
1748
- }),
1749
- ...(windowWidth < 1200 && {
1750
- height: '100%',
1751
- width: formWidth,
1752
- paddingTop: modalPadding,
1753
- paddingBottom: modalPadding,
1754
- }),
1755
- }, children: [_jsxs(FormContainer, { children: [hideChartView
1756
- ? null
1757
- : (formData.pivot || formData.chartType !== 'table') &&
1758
- windowWidth < 1200 && (_jsx(InternalChart, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
1759
- onFiltersEnabledChanged(hide);
1760
- }, colors: theme?.chartColors, loading: isLoading || !reportFiltersLoaded, hideDateRangeFilter: hideDateRangeFilter, isAdmin: isAdmin, containerStyle: {
1761
- width: '100%',
1762
- // height:
1763
- // formData.chartType === 'table'
1764
- // ? 200
1765
- // : formData.chartType === 'metric'
1766
- // ? 300
1767
- // : formData.chartType === 'US map' ||
1768
- // formData.chartType === 'World map'
1769
- // ? 'fit-content'
1770
- // : 500,
1771
- flexGrow: !['table'].includes(formData.chartType)
1772
- ? 1
1773
- : 0,
1774
- }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen })), _jsxs(ChartBuilderInputRowContainer, { children: [_jsx("div", { ref: inputRef, style: { display: 'flex', flexDirection: 'column' }, children: _jsx(TextInputComponent
1775
- // {...autofocusRefProp}
1776
- , {
1777
- // {...autofocusRefProp}
1778
- id: "chart-builder-name", label: "Name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" }) }), showDashboardDropdown && !destinationDashboardName && (_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Dashboard", value: formData.dashboardName || '', onChange: async (e) => {
1779
- handleChange(e.target.value, 'dashboardName');
1780
- await updateDashboardFilters(e.target.value);
1781
- }, options: dashboardOptions.map((elem) => ({
1782
- label: elem.label,
1783
- value: elem.label,
1784
- })), width: 200 }) })), hideChartType ? (_jsx("div", { style: { width: 200 } })) : (_jsxs(_Fragment, { children: [_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'), options: chartTypes, width: 200 }) }), !destinationSection &&
1785
- currentDashboard?.sectionOrder?.some((s) => s.section) && (_jsx("div", { style: {
1786
- display: currentDashboard?.sectionOrder?.length
1787
- ? 'flex'
1788
- : 'none',
1789
- flexDirection: 'column',
1790
- }, children: _jsx(SelectComponent, { label: "Section", value: formData.section ?? '', options: currentDashboard?.sectionOrder?.map((s) => ({
1791
- label: s.section ? s.section : 'No section',
1792
- value: s.section,
1793
- })) ?? [], onChange: (e) => {
1794
- handleChange(e.target.value ?? '', 'section');
1795
- }, width: 200, hideEmptyOption: true }) }))] }))] }), hidePivotForm ? null : (_jsxs("div", { style: {
1796
- display: 'flex',
1797
- flexDirection: 'column',
1798
- gap: 6,
1799
- }, children: [_jsx(HeaderComponent, { label: "Pivot" }), _jsxs("div", { style: { fontFamily: theme?.fontFamily }, children: [_jsx("div", { style: {
1800
- maxWidth: 200,
1801
- // marginTop: 6,
1802
- display: 'flex',
1803
- flexDirection: 'column',
1804
- }, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotAggregations: pivotAggregations, pivotSort: pivotSort, setPivotSort: setPivotSort, pivotLimit: pivotLimit, setPivotLimit: setPivotLimit, setPivotAggregations: setPivotAggregations, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, SubheaderComponent: SubHeaderComponent, DeleteButtonComponent: DeleteButtonComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processedColumns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot, query: query, pivotCountRequest: 4, initialUniqueValues: initialUniqueValues, uniqueValuesIsLoading: initialUniqueValuesIsLoading, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report ? { ...report, ...{ itemQuery } } : undefined, dashboardName: destinationDashboardName || '', dateFilter: filtersEnabled
1805
- ? currentDashboardFilters?.find((f) => f.filterType === 'date_range')
1806
- : undefined, heightAdjustment: 200 }) }), formData.pivot && (_jsx("div", { children: _jsx("div", { style: { width: pivotCardWidth }, children: isLoading || !reportFiltersLoaded ? (_jsx(LoadingComponent, {})) : (_jsx(PivotCard, { pivotTable: pivotCardTable, theme: theme, index: 0, onSelectPivot: () => {
1807
- setIsEdittingPivot(true);
1808
- setShowPivotPopover(true);
1809
- setPivotRowField(formData.pivot?.rowField);
1810
- setPivotColumnField(formData.pivot?.columnField);
1811
- setPivotAggregations(formData.pivot?.aggregations ?? [
1812
- {
1813
- valueField: formData.pivot?.valueField,
1814
- aggregationType: formData.pivot?.aggregationType,
1815
- valueField2: formData.pivot?.valueField2,
1816
- },
1817
- ]);
1818
- setPivotSort(formData.pivot?.sort &&
1819
- formData.pivot?.sortDirection &&
1820
- formData.pivot?.sortField
1821
- ? {
1822
- sortField: formData.pivot?.sortField,
1823
- sortDirection: formData.pivot?.sortDirection,
1824
- }
1825
- : undefined);
1826
- setPivotLimit(formData.pivot?.rowLimit);
1827
- setPivotPopUpTitle('Edit pivot');
1828
- }, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent })) }) }))] })] })), !hideChartView &&
1829
- (formData.pivot ||
1830
- (formData.chartType !== 'table' &&
1831
- formData.chartType !== 'metric')) && (_jsxs("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsx("div", { style: {
1832
- display: 'flex',
1833
- flexDirection: 'column',
1834
- }, children: _jsx(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ??
1835
- '' }), _jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
1836
- ? getPivotMetricOptions(formData.pivot, selectedPivotTable, formData.chartType)
1837
- : columns.map((elem) => ({
1838
- label: elem.field,
1839
- value: elem.field,
1840
- })), width: 200 }), _jsx(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(SelectComponent, { value: formData.pivot &&
1841
- isDateField(formData.pivot.rowFieldType ?? '')
1842
- ? 'string'
1843
- : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
1844
- isDateField(formData.pivot.rowFieldType ?? '')
1845
- ? [{ value: 'string', label: 'date' }]
1846
- : xAxisFormatOptions, width: 200, hideEmptyOption: true })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ??
1847
- '' }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields
1848
- .slice(0, formData.chartType === 'pie'
1849
- ? 1
1850
- : formData.yAxisFields.length)
1851
- .map((yAxisField, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: formData.pivot
1852
- ? formData.pivot.aggregations?.length
1853
- ? (disambiguatedValueField(formData.pivot) ?? 'count')
1854
- : 'count'
1855
- : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
1856
- ? [
1857
- {
1858
- label: `Pivot Column (${formData.pivot.aggregations?.length ? (disambiguatedValueField(formData.pivot) ?? 'count') : 'count'})`,
1859
- value: formData.pivot.aggregations
1860
- ?.length
1861
- ? (disambiguatedValueField(formData.pivot) ?? 'count')
1862
- : 'count',
1863
- },
1864
- ]
1865
- : columns
1866
- .filter((elem) => {
1867
- return numberFormatOptions.includes(columns.find((col) => col.field === elem.field)?.format || '');
1868
- })
1869
- .map((elem) => ({
1870
- label: elem.field,
1871
- value: elem.field,
1872
- })), width: 200 }), _jsx(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), _jsx(SelectComponent, { value: formData.pivot
1873
- ? (NUMBER_OPTIONS.find((option) => {
1874
- return (option.value === yAxisField.format);
1875
- })?.value ?? NUMBER_OPTIONS[0].value)
1876
- : yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
1877
- ? NUMBER_OPTIONS
1878
- : ALL_FORMAT_OPTIONS, width: 200, hideEmptyOption: true }), !formData.pivot && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField_' + yAxisField.field + index))), !formData.pivot && formData.chartType !== 'pie' && (_jsx("div", { children: _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] })), client?.featureFlags?.['referenceLines'] &&
1879
- (chartData.chartType === 'line' ||
1880
- chartData.chartType === 'column') && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: 'Reference Lines' }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.referenceLines?.map((refLine, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { width: 200, value: refLine.label, onChange: (e) => handleChange(e.target.value, 'referenceLines.label', index),
1881
- // only include numeric columns
1882
- options: [
1883
- {
1884
- label: 'Custom Values',
1885
- value: REFERENCE_LINE,
1886
- },
1887
- ].concat((selectedPivotTable?.columns
1888
- ? selectedPivotTable.columns
1889
- : columns)
1890
- .filter((c) => NUMBER_FORMAT_TYPES.includes(c.format))
1891
- .map((elem) => ({
1892
- label: elem.field,
1893
- value: elem.field,
1894
- }))) }), refLine.label === REFERENCE_LINE && (_jsxs(_Fragment, { children: [_jsx(TextInputComponent, { id: "chart-builder-ref-line-y1", width: 200, value: refLine.y1?.toString() ?? '', placeholder: "Start value", onChange: (e) => handleChange(e.target.value, 'referenceLines.y1', index) }), _jsx(TextInputComponent, { id: "chart-builder-ref-line-y2", width: 200, value: refLine.y2?.toString() ?? '', placeholder: "End value", onChange: (e) => handleChange(e.target.value, 'referenceLines.y2', index) })] })), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('referenceLines', index) }) })] }, 'referenceLine' + index))), _jsx("div", { children: _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('referenceLines'), label: "Add line +" }) })] })] }))] })), windowWidth < 1200 && (_jsx("div", { style: {
1895
- width: '100%',
1896
- height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
1897
- flexGrow: 1,
1898
- }, children: formData.chartType !== 'table' ? (_jsx(TableComponent, { rows: formattedRows, columns: includeCustomFields && !containsCustomFields
1899
- ? formData.columns.concat(reportCustomFields)
1900
- : formData.columns, onPageChange: (page) => {
1901
- onPageChange(page);
1902
- setCurrentPage(page);
1903
- }, onSortChange: (sort) => {
1904
- onSortChange && onSortChange(sort);
1905
- }, currentPage: currentPage, rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading || !reportFiltersLoaded, disableSort: disableSort, hideLabels: false })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1906
- ? selectedPivotTable.columns
1907
- : includeCustomFields && !containsCustomFields
1908
- ? formData.columns.concat(reportCustomFields)
1909
- : formData.columns, onPageChange: (page) => {
1910
- onPageChange(page, true);
1911
- setCurrentPage(page);
1912
- }, onSortChange: (sort) => {
1913
- onSortChange && onSortChange(sort, true);
1914
- }, currentPage: currentPage, rowCount: selectedPivotTable ? pivotData?.rowCount : rowCount, rowCountIsLoading: rowCountIsLoading, isLoading: isLoading || !reportFiltersLoaded, disableSort: disableSort, hideLabels: false })) })), (showTableFormatOptions || isAdmin) && (_jsxs("div", { style: {
1915
- display: 'flex',
1916
- flexDirection: 'column',
1917
- gap: 6,
1918
- }, children: [_jsxs("div", { style: {
1919
- display: 'flex',
1920
- flexDirection: 'column',
1921
- }, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(SubHeaderComponent, { label: "Columns" })] }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.pivot &&
1922
- selectedPivotTable &&
1923
- selectedPivotTable.columns &&
1924
- formData.chartType === 'table'
1925
- ? // THIS CASE IF FOR PIVOT TABLES ONLY
1926
- selectedPivotTable.columns.map((column, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'pivot.field', index), options: selectedPivotTable.columns.map((elem) => ({
1927
- label: elem.field,
1928
- value: elem.field,
1929
- })), disabled: index === 0, width: 200, hideEmptyOption: true }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'pivot.label', index) }), _jsx(SelectComponent, { value:
1930
- // The first index use rowField for the rest of them use value fields
1931
- column.format, onChange: (e) => handleChange(e.target.value, 'pivot.format', index), options: formData.pivot &&
1932
- index === 0 &&
1933
- selectedPivotTable?.columns.length > 1
1934
- ? isDateField(formData.pivot.rowFieldType || '')
1935
- ? [{ label: 'date', value: 'string' }]
1936
- : [{ label: 'string', value: 'string' }]
1937
- : [
1938
- ...NUMBER_OPTIONS,
1939
- { label: 'string', value: 'string' },
1940
- ], width: 200, hideEmptyOption: true })] }, 'column' + index)))
1941
- : formData.columns.map((column, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: rows[0]
1942
- ? Object.keys(rows[0]).map((elem) => ({
1943
- label: elem,
1944
- value: elem,
1945
- }))
1946
- : columns.map((elem) => ({
1947
- label: elem.field,
1948
- value: elem.field,
1949
- })), width: 200, hideEmptyOption: true }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: ALL_FORMAT_OPTIONS, width: 200, hideEmptyOption: true }), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))), _jsx("div", { children: !(
1950
- // hide when pivoted and chartType === 'table'
1951
- (formData.pivot &&
1952
- selectedPivotTable &&
1953
- selectedPivotTable.columns &&
1954
- formData.chartType === 'table')) && (_jsxs("div", { style: {
1955
- display: 'flex',
1956
- flexDirection: 'row',
1957
- gap: 10,
1958
- }, children: [_jsx(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" }), isAdmin &&
1959
- client?.featureFlags?.customFieldsEnabled && (_jsx(QuillToolTip, { text: "Custom field directly referenced in report", enabled: containsCustomFields, textStyle: {
1960
- maxWidth: '200px',
1961
- whiteSpace: 'normal',
1962
- }, children: _jsx(CheckboxComponent, { isChecked: containsCustomFields || includeCustomFields, label: "Include Custom Fields", onChange: () => setIncludeCustomFields((prev) => !prev), disabled: containsCustomFields, containerStyle: {
1963
- height: containsCustomFields
1964
- ? '100%' // required when wrapped with QuillToolTip
1965
- : undefined,
1966
- } }) }))] })) })] })] })), isAdmin && tenants && dashboardOwner && (_jsxs("div", { style: {
1967
- display: 'flex',
1968
- flexDirection: 'column',
1969
- gap: 12,
1970
- }, children: [_jsx(HeaderComponent, { label: "Tenant access" }), _jsx("div", { style: {
1971
- display: 'flex',
1972
- flexDirection: 'column',
1973
- width: 'fit-content',
1974
- }, children: _jsxs("div", { style: {
1975
- display: 'flex',
1976
- flexDirection: 'row',
1977
- width: 'fit-content',
1978
- gap: 12,
1979
- marginBottom: 8,
1980
- }, children: [_jsx(QuillToolTip, { text: 'Tenant access is restricted to current tenant with direct custom field reference.', enabled: containsCustomFields, textStyle: {
1981
- maxWidth: '200px',
1982
- whiteSpace: 'normal',
1983
- }, children: _jsxs("div", { style: {
1984
- outline: '1px solid #E7E7E7',
1985
- borderRadius: 6,
1986
- padding: 4,
1987
- display: 'flex',
1988
- flexDirection: 'row',
1989
- marginLeft: 2,
1990
- backgroundColor: '#FCFCFC',
1991
- height: 38,
1992
- width: 'fit-content',
1993
- }, children: [_jsx("button", { onClick: () => {
1994
- if (!containsCustomFields) {
1995
- setCustomTenantAccess(false);
1996
- setFormFlags(undefined);
1997
- }
1998
- }, style: {
1999
- width: 95,
2000
- outline: !(customTenantAccess || containsCustomFields)
2001
- ? '1px solid #E7E7E7'
2002
- : undefined,
2003
- backgroundColor: !(customTenantAccess || containsCustomFields)
2004
- ? 'white'
2005
- : undefined,
2006
- // Center text vertically and horizontally
2007
- display: 'flex',
2008
- justifyContent: 'center',
2009
- alignItems: 'center',
2010
- borderRadius: 6,
2011
- fontSize: 14,
2012
- fontWeight: 500,
2013
- userSelect: 'none',
2014
- }, children: "Global" }), _jsx("button", { onClick: () => {
2015
- setCustomTenantAccess(true);
2016
- }, style: {
2017
- width: 95,
2018
- outline: customTenantAccess || containsCustomFields
2019
- ? '1px solid #E7E7E7'
2020
- : undefined,
2021
- backgroundColor: customTenantAccess || containsCustomFields
2022
- ? 'white'
2023
- : undefined,
2024
- // Center text vertically and horizontally
2025
- display: 'flex',
2026
- justifyContent: 'center',
2027
- alignItems: 'center',
2028
- borderRadius: 6,
2029
- fontSize: 14,
2030
- fontWeight: 500,
2031
- userSelect: 'none',
2032
- }, children: "Custom" })] }) }), client?.allTenantTypes?.length === 1 ? (_jsx(MultiSelectComponent, { disabled: containsCustomFields, value: containsCustomFields
2033
- ? (currentTenantAsFormFlags?.[dashboardOwner.tenantField] ?? []) // Even though value requires string[], turns out flags can be numbers
2034
- : (formFlags?.[dashboardOwner.tenantField] ?? []), onChange: (e) => setFormFlags({
2035
- ...formFlags,
2036
- [dashboardOwner.tenantField]: e.target
2037
- .value,
2038
- }), options: dashboardOwner.scope === 'database'
2039
- ? (dashboardOwner.flags?.map((f) => ({
2040
- label: f,
2041
- value: f,
2042
- })) ?? [])
2043
- : (dashboardOwner.tenantIds
2044
- ?.filter((t) => t.flag !== undefined)
2045
- .map((t) => ({
2046
- label: t.label ?? t.flag,
2047
- value: t.flag,
2048
- })) ?? []), width: 200, emptyLabel: dashboardOwner.scope === 'database'
2049
- ? 'No tags supplied'
2050
- : undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
2051
- display: customTenantAccess || containsCustomFields
2052
- ? 'inline'
2053
- : 'none',
2054
- marginTop: -1,
2055
- marginBottom: -4,
2056
- } })) : (_jsx(QuillMultiSelectSectionList, { value: formFlags ?? {}, onChange: (e) => setFormFlags(e.target.value), options: allTenantMap, sectionHeaderMap: client?.allTenantTypes?.reduce((acc, tenantType) => {
2057
- if (tenantType.scope === 'database') {
2058
- acc[SINGLE_TENANT] = 'Database';
2059
- return acc;
2060
- }
2061
- acc[tenantType.tenantField] = tenantType.name;
2062
- return acc;
2063
- }, {}) ?? {}, width: 200, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
2064
- display: customTenantAccess || containsCustomFields
2065
- ? 'inline'
2066
- : 'none',
2067
- marginTop: -1,
2068
- marginBottom: -4,
2069
- }, owner: dashboardOwner.tenantField }))] }) })] })), specificDashboardFilters.length > 0 && isAdmin && (_jsxs("div", { style: {
2070
- display: 'flex',
2071
- flexDirection: 'column',
2072
- gap: 6,
2073
- marginBottom: 128,
2074
- }, children: [_jsx(HeaderComponent, { label: "Dashboard filter fields" }), isAdmin &&
2075
- formData.dateField &&
2076
- dashboardConfig[formData.dashboardName ?? destinationDashboardName ?? '']?.config.dateFilter?.label && (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(TextInputComponent, { id: 'filterMap.dateFilter.' +
2077
- (dashboardConfig[formData.dashboardName ?? '']
2078
- ?.config.dateFilter?.label ?? 'Date'), value: dashboardConfig[formData.dashboardName ?? '']
2079
- ?.config.dateFilter?.label ?? 'Date', width: 200, onChange: () => { }, label: 'Filter', disabled: true }), _jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Virtual Table", value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
2080
- label: elem.name,
2081
- value: elem.name,
2082
- })), width: 200, hideEmptyOption: true }) }), _jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Field", value: removeDoubleQuotes(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
2083
- ?.find((elem) => elem.name === formData.dateField?.table)
2084
- ?.columns?.map((elem) => ({
2085
- label: elem.field,
2086
- value: elem.field,
2087
- })) || [], width: 200, hideEmptyOption: true }) }), (!formData.dateField?.table ||
2088
- !formData.dateField?.field) && (_jsx("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: _jsx(ExclamationFilledIcon, { height: 28, width: 28, style: {
2089
- color: '#dc143c',
2090
- } }) }))] })), specificDashboardFilters.length > 0 && (_jsx("div", { style: {
2091
- display: 'flex',
2092
- flexDirection: 'column',
2093
- gap: 6,
2094
- }, children: specificDashboardFilters
2095
- .filter((f) => {
2096
- return f.filterType !== 'date_range';
2097
- })
2098
- .map((filter, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(TextInputComponent, { id: 'filterMap.' + filter.label, value: filter.label, width: 200, onChange: () => { }, label: index === 0 &&
2099
- !(isAdmin &&
2100
- formData.dateField &&
2101
- dashboardConfig[formData.dashboardName ?? '']
2102
- ?.config.dateFilter?.label)
2103
- ? 'Filter'
2104
- : '', disabled: true }), _jsx(SelectComponent, { label: index === 0 &&
2105
- !(isAdmin &&
2106
- formData.dateField &&
2107
- dashboardConfig[formData.dashboardName ?? '']
2108
- ?.config.dateFilter?.label)
2109
- ? 'Virtual Table'
2110
- : '', value: filterMap[filter.label]?.table ?? filter.table, onChange: (e) => setFilterMap({
2111
- ...filterMap,
2112
- [filter.label]: {
2113
- table: e.target.value,
2114
- field: schemaData.schemaWithCustomFields
2115
- .find((t) => t.name == e.target.value)
2116
- ?.columns.find((elem) => elem.field ===
2117
- (filterMap[filter.label]?.field ??
2118
- filter.field))?.field ?? '',
2119
- },
2120
- }), options: allTables.map((elem) => ({
2121
- label: elem,
2122
- value: elem,
2123
- })), width: 200, hideEmptyOption: true }), _jsx(SelectComponent, { label: index === 0 &&
2124
- !(isAdmin &&
2125
- formData.dateField &&
2126
- dashboardConfig[formData.dashboardName ?? '']
2127
- ?.config.dateFilter?.label)
2128
- ? 'Field'
2129
- : '', value: filterMap[filter.label]?.field ?? filter.field, onChange: (e) => setFilterMap({
2130
- ...filterMap,
2131
- [filter.label]: {
2132
- table: filterMap[filter.label]?.table ??
2133
- filter.table,
2134
- field: e.target.value,
2135
- },
2136
- }), options: schemaData.schemaWithCustomFields
2137
- .find((t) => t.name ==
2138
- (filterMap[filter.label]?.table ??
2139
- filter.table) &&
2140
- allTables.includes(t.name))
2141
- ?.columns.filter((column) => isStringType(column.fieldType))
2142
- .map((elem) => ({
2143
- label: elem.label,
2144
- value: elem.field,
2145
- })) ?? [], width: 200, hideEmptyOption: true }), !validFilter[filter.label] && (_jsx("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: _jsx(ExclamationFilledIcon, { height: 28, width: 28, style: {
2146
- color: '#dc143c',
2147
- } }) }))] }, filter.label))) }))] })), isAdmin && !tenants && !flags && (_jsxs("div", { style: {
2148
- display: 'flex',
2149
- flexDirection: 'column',
2150
- gap: 12,
2151
- }, children: [_jsx(HeaderComponent, { label: "Organization access" }), _jsx(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template || !organizationName, theme: theme ?? undefined, organizationName: organizationName, customFieldTableRef: customFieldTableRef })] }))] }), _jsxs("div", { style: {
2152
- display: 'flex',
2153
- flexDirection: 'row',
2154
- justifyContent: 'flex-end',
2155
- gap: 10,
2156
- position: 'absolute',
2157
- bottom: 16,
2158
- right: 16,
2159
- }, children: [!hideDeleteButton && !isHorizontalView && report && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && (_jsxs("div", { style: {
2160
- display: 'flex',
2161
- flexDirection: 'row',
2162
- width: '100%',
2163
- justifyContent: 'space-between',
2164
- alignItems: 'center',
2165
- gap: 6,
2166
- }, children: [!!filterIssues?.length && (_jsx(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashboard - Report issues', containerStyle: { height: '100%' } })), _jsxs("div", { style: {
2167
- display: 'flex',
2168
- flexDirection: 'row',
2169
- gap: 10,
2170
- backgroundColor: 'white',
2171
- }, children: [hideDiscardChanges ? null : (_jsx(SecondaryButtonComponent, { onClick: () => {
2172
- setIsOpen(false);
2173
- onDiscardChanges && onDiscardChanges();
2174
- }, label: 'Discard changes' })), _jsx(ButtonComponent, { onClick: () => {
2175
- if (loadingFormData) {
2176
- setTriggeredEditChart(true);
2177
- }
2178
- else {
2179
- editChart();
2180
- }
2181
- }, disabled: formData.name === '' ||
2182
- formData.dashboardName === '' ||
2183
- formData.chartType === '' ||
2184
- filterIssues.length !== 0 ||
2185
- Object.values(validFilter).includes(false) ||
2186
- (currentDashboard?.tenantKeys &&
2187
- customTenantAccess &&
2188
- Object.values(formFlags ?? {}).every((value) => !value.length)), label: buttonLabel
2189
- ? buttonLabel
2190
- : report
2191
- ? 'Save changes'
2192
- : 'Add to dashboard' })] })] }))] })] }))] }), _jsx(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, issues: filterIssues, ButtonComponent: ButtonComponent, ModalComponent: ModalComponent })] }));
2193
- }
2194
- function SegmentedControl({ onChange, value, theme, organizationName, customFieldTableRef, }) {
2195
- return (_jsxs("div", { style: {
2196
- display: 'flex',
2197
- flexDirection: 'row',
2198
- alignItems: 'center',
2199
- background: '#F5F5F6',
2200
- maxWidth: organizationName ? 418 : 209,
2201
- padding: 4,
2202
- borderRadius: 6,
2203
- }, children: [!customFieldTableRef && (_jsxs("button", { className: "quill-tab", onClick: () => onChange(true), style: {
2204
- border: value === true ? '1px solid #E7E7E7' : '1px solid transparent',
2205
- outline: 'none',
2206
- width: '100%',
2207
- borderRadius: 4,
2208
- padding: 10,
2209
- boxShadow: value === true
2210
- ? '0px 1px 4px 0px rgba(56, 65, 81, 0.08)'
2211
- : undefined,
2212
- color: value === true ? 'rgba(56, 65, 81, 1)' : 'rgba(56, 65, 81, 0.85)',
2213
- fontWeight: value === true ? 600 : 500,
2214
- fontSize: 14,
2215
- fontFamily: theme?.fontFamily,
2216
- }, children: [_jsx("style", { children: `
2217
- .quill-tab {
2218
- background-color: ${value === true ? 'white' : 'transparent'};
2219
- }
2220
- .quill-tab:hover {
2221
- background-color: ${value === false ? 'rgba(56, 65, 81, 0.05)' : undefined};
2222
- }
2223
- .quill-tab:active {
2224
- background-color: "rgba(56, 65, 81, 0.15)";
2225
- }
2226
- ` }), 'All Organizations'] })), organizationName && (_jsxs("button", { className: "quill-tab2", onClick: () => onChange(false), style: {
2227
- border: value === false ? '1px solid #E7E7E7' : '1px solid transparent',
2228
- boxShadow: value === false
2229
- ? '0px 1px 4px 0px rgba(56, 65, 81, 0.08)'
2230
- : undefined,
2231
- outline: 'none',
2232
- width: '100%',
2233
- borderRadius: 4,
2234
- color: value === false
2235
- ? 'rgba(56, 65, 81, 1)'
2236
- : 'rgba(56, 65, 81, 0.85)',
2237
- padding: 10,
2238
- fontWeight: value === false ? 600 : 500,
2239
- fontSize: 14,
2240
- fontFamily: theme?.fontFamily,
2241
- }, children: [_jsx("style", { children: `
2242
- .quill-tab2 {
2243
- background-color: ${value === false ? 'white' : 'transparent'};
2244
- }
2245
- .quill-tab2:hover {
2246
- background-color: ${value === true ? 'rgba(56, 65, 81, 0.05)' : undefined};
2247
- }
2248
- .quill-tab2:focused {
2249
- background-color: blue;
2250
- }
2251
- .quill-tab2:active {
2252
- background-color: "rgba(56, 65, 81, 0.15)";
2253
- }
2254
- ` }), organizationName] }))] }));
2255
- }
2256
- export function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent = MemoizedModal, ButtonComponent = MemoizedButton, }) {
2257
- if (!isOpen)
2258
- return null;
2259
- return (_jsx(ModalComponent, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', width: 600, children: _jsxs("div", { style: {
2260
- display: 'flex',
2261
- flexDirection: 'column',
2262
- width: '600px',
2263
- padding: '20px',
2264
- boxSizing: 'border-box',
2265
- overflow: 'scroll',
2266
- maxHeight: 600,
2267
- }, children: [issues.map((issue) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("div", { style: {
2268
- display: 'flex',
2269
- flexDirection: 'row',
2270
- justifyContent: 'flex-end',
2271
- paddingTop: '14px',
2272
- }, children: _jsx(ButtonComponent, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
2273
- }