@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
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
3
- import { ClientContext, DashboardConfigContext, DashboardFiltersContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, ThemeContext, } from './Context';
3
+ import { ClientContext, DashboardConfigContext, DashboardFiltersContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, ThemeContext, } from './Context';
4
4
  import { PivotModal, generatePivotTable, isDateField, } from './internals/ReportBuilder/PivotModal';
5
5
  import { PivotCard } from './internals/ReportBuilder/PivotList';
6
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';
@@ -23,7 +23,6 @@ import { shouldFetchMore,
23
23
  import { fetchResultsByQuery, getUniqueValuesByQuery, } from './utils/tableProcessing';
24
24
  import { getDateBucketFromRange } from './utils/dates';
25
25
  import { QuillMultiSelectComponentWithCombo as MultiSelectComponent } from './components/QuillMultiSelectWithCombo';
26
- import { useQuillCloud } from './utils/dataFetcher';
27
26
  import { QuillMultiSelectSectionList } from './components/QuillMultiSelectSectionList';
28
27
  import { ALL_TENANTS, REFERENCE_LINE, SINGLE_TENANT } from './utils/constants';
29
28
  import { disambiguatedValueField } from './utils/pivotConstructor';
@@ -268,7 +267,9 @@ export function ChartBuilderWithModal(props) {
268
267
  return (_jsx("div", { style: { height: '100%' }, ref: parentRef, children: _jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
269
268
  // For isHorizontalView, use full viewport size minus 80px for padding,
270
269
  // otherwise use the default layout method of the modal (contents).
271
- width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (props.reportId ? dashboard[props.reportId] : props.tempReport) ? (_jsx(ChartBuilder, { ...props })) : (_jsx("div", { style: { padding: 20 }, children: _jsx(QuillLoadingComponent, {}) })) }) }));
270
+ width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: (props.reportId
271
+ ? (dashboard[props.reportId] ?? props.tempReport)
272
+ : props.tempReport) ? (_jsx(ChartBuilder, { ...props })) : (_jsx("div", { style: { padding: 20 }, children: _jsx(QuillLoadingComponent, {}) })) }) }));
272
273
  }
273
274
  /**
274
275
  * ### Quill Chart Builder
@@ -302,11 +303,11 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
302
303
  const [client] = useContext(ClientContext);
303
304
  const [theme] = useContext(ThemeContext);
304
305
  const [schemaData] = useContext(SchemaDataContext);
306
+ const { getToken, quillFetchWithToken } = useContext(FetchContext);
305
307
  const { addReport } = useDashboardReports(destinationDashboard);
306
308
  const { allReportsById } = useAllReports();
307
309
  const { dashboardConfig } = useContext(DashboardConfigContext);
308
310
  const { tenants, flags } = useContext(TenantContext);
309
- const { getDataFromCloud } = useQuillCloud();
310
311
  const report = useMemo(() => {
311
312
  return reportId && !tempReport ? allReportsById[reportId] : tempReport;
312
313
  }, [reportId]);
@@ -395,12 +396,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
395
396
  };
396
397
  }, [isOpen]);
397
398
  const [dashboardOptions, setDashboardOptions] = useState([]);
398
- const { reportFilters, loadFiltersForReport, reportFiltersDispatch, abortLoadingFilters } = useContext(ReportFiltersContext);
399
+ const { reportFilters, loadFiltersForReport, reportFiltersDispatch, abortLoadingFilters, } = useContext(ReportFiltersContext);
399
400
  const { reportsDispatch } = useContext(ReportsContext);
400
401
  const initialFilters = useRef(reportFilters[report?.id ?? TEMP_REPORT_ID]);
401
402
  useEffect(() => {
402
403
  if (!reportFilters[report?.id ?? TEMP_REPORT_ID]) {
403
- loadFiltersForReport(report?.id ?? TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, canonicalFilterMap, report?.dashboardName);
404
+ loadFiltersForReport(report?.id ?? TEMP_REPORT_ID, 'ChartBuilder', specificDashboardFilters, undefined, undefined, report?.dashboardName);
404
405
  }
405
406
  return () => {
406
407
  abortLoadingFilters(report?.id ?? tempReport?.id ?? TEMP_REPORT_ID);
@@ -411,6 +412,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
411
412
  data: Object.values(initialFilters.current),
412
413
  });
413
414
  }
415
+ else {
416
+ reportFiltersDispatch({
417
+ type: 'CLEAR_REPORT_FILTERS',
418
+ id: report?.id ?? TEMP_REPORT_ID,
419
+ });
420
+ }
414
421
  };
415
422
  }, []);
416
423
  const currentDashboardFilters = useMemo(() => {
@@ -493,7 +500,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
493
500
  ? Object.fromEntries(Object.entries(report.flags).map(([key, value]) => {
494
501
  if (value === ALL_TENANTS) {
495
502
  const tenantType = client?.allTenantTypes?.find((t) => t.tenantField === key);
496
- return [key, tenantType?.tenantField === SINGLE_TENANT ? tenantType?.flags ?? [] : tenantType?.tenantIds?.map((id) => id.flag) ?? []];
503
+ return [
504
+ key,
505
+ tenantType?.tenantField === SINGLE_TENANT
506
+ ? (tenantType?.flags ?? [])
507
+ : (tenantType?.tenantIds?.map((id) => id.flag) ?? []),
508
+ ];
497
509
  }
498
510
  else {
499
511
  return [key, value];
@@ -508,7 +520,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
508
520
  const formEmptyState = {
509
521
  name: report?.name ?? '',
510
522
  dashboardName: dashboardOptions[0]?.label ?? '',
511
- columns: report?.columns.map((col) => {
523
+ columns: report?.columns?.map((col) => {
512
524
  return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
513
525
  }) ?? [],
514
526
  xAxisField: report?.columns?.[0]?.field ?? '',
@@ -534,33 +546,45 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
534
546
  if (!client) {
535
547
  return;
536
548
  }
537
- const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
538
- if (queryEndpoint) {
539
- const response = await fetch(queryEndpoint, {
540
- method: 'POST',
541
- headers: {
542
- ...queryHeaders,
543
- 'Content-Type': 'application/json',
544
- },
545
- body: JSON.stringify({
546
- metadata: {
547
- task: 'dashboard',
548
- name: dashboardName,
549
- clientId: publicKey,
550
- databaseType: client.databaseType,
551
- useNewNodeSql: true,
552
- tenants,
553
- },
554
- }),
555
- credentials: withCredentials ? 'include' : 'omit',
556
- });
557
- const responseData = (await response.json()).data;
558
- if (responseData) {
559
- return {
560
- ...responseData,
561
- createdAt: responseData.createdAt && new Date(responseData.createdAt),
562
- };
563
- }
549
+ const { data: responseData } = await quillFetchWithToken({
550
+ client,
551
+ task: 'dashboard',
552
+ metadata: {
553
+ name: dashboardName,
554
+ clientId: client.clientId,
555
+ databaseType: client.databaseType,
556
+ useNewNodeSql: true,
557
+ tenants,
558
+ },
559
+ });
560
+ if (responseData) {
561
+ return {
562
+ ...responseData,
563
+ createdAt: responseData.createdAt && new Date(responseData.createdAt),
564
+ dateFilter: responseData.dateFilter
565
+ ? {
566
+ ...responseData.dateFilter,
567
+ presetOptions: responseData.dateFilter.presetOptions?.map((preset) => ({
568
+ ...preset,
569
+ loopStart: preset.loopStart
570
+ ? new Date(preset.loopStart)
571
+ : undefined,
572
+ loopEnd: preset.loopEnd
573
+ ? new Date(preset.loopEnd)
574
+ : undefined,
575
+ })),
576
+ defaultPresetRanges: responseData.dateFilter.defaultPresetRanges?.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
+ }
586
+ : undefined,
587
+ };
564
588
  }
565
589
  };
566
590
  const pivotFormData = (pivot) => {
@@ -574,21 +598,26 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
574
598
  : false;
575
599
  const chartType = formData?.chartType ?? (pivot.rowField ? 'column' : 'metric');
576
600
  const rowColumn = (selectedPivotTable?.columns ?? columns).find((col) => col.field === pivot.rowField);
577
- const xAxisField = pivot.rowField && !(['metric', 'gauge'].includes(chartType) && !NUMBER_FORMAT_TYPES.includes(rowColumn?.format ?? ''))
601
+ const xAxisField = pivot.rowField &&
602
+ !(['metric', 'gauge'].includes(chartType) &&
603
+ !NUMBER_FORMAT_TYPES.includes(rowColumn?.format ?? ''))
578
604
  ? pivot.rowField
579
605
  : disambiguatedValueField(pivot);
580
606
  const result = {
581
607
  pivot,
582
608
  chartType: chartType,
583
609
  xAxisField,
584
- xAxisFormat: chartType === 'gauge' ? 'percent' : chartType === 'metric' ? 'whole_number' :
585
- isDateType(pivot.rowFieldType ?? '')
586
- ? 'string'
587
- : isNumberType(pivot.rowFieldType ?? '')
588
- ? 'whole_number'
589
- : isNumberType(disambiguatedValueField(pivot) ?? '')
610
+ xAxisFormat: chartType === 'gauge'
611
+ ? 'percent'
612
+ : chartType === 'metric'
613
+ ? 'whole_number'
614
+ : isDateType(pivot.rowFieldType ?? '')
615
+ ? 'string'
616
+ : isNumberType(pivot.rowFieldType ?? '')
590
617
  ? 'whole_number'
591
- : 'string',
618
+ : isNumberType(disambiguatedValueField(pivot) ?? '')
619
+ ? 'whole_number'
620
+ : 'string',
592
621
  xAxisLabel: report?.xAxisLabel || pivot.rowField,
593
622
  yAxisFields: [
594
623
  {
@@ -605,17 +634,22 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
605
634
  return result;
606
635
  };
607
636
  const getReferencedTables = async (client, sqlQuery, dbTables, skipStar) => {
608
- const resp = await getDataFromCloud(client, `astify`, {
609
- query: sqlQuery,
610
- publicKey: client.publicKey,
611
- useNewNodeSql: true,
637
+ const { data: resp } = await quillFetchWithToken({
638
+ client,
639
+ task: 'astify',
640
+ metadata: {
641
+ query: sqlQuery,
642
+ clientId: client.clientId,
643
+ useNewNodeSql: true,
644
+ },
612
645
  });
613
646
  if (resp.success === false) {
614
647
  return getTablesHelper(getSelectFromAST({}), dbTables, skipStar);
615
648
  }
616
649
  return getTablesHelper(getSelectFromAST(resp.ast), dbTables, skipStar);
617
650
  };
618
- const formFormDataFromReport = (report) => {
651
+ const getCurrentSection = () => dashboardConfig[destinationDashboard]?.config.sectionOrder?.find((section) => section.reportOrder?.includes(report?.id ?? ''))?.section ?? '';
652
+ const formFormDataFromReport = (report, section) => {
619
653
  // let pivotData = {};
620
654
  let dateField = defaultDateField;
621
655
  // if (report?.pivot) {
@@ -641,9 +675,10 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
641
675
  };
642
676
  })
643
677
  : [],
678
+ section,
644
679
  };
645
680
  };
646
- const [formData, setFormData] = useState(formFormDataFromReport(report));
681
+ const [formData, setFormData] = useState(formFormDataFromReport(report, getCurrentSection()));
647
682
  const reportCustomFields = useMemo(() => {
648
683
  return (report?.columnsWithCustomFields?.filter((col) => !report?.columns?.some((c) => col.field === c.field)) ?? []);
649
684
  }, [report?.columnsWithCustomFields, report?.columns]);
@@ -693,7 +728,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
693
728
  return columns.filter((col) => !columnsObservedInRows.includes(col.field));
694
729
  }, [rows]);
695
730
  const [chartTypes, setChartTypes] = useState((() => {
696
- const data = formFormDataFromReport(report);
731
+ const data = formFormDataFromReport(report, getCurrentSection());
697
732
  return getChartTypeOptions(data, dashboardConfig[data.dashboardName || '']);
698
733
  })());
699
734
  const reportContainsCustomFields = useMemo(() => {
@@ -766,7 +801,13 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
766
801
  const curFormData = formData;
767
802
  let dashNames = Object.keys(dashboardConfig);
768
803
  if (dashNames.length === 0) {
769
- const resp = await getDataFromCloud(client, `dashnames/${client.publicKey}/`, null, 'GET');
804
+ const { data: resp } = await quillFetchWithToken({
805
+ client,
806
+ task: 'dashnames',
807
+ metadata: {
808
+ clientId: client.clientId,
809
+ },
810
+ });
770
811
  dashNames = resp.dashboardNames;
771
812
  }
772
813
  let dashboardOptions = dashNames
@@ -926,6 +967,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
926
967
  dashboardName: destinationDashboardName,
927
968
  tenants,
928
969
  additionalProcessing: baseProcessing,
970
+ getToken,
929
971
  });
930
972
  setSelectedPivotTable(pivotTable);
931
973
  return pivotTable;
@@ -1000,6 +1042,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1000
1042
  const tableInfo = await fetchResultsByQuery({
1001
1043
  query,
1002
1044
  client,
1045
+ getToken,
1003
1046
  tenants,
1004
1047
  processing,
1005
1048
  customFields: schemaData.customFields,
@@ -1027,7 +1070,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1027
1070
  }
1028
1071
  return filter;
1029
1072
  });
1030
- loadFiltersForReport(report?.id ?? TEMP_REPORT_ID, 'ChartBuilder', updatedFilters, label, undefined, canonicalFilterMap, report?.dashboardName).then(() => {
1073
+ loadFiltersForReport(report?.id ?? TEMP_REPORT_ID, 'ChartBuilder', updatedFilters, label, undefined, report?.dashboardName).then(() => {
1031
1074
  setCurrentPage(0);
1032
1075
  setMaxPage(0);
1033
1076
  handleRunQuery(baseProcessing, updatedFilters);
@@ -1063,6 +1106,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1063
1106
  rowCountOnly: false,
1064
1107
  filterMap: canonicalFilterMap,
1065
1108
  dashboardName: destinationDashboardName,
1109
+ getToken,
1066
1110
  });
1067
1111
  setCurrentProcessing(processing);
1068
1112
  setRows(tableInfo.rows);
@@ -1075,6 +1119,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1075
1119
  columns: tableInfo.columns.filter((column) => column.field === formData.pivot?.columnField),
1076
1120
  query: report.queryString,
1077
1121
  client,
1122
+ getToken,
1078
1123
  tenants,
1079
1124
  customFields: schemaData.customFields ?? {},
1080
1125
  filters: overrideFilters,
@@ -1138,6 +1183,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1138
1183
  ? report.comparisonPivotQuery
1139
1184
  : undefined,
1140
1185
  client,
1186
+ getToken,
1141
1187
  tenants,
1142
1188
  processing: updatedProcessing,
1143
1189
  customFields: schemaData.customFields,
@@ -1181,71 +1227,53 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1181
1227
  const handleChange = async (value, fieldName, index) => {
1182
1228
  let updatedForm = { ...formData };
1183
1229
  try {
1184
- // WE NEED TO REPROCESS THE PIVOT TABLE IF THE PIVOT COLUMN CHANGES
1185
- // WE NEED TO UPDATE BOTH VALUEFIELDTYPE AND COLUMN FIELD TYPES
1186
- if (fieldName === 'pivotColumn') {
1187
- // CAN'T EDIT THE TYPE OF THE RowField
1188
- if (index === 0) {
1189
- return;
1190
- }
1191
- const updatedPivot = {
1192
- ...formData.pivot,
1193
- valueFieldType: value,
1194
- };
1195
- // @ts-ignore
1196
- updatedForm.pivot = updatedPivot;
1197
- }
1198
- else if (index !== undefined) {
1230
+ if (index !== undefined) {
1199
1231
  // For dynamic array fields
1200
1232
  const [field, subfield] = fieldName.split('.');
1201
- let newLabel = undefined;
1202
- if (field === 'columns' && subfield === 'field') {
1203
- if (!formData['columns'][index]?.label) {
1233
+ if (field === 'pivot' && !!subfield) {
1234
+ if (!selectedPivotTable) {
1235
+ return;
1236
+ }
1237
+ let newLabel = undefined;
1238
+ if (subfield === 'field') {
1204
1239
  newLabel = snakeAndCamelCaseToTitleCase(value);
1205
1240
  }
1241
+ const newColumns = selectedPivotTable.columns.map((col, i) => i === index
1242
+ ? {
1243
+ ...col,
1244
+ label: newLabel ? newLabel : col.label,
1245
+ [subfield]: value,
1246
+ }
1247
+ : col);
1248
+ setSelectedPivotTable({
1249
+ ...selectedPivotTable,
1250
+ columns: newColumns,
1251
+ });
1206
1252
  }
1207
- // @ts-ignore
1208
- const updatedArray = formData[field].map((item, i) => i === index
1209
- ? {
1210
- ...item,
1211
- label: newLabel ? newLabel : item.label,
1212
- [subfield]: value,
1253
+ else {
1254
+ let newLabel = undefined;
1255
+ if (field === 'columns' && subfield === 'field') {
1256
+ if (!formData['columns'][index]?.label) {
1257
+ newLabel = snakeAndCamelCaseToTitleCase(value);
1258
+ }
1213
1259
  }
1214
- : item);
1215
- updatedForm = { ...formData, [field]: updatedArray };
1216
- setFormData(updatedForm);
1217
- setChartTypes(getChartTypeOptions(updatedForm, dashboardConfig[updatedForm.dashboardName ?? '']));
1260
+ // @ts-ignore
1261
+ const updatedArray = formData[field].map((item, i) => i === index
1262
+ ? {
1263
+ ...item,
1264
+ label: newLabel ? newLabel : item.label,
1265
+ [subfield]: value,
1266
+ }
1267
+ : item);
1268
+ updatedForm = { ...formData, [field]: updatedArray };
1269
+ setFormData(updatedForm);
1270
+ setChartTypes(getChartTypeOptions(updatedForm, dashboardConfig[updatedForm.dashboardName ?? '']));
1271
+ }
1218
1272
  }
1219
1273
  else if (fieldName.includes('.')) {
1220
1274
  // For nested fields
1221
1275
  const [field, subfield] = fieldName.split('.');
1222
- if (field === 'pivot' && subfield !== '') {
1223
- const subfieldTypeFieldName = subfield + 'Type';
1224
- if (value.length) {
1225
- const subFieldType = columns.find((columns) => columns.field === value).fieldType;
1226
- updatedForm = {
1227
- ...updatedForm,
1228
- // @ts-ignore
1229
- [field]: {
1230
- ...updatedForm[field],
1231
- [subfield]: value,
1232
- [subfieldTypeFieldName]: subFieldType,
1233
- },
1234
- };
1235
- }
1236
- else {
1237
- updatedForm = {
1238
- ...formData,
1239
- // @ts-ignore
1240
- [field]: {
1241
- ...formData[field],
1242
- [subfield]: '',
1243
- [subfieldTypeFieldName]: '',
1244
- },
1245
- };
1246
- }
1247
- }
1248
- else if (field === 'dateField' &&
1276
+ if (field === 'dateField' &&
1249
1277
  subfield === 'table' &&
1250
1278
  !formData.dateField?.field) {
1251
1279
  const field = schemaData.schemaWithCustomFields?.find((elem) => elem.name === value)?.columns?.[0]?.field;
@@ -1271,14 +1299,16 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1271
1299
  updatedForm.xAxisFormat = 'whole_number';
1272
1300
  const currentXAxisColumn = (selectedPivotTable?.columns ?? columns).find((c) => c.field === updatedForm.xAxisField);
1273
1301
  if (!NUMBER_FORMAT_TYPES.includes(currentXAxisColumn?.format ?? '')) {
1274
- updatedForm.xAxisField = (selectedPivotTable?.columns ?? columns).find((c) => NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1302
+ updatedForm.xAxisField =
1303
+ (selectedPivotTable?.columns ?? columns).find((c) => NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1275
1304
  }
1276
1305
  }
1277
1306
  else if (value === 'gauge') {
1278
1307
  updatedForm.xAxisFormat = 'percent';
1279
1308
  const currentXAxisColumn = (selectedPivotTable?.columns ?? columns).find((c) => c.field === updatedForm.xAxisField);
1280
1309
  if (!NUMBER_FORMAT_TYPES.includes(currentXAxisColumn?.format ?? '')) {
1281
- updatedForm.xAxisField = (selectedPivotTable?.columns ?? columns).find((c) => NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1310
+ updatedForm.xAxisField =
1311
+ (selectedPivotTable?.columns ?? columns).find((c) => NUMBER_FORMAT_TYPES.includes(c.format))?.field ?? updatedForm.xAxisField;
1282
1312
  }
1283
1313
  }
1284
1314
  }
@@ -1320,9 +1350,11 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1320
1350
  // This method is *potentially* flawed because it chooses the first matching field it finds
1321
1351
  // which may not be robust to joins, aliases, disambiguations, etc.
1322
1352
  // unfortunately the pivot doesn't store the table of the rowField so we can't do better
1323
- const dateField = pivot.rowField && isDateField(pivot.rowFieldType ?? '') ? dateFieldOptions.find((table) => {
1324
- return table.columns.find((col) => col.field === pivot.rowField);
1325
- }) : undefined;
1353
+ const dateField = pivot.rowField && isDateField(pivot.rowFieldType ?? '')
1354
+ ? dateFieldOptions.find((table) => {
1355
+ return table.columns.find((col) => col.field === pivot.rowField);
1356
+ })
1357
+ : undefined;
1326
1358
  setFormData((formData) => ({
1327
1359
  ...formData,
1328
1360
  ...newPivotFormData,
@@ -1481,6 +1513,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1481
1513
  report: { ...newReport, rows: undefined, pivotRows: undefined }, // stop including rows in request
1482
1514
  dashboardItemId,
1483
1515
  client,
1516
+ getToken,
1484
1517
  });
1485
1518
  if (resp && resp.name !== 'error') {
1486
1519
  const data = {
@@ -1507,6 +1540,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1507
1540
  ...resp,
1508
1541
  rows,
1509
1542
  columns: formData.columns.filter((col) => !invalidColumns.includes(col)),
1543
+ section: formData.section,
1510
1544
  });
1511
1545
  }
1512
1546
  };
@@ -1539,9 +1573,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1539
1573
  height: isHorizontalView || !isOpen ? '100%' : 800,
1540
1574
  ...(isHorizontalView && {
1541
1575
  // flexGrow: 1,
1542
- width: !isOpen
1543
- ? '100%'
1544
- : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
1576
+ width: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
1545
1577
  }),
1546
1578
  ...(!isHorizontalView && isOpen && { width: formWidth }),
1547
1579
  }, 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) => {
@@ -1555,7 +1587,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1555
1587
  ...(isHorizontalView && {
1556
1588
  flexGrow: !['table'].includes(formData.chartType) ? 1 : 0,
1557
1589
  }),
1558
- }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen }))),
1590
+ }, onClickChartElement: onClickChartElement, filterToggleDisabled: Object.values(validFilter).includes(false), onDashboardFilterChange: onDashboardFilterChange, layoutChanged: isOpen, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, LoadingComponent: LoadingComponent }))),
1559
1591
  // Make sure to display non-pivoted table when using pivot chart
1560
1592
  !hideChartView &&
1561
1593
  (isHorizontalView || (!isOpen && windowWidth < 1200)) && (_jsxs("div", { style: {
@@ -1638,7 +1670,17 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1638
1670
  }, options: dashboardOptions.map((elem) => ({
1639
1671
  label: elem.label,
1640
1672
  value: elem.label,
1641
- })), width: 200 }) })), hideChartType ? (_jsx("div", { style: { width: 200 } })) : (_jsx("div", { ref: selectRef, style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Chart type", value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'), options: chartTypes, width: 200 }) }))] }), hidePivotForm ? null : (_jsxs("div", { style: {
1673
+ })), 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 }) }), currentDashboard?.sectionOrder?.some((s) => s.section) && (_jsx("div", { style: {
1674
+ display: currentDashboard?.sectionOrder?.length
1675
+ ? 'flex'
1676
+ : 'none',
1677
+ flexDirection: 'column',
1678
+ }, children: _jsx(SelectComponent, { label: "Section", value: formData.section ?? '', options: currentDashboard?.sectionOrder?.map((s) => ({
1679
+ label: s.section ? s.section : 'No section',
1680
+ value: s.section,
1681
+ })) ?? [], onChange: (e) => {
1682
+ handleChange(e.target.value ?? '', 'section');
1683
+ }, width: 200, hideEmptyOption: true }) }))] }))] }), hidePivotForm ? null : (_jsxs("div", { style: {
1642
1684
  display: 'flex',
1643
1685
  flexDirection: 'column',
1644
1686
  gap: 6,
@@ -1647,7 +1689,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1647
1689
  // marginTop: 6,
1648
1690
  display: 'flex',
1649
1691
  flexDirection: 'column',
1650
- }, children: _jsx(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
1692
+ }, children: _jsx(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
1651
1693
  ? currentDashboardFilters?.find((f) => f.filterType === 'date_range')
1652
1694
  : undefined }) }), formData.pivot && (_jsx("div", { children: _jsx("div", { style: { width: pivotCardWidth }, children: _jsx(PivotCard, { pivotTable: pivotCardTable, theme: theme, index: 0, onSelectPivot: () => {
1653
1695
  setIsEdittingPivot(true);
@@ -1754,25 +1796,16 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1754
1796
  selectedPivotTable.columns &&
1755
1797
  formData.chartType === 'table'
1756
1798
  ? // THIS CASE IF FOR PIVOT TABLES ONLY
1757
- selectedPivotTable.columns.map((column, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
1758
- label: elem.label,
1759
- value: elem.label,
1760
- })), width: 200 }), _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:
1799
+ 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) => ({
1800
+ label: elem.field,
1801
+ value: elem.field,
1802
+ })), 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:
1761
1803
  // The first index use rowField for the rest of them use value fields
1762
- formData.pivot &&
1763
- column.field === formData.pivot.rowField
1764
- ? formData.pivot &&
1765
- isDateField(formData.pivot.rowFieldType || '')
1766
- ? 'string'
1767
- : 'string'
1768
- : formData.pivot?.aggregationType ===
1769
- 'percentage'
1770
- ? 'percent'
1771
- : 'two_decimal_places', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
1804
+ column.format, onChange: (e) => handleChange(e.target.value, 'pivot.format', index), options: formData.pivot && index === 0
1772
1805
  ? isDateField(formData.pivot.rowFieldType || '')
1773
1806
  ? [{ label: 'date', value: 'string' }]
1774
1807
  : [{ label: 'string', value: 'string' }]
1775
- : [...NUMBER_OPTIONS], width: 200 })] }, 'column' + index)))
1808
+ : [...NUMBER_OPTIONS], width: 200, hideEmptyOption: true })] }, 'column' + index)))
1776
1809
  : 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]
1777
1810
  ? Object.keys(rows[0]).map((elem) => ({
1778
1811
  label: elem,
@@ -1781,7 +1814,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1781
1814
  : columns.map((elem) => ({
1782
1815
  label: elem.field,
1783
1816
  value: elem.field,
1784
- })), width: 200 }), _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 }), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))), _jsx("div", { children: !(
1817
+ })), 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: !(
1785
1818
  // hide when pivoted and chartType === 'table'
1786
1819
  (formData.pivot &&
1787
1820
  selectedPivotTable &&
@@ -1881,7 +1914,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1881
1914
  label: t.label ?? t.flag,
1882
1915
  value: t.flag,
1883
1916
  })) ?? []), width: 200, emptyLabel: dashboardOwner.scope === 'database'
1884
- ? 'No flags supplied'
1917
+ ? 'No tags supplied'
1885
1918
  : undefined, allSelectedLabel: 'All ' + dashboardOwner.name + 's', style: {
1886
1919
  display: customTenantAccess || containsCustomFields
1887
1920
  ? 'inline'
@@ -1905,6 +1938,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1905
1938
  display: 'flex',
1906
1939
  flexDirection: 'column',
1907
1940
  gap: 6,
1941
+ marginBottom: 128,
1908
1942
  }, children: [_jsx(HeaderComponent, { label: "Dashboard filter fields" }), isAdmin &&
1909
1943
  formData.dateField &&
1910
1944
  dashboardConfig[formData.dashboardName ?? destinationDashboardName ?? '']?.config.dateFilter?.label && (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(TextInputComponent, { id: 'filterMap.dateFilter.' +
@@ -1913,12 +1947,12 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1913
1947
  ?.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) => ({
1914
1948
  label: elem.name,
1915
1949
  value: elem.name,
1916
- })), width: 200 }) }), _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
1950
+ })), 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
1917
1951
  ?.find((elem) => elem.name === formData.dateField?.table)
1918
1952
  ?.columns?.map((elem) => ({
1919
1953
  label: elem.field,
1920
1954
  value: elem.field,
1921
- })) || [], width: 200 }) }), (!formData.dateField?.table ||
1955
+ })) || [], width: 200, hideEmptyOption: true }) }), (!formData.dateField?.table ||
1922
1956
  !formData.dateField?.field) && (_jsx("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: _jsx(ExclamationFilledIcon, { height: 28, width: 28, style: {
1923
1957
  color: '#dc143c',
1924
1958
  } }) }))] })), specificDashboardFilters.length > 0 && (_jsx("div", { style: {
@@ -1954,7 +1988,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1954
1988
  }), options: allTables.map((elem) => ({
1955
1989
  label: elem,
1956
1990
  value: elem,
1957
- })), width: 200 }), _jsx(SelectComponent, { label: index === 0 &&
1991
+ })), width: 200, hideEmptyOption: true }), _jsx(SelectComponent, { label: index === 0 &&
1958
1992
  !(isAdmin &&
1959
1993
  formData.dateField &&
1960
1994
  dashboardConfig[formData.dashboardName ?? '']
@@ -1976,7 +2010,7 @@ destinationDashboard, onClickChartElement, isEditingMode = false, disableSort =
1976
2010
  .map((elem) => ({
1977
2011
  label: elem.label,
1978
2012
  value: elem.field,
1979
- })) ?? [], width: 200 }), !validFilter[filter.label] && (_jsx("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: _jsx(ExclamationFilledIcon, { height: 28, width: 28, style: {
2013
+ })) ?? [], width: 200, hideEmptyOption: true }), !validFilter[filter.label] && (_jsx("div", { style: { marginBottom: 8, marginTop: 'auto' }, children: _jsx(ExclamationFilledIcon, { height: 28, width: 28, style: {
1980
2014
  color: '#dc143c',
1981
2015
  } }) }))] }, filter.label))) }))] })), isAdmin && !tenants && !flags && (_jsxs("div", { style: {
1982
2016
  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;