@quillsql/react 2.13.47 → 2.13.49

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 (298) hide show
  1. package/dist/cjs/Chart.d.ts +2 -2
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +56 -49
  4. package/dist/cjs/ChartBuilder.d.ts +3 -2
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +172 -138
  7. package/dist/cjs/ChartEditor.d.ts +2 -2
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +5 -2
  10. package/dist/cjs/Context.d.ts +121 -41
  11. package/dist/cjs/Context.d.ts.map +1 -1
  12. package/dist/cjs/Context.js +449 -261
  13. package/dist/cjs/Dashboard.d.ts.map +1 -1
  14. package/dist/cjs/Dashboard.js +26 -25
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +0 -3
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +24 -10
  17. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  18. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +472 -96
  19. package/dist/cjs/QuillProvider.d.ts +3 -1
  20. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  21. package/dist/cjs/QuillProvider.js +2 -2
  22. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  23. package/dist/cjs/ReportBuilder.js +25 -14
  24. package/dist/cjs/SQLEditor.d.ts +1 -1
  25. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  26. package/dist/cjs/SQLEditor.js +51 -16
  27. package/dist/cjs/Table.d.ts.map +1 -1
  28. package/dist/cjs/Table.js +85 -14
  29. package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +1 -1
  30. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  31. package/dist/cjs/components/Chart/BarChart.js +2 -1
  32. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +1 -1
  33. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +1 -1
  34. package/dist/cjs/components/Chart/CustomReferenceLine.js +7 -6
  35. package/dist/cjs/components/Chart/GaugeChart.d.ts +1 -1
  36. package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -1
  37. package/dist/cjs/components/Chart/GaugeChart.js +63 -36
  38. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  39. package/dist/cjs/components/Chart/InternalChart.js +30 -33
  40. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  41. package/dist/cjs/components/Chart/LineChart.js +3 -1
  42. package/dist/cjs/components/Chart/MapChart.d.ts +3 -3
  43. package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -1
  44. package/dist/cjs/components/Chart/MapChart.js +62 -34
  45. package/dist/cjs/components/Chart/PieChart.d.ts +3 -1
  46. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
  47. package/dist/cjs/components/Chart/PieChart.js +80 -39
  48. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  49. package/dist/cjs/components/Dashboard/DashboardFilter.js +4 -20
  50. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  51. package/dist/cjs/components/Dashboard/DashboardTemplate.js +2 -1
  52. package/dist/cjs/components/Dashboard/DataLoader.d.ts +4 -4
  53. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  54. package/dist/cjs/components/Dashboard/DataLoader.js +101 -65
  55. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  56. package/dist/cjs/components/Dashboard/MetricComponent.js +2 -2
  57. package/dist/cjs/components/Dashboard/util.d.ts +1 -1
  58. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  59. package/dist/cjs/components/Dashboard/util.js +7 -6
  60. package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
  61. package/dist/cjs/components/QuillMultiSelectSectionList.js +32 -22
  62. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  63. package/dist/cjs/components/QuillMultiSelectWithCombo.js +186 -159
  64. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  65. package/dist/cjs/components/QuillSelect.js +83 -75
  66. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  67. package/dist/cjs/components/QuillSelectWithCombo.js +18 -11
  68. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  69. package/dist/cjs/components/QuillTable.js +59 -61
  70. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
  71. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  72. package/dist/cjs/components/ReportBuilder/FilterStack.js +3 -4
  73. package/dist/cjs/components/ReportBuilder/ui.d.ts +2 -2
  74. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  75. package/dist/cjs/components/ReportBuilder/ui.js +4 -7
  76. package/dist/cjs/components/UiComponents.d.ts +1 -1
  77. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  78. package/dist/cjs/hooks/useAskQuill.js +5 -1
  79. package/dist/cjs/hooks/useDashboard.d.ts +2 -2
  80. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  81. package/dist/cjs/hooks/useDashboard.js +160 -69
  82. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  83. package/dist/cjs/hooks/useExport.js +29 -15
  84. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  85. package/dist/cjs/hooks/useQuill.d.ts +1 -0
  86. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  87. package/dist/cjs/hooks/useQuill.js +22 -12
  88. package/dist/cjs/hooks/useReport.d.ts +2 -2
  89. package/dist/cjs/hooks/useReport.d.ts.map +1 -1
  90. package/dist/cjs/hooks/useReport.js +3 -4
  91. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  92. package/dist/cjs/hooks/useVirtualTables.js +16 -22
  93. package/dist/cjs/index.d.ts +2 -2
  94. package/dist/cjs/index.d.ts.map +1 -1
  95. package/dist/cjs/index.js +2 -1
  96. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -1
  97. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  98. package/dist/cjs/internals/ReportBuilder/PivotModal.js +19 -7
  99. package/dist/cjs/models/Client.d.ts +0 -1
  100. package/dist/cjs/models/Client.d.ts.map +1 -1
  101. package/dist/cjs/models/Data.d.ts +20 -0
  102. package/dist/cjs/models/Data.d.ts.map +1 -0
  103. package/dist/cjs/models/Data.js +2 -0
  104. package/dist/cjs/models/Filter.d.ts +42 -4
  105. package/dist/cjs/models/Filter.d.ts.map +1 -1
  106. package/dist/cjs/models/Pivot.d.ts.map +1 -1
  107. package/dist/cjs/utils/astProcessing.d.ts +3 -2
  108. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  109. package/dist/cjs/utils/astProcessing.js +28 -37
  110. package/dist/cjs/utils/client.d.ts +3 -2
  111. package/dist/cjs/utils/client.d.ts.map +1 -1
  112. package/dist/cjs/utils/client.js +38 -39
  113. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  114. package/dist/cjs/utils/columnProcessing.js +14 -3
  115. package/dist/cjs/utils/constants.d.ts +1 -0
  116. package/dist/cjs/utils/constants.d.ts.map +1 -1
  117. package/dist/cjs/utils/constants.js +2 -1
  118. package/dist/cjs/utils/dashboard.d.ts +3 -2
  119. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  120. package/dist/cjs/utils/dashboard.js +30 -12
  121. package/dist/cjs/utils/dataFetcher.d.ts +8 -5
  122. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  123. package/dist/cjs/utils/dataFetcher.js +189 -65
  124. package/dist/cjs/utils/filterProcessing.d.ts +2 -1
  125. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  126. package/dist/cjs/utils/filterProcessing.js +24 -38
  127. package/dist/cjs/utils/getDomain.d.ts.map +1 -1
  128. package/dist/cjs/utils/paginationProcessing.d.ts +1 -0
  129. package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
  130. package/dist/cjs/utils/paginationProcessing.js +6 -1
  131. package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
  132. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  133. package/dist/cjs/utils/pivotConstructor.js +15 -9
  134. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  135. package/dist/cjs/utils/pivotProcessing.js +3 -5
  136. package/dist/cjs/utils/queryConstructor.js +1 -1
  137. package/dist/cjs/utils/report.d.ts +10 -7
  138. package/dist/cjs/utils/report.d.ts.map +1 -1
  139. package/dist/cjs/utils/report.js +52 -60
  140. package/dist/cjs/utils/schema.d.ts +4 -3
  141. package/dist/cjs/utils/schema.d.ts.map +1 -1
  142. package/dist/cjs/utils/schema.js +30 -44
  143. package/dist/cjs/utils/tableProcessing.d.ts +16 -10
  144. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  145. package/dist/cjs/utils/tableProcessing.js +92 -90
  146. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  147. package/dist/cjs/utils/textProcessing.js +2 -1
  148. package/dist/cjs/utils/ui.d.ts.map +1 -1
  149. package/dist/esm/Chart.d.ts +2 -2
  150. package/dist/esm/Chart.d.ts.map +1 -1
  151. package/dist/esm/Chart.js +60 -53
  152. package/dist/esm/ChartBuilder.d.ts +3 -2
  153. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  154. package/dist/esm/ChartBuilder.js +173 -139
  155. package/dist/esm/ChartEditor.d.ts +2 -2
  156. package/dist/esm/ChartEditor.d.ts.map +1 -1
  157. package/dist/esm/ChartEditor.js +6 -3
  158. package/dist/esm/Context.d.ts +121 -41
  159. package/dist/esm/Context.d.ts.map +1 -1
  160. package/dist/esm/Context.js +450 -262
  161. package/dist/esm/Dashboard.d.ts.map +1 -1
  162. package/dist/esm/Dashboard.js +28 -27
  163. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -3
  164. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +24 -10
  165. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  166. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +471 -95
  167. package/dist/esm/QuillProvider.d.ts +3 -1
  168. package/dist/esm/QuillProvider.d.ts.map +1 -1
  169. package/dist/esm/QuillProvider.js +2 -2
  170. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  171. package/dist/esm/ReportBuilder.js +28 -17
  172. package/dist/esm/SQLEditor.d.ts +1 -1
  173. package/dist/esm/SQLEditor.d.ts.map +1 -1
  174. package/dist/esm/SQLEditor.js +54 -19
  175. package/dist/esm/Table.d.ts.map +1 -1
  176. package/dist/esm/Table.js +88 -17
  177. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +1 -1
  178. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  179. package/dist/esm/components/Chart/BarChart.js +2 -1
  180. package/dist/esm/components/Chart/CustomReferenceLine.d.ts +1 -1
  181. package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -1
  182. package/dist/esm/components/Chart/CustomReferenceLine.js +8 -7
  183. package/dist/esm/components/Chart/GaugeChart.d.ts +1 -1
  184. package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -1
  185. package/dist/esm/components/Chart/GaugeChart.js +65 -38
  186. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  187. package/dist/esm/components/Chart/InternalChart.js +32 -35
  188. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  189. package/dist/esm/components/Chart/LineChart.js +3 -1
  190. package/dist/esm/components/Chart/MapChart.d.ts +3 -3
  191. package/dist/esm/components/Chart/MapChart.d.ts.map +1 -1
  192. package/dist/esm/components/Chart/MapChart.js +67 -39
  193. package/dist/esm/components/Chart/PieChart.d.ts +3 -1
  194. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
  195. package/dist/esm/components/Chart/PieChart.js +80 -39
  196. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  197. package/dist/esm/components/Dashboard/DashboardFilter.js +5 -21
  198. package/dist/esm/components/Dashboard/DashboardSection.js +2 -2
  199. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  200. package/dist/esm/components/Dashboard/DashboardTemplate.js +3 -2
  201. package/dist/esm/components/Dashboard/DataLoader.d.ts +4 -4
  202. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  203. package/dist/esm/components/Dashboard/DataLoader.js +102 -66
  204. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  205. package/dist/esm/components/Dashboard/MetricComponent.js +2 -2
  206. package/dist/esm/components/Dashboard/util.d.ts +1 -1
  207. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  208. package/dist/esm/components/Dashboard/util.js +8 -7
  209. package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
  210. package/dist/esm/components/QuillMultiSelectSectionList.js +32 -22
  211. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  212. package/dist/esm/components/QuillMultiSelectWithCombo.js +187 -160
  213. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  214. package/dist/esm/components/QuillSelect.js +85 -77
  215. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  216. package/dist/esm/components/QuillSelectWithCombo.js +18 -11
  217. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  218. package/dist/esm/components/QuillTable.js +59 -61
  219. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
  220. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  221. package/dist/esm/components/ReportBuilder/FilterStack.js +3 -4
  222. package/dist/esm/components/ReportBuilder/ui.d.ts +2 -2
  223. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  224. package/dist/esm/components/ReportBuilder/ui.js +4 -7
  225. package/dist/esm/components/UiComponents.d.ts +1 -1
  226. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  227. package/dist/esm/hooks/useAskQuill.js +6 -2
  228. package/dist/esm/hooks/useDashboard.d.ts +2 -2
  229. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  230. package/dist/esm/hooks/useDashboard.js +162 -71
  231. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  232. package/dist/esm/hooks/useExport.js +31 -17
  233. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  234. package/dist/esm/hooks/useQuill.d.ts +1 -0
  235. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  236. package/dist/esm/hooks/useQuill.js +23 -13
  237. package/dist/esm/hooks/useReport.d.ts +2 -2
  238. package/dist/esm/hooks/useReport.d.ts.map +1 -1
  239. package/dist/esm/hooks/useReport.js +4 -5
  240. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  241. package/dist/esm/hooks/useVirtualTables.js +17 -23
  242. package/dist/esm/index.d.ts +2 -2
  243. package/dist/esm/index.d.ts.map +1 -1
  244. package/dist/esm/index.js +1 -1
  245. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -1
  246. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  247. package/dist/esm/internals/ReportBuilder/PivotModal.js +20 -8
  248. package/dist/esm/models/Client.d.ts +0 -1
  249. package/dist/esm/models/Client.d.ts.map +1 -1
  250. package/dist/esm/models/Data.d.ts +20 -0
  251. package/dist/esm/models/Data.d.ts.map +1 -0
  252. package/dist/esm/models/Data.js +1 -0
  253. package/dist/esm/models/Filter.d.ts +42 -4
  254. package/dist/esm/models/Filter.d.ts.map +1 -1
  255. package/dist/esm/models/Pivot.d.ts.map +1 -1
  256. package/dist/esm/utils/astProcessing.d.ts +3 -2
  257. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  258. package/dist/esm/utils/astProcessing.js +28 -37
  259. package/dist/esm/utils/client.d.ts +3 -2
  260. package/dist/esm/utils/client.d.ts.map +1 -1
  261. package/dist/esm/utils/client.js +38 -39
  262. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  263. package/dist/esm/utils/columnProcessing.js +14 -3
  264. package/dist/esm/utils/constants.d.ts +1 -0
  265. package/dist/esm/utils/constants.d.ts.map +1 -1
  266. package/dist/esm/utils/constants.js +1 -0
  267. package/dist/esm/utils/dashboard.d.ts +3 -2
  268. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  269. package/dist/esm/utils/dashboard.js +31 -13
  270. package/dist/esm/utils/dataFetcher.d.ts +8 -5
  271. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  272. package/dist/esm/utils/dataFetcher.js +187 -65
  273. package/dist/esm/utils/filterProcessing.d.ts +2 -1
  274. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  275. package/dist/esm/utils/filterProcessing.js +25 -39
  276. package/dist/esm/utils/getDomain.d.ts.map +1 -1
  277. package/dist/esm/utils/paginationProcessing.d.ts +1 -0
  278. package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
  279. package/dist/esm/utils/paginationProcessing.js +5 -0
  280. package/dist/esm/utils/pivotConstructor.d.ts +2 -1
  281. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  282. package/dist/esm/utils/pivotConstructor.js +16 -10
  283. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  284. package/dist/esm/utils/pivotProcessing.js +5 -7
  285. package/dist/esm/utils/queryConstructor.js +1 -1
  286. package/dist/esm/utils/report.d.ts +10 -7
  287. package/dist/esm/utils/report.d.ts.map +1 -1
  288. package/dist/esm/utils/report.js +53 -61
  289. package/dist/esm/utils/schema.d.ts +4 -3
  290. package/dist/esm/utils/schema.d.ts.map +1 -1
  291. package/dist/esm/utils/schema.js +30 -44
  292. package/dist/esm/utils/tableProcessing.d.ts +16 -10
  293. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  294. package/dist/esm/utils/tableProcessing.js +94 -92
  295. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  296. package/dist/esm/utils/textProcessing.js +2 -1
  297. package/dist/esm/utils/ui.d.ts.map +1 -1
  298. package/package.json +2 -1
@@ -32,7 +32,6 @@ const paginationProcessing_1 = require("./utils/paginationProcessing");
32
32
  const tableProcessing_1 = require("./utils/tableProcessing");
33
33
  const dates_1 = require("./utils/dates");
34
34
  const QuillMultiSelectWithCombo_1 = require("./components/QuillMultiSelectWithCombo");
35
- const dataFetcher_1 = require("./utils/dataFetcher");
36
35
  const QuillMultiSelectSectionList_1 = require("./components/QuillMultiSelectSectionList");
37
36
  const constants_1 = require("./utils/constants");
38
37
  const pivotConstructor_1 = require("./utils/pivotConstructor");
@@ -277,7 +276,9 @@ function ChartBuilderWithModal(props) {
277
276
  return ((0, jsx_runtime_1.jsx)("div", { style: { height: '100%' }, ref: parentRef, children: (0, jsx_runtime_1.jsx)(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
278
277
  // For isHorizontalView, use full viewport size minus 80px for padding,
279
278
  // otherwise use the default layout method of the modal (contents).
280
- width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (props.reportId ? dashboard[props.reportId] : props.tempReport) ? ((0, jsx_runtime_1.jsx)(ChartBuilder, { ...props })) : ((0, jsx_runtime_1.jsx)("div", { style: { padding: 20 }, children: (0, jsx_runtime_1.jsx)(UiComponents_1.QuillLoadingComponent, {}) })) }) }));
279
+ width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (props.reportId
280
+ ? (dashboard[props.reportId] ?? props.tempReport)
281
+ : props.tempReport) ? ((0, jsx_runtime_1.jsx)(ChartBuilder, { ...props })) : ((0, jsx_runtime_1.jsx)("div", { style: { padding: 20 }, children: (0, jsx_runtime_1.jsx)(UiComponents_1.QuillLoadingComponent, {}) })) }) }));
281
282
  }
282
283
  /**
283
284
  * ### Quill Chart Builder
@@ -311,11 +312,11 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
311
312
  const [client] = (0, react_1.useContext)(Context_1.ClientContext);
312
313
  const [theme] = (0, react_1.useContext)(Context_1.ThemeContext);
313
314
  const [schemaData] = (0, react_1.useContext)(Context_1.SchemaDataContext);
315
+ const { getToken, quillFetchWithToken } = (0, react_1.useContext)(Context_1.FetchContext);
314
316
  const { addReport } = (0, useDashboard_1.useDashboardReports)(destinationDashboard);
315
317
  const { allReportsById } = (0, useDashboard_1.useAllReports)();
316
318
  const { dashboardConfig } = (0, react_1.useContext)(Context_1.DashboardConfigContext);
317
319
  const { tenants, flags } = (0, react_1.useContext)(Context_1.TenantContext);
318
- const { getDataFromCloud } = (0, dataFetcher_1.useQuillCloud)();
319
320
  const report = (0, react_1.useMemo)(() => {
320
321
  return reportId && !tempReport ? allReportsById[reportId] : tempReport;
321
322
  }, [reportId]);
@@ -404,12 +405,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
404
405
  };
405
406
  }, [isOpen]);
406
407
  const [dashboardOptions, setDashboardOptions] = (0, react_1.useState)([]);
407
- const { reportFilters, loadFiltersForReport, reportFiltersDispatch, abortLoadingFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
408
+ const { reportFilters, loadFiltersForReport, reportFiltersDispatch, abortLoadingFilters, } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
408
409
  const { reportsDispatch } = (0, react_1.useContext)(Context_1.ReportsContext);
409
410
  const initialFilters = (0, react_1.useRef)(reportFilters[report?.id ?? Report_1.TEMP_REPORT_ID]);
410
411
  (0, react_1.useEffect)(() => {
411
412
  if (!reportFilters[report?.id ?? Report_1.TEMP_REPORT_ID]) {
412
- loadFiltersForReport(report?.id ?? Report_1.TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, canonicalFilterMap, report?.dashboardName);
413
+ loadFiltersForReport(report?.id ?? Report_1.TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, report?.dashboardName);
413
414
  }
414
415
  return () => {
415
416
  abortLoadingFilters(report?.id ?? tempReport?.id ?? Report_1.TEMP_REPORT_ID);
@@ -420,6 +421,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
420
421
  data: Object.values(initialFilters.current),
421
422
  });
422
423
  }
424
+ else {
425
+ reportFiltersDispatch({
426
+ type: 'CLEAR_REPORT_FILTERS',
427
+ id: report?.id ?? Report_1.TEMP_REPORT_ID,
428
+ });
429
+ }
423
430
  };
424
431
  }, []);
425
432
  const currentDashboardFilters = (0, react_1.useMemo)(() => {
@@ -502,7 +509,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
502
509
  ? Object.fromEntries(Object.entries(report.flags).map(([key, value]) => {
503
510
  if (value === constants_1.ALL_TENANTS) {
504
511
  const tenantType = client?.allTenantTypes?.find((t) => t.tenantField === key);
505
- return [key, tenantType?.tenantField === constants_1.SINGLE_TENANT ? tenantType?.flags ?? [] : tenantType?.tenantIds?.map((id) => id.flag) ?? []];
512
+ return [
513
+ key,
514
+ tenantType?.tenantField === constants_1.SINGLE_TENANT
515
+ ? (tenantType?.flags ?? [])
516
+ : (tenantType?.tenantIds?.map((id) => id.flag) ?? []),
517
+ ];
506
518
  }
507
519
  else {
508
520
  return [key, value];
@@ -517,7 +529,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
517
529
  const formEmptyState = {
518
530
  name: report?.name ?? '',
519
531
  dashboardName: dashboardOptions[0]?.label ?? '',
520
- columns: report?.columns.map((col) => {
532
+ columns: report?.columns?.map((col) => {
521
533
  return { ...col, label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label) };
522
534
  }) ?? [],
523
535
  xAxisField: report?.columns?.[0]?.field ?? '',
@@ -543,33 +555,45 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
543
555
  if (!client) {
544
556
  return;
545
557
  }
546
- const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
547
- if (queryEndpoint) {
548
- const response = await fetch(queryEndpoint, {
549
- method: 'POST',
550
- headers: {
551
- ...queryHeaders,
552
- 'Content-Type': 'application/json',
553
- },
554
- body: JSON.stringify({
555
- metadata: {
556
- task: 'dashboard',
557
- name: dashboardName,
558
- clientId: publicKey,
559
- databaseType: client.databaseType,
560
- useNewNodeSql: true,
561
- tenants,
562
- },
563
- }),
564
- credentials: withCredentials ? 'include' : 'omit',
565
- });
566
- const responseData = (await response.json()).data;
567
- if (responseData) {
568
- return {
569
- ...responseData,
570
- createdAt: responseData.createdAt && new Date(responseData.createdAt),
571
- };
572
- }
558
+ const { data: responseData } = await quillFetchWithToken({
559
+ client,
560
+ task: 'dashboard',
561
+ metadata: {
562
+ name: dashboardName,
563
+ clientId: client.clientId,
564
+ databaseType: client.databaseType,
565
+ useNewNodeSql: true,
566
+ tenants,
567
+ },
568
+ });
569
+ if (responseData) {
570
+ return {
571
+ ...responseData,
572
+ createdAt: responseData.createdAt && new Date(responseData.createdAt),
573
+ dateFilter: responseData.dateFilter
574
+ ? {
575
+ ...responseData.dateFilter,
576
+ presetOptions: responseData.dateFilter.presetOptions?.map((preset) => ({
577
+ ...preset,
578
+ loopStart: preset.loopStart
579
+ ? new Date(preset.loopStart)
580
+ : undefined,
581
+ loopEnd: preset.loopEnd
582
+ ? new Date(preset.loopEnd)
583
+ : undefined,
584
+ })),
585
+ defaultPresetRanges: responseData.dateFilter.defaultPresetRanges?.map((preset) => ({
586
+ ...preset,
587
+ loopStart: preset.loopStart
588
+ ? new Date(preset.loopStart)
589
+ : undefined,
590
+ loopEnd: preset.loopEnd
591
+ ? new Date(preset.loopEnd)
592
+ : undefined,
593
+ })),
594
+ }
595
+ : undefined,
596
+ };
573
597
  }
574
598
  };
575
599
  const pivotFormData = (pivot) => {
@@ -583,21 +607,26 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
583
607
  : false;
584
608
  const chartType = formData?.chartType ?? (pivot.rowField ? 'column' : 'metric');
585
609
  const rowColumn = (selectedPivotTable?.columns ?? columns).find((col) => col.field === pivot.rowField);
586
- const xAxisField = pivot.rowField && !(['metric', 'gauge'].includes(chartType) && !valueFormatter_1.NUMBER_FORMAT_TYPES.includes(rowColumn?.format ?? ''))
610
+ const xAxisField = pivot.rowField &&
611
+ !(['metric', 'gauge'].includes(chartType) &&
612
+ !valueFormatter_1.NUMBER_FORMAT_TYPES.includes(rowColumn?.format ?? ''))
587
613
  ? pivot.rowField
588
614
  : (0, pivotConstructor_1.disambiguatedValueField)(pivot);
589
615
  const result = {
590
616
  pivot,
591
617
  chartType: chartType,
592
618
  xAxisField,
593
- xAxisFormat: chartType === 'gauge' ? 'percent' : chartType === 'metric' ? 'whole_number' :
594
- (0, columnProcessing_1.isDateType)(pivot.rowFieldType ?? '')
595
- ? 'string'
596
- : (0, columnProcessing_1.isNumberType)(pivot.rowFieldType ?? '')
597
- ? 'whole_number'
598
- : (0, columnProcessing_1.isNumberType)((0, pivotConstructor_1.disambiguatedValueField)(pivot) ?? '')
619
+ xAxisFormat: chartType === 'gauge'
620
+ ? 'percent'
621
+ : chartType === 'metric'
622
+ ? 'whole_number'
623
+ : (0, columnProcessing_1.isDateType)(pivot.rowFieldType ?? '')
624
+ ? 'string'
625
+ : (0, columnProcessing_1.isNumberType)(pivot.rowFieldType ?? '')
599
626
  ? 'whole_number'
600
- : 'string',
627
+ : (0, columnProcessing_1.isNumberType)((0, pivotConstructor_1.disambiguatedValueField)(pivot) ?? '')
628
+ ? 'whole_number'
629
+ : 'string',
601
630
  xAxisLabel: report?.xAxisLabel || pivot.rowField,
602
631
  yAxisFields: [
603
632
  {
@@ -614,17 +643,22 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
614
643
  return result;
615
644
  };
616
645
  const getReferencedTables = async (client, sqlQuery, dbTables, skipStar) => {
617
- const resp = await getDataFromCloud(client, `astify`, {
618
- query: sqlQuery,
619
- publicKey: client.publicKey,
620
- useNewNodeSql: true,
646
+ const { data: resp } = await quillFetchWithToken({
647
+ client,
648
+ task: 'astify',
649
+ metadata: {
650
+ query: sqlQuery,
651
+ clientId: client.clientId,
652
+ useNewNodeSql: true,
653
+ },
621
654
  });
622
655
  if (resp.success === false) {
623
656
  return (0, astProcessing_1.getTablesHelper)((0, astProcessing_1.getSelectFromAST)({}), dbTables, skipStar);
624
657
  }
625
658
  return (0, astProcessing_1.getTablesHelper)((0, astProcessing_1.getSelectFromAST)(resp.ast), dbTables, skipStar);
626
659
  };
627
- const formFormDataFromReport = (report) => {
660
+ const getCurrentSection = () => dashboardConfig[destinationDashboard]?.config.sectionOrder?.find((section) => section.reportOrder?.includes(report?.id ?? ''))?.section ?? '';
661
+ const formFormDataFromReport = (report, section) => {
628
662
  // let pivotData = {};
629
663
  let dateField = defaultDateField;
630
664
  // if (report?.pivot) {
@@ -650,9 +684,10 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
650
684
  };
651
685
  })
652
686
  : [],
687
+ section,
653
688
  };
654
689
  };
655
- const [formData, setFormData] = (0, react_1.useState)(formFormDataFromReport(report));
690
+ const [formData, setFormData] = (0, react_1.useState)(formFormDataFromReport(report, getCurrentSection()));
656
691
  const reportCustomFields = (0, react_1.useMemo)(() => {
657
692
  return (report?.columnsWithCustomFields?.filter((col) => !report?.columns?.some((c) => col.field === c.field)) ?? []);
658
693
  }, [report?.columnsWithCustomFields, report?.columns]);
@@ -702,7 +737,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
702
737
  return columns.filter((col) => !columnsObservedInRows.includes(col.field));
703
738
  }, [rows]);
704
739
  const [chartTypes, setChartTypes] = (0, react_1.useState)((() => {
705
- const data = formFormDataFromReport(report);
740
+ const data = formFormDataFromReport(report, getCurrentSection());
706
741
  return getChartTypeOptions(data, dashboardConfig[data.dashboardName || '']);
707
742
  })());
708
743
  const reportContainsCustomFields = (0, react_1.useMemo)(() => {
@@ -775,7 +810,13 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
775
810
  const curFormData = formData;
776
811
  let dashNames = Object.keys(dashboardConfig);
777
812
  if (dashNames.length === 0) {
778
- const resp = await getDataFromCloud(client, `dashnames/${client.publicKey}/`, null, 'GET');
813
+ const { data: resp } = await quillFetchWithToken({
814
+ client,
815
+ task: 'dashnames',
816
+ metadata: {
817
+ clientId: client.clientId,
818
+ },
819
+ });
779
820
  dashNames = resp.dashboardNames;
780
821
  }
781
822
  let dashboardOptions = dashNames
@@ -935,6 +976,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
935
976
  dashboardName: destinationDashboardName,
936
977
  tenants,
937
978
  additionalProcessing: baseProcessing,
979
+ getToken,
938
980
  });
939
981
  setSelectedPivotTable(pivotTable);
940
982
  return pivotTable;
@@ -1009,6 +1051,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1009
1051
  const tableInfo = await (0, tableProcessing_1.fetchResultsByQuery)({
1010
1052
  query,
1011
1053
  client,
1054
+ getToken,
1012
1055
  tenants,
1013
1056
  processing,
1014
1057
  customFields: schemaData.customFields,
@@ -1036,7 +1079,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1036
1079
  }
1037
1080
  return filter;
1038
1081
  });
1039
- loadFiltersForReport(report?.id ?? Report_1.TEMP_REPORT_ID, 'ChartBuilder', updatedFilters, label, undefined, canonicalFilterMap, report?.dashboardName).then(() => {
1082
+ loadFiltersForReport(report?.id ?? Report_1.TEMP_REPORT_ID, 'ChartBuilder', updatedFilters, label, undefined, report?.dashboardName).then(() => {
1040
1083
  setCurrentPage(0);
1041
1084
  setMaxPage(0);
1042
1085
  handleRunQuery(baseProcessing, updatedFilters);
@@ -1072,6 +1115,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1072
1115
  rowCountOnly: false,
1073
1116
  filterMap: canonicalFilterMap,
1074
1117
  dashboardName: destinationDashboardName,
1118
+ getToken,
1075
1119
  });
1076
1120
  setCurrentProcessing(processing);
1077
1121
  setRows(tableInfo.rows);
@@ -1084,6 +1128,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1084
1128
  columns: tableInfo.columns.filter((column) => column.field === formData.pivot?.columnField),
1085
1129
  query: report.queryString,
1086
1130
  client,
1131
+ getToken,
1087
1132
  tenants,
1088
1133
  customFields: schemaData.customFields ?? {},
1089
1134
  filters: overrideFilters,
@@ -1147,6 +1192,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1147
1192
  ? report.comparisonPivotQuery
1148
1193
  : undefined,
1149
1194
  client,
1195
+ getToken,
1150
1196
  tenants,
1151
1197
  processing: updatedProcessing,
1152
1198
  customFields: schemaData.customFields,
@@ -1190,71 +1236,53 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1190
1236
  const handleChange = async (value, fieldName, index) => {
1191
1237
  let updatedForm = { ...formData };
1192
1238
  try {
1193
- // WE NEED TO REPROCESS THE PIVOT TABLE IF THE PIVOT COLUMN CHANGES
1194
- // WE NEED TO UPDATE BOTH VALUEFIELDTYPE AND COLUMN FIELD TYPES
1195
- if (fieldName === 'pivotColumn') {
1196
- // CAN'T EDIT THE TYPE OF THE RowField
1197
- if (index === 0) {
1198
- return;
1199
- }
1200
- const updatedPivot = {
1201
- ...formData.pivot,
1202
- valueFieldType: value,
1203
- };
1204
- // @ts-ignore
1205
- updatedForm.pivot = updatedPivot;
1206
- }
1207
- else if (index !== undefined) {
1239
+ if (index !== undefined) {
1208
1240
  // For dynamic array fields
1209
1241
  const [field, subfield] = fieldName.split('.');
1210
- let newLabel = undefined;
1211
- if (field === 'columns' && subfield === 'field') {
1212
- if (!formData['columns'][index]?.label) {
1242
+ if (field === 'pivot' && !!subfield) {
1243
+ if (!selectedPivotTable) {
1244
+ return;
1245
+ }
1246
+ let newLabel = undefined;
1247
+ if (subfield === 'field') {
1213
1248
  newLabel = (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(value);
1214
1249
  }
1250
+ const newColumns = selectedPivotTable.columns.map((col, i) => i === index
1251
+ ? {
1252
+ ...col,
1253
+ label: newLabel ? newLabel : col.label,
1254
+ [subfield]: value,
1255
+ }
1256
+ : col);
1257
+ setSelectedPivotTable({
1258
+ ...selectedPivotTable,
1259
+ columns: newColumns,
1260
+ });
1215
1261
  }
1216
- // @ts-ignore
1217
- const updatedArray = formData[field].map((item, i) => i === index
1218
- ? {
1219
- ...item,
1220
- label: newLabel ? newLabel : item.label,
1221
- [subfield]: value,
1262
+ else {
1263
+ let newLabel = undefined;
1264
+ if (field === 'columns' && subfield === 'field') {
1265
+ if (!formData['columns'][index]?.label) {
1266
+ newLabel = (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(value);
1267
+ }
1222
1268
  }
1223
- : item);
1224
- updatedForm = { ...formData, [field]: updatedArray };
1225
- setFormData(updatedForm);
1226
- setChartTypes(getChartTypeOptions(updatedForm, dashboardConfig[updatedForm.dashboardName ?? '']));
1269
+ // @ts-ignore
1270
+ const updatedArray = formData[field].map((item, i) => i === index
1271
+ ? {
1272
+ ...item,
1273
+ label: newLabel ? newLabel : item.label,
1274
+ [subfield]: value,
1275
+ }
1276
+ : item);
1277
+ updatedForm = { ...formData, [field]: updatedArray };
1278
+ setFormData(updatedForm);
1279
+ setChartTypes(getChartTypeOptions(updatedForm, dashboardConfig[updatedForm.dashboardName ?? '']));
1280
+ }
1227
1281
  }
1228
1282
  else if (fieldName.includes('.')) {
1229
1283
  // For nested fields
1230
1284
  const [field, subfield] = fieldName.split('.');
1231
- if (field === 'pivot' && subfield !== '') {
1232
- const subfieldTypeFieldName = subfield + 'Type';
1233
- if (value.length) {
1234
- const subFieldType = columns.find((columns) => columns.field === value).fieldType;
1235
- updatedForm = {
1236
- ...updatedForm,
1237
- // @ts-ignore
1238
- [field]: {
1239
- ...updatedForm[field],
1240
- [subfield]: value,
1241
- [subfieldTypeFieldName]: subFieldType,
1242
- },
1243
- };
1244
- }
1245
- else {
1246
- updatedForm = {
1247
- ...formData,
1248
- // @ts-ignore
1249
- [field]: {
1250
- ...formData[field],
1251
- [subfield]: '',
1252
- [subfieldTypeFieldName]: '',
1253
- },
1254
- };
1255
- }
1256
- }
1257
- else if (field === 'dateField' &&
1285
+ if (field === 'dateField' &&
1258
1286
  subfield === 'table' &&
1259
1287
  !formData.dateField?.field) {
1260
1288
  const field = schemaData.schemaWithCustomFields?.find((elem) => elem.name === value)?.columns?.[0]?.field;
@@ -1280,14 +1308,16 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1280
1308
  updatedForm.xAxisFormat = 'whole_number';
1281
1309
  const currentXAxisColumn = (selectedPivotTable?.columns ?? columns).find((c) => c.field === updatedForm.xAxisField);
1282
1310
  if (!valueFormatter_1.NUMBER_FORMAT_TYPES.includes(currentXAxisColumn?.format ?? '')) {
1283
- updatedForm.xAxisField = (selectedPivotTable?.columns ?? columns).find((c) => valueFormatter_1.NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1311
+ updatedForm.xAxisField =
1312
+ (selectedPivotTable?.columns ?? columns).find((c) => valueFormatter_1.NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1284
1313
  }
1285
1314
  }
1286
1315
  else if (value === 'gauge') {
1287
1316
  updatedForm.xAxisFormat = 'percent';
1288
1317
  const currentXAxisColumn = (selectedPivotTable?.columns ?? columns).find((c) => c.field === updatedForm.xAxisField);
1289
1318
  if (!valueFormatter_1.NUMBER_FORMAT_TYPES.includes(currentXAxisColumn?.format ?? '')) {
1290
- updatedForm.xAxisField = (selectedPivotTable?.columns ?? columns).find((c) => valueFormatter_1.NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1319
+ updatedForm.xAxisField =
1320
+ (selectedPivotTable?.columns ?? columns).find((c) => valueFormatter_1.NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1291
1321
  }
1292
1322
  }
1293
1323
  }
@@ -1329,9 +1359,11 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1329
1359
  // This method is *potentially* flawed because it chooses the first matching field it finds
1330
1360
  // which may not be robust to joins, aliases, disambiguations, etc.
1331
1361
  // unfortunately the pivot doesn't store the table of the rowField so we can't do better
1332
- const dateField = pivot.rowField && (0, PivotModal_1.isDateField)(pivot.rowFieldType ?? '') ? dateFieldOptions.find((table) => {
1333
- return table.columns.find((col) => col.field === pivot.rowField);
1334
- }) : undefined;
1362
+ const dateField = pivot.rowField && (0, PivotModal_1.isDateField)(pivot.rowFieldType ?? '')
1363
+ ? dateFieldOptions.find((table) => {
1364
+ return table.columns.find((col) => col.field === pivot.rowField);
1365
+ })
1366
+ : undefined;
1335
1367
  setFormData((formData) => ({
1336
1368
  ...formData,
1337
1369
  ...newPivotFormData,
@@ -1490,6 +1522,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1490
1522
  report: { ...newReport, rows: undefined, pivotRows: undefined }, // stop including rows in request
1491
1523
  dashboardItemId,
1492
1524
  client,
1525
+ getToken,
1493
1526
  });
1494
1527
  if (resp && resp.name !== 'error') {
1495
1528
  const data = {
@@ -1516,6 +1549,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1516
1549
  ...resp,
1517
1550
  rows,
1518
1551
  columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
1552
+ section: formData.section,
1519
1553
  });
1520
1554
  }
1521
1555
  };
@@ -1548,9 +1582,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1548
1582
  height: isHorizontalView || !isOpen ? '100%' : 800,
1549
1583
  ...(isHorizontalView && {
1550
1584
  // flexGrow: 1,
1551
- width: !isOpen
1552
- ? '100%'
1553
- : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
1585
+ width: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
1554
1586
  }),
1555
1587
  ...(!isHorizontalView && isOpen && { width: formWidth }),
1556
1588
  }, children: [!isEditingMode && (report?.adminError || report?.error) ? ((0, jsx_runtime_1.jsx)(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : ((isHorizontalView || (!isOpen && windowWidth > 1200)) && ((0, jsx_runtime_1.jsx)(InternalChart_1.default, { report: chartData, filtersEnabled: filtersEnabled, setFiltersEnabled: (hide) => {
@@ -1564,7 +1596,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1564
1596
  ...(isHorizontalView && {
1565
1597
  flexGrow: !['table'].includes(formData.chartType) ? 1 : 0,
1566
1598
  }),
1567
- }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen }))),
1599
+ }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen, SelectComponent: SelectComponent, MultiSelectComponent: QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, LoadingComponent: LoadingComponent }))),
1568
1600
  // Make sure to display non-pivoted table when using pivot chart
1569
1601
  !hideChartView &&
1570
1602
  (isHorizontalView || (!isOpen && windowWidth < 1200)) && ((0, jsx_runtime_1.jsxs)("div", { style: {
@@ -1647,7 +1679,17 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1647
1679
  }, options: dashboardOptions.map((elem) => ({
1648
1680
  label: elem.label,
1649
1681
  value: elem.label,
1650
- })), width: 200 }) })), hideChartType ? ((0, jsx_runtime_1.jsx)("div", { style: { width: 200 } })) : ((0, jsx_runtime_1.jsx)("div", { ref: selectRef, style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Chart type", value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'), options: chartTypes, width: 200 }) }))] }), hidePivotForm ? null : ((0, jsx_runtime_1.jsxs)("div", { style: {
1682
+ })), width: 200 }) })), hideChartType ? ((0, jsx_runtime_1.jsx)("div", { style: { width: 200 } })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { ref: selectRef, style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Chart type", value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'), options: chartTypes, width: 200 }) }), currentDashboard?.sectionOrder?.some((s) => s.section) && ((0, jsx_runtime_1.jsx)("div", { style: {
1683
+ display: currentDashboard?.sectionOrder?.length
1684
+ ? 'flex'
1685
+ : 'none',
1686
+ flexDirection: 'column',
1687
+ }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Section", value: formData.section ?? '', options: currentDashboard?.sectionOrder?.map((s) => ({
1688
+ label: s.section ? s.section : 'No section',
1689
+ value: s.section,
1690
+ })) ?? [], onChange: (e) => {
1691
+ handleChange(e.target.value ?? '', 'section');
1692
+ }, width: 200, hideEmptyOption: true }) }))] }))] }), hidePivotForm ? null : ((0, jsx_runtime_1.jsxs)("div", { style: {
1651
1693
  display: 'flex',
1652
1694
  flexDirection: 'column',
1653
1695
  gap: 6,
@@ -1656,7 +1698,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1656
1698
  // marginTop: 6,
1657
1699
  display: 'flex',
1658
1700
  flexDirection: 'column',
1659
- }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotAggregations: pivotAggregations, setPivotAggregations: setPivotAggregations, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, 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, dashboardName: destinationDashboardName || '', dateFilter: filtersEnabled
1701
+ }, children: (0, jsx_runtime_1.jsx)(PivotModal_1.PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotAggregations: pivotAggregations, setPivotAggregations: setPivotAggregations, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, 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
1660
1702
  ? currentDashboardFilters?.find((f) => f.filterType === 'date_range')
1661
1703
  : undefined }) }), formData.pivot && ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("div", { style: { width: pivotCardWidth }, children: (0, jsx_runtime_1.jsx)(PivotList_1.PivotCard, { pivotTable: pivotCardTable, theme: theme, index: 0, onSelectPivot: () => {
1662
1704
  setIsEdittingPivot(true);
@@ -1763,25 +1805,16 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1763
1805
  selectedPivotTable.columns &&
1764
1806
  formData.chartType === 'table'
1765
1807
  ? // THIS CASE IF FOR PIVOT TABLES ONLY
1766
- selectedPivotTable.columns.map((column, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
1767
- label: elem.label,
1768
- value: elem.label,
1769
- })), width: 200 }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value:
1808
+ selectedPivotTable.columns.map((column, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'pivot.field', index), options: selectedPivotTable.columns.map((elem) => ({
1809
+ label: elem.field,
1810
+ value: elem.field,
1811
+ })), disabled: index === 0, width: 200, hideEmptyOption: true }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value:
1770
1812
  // The first index use rowField for the rest of them use value fields
1771
- formData.pivot &&
1772
- column.field === formData.pivot.rowField
1773
- ? formData.pivot &&
1774
- (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType || '')
1775
- ? 'string'
1776
- : 'string'
1777
- : formData.pivot?.aggregationType ===
1778
- 'percentage'
1779
- ? 'percent'
1780
- : 'two_decimal_places', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
1813
+ column.format, onChange: (e) => handleChange(e.target.value, 'pivot.format', index), options: formData.pivot && index === 0
1781
1814
  ? (0, PivotModal_1.isDateField)(formData.pivot.rowFieldType || '')
1782
1815
  ? [{ label: 'date', value: 'string' }]
1783
1816
  : [{ label: 'string', value: 'string' }]
1784
- : [...NUMBER_OPTIONS], width: 200 })] }, 'column' + index)))
1817
+ : [...NUMBER_OPTIONS], width: 200, hideEmptyOption: true })] }, 'column' + index)))
1785
1818
  : formData.columns.map((column, index) => ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: rows[0]
1786
1819
  ? Object.keys(rows[0]).map((elem) => ({
1787
1820
  label: elem,
@@ -1790,7 +1823,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1790
1823
  : columns.map((elem) => ({
1791
1824
  label: elem.field,
1792
1825
  value: elem.field,
1793
- })), width: 200 }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: ALL_FORMAT_OPTIONS, width: 200 }), (0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))), (0, jsx_runtime_1.jsx)("div", { children: !(
1826
+ })), width: 200, hideEmptyOption: true }), (0, jsx_runtime_1.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) }), (0, jsx_runtime_1.jsx)(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: ALL_FORMAT_OPTIONS, width: 200, hideEmptyOption: true }), (0, jsx_runtime_1.jsx)("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: (0, jsx_runtime_1.jsx)(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))), (0, jsx_runtime_1.jsx)("div", { children: !(
1794
1827
  // hide when pivoted and chartType === 'table'
1795
1828
  (formData.pivot &&
1796
1829
  selectedPivotTable &&
@@ -1890,7 +1923,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1890
1923
  label: t.label ?? t.flag,
1891
1924
  value: t.flag,
1892
1925
  })) ?? []), width: 200, emptyLabel: dashboardOwner.scope === 'database'
1893
- ? 'No flags supplied'
1926
+ ? 'No tags supplied'
1894
1927
  : undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
1895
1928
  display: customTenantAccess || containsCustomFields
1896
1929
  ? 'inline'
@@ -1914,6 +1947,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1914
1947
  display: 'flex',
1915
1948
  flexDirection: 'column',
1916
1949
  gap: 6,
1950
+ marginBottom: 128,
1917
1951
  }, children: [(0, jsx_runtime_1.jsx)(HeaderComponent, { label: "Dashboard filter fields" }), isAdmin &&
1918
1952
  formData.dateField &&
1919
1953
  dashboardConfig[formData.dashboardName ?? destinationDashboardName ?? '']?.config.dateFilter?.label && ((0, jsx_runtime_1.jsxs)(ChartBuilderInputRowContainer, { children: [(0, jsx_runtime_1.jsx)(TextInputComponent, { id: 'filterMap.dateFilter.' +
@@ -1922,12 +1956,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1922
1956
  ?.config.dateFilter?.label ?? 'Date', width: 200, onChange: () => { }, label: 'Filter', disabled: true }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Virtual Table", value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
1923
1957
  label: elem.name,
1924
1958
  value: elem.name,
1925
- })), width: 200 }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Field", value: (0, textProcessing_1.removeDoubleQuotes)(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
1959
+ })), width: 200, hideEmptyOption: true }) }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column' }, children: (0, jsx_runtime_1.jsx)(SelectComponent, { label: "Field", value: (0, textProcessing_1.removeDoubleQuotes)(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
1926
1960
  ?.find((elem) => elem.name === formData.dateField?.table)
1927
1961
  ?.columns?.map((elem) => ({
1928
1962
  label: elem.field,
1929
1963
  value: elem.field,
1930
- })) || [], width: 200 }) }), (!formData.dateField?.table ||
1964
+ })) || [], width: 200, hideEmptyOption: true }) }), (!formData.dateField?.table ||
1931
1965
  !formData.dateField?.field) && ((0, jsx_runtime_1.jsx)("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: (0, jsx_runtime_1.jsx)(assets_1.ExclamationFilledIcon, { height: 28, width: 28, style: {
1932
1966
  color: '#dc143c',
1933
1967
  } }) }))] })), specificDashboardFilters.length > 0 && ((0, jsx_runtime_1.jsx)("div", { style: {
@@ -1963,7 +1997,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1963
1997
  }), options: allTables.map((elem) => ({
1964
1998
  label: elem,
1965
1999
  value: elem,
1966
- })), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: index === 0 &&
2000
+ })), width: 200, hideEmptyOption: true }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: index === 0 &&
1967
2001
  !(isAdmin &&
1968
2002
  formData.dateField &&
1969
2003
  dashboardConfig[formData.dashboardName ?? '']
@@ -1985,7 +2019,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1985
2019
  .map((elem) => ({
1986
2020
  label: elem.label,
1987
2021
  value: elem.field,
1988
- })) ?? [], width: 200 }), !validFilter[filter.label] && ((0, jsx_runtime_1.jsx)("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: (0, jsx_runtime_1.jsx)(assets_1.ExclamationFilledIcon, { height: 28, width: 28, style: {
2022
+ })) ?? [], width: 200, hideEmptyOption: true }), !validFilter[filter.label] && ((0, jsx_runtime_1.jsx)("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: (0, jsx_runtime_1.jsx)(assets_1.ExclamationFilledIcon, { height: 28, width: 28, style: {
1989
2023
  color: '#dc143c',
1990
2024
  } }) }))] }, filter.label))) }))] })), isAdmin && !tenants && !flags && ((0, jsx_runtime_1.jsxs)("div", { style: {
1991
2025
  display: 'flex',
@@ -27,10 +27,10 @@ export interface ChartEditorProps {
27
27
  /** A callback function triggered when the chart error button is clicked */
28
28
  onClickChartError?: (element: any) => void;
29
29
  /** A callback that is fired when the item is deleted. */
30
- onDelete?: () => boolean;
30
+ onDelete?: () => boolean | Promise<boolean>;
31
31
  /** A select component. */
32
32
  SelectComponent?: (props: {
33
- value: string;
33
+ value: string | null | undefined;
34
34
  label?: string;
35
35
  options: {
36
36
  value: string;