@quillsql/react 2.12.52 → 2.12.53

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 (243) hide show
  1. package/dist/cjs/Chart.js +1 -1
  2. package/dist/cjs/ChartBuilder.d.ts +7 -3
  3. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  4. package/dist/cjs/ChartBuilder.js +54 -18
  5. package/dist/cjs/ChartEditor.d.ts +3 -1
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +42 -7
  8. package/dist/cjs/Context.d.ts +4 -5
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +22 -34
  11. package/dist/cjs/Dashboard.d.ts +4 -3
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +24 -29
  14. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +8 -10
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
  17. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  18. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
  19. package/dist/cjs/QuillProvider.js +1 -1
  20. package/dist/cjs/ReportBuilder.d.ts +8 -12
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +157 -83
  23. package/dist/cjs/SQLEditor.d.ts +8 -1
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +80 -28
  26. package/dist/cjs/Table.js +1 -1
  27. package/dist/cjs/assets/AdjustmentsIcon.d.ts +5 -0
  28. package/dist/cjs/assets/AdjustmentsIcon.d.ts.map +1 -0
  29. package/dist/cjs/assets/AdjustmentsIcon.js +5 -0
  30. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  31. package/dist/cjs/components/Chart/ChartError.js +2 -2
  32. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +2 -2
  33. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  34. package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -6
  35. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +2 -2
  36. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  37. package/dist/cjs/components/Dashboard/DataLoader.d.ts +5 -1
  38. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  39. package/dist/cjs/components/Dashboard/DataLoader.js +23 -4
  40. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  41. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  42. package/dist/cjs/components/Dashboard/TableComponent.js +2 -2
  43. package/dist/cjs/components/Dashboard/util.d.ts +2 -2
  44. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  45. package/dist/cjs/components/Dashboard/util.js +2 -2
  46. package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
  47. package/dist/cjs/components/QuillMultiSelect.js +18 -13
  48. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  49. package/dist/cjs/components/QuillMultiSelectWithCombo.js +67 -45
  50. package/dist/cjs/components/QuillSelect.d.ts +1 -1
  51. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  52. package/dist/cjs/components/QuillSelect.js +28 -6
  53. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  54. package/dist/cjs/components/QuillSelectWithCombo.js +45 -24
  55. package/dist/cjs/components/QuillTable.d.ts +2 -1
  56. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  57. package/dist/cjs/components/QuillTable.js +7 -4
  58. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
  59. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  60. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
  61. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +2 -1
  62. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  63. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
  64. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +2 -1
  65. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  66. package/dist/cjs/components/ReportBuilder/FilterModal.js +17 -4
  67. package/dist/cjs/components/ReportBuilder/ui.d.ts +13 -7
  68. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  69. package/dist/cjs/components/ReportBuilder/ui.js +14 -11
  70. package/dist/cjs/components/UiComponents.d.ts +15 -8
  71. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  72. package/dist/cjs/components/UiComponents.js +29 -23
  73. package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -2
  74. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
  75. package/dist/cjs/hooks/useDashboard.d.ts +9 -4
  76. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  77. package/dist/cjs/hooks/useDashboard.js +61 -38
  78. package/dist/cjs/hooks/useExport.js +1 -1
  79. package/dist/cjs/hooks/useQuill.js +2 -2
  80. package/dist/cjs/hooks/useVirtualTables.d.ts +12 -3
  81. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  82. package/dist/cjs/hooks/useVirtualTables.js +105 -1
  83. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -1
  84. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  85. package/dist/cjs/internals/ReportBuilder/PivotForm.js +9 -9
  86. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  87. package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -15
  88. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +3 -2
  89. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  90. package/dist/cjs/internals/ReportBuilder/PivotModal.js +9 -9
  91. package/dist/cjs/models/Client.d.ts +10 -2
  92. package/dist/cjs/models/Client.d.ts.map +1 -1
  93. package/dist/cjs/utils/astProcessing.d.ts +3 -3
  94. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/client.d.ts.map +1 -1
  96. package/dist/cjs/utils/client.js +2 -7
  97. package/dist/cjs/utils/dashboard.d.ts +5 -5
  98. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  99. package/dist/cjs/utils/dashboard.js +87 -7
  100. package/dist/cjs/utils/dataFetcher.d.ts +4 -4
  101. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  102. package/dist/cjs/utils/dataFetcher.js +1 -1
  103. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  104. package/dist/cjs/utils/filterProcessing.js +2 -8
  105. package/dist/cjs/utils/paginationProcessing.js +1 -1
  106. package/dist/cjs/utils/pivotConstructor.d.ts +2 -2
  107. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  108. package/dist/cjs/utils/pivotConstructor.js +1 -1
  109. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  110. package/dist/cjs/utils/pivotProcessing.js +6 -2
  111. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  112. package/dist/cjs/utils/queryConstructor.js +12 -9
  113. package/dist/cjs/utils/report.d.ts +6 -5
  114. package/dist/cjs/utils/report.d.ts.map +1 -1
  115. package/dist/cjs/utils/report.js +69 -24
  116. package/dist/cjs/utils/schema.d.ts +3 -3
  117. package/dist/cjs/utils/schema.d.ts.map +1 -1
  118. package/dist/cjs/utils/schema.js +39 -35
  119. package/dist/cjs/utils/tableProcessing.d.ts +17 -10
  120. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  121. package/dist/cjs/utils/tableProcessing.js +42 -23
  122. package/dist/esm/Chart.js +2 -2
  123. package/dist/esm/ChartBuilder.d.ts +7 -3
  124. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  125. package/dist/esm/ChartBuilder.js +51 -18
  126. package/dist/esm/ChartEditor.d.ts +3 -1
  127. package/dist/esm/ChartEditor.d.ts.map +1 -1
  128. package/dist/esm/ChartEditor.js +43 -8
  129. package/dist/esm/Context.d.ts +4 -5
  130. package/dist/esm/Context.d.ts.map +1 -1
  131. package/dist/esm/Context.js +23 -35
  132. package/dist/esm/Dashboard.d.ts +4 -3
  133. package/dist/esm/Dashboard.d.ts.map +1 -1
  134. package/dist/esm/Dashboard.js +24 -29
  135. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  136. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +8 -10
  137. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
  138. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  139. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  140. package/dist/esm/QuillProvider.js +1 -1
  141. package/dist/esm/ReportBuilder.d.ts +8 -12
  142. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  143. package/dist/esm/ReportBuilder.js +160 -86
  144. package/dist/esm/SQLEditor.d.ts +8 -1
  145. package/dist/esm/SQLEditor.d.ts.map +1 -1
  146. package/dist/esm/SQLEditor.js +83 -31
  147. package/dist/esm/Table.js +2 -2
  148. package/dist/esm/assets/AdjustmentsIcon.d.ts +5 -0
  149. package/dist/esm/assets/AdjustmentsIcon.d.ts.map +1 -0
  150. package/dist/esm/assets/AdjustmentsIcon.js +3 -0
  151. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  152. package/dist/esm/components/Chart/ChartError.js +2 -2
  153. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +2 -2
  154. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  155. package/dist/esm/components/Dashboard/DashboardFilter.js +6 -6
  156. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +2 -2
  157. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  158. package/dist/esm/components/Dashboard/DataLoader.d.ts +5 -1
  159. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  160. package/dist/esm/components/Dashboard/DataLoader.js +25 -6
  161. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  162. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  163. package/dist/esm/components/Dashboard/TableComponent.js +2 -2
  164. package/dist/esm/components/Dashboard/util.d.ts +2 -2
  165. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  166. package/dist/esm/components/Dashboard/util.js +2 -2
  167. package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
  168. package/dist/esm/components/QuillMultiSelect.js +19 -14
  169. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  170. package/dist/esm/components/QuillMultiSelectWithCombo.js +68 -46
  171. package/dist/esm/components/QuillSelect.d.ts +1 -1
  172. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  173. package/dist/esm/components/QuillSelect.js +29 -7
  174. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  175. package/dist/esm/components/QuillSelectWithCombo.js +46 -25
  176. package/dist/esm/components/QuillTable.d.ts +2 -1
  177. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  178. package/dist/esm/components/QuillTable.js +7 -4
  179. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
  180. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
  182. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +2 -1
  183. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  184. package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -2
  185. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +2 -1
  186. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/FilterModal.js +17 -4
  188. package/dist/esm/components/ReportBuilder/ui.d.ts +13 -7
  189. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  190. package/dist/esm/components/ReportBuilder/ui.js +14 -11
  191. package/dist/esm/components/UiComponents.d.ts +15 -8
  192. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  193. package/dist/esm/components/UiComponents.js +29 -23
  194. package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -2
  195. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
  196. package/dist/esm/hooks/useDashboard.d.ts +9 -4
  197. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  198. package/dist/esm/hooks/useDashboard.js +62 -39
  199. package/dist/esm/hooks/useExport.js +1 -1
  200. package/dist/esm/hooks/useQuill.js +3 -3
  201. package/dist/esm/hooks/useVirtualTables.d.ts +12 -3
  202. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  203. package/dist/esm/hooks/useVirtualTables.js +106 -2
  204. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -1
  205. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  206. package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -9
  207. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  208. package/dist/esm/internals/ReportBuilder/PivotList.js +21 -15
  209. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +3 -2
  210. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  211. package/dist/esm/internals/ReportBuilder/PivotModal.js +9 -9
  212. package/dist/esm/models/Client.d.ts +10 -2
  213. package/dist/esm/models/Client.d.ts.map +1 -1
  214. package/dist/esm/utils/astProcessing.d.ts +3 -3
  215. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  216. package/dist/esm/utils/client.d.ts.map +1 -1
  217. package/dist/esm/utils/client.js +2 -7
  218. package/dist/esm/utils/dashboard.d.ts +5 -5
  219. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  220. package/dist/esm/utils/dashboard.js +87 -7
  221. package/dist/esm/utils/dataFetcher.d.ts +4 -4
  222. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  223. package/dist/esm/utils/dataFetcher.js +1 -1
  224. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  225. package/dist/esm/utils/filterProcessing.js +2 -8
  226. package/dist/esm/utils/paginationProcessing.js +1 -1
  227. package/dist/esm/utils/pivotConstructor.d.ts +2 -2
  228. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  229. package/dist/esm/utils/pivotConstructor.js +1 -1
  230. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  231. package/dist/esm/utils/pivotProcessing.js +6 -2
  232. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  233. package/dist/esm/utils/queryConstructor.js +12 -9
  234. package/dist/esm/utils/report.d.ts +6 -5
  235. package/dist/esm/utils/report.d.ts.map +1 -1
  236. package/dist/esm/utils/report.js +68 -24
  237. package/dist/esm/utils/schema.d.ts +3 -3
  238. package/dist/esm/utils/schema.d.ts.map +1 -1
  239. package/dist/esm/utils/schema.js +39 -35
  240. package/dist/esm/utils/tableProcessing.d.ts +17 -10
  241. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  242. package/dist/esm/utils/tableProcessing.js +39 -20
  243. package/package.json +1 -1
@@ -4,7 +4,7 @@ import { DEFAULT_TAB_OPTIONS, MemoizedButton, MemoizedDeleteButton, MemoizedHead
4
4
  import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
5
5
  import { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy, useSortable, } from '@dnd-kit/sortable';
6
6
  import { CSS as DND_CSS } from '@dnd-kit/utilities';
7
- import { ClientContext, DashboardContext, SchemaDataContext, ThemeContext, } from './Context';
7
+ import { ClientContext, DashboardContext, DashboardFiltersContext, SchemaDataContext, ThemeContext, } from './Context';
8
8
  import { getTableNames, isNumericColumnType, } from './components/ReportBuilder/ast';
9
9
  import { ChartBuilderWithModal } from './ChartBuilder';
10
10
  import { QuillTextInput } from './components/UiComponents';
@@ -22,7 +22,7 @@ import { QuillSelectComponent } from './components/QuillSelect';
22
22
  import { QuillCard } from './components/QuillCard';
23
23
  import { DATE_FORMAT_TYPES, quillFormat } from './utils/valueFormatter';
24
24
  import { pivotToSql } from './utils/pivotProcessing';
25
- import { getUniqueValuesByColumns, getDateRangeByColumns, fetchTableByQuery, getUniqueStringValues, } from './utils/tableProcessing';
25
+ import { getUniqueValuesByColumns, getDateRangeByColumns, fetchResultsByQuery, getUniqueStringValues, fetchTableByAST, } from './utils/tableProcessing';
26
26
  import { fetchAndProcessASTFromPrompt, fetchASTFromQuillReport, getAllPossibleColumns, } from './utils/astProcessing';
27
27
  import PivotForm from './internals/ReportBuilder/PivotForm';
28
28
  import { getDateBucketFromRange } from './utils/dates';
@@ -31,7 +31,7 @@ import { astToFilterTree, filterToAst, filterTreeToAst, } from './utils/astFilte
31
31
  import useAstToFilterTree from './hooks/useAstToFilterTree';
32
32
  import { filterSentence, filterStackToFilterTree, uniqueValuesToStringMap, } from './utils/filterProcessing';
33
33
  import { QuillMultiSelectComponentWithCombo } from './components/QuillMultiSelectWithCombo';
34
- import { shouldFetchMore, DEFAULT_PAGINATION, shouldSortInMemory, } from './utils/paginationProcessing';
34
+ import { shouldFetchMore, shouldSortInMemory, } from './utils/paginationProcessing';
35
35
  import { EMPTY_INTERNAL_REPORT, fetchReportBuilderDataFromAST, formatRowsFromReport, } from './utils/report';
36
36
  import equal from 'fast-deep-equal';
37
37
  export const QUILL_SERVER = (typeof process !== 'undefined' && process?.env?.QUILL_SERVER_HOST) ||
@@ -67,11 +67,12 @@ export const QUILL_SERVER = (typeof process !== 'undefined' && process?.env?.QUI
67
67
  * ### Report Builder API
68
68
  * @see https://docs.quillsql.com/components/report-builder
69
69
  */
70
- export default function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void null, onSubmitCreateReport = () => void null, onDiscardChanges = undefined, onSaveChanges = undefined, destinationDashboard = undefined, organizationName = '', ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, ModalComponent = MemoizedModal, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, MultiSelectComponent = QuillMultiSelectComponentWithCombo, TableComponent = QuillTableSQLEditorComponent, PopoverComponent = MemoizedPopover, TabsComponent = QuillTabs,
70
+ export default function ReportBuilder({ initialTableName = '', onSubmitEditReport = () => void null, onSubmitCreateReport = () => void null, onDiscardChanges = undefined, onSaveChanges = undefined, onCloseChartBuilder = undefined, destinationDashboard = undefined, organizationName = '', ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, ModalComponent = MemoizedModal, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, MultiSelectComponent = QuillMultiSelectComponentWithCombo, TableComponent = QuillTableSQLEditorComponent, PopoverComponent = MemoizedPopover, TabsComponent = QuillTabs,
71
71
  // CheckboxComponent = MemoizedCheckbox,
72
72
  SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectColumnComponent = QuillSelectColumn, DraggableColumnComponent = QuillDraggableColumn, SidebarHeadingComponent = QuillSidebarHeading, FilterPopoverComponent = QuillFilterPopover, SortPopoverComponent = QuillSortPopover, LimitPopoverComponent = QuillLimitPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, LoadingComponent = QuillLoadingComponent, ColumnSearchEmptyState = QuillColumnSearchEmptyState, ChartBuilderFormContainer = QuillChartBuilderFormContainer, ChartBuilderModalComponent = MemoizedModal, isAdminEnabled = false, isAIEnabled = true, showChartBuilderTableFormatOptions = true, containerStyle, className, pivotRecommendationsEnabled = true, reportId, hideCopySQL = true, isChartBuilderHorizontalView = true, onClickChartElement, }) {
73
73
  const [dashboard] = useContext(DashboardContext);
74
74
  const [schemaData] = useContext(SchemaDataContext);
75
+ const { dashboardFilters } = useContext(DashboardFiltersContext);
75
76
  const [reportInfo, setReportInfo] = useState(null);
76
77
  const [aiPrompt, setAiPrompt] = useState('');
77
78
  const [errorMessage, setErrorMessage] = useState('');
@@ -86,7 +87,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
86
87
  const [openPopover, setOpenPopover] = useState(null);
87
88
  const [loading, setLoading] = useState(!!initialTableName);
88
89
  const [isChartBuilderOpen, setIsChartBuilderOpen] = useState(false);
89
- const [, setIsPending] = useState(false);
90
+ const [isAddLoading, setIsAddLoading] = useState(false);
90
91
  const [isCopying, setIsCopying] = useState(false);
91
92
  const [dataDisplayed, setDataDisplayed] = useState(false);
92
93
  const [rows, setRows] = useState([]);
@@ -94,6 +95,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
94
95
  const [columns, setColumns] = useState([]);
95
96
  const [tempReport, setTempReport] = useState(EMPTY_INTERNAL_REPORT);
96
97
  const [uniqueValues, setUniqueValues] = useState({});
98
+ const [uniqueValuesIsLoading, setUniqueValuesIsLoading] = useState(false);
97
99
  const [pivot, setPivot] = useState(null);
98
100
  const [pivotData, setPivotData] = useState(null);
99
101
  const [createdPivots, setCreatedPivots] = useState([]);
@@ -118,18 +120,23 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
118
120
  const [pivotAggregation, setPivotAggregation] = useState(undefined);
119
121
  const [dateRanges, setDateRanges] = useState(null);
120
122
  const [client] = useContext(ClientContext);
121
- // JANK: This is temp and stupid
122
- const [overrideRecommendations, setOverrideRecommendations] = useState(true);
123
123
  const [fieldValuesMap, setFieldValuesMap] = useState({}); // Mapping of unique values per field, used in string filter 'in' and 'not in'
124
124
  const [globalUniqueValues, setGlobalUniqueValues] = useState({});
125
+ const [globalUniqueValuesIsLoading, setGlobalUniqueValuesIsLoading] = useState(false);
125
126
  const { filterTree, filterStack } = useAstToFilterTree(formData, client); // Stores the state of filters
126
127
  const [removingFilter, setRemovingFilter] = useState(false);
128
+ const [pivotRecommendationsEnabledState, setPivotRecommendationsEnabledState,] = useState(pivotRecommendationsEnabled);
129
+ const REPORT_BUILDER_PAGINATION = {
130
+ page: 0,
131
+ rowsPerPage: 20,
132
+ rowsPerRequest: 40,
133
+ };
127
134
  useEffect(() => {
128
135
  if (!client) {
129
136
  return;
130
137
  }
131
- if (client.publicKey === '663416663aa9bc716e59a89d') {
132
- setOverrideRecommendations(false);
138
+ if (client.recommendedPivotsDisabled !== undefined) {
139
+ setPivotRecommendationsEnabledState(!client.recommendedPivotsDisabled);
133
140
  }
134
141
  if (!initialLoad && client.publicKey) {
135
142
  clearAllState();
@@ -139,13 +146,18 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
139
146
  updateFirstChildWidth(askAIContainerRef, setAskAIInputWidth, { gap: 12 });
140
147
  updateFirstChildWidth(askAILoadingContainerRef, setAskAILoadingContainerWidth, { gap: 12 });
141
148
  }, [dataDisplayed]);
149
+ useEffect(() => {
150
+ if (isChartBuilderOpen === false) {
151
+ onCloseChartBuilder && onCloseChartBuilder();
152
+ }
153
+ }, [isChartBuilderOpen]);
142
154
  // Whenever unique values changes, update the fieldValuesMap, used in FilterModals
143
- const updateFieldValuesMap = (curUnqiueValues, tableName) => {
155
+ const updateFieldValuesMap = (curUniqueValues, tableName) => {
144
156
  const newFieldValues = {};
145
- if (curUnqiueValues[tableName]) {
146
- for (const field of Object.keys(curUnqiueValues[tableName])) {
157
+ if (curUniqueValues[tableName]) {
158
+ for (const field of Object.keys(curUniqueValues[tableName])) {
147
159
  newFieldValues[field] = [];
148
- for (const value of Object.keys(curUnqiueValues[tableName][field])) {
160
+ for (const value of Object.keys(curUniqueValues[tableName][field])) {
149
161
  newFieldValues[field]?.push(value);
150
162
  }
151
163
  }
@@ -166,7 +178,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
166
178
  };
167
179
  }, []);
168
180
  const updatePivot = async (changeField, fieldKey) => {
169
- const newPivot = pivot;
181
+ const newPivot = deepCopy(pivot);
170
182
  setTableLoading(true);
171
183
  // @ts-ignore
172
184
  newPivot[fieldKey] = changeField;
@@ -191,19 +203,19 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
191
203
  dateBucket = getDateBucketFromRange(tempDateRange.dateRange);
192
204
  }
193
205
  let distinctValuesForQuery = {};
194
- if (pivot.columnField) {
206
+ setPivot(newPivot);
207
+ if (newPivot.columnField) {
195
208
  distinctValuesForQuery = await getUniqueValuesByColumns([
196
209
  {
197
- field: pivot.columnField,
198
- label: pivot.columnField,
210
+ field: newPivot.columnField,
211
+ label: newPivot.columnField,
199
212
  format: 'string',
200
213
  },
201
214
  ], activeQuery, [], client, schemaData.customFields ?? []);
202
215
  }
203
- const pivotedData = await generatePivotTable(pivot, rows, undefined, false, -1, undefined, dateBucket, tempReport, client, distinctValuesForQuery);
216
+ const pivotedData = await generatePivotTable(newPivot, rows, undefined, false, -1, undefined, dateBucket, tempReport, client, distinctValuesForQuery);
204
217
  setPivotData(pivotedData || []);
205
218
  const formattedRows = formatRows(pivotedData.rows, columns, true, newPivot.aggregationType);
206
- setPivot(newPivot);
207
219
  setFormattedRows(formattedRows);
208
220
  setTableLoading(false);
209
221
  };
@@ -235,7 +247,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
235
247
  setActivePath(null);
236
248
  setOpenPopover(null);
237
249
  setLoading(false);
238
- setIsPending(false);
239
250
  setDataDisplayed(false);
240
251
  setRows([]);
241
252
  setColumns([]);
@@ -248,8 +259,10 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
248
259
  }, 0);
249
260
  };
250
261
  const fetchGlobalUniqueValues = async (columns, currentTable, client) => {
251
- const global = await getUniqueStringValues(columns, currentTable, client);
262
+ setGlobalUniqueValuesIsLoading(true);
263
+ const global = await getUniqueStringValues(columns, currentTable, client, schemaData.customFields, undefined, true);
252
264
  setGlobalUniqueValues(uniqueValuesToStringMap(global));
265
+ setGlobalUniqueValuesIsLoading(false);
253
266
  };
254
267
  const uniqueValuesDependenciesRef = useRef({ client, columns, currentTable });
255
268
  const memoizedFetchGlobalUniqueValues = useCallback(fetchGlobalUniqueValues, []);
@@ -397,11 +410,13 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
397
410
  setLoading(true);
398
411
  const tableInfo = tables.find((tableInfo) => tableInfo.name === initialTableName);
399
412
  if (tableInfo) {
400
- const newUniqueValues = await getUniqueStringValues(tableInfo.columns, initialTableName, client, schemaData.customFields, uniqueValues);
413
+ setUniqueValuesIsLoading(true);
414
+ const newUniqueValues = await getUniqueStringValues(tableInfo.columns, initialTableName, client, schemaData.customFields, uniqueValues, true);
401
415
  if (hashCode(uniqueValues) !== hashCode(newUniqueValues)) {
402
416
  setUniqueValues(newUniqueValues);
403
417
  updateFieldValuesMap(newUniqueValues, initialTableName);
404
418
  }
419
+ setUniqueValuesIsLoading(false);
405
420
  const dateRangesTemp = await getDateRanges(tableInfo.columns, initialTableName);
406
421
  setDateRanges(dateRangesTemp);
407
422
  }
@@ -682,13 +697,14 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
682
697
  };
683
698
  const [previousPage, setPreviousPage] = useState(0);
684
699
  const [currentProcessing, setCurrentProcessing] = useState({
685
- page: DEFAULT_PAGINATION,
700
+ page: REPORT_BUILDER_PAGINATION,
686
701
  });
687
702
  const [numberOfRows, setNumberOfRows] = useState(0);
703
+ const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
688
704
  const [tableLoading, setTableLoading] = useState(false);
689
705
  const onPageChange = (page) => {
690
706
  if (currentProcessing.page &&
691
- shouldFetchMore(DEFAULT_PAGINATION, page, previousPage)) {
707
+ shouldFetchMore(REPORT_BUILDER_PAGINATION, page, previousPage)) {
692
708
  const newPagination = { ...currentProcessing.page, page };
693
709
  const updatedProcessing = { ...currentProcessing, page: newPagination };
694
710
  setCurrentProcessing(updatedProcessing);
@@ -699,28 +715,52 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
699
715
  }
700
716
  };
701
717
  const onSortChange = (sort) => {
702
- if (shouldSortInMemory(DEFAULT_PAGINATION, numberOfRows, !!pivot)) {
718
+ if (shouldSortInMemory(REPORT_BUILDER_PAGINATION, numberOfRows, !!pivot)) {
703
719
  return;
704
720
  }
705
- const updatedProcessing = { page: DEFAULT_PAGINATION, sort };
721
+ const updatedProcessing = { page: REPORT_BUILDER_PAGINATION, sort };
706
722
  handleRunQuery(updatedProcessing, true);
707
723
  setCurrentProcessing(updatedProcessing);
708
724
  setPreviousPage(0);
709
725
  };
710
- const handleRunQuery = async (processing, resetRows = false) => {
726
+ const onFilterPreviewChange = (preview) => {
727
+ handleRunQuery(currentProcessing, true, preview);
728
+ };
729
+ const fetchRowCount = async (processing, includeFilters) => {
730
+ if (!client || !activeQuery) {
731
+ return;
732
+ }
733
+ setRowCountIsLoading(true);
734
+ const tableInfo = await fetchResultsByQuery(activeQuery, client, processing, schemaData.customFields, includeFilters ? dashboardFilters : undefined, includeFilters
735
+ ? tempReport.dateField ?? reportInfo?.dateField
736
+ : undefined, false, true);
737
+ if (tableInfo.rowCount) {
738
+ setNumberOfRows(tableInfo.rowCount);
739
+ }
740
+ setRowCountIsLoading(false);
741
+ };
742
+ const fetchRowCountFromAST = async (ast, where) => {
743
+ setRowCountIsLoading(true);
744
+ const tableData = await fetchTableByAST({ ...ast, where }, client, { page: REPORT_BUILDER_PAGINATION }, undefined, false, true);
745
+ if (tableData.rowCount) {
746
+ setNumberOfRows(tableData.rowCount);
747
+ }
748
+ setRowCountIsLoading(false);
749
+ };
750
+ const handleRunQuery = async (processing, resetRows = false, includeFilters = false) => {
711
751
  try {
712
752
  setErrorMessage('');
713
753
  setTableLoading(true);
714
- const tableInfo = await fetchTableByQuery(activeQuery, client, processing, schemaData.customFields);
754
+ const tableInfo = await fetchResultsByQuery(activeQuery, client, processing, schemaData.customFields, includeFilters
755
+ ? dashboardFilters.filter((f) => f && destinationDashboard === f.dashboardName)
756
+ : undefined, includeFilters ? tempReport.dateField : undefined, true);
715
757
  if (tableInfo.error) {
716
758
  throw new Error(tableInfo.error);
717
759
  }
718
760
  else if (tableInfo.rows.length === 0) {
719
761
  throw new Error('No data found');
720
762
  }
721
- if (tableInfo.rowCount) {
722
- setNumberOfRows(tableInfo.rowCount);
723
- }
763
+ fetchRowCount(processing, includeFilters);
724
764
  setCurrentProcessing(processing);
725
765
  let tempRows = [...rows, ...tableInfo.rows];
726
766
  if (resetRows) {
@@ -728,6 +768,11 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
728
768
  }
729
769
  setRows(tempRows);
730
770
  setFormattedRows(formatRowsFromReport({ rows: tempRows, columns: tableInfo.columns }));
771
+ setTempReport({
772
+ ...tempReport,
773
+ rows: tempRows,
774
+ rowCount: tableInfo.rowCount ?? tempReport.rowCount,
775
+ });
731
776
  setColumns(tableInfo.columns);
732
777
  setTableLoading(false);
733
778
  }
@@ -739,7 +784,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
739
784
  return;
740
785
  }
741
786
  };
742
- const renderFilters = () => {
787
+ const renderFilters = (actionsEnabled = true) => {
743
788
  // Render filterStack
744
789
  return (_jsx("div", { style: {
745
790
  display: 'flex',
@@ -783,7 +828,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
783
828
  } }) }, index));
784
829
  }
785
830
  else if (item.value) {
786
- return (_jsx(FilterPopoverWrapper, { schema: schemaData.schema.find((s) => s.name === currentTable || s.displayName === currentTable) ?? schemaData.schema[0], filter: item.value, filterLabel: item.value ? filterSentence(item.value) : '', index: index, FilterTagComponent: FilterPopoverComponent, FilterModal: FilterModal, fieldValuesMap: globalUniqueValues, priorFilters: filterStack.slice(0, index > 0 ? index - 1 : 0), columns: columns, client: client, customFields: schemaData.customFields, baseAst: baseAst, endpoint: QUILL_SERVER, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, handleFilterSave: (filter) => {
831
+ return (_jsx(FilterPopoverWrapper, { schema: schemaData.schema.find((s) => s.name === currentTable || s.displayName === currentTable) ?? schemaData.schema[0], filter: item.value, filterLabel: item.value ? filterSentence(item.value) : '', index: index, FilterTagComponent: FilterPopoverComponent, FilterModal: FilterModal, fieldValuesMap: globalUniqueValues, fieldValuesMapIsLoading: globalUniqueValuesIsLoading, priorFilters: filterStack.slice(0, index > 0 ? index - 1 : 0), columns: columns, client: client, customFields: schemaData.customFields, baseAst: baseAst, endpoint: QUILL_SERVER, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, handleFilterSave: (filter) => {
787
832
  item.value = filter;
788
833
  let newFormData = null;
789
834
  if (filterTree) {
@@ -847,7 +892,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
847
892
  fetchSqlQuery(newAst, newFormData);
848
893
  setRemovingFilter(false);
849
894
  }
850
- } }, `filter_${index}_${item.value ? filterSentence(item.value) : ''}`));
895
+ }, disabled: !actionsEnabled }, `filter_${index}_${item.value ? filterSentence(item.value) : ''}`));
851
896
  }
852
897
  }) }));
853
898
  };
@@ -874,12 +919,18 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
874
919
  },
875
920
  as: null,
876
921
  });
922
+ const updateUniqueValue = (uniqueStrings, table) => {
923
+ const uniqueStringsObj = {};
924
+ uniqueStringsObj[table] = uniqueStrings ?? {};
925
+ setUniqueValues(uniqueStringsObj);
926
+ updateFieldValuesMap(uniqueStringsObj, table);
927
+ };
877
928
  const fetchReportFromASTHelper = async (baseAst, newFormData, curPivot, curSchema, previousReport) => {
878
929
  const curFormData = newFormData !== undefined ? newFormData : formData;
879
930
  let reportBuilderInfo = undefined;
880
931
  try {
881
932
  setLoading(true);
882
- reportBuilderInfo = await fetchReportBuilderDataFromAST(baseAst, curFormData, curSchema ?? schemaData.schema, client, curPivot ?? pivot, formData, currentTable, { uniqueStrings: uniqueValues, dateRanges: dateRanges ?? {} }, previousReport ?? reportInfo ?? undefined, schemaData.customFields);
933
+ reportBuilderInfo = await fetchReportBuilderDataFromAST(baseAst, curFormData, curSchema ?? schemaData.schema, client, curPivot ?? pivot, formData, currentTable, { uniqueStrings: uniqueValues, dateRanges: dateRanges ?? {} }, previousReport ?? reportInfo ?? undefined, schemaData.customFields, true, true, { page: REPORT_BUILDER_PAGINATION });
883
934
  if (reportBuilderInfo.error) {
884
935
  throw new Error(reportBuilderInfo.error);
885
936
  }
@@ -898,21 +949,22 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
898
949
  setErrorMessage('Failed to fetch');
899
950
  return;
900
951
  }
952
+ fetchRowCountFromAST(baseAst, curFormData);
901
953
  const reportTable = reportBuilderInfo.table;
902
954
  const reportBuilderInfoColumns = reportBuilderInfo.columns.map((column) => {
903
955
  return `${reportTable}.${column.field}`;
904
956
  });
957
+ const prevFormData = formData;
958
+ const prevTable = currentTable;
905
959
  setRows(reportBuilderInfo.rows);
906
960
  setColumns(reportBuilderInfo.columns);
907
- setNumberOfRows(reportBuilderInfo.rowCount);
961
+ // setNumberOfRows(reportBuilderInfo.rowCount);
908
962
  setPivot(reportBuilderInfo.pivot);
909
963
  setPivotData(reportBuilderInfo.pivotData);
964
+ setDateRanges(reportBuilderInfo.dateRanges);
910
965
  setFormattedRows(reportBuilderInfo.formattedRows);
911
966
  setTempReport(reportBuilderInfo.report);
912
967
  setSelectedColumns(reportBuilderInfoColumns);
913
- setUniqueValues(reportBuilderInfo.uniqueValues);
914
- updateFieldValuesMap(reportBuilderInfo.uniqueValues, reportBuilderInfo.table);
915
- setDateRanges(reportBuilderInfo.dateRanges);
916
968
  setLoading(false);
917
969
  setDataDisplayed(true);
918
970
  setCurrentTable(reportBuilderInfo.table);
@@ -924,6 +976,31 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
924
976
  setPivotValueField(reportBuilderInfo.pivot.valueField);
925
977
  }
926
978
  setReportInfo(reportBuilderInfo.report);
979
+ // fetch unique values after everything else since it is the most expensive
980
+ if (prevTable !== reportBuilderInfo.table ||
981
+ !equal(prevFormData, curFormData)) {
982
+ try {
983
+ setUniqueValuesIsLoading(true);
984
+ const schema = curSchema ?? schemaData.schema;
985
+ const tableInfo = schema.find((tableInfo) => tableInfo.name === reportBuilderInfo?.table);
986
+ if (!reportBuilderInfo.table || !tableInfo) {
987
+ throw new Error('No table found;');
988
+ }
989
+ const uniqueStrings = await getUniqueStringValues(tableInfo.columns, reportBuilderInfo.table, client, schemaData.customFields, undefined, true, reportBuilderInfo.query);
990
+ updateUniqueValue(uniqueStrings, reportBuilderInfo.table);
991
+ setUniqueValuesIsLoading(false);
992
+ }
993
+ catch (err) {
994
+ if (err instanceof Error) {
995
+ setErrorMessage(err.message);
996
+ setLoading(false);
997
+ return { error: true, message: err.message, rows: [] };
998
+ }
999
+ setLoading(false);
1000
+ setErrorMessage('Failed to fetch');
1001
+ return { error: true, message: 'Failed to fetch', rows: [] };
1002
+ }
1003
+ }
927
1004
  };
928
1005
  const fetchAstFromPromptHelper = async (overridePrompt) => {
929
1006
  let astInfo = {};
@@ -989,7 +1066,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
989
1066
  };
990
1067
  return (_jsx("div", { style: { ...style }, ref: setNodeRef, children: _jsx(DraggableColumnComponent, { label: snakeAndCamelCaseToTitleCase(label), onDelete: onDelete, DragHandle: (props) => (_jsx("div", { style: {
991
1068
  cursor: 'grab',
992
- }, ...attributes, ...listeners, children: _jsx(props.dragIcon, {}) })) }) }));
1069
+ }, ...attributes, ...listeners, children: _jsx(props.dragIcon, {}) })), deleteDisabled: loading }) }));
993
1070
  };
994
1071
  function DraggableColumns() {
995
1072
  const sensors = useSensors(useSensor(PointerSensor), useSensor(KeyboardSensor, {
@@ -1064,7 +1141,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1064
1141
  display: 'flex',
1065
1142
  flexDirection: 'column',
1066
1143
  gap: 8,
1067
- }, children: [columnNamesInAst.map((name) => (_jsx(DraggableItem, { id: name, label: name, onDelete: () => handleDeleteColumn(name) }, name))), columnNamesInAst?.length > 0 && _jsx("div", { style: { height: 6 } })] }) }) }));
1144
+ }, children: [columnNamesInAst.map((name) => (_jsx(DraggableItem, { id: name, label: name, onDelete: () => !loading && handleDeleteColumn(name) }, name))), columnNamesInAst?.length > 0 && _jsx("div", { style: { height: 6 } })] }) }) }));
1068
1145
  }
1069
1146
  // TODO: Refactor this part
1070
1147
  if (loading || initialChartLoad) {
@@ -1077,11 +1154,10 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1077
1154
  if (!openPopover) {
1078
1155
  setOpenPopover('AddColumnModal');
1079
1156
  }
1080
- }, label: 'Select columns' }), _jsx(ModalComponent, { isOpen: openPopover === 'AddColumnModal', setIsOpen: (isOpen) => {
1157
+ }, label: 'Select columns', disabled: true }), _jsx(ModalComponent, { isOpen: openPopover === 'AddColumnModal', setIsOpen: (isOpen) => {
1081
1158
  if (!isOpen) {
1082
1159
  // delay onClose callback so onClick no-ops
1083
1160
  setTimeout(() => {
1084
- setIsPending(false);
1085
1161
  setActiveEditItem(null);
1086
1162
  setActivePath(null);
1087
1163
  setOpenPopover(null);
@@ -1099,7 +1175,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1099
1175
  flexDirection: 'column',
1100
1176
  gap: 8,
1101
1177
  marginBottom: 12,
1102
- }, children: renderFilters() })), _jsxs("div", { style: {
1178
+ }, children: renderFilters(false) })), _jsxs("div", { style: {
1103
1179
  display: 'flex',
1104
1180
  flexDirection: 'column',
1105
1181
  alignItems: 'flex-start',
@@ -1125,14 +1201,12 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1125
1201
  }
1126
1202
  setOpenPopover('AddFilterPopover');
1127
1203
  setActivePath('');
1128
- setIsPending(true);
1129
1204
  }
1130
- }, label: 'Add filter' }), _jsx("div", { style: {
1205
+ }, label: 'Add filter', disabled: true }), _jsx("div", { style: {
1131
1206
  position: 'relative',
1132
1207
  ...(openPopover === 'AddFilterPopover' && { top: 12 }),
1133
1208
  }, children: _jsx(PopoverComponent, { isOpen: openPopover === 'AddFilterPopover', setIsOpen: (isOpen) => {
1134
1209
  if (!isOpen) {
1135
- setIsPending(false);
1136
1210
  setActivePath(null);
1137
1211
  setOpenPopover(null);
1138
1212
  setTimeout(() => {
@@ -1143,9 +1217,8 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1143
1217
  }, popoverTitle: 'Add filter', popoverChildren: _jsx(FilterModal, { schema: schemaData.schema.find((s) => s.name === currentTable ||
1144
1218
  s.displayName === currentTable) ?? schemaData.schema[0], fieldValuesMap: uniqueValues[getTableNames(baseAst).length === 1
1145
1219
  ? getTableNames(baseAst)[0]
1146
- : initialTableName], onSubmitFilter: (filter) => {
1220
+ : initialTableName], fieldValuesMapIsLoading: uniqueValuesIsLoading, onSubmitFilter: (filter) => {
1147
1221
  setOpenPopover(null);
1148
- setIsPending(false);
1149
1222
  const item = filterToAst(filter, client.databaseType.toLowerCase());
1150
1223
  handleInsertion(item, 'AND', false);
1151
1224
  }, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, SecondaryButtonComponent: SecondaryButtonComponent, MultiSelectComponent: MultiSelectComponent }) }) })] })] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Pivot" }), _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: initialTableName, CardComponent: CardComponent, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEditingPivot, setShowUpdatePivot: setIsEditingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
@@ -1157,14 +1230,14 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1157
1230
  // TODOs
1158
1231
  selectPivot: () => {
1159
1232
  return;
1160
- }, selectPivotOnEdit: true, showTrigger: !pivot, theme: theme, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, dateRange: undefined, pivotCountRequest: 4, SecondaryButtonComponent: SecondaryButtonComponent, query: activeQuery, initialUniqueValues: uniqueValues[currentTable], disabled: !loading && (!baseAst || !dataDisplayed), pivotRecommendationsEnabled: pivotRecommendationsEnabled && overrideRecommendations, report: tempReport ?? reportInfo }), pivot && (_jsx(PivotForm, { columns: columns, uniqueValues: uniqueValues[currentTable], setPivotRowField: (value) => {
1233
+ }, selectPivotOnEdit: true, showTrigger: !pivot, theme: theme, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, dateRange: undefined, pivotCountRequest: 4, SecondaryButtonComponent: SecondaryButtonComponent, query: activeQuery, initialUniqueValues: uniqueValues[currentTable], disabled: true, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, report: tempReport ?? reportInfo }), pivot && (_jsx(PivotForm, { columns: columns, uniqueValues: uniqueValues[currentTable], uniqueValuesIsLoading: uniqueValuesIsLoading, setPivotRowField: (value) => {
1161
1234
  setPivotRowField(value);
1162
1235
  }, setPivotColumnField: setPivotColumnField, setPivotValueField: setPivotValueField, setPivotAggregation: setPivotAggregation, pivotRowField: pivotRowField, pivotColumnField: pivotColumnField, pivotValueField: pivotValueField, pivotAggregation: pivotAggregation, onDelete: () => {
1163
1236
  setPivot(null);
1164
1237
  setPivotData([]);
1165
1238
  const formattedRows = formatRows(rows, columns, false);
1166
1239
  setFormattedRows(formattedRows);
1167
- }, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer }))] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && (_jsx("div", { style: {
1240
+ }, isLoading: tableLoading, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer }))] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && (_jsx("div", { style: {
1168
1241
  display: 'flex',
1169
1242
  flexDirection: 'column',
1170
1243
  gap: 8,
@@ -1172,7 +1245,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1172
1245
  }, children: _jsx(SortSentence, { sortData: {
1173
1246
  type: pivot.sortDirection,
1174
1247
  expr: { type: 'column_ref', column: pivot.sortField },
1175
- }, columns: selectedColumns, setIsPending: setIsPending, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: () => {
1248
+ }, columns: selectedColumns, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: () => {
1176
1249
  setPivot({ ...pivot, sort: false });
1177
1250
  setBaseAst(deepCopy(baseAst));
1178
1251
  if (!pivot) {
@@ -1200,7 +1273,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1200
1273
  gap: 8,
1201
1274
  marginBottom: 12,
1202
1275
  }, children: baseAst.orderby.map((sortData, id) => (_jsx(SortSentence, { sortData: sortData, columns: selectedColumns, onSave: (column, direction) => {
1203
- setIsPending(false);
1204
1276
  setActiveEditItem(null);
1205
1277
  setOpenPopover(null);
1206
1278
  if (column === '')
@@ -1221,14 +1293,14 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1221
1293
  if (!pivot) {
1222
1294
  fetchSqlQuery(newAst);
1223
1295
  }
1224
- }, setIsPending: setIsPending, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: () => {
1296
+ }, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: () => {
1225
1297
  const newAst = { ...baseAst };
1226
1298
  newAst.orderby.splice(id, 1);
1227
1299
  setBaseAst(deepCopy(newAst));
1228
1300
  if (!pivot) {
1229
1301
  fetchSqlQuery(newAst);
1230
1302
  }
1231
- }, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent }, `sort-sentence-${id}`))) })), _jsx(SecondaryButtonComponent, { onClick: () => {
1303
+ }, Select: SelectComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: true }, `sort-sentence-${id}`))) })), _jsx(SecondaryButtonComponent, { onClick: () => {
1232
1304
  if (!selectedColumns ||
1233
1305
  selectedColumns.length === 0 ||
1234
1306
  loading) {
@@ -1237,9 +1309,8 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1237
1309
  if (!openPopover) {
1238
1310
  setOpenPopover('AddSortPopover');
1239
1311
  }
1240
- }, label: "Add sort" }), _jsx(PopoverComponent, { isOpen: openPopover === 'AddSortPopover', setIsOpen: (isOpen) => {
1312
+ }, label: "Add sort", disabled: true }), _jsx(PopoverComponent, { isOpen: openPopover === 'AddSortPopover', setIsOpen: (isOpen) => {
1241
1313
  if (!isOpen) {
1242
- setIsPending(false);
1243
1314
  setActiveEditItem(null);
1244
1315
  setActivePath(null);
1245
1316
  setOpenPopover(null);
@@ -1268,7 +1339,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1268
1339
  setOpenPopover(null);
1269
1340
  setBaseAst(deepCopy(newAst));
1270
1341
  fetchSqlQuery(newAst);
1271
- }, TextInput: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent }) })) : (_jsxs(_Fragment, { children: [_jsx(SecondaryButtonComponent, { onClick: () => {
1342
+ }, TextInput: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent, disabled: true }) })) : (_jsxs(_Fragment, { children: [_jsx(SecondaryButtonComponent, { onClick: () => {
1272
1343
  if (!selectedColumns ||
1273
1344
  selectedColumns.length === 0 ||
1274
1345
  loading) {
@@ -1277,9 +1348,8 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1277
1348
  if (!openPopover) {
1278
1349
  setOpenPopover('AddLimitPopover');
1279
1350
  }
1280
- }, label: 'Add limit' }), _jsx(PopoverComponent, { isOpen: openPopover === 'AddLimitPopover', setIsOpen: (isOpen) => {
1351
+ }, label: 'Add limit', disabled: true }), _jsx(PopoverComponent, { isOpen: openPopover === 'AddLimitPopover', setIsOpen: (isOpen) => {
1281
1352
  if (!isOpen) {
1282
- setIsPending(false);
1283
1353
  setActiveEditItem(null);
1284
1354
  setActivePath(null);
1285
1355
  setOpenPopover(null);
@@ -1326,7 +1396,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1326
1396
  if (!isOpen) {
1327
1397
  // delay onClose callback so onClick no-ops
1328
1398
  setTimeout(() => {
1329
- setIsPending(false);
1330
1399
  setActiveEditItem(null);
1331
1400
  setActivePath(null);
1332
1401
  setOpenPopover(null);
@@ -1370,7 +1439,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1370
1439
  }
1371
1440
  setOpenPopover('AddFilterPopover');
1372
1441
  setActivePath('');
1373
- setIsPending(true);
1374
1442
  }
1375
1443
  }, label: 'Add filter' }), _jsx("div", { style: {
1376
1444
  position: 'relative',
@@ -1380,16 +1448,14 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1380
1448
  // delay onClose callback so onClick no-ops
1381
1449
  setOpenPopover(null);
1382
1450
  setTimeout(() => {
1383
- setIsPending(false);
1384
1451
  setActivePath(null);
1385
1452
  clearCheckboxes();
1386
1453
  setActiveEditItem(null);
1387
1454
  }, 300);
1388
1455
  }
1389
1456
  }, popoverTitle: "Add filter", popoverChildren: _jsx(FilterModal, { schema: schemaData.schema.find((s) => s.name === currentTable ||
1390
- s.displayName === currentTable) ?? schemaData.schema[0], fieldValuesMap: fieldValuesMap, onSubmitFilter: (filter) => {
1457
+ s.displayName === currentTable) ?? schemaData.schema[0], fieldValuesMap: fieldValuesMap, fieldValuesMapIsLoading: uniqueValuesIsLoading, onSubmitFilter: (filter) => {
1391
1458
  setOpenPopover(null);
1392
- setIsPending(false);
1393
1459
  const item = filterToAst(filter, client.databaseType.toLowerCase());
1394
1460
  handleInsertion(item, 'AND', false);
1395
1461
  }, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent }) }) })] })] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Pivot" }), _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: initialTableName, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, TextComponent: TextComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEditingPivot, setShowUpdatePivot: setIsEditingPivot, parentRef: parentRef, data: rows, columns: columns, triggerButtonText: 'Add pivot', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: () => {
@@ -1397,29 +1463,32 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1397
1463
  setPivotData(null);
1398
1464
  const formattedRows = formatRows(rows, columns, false);
1399
1465
  setFormattedRows(formattedRows);
1400
- }, selectPivot: async (pivot, uniqueValues, dateRange, pivotTable) => {
1401
- if (!pivot)
1466
+ }, selectPivot: async (selectedPivot, uniqueValues, dateRange, pivotTable) => {
1467
+ if (!selectedPivot)
1402
1468
  return;
1403
1469
  const newAst = { ...baseAst };
1404
1470
  newAst.orderby = null;
1405
- if (pivot.rowFieldType === 'date') {
1406
- pivot['sort'] = true;
1407
- pivot['sortDirection'] = 'ASC';
1471
+ if (selectedPivot.rowFieldType === 'date') {
1472
+ selectedPivot['sort'] = true;
1473
+ selectedPivot['sortDirection'] = 'ASC';
1408
1474
  }
1409
1475
  setBaseAst(newAst); // trigger refetch
1410
1476
  let dateBucket = undefined;
1411
1477
  if (dateRange) {
1412
1478
  dateBucket = getDateBucketFromRange(dateRange);
1413
1479
  }
1480
+ setPivot(selectedPivot);
1414
1481
  if (!pivotTable) {
1415
- pivotTable = await generatePivotTable(pivot, rows, undefined, false, -1, undefined, dateBucket, tempReport, client, uniqueValues);
1482
+ setTableLoading(true);
1483
+ pivotTable = await generatePivotTable(selectedPivot, rows, undefined, false, -1, undefined, dateBucket, tempReport, client, uniqueValues);
1416
1484
  }
1485
+ // no other calls made
1417
1486
  setPivotData(pivotTable || []);
1418
- setPivot(pivot);
1419
- const formattedRows = formatRows(pivotTable.rows, columns, true, pivot.aggregationType);
1487
+ const formattedRows = formatRows(pivotTable.rows, columns, true, selectedPivot.aggregationType);
1420
1488
  setFormattedRows(formattedRows);
1421
1489
  setErrorMessage('');
1422
- }, selectPivotOnEdit: true, showTrigger: !pivot, theme: theme, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, dateRange: undefined, pivotCountRequest: 4, query: activeQuery, initialUniqueValues: uniqueValues[currentTable], disabled: !baseAst || !dataDisplayed, pivotRecommendationsEnabled: pivotRecommendationsEnabled && overrideRecommendations, report: tempReport }), pivot && (_jsx(PivotForm, { columns: columns, uniqueValues: uniqueValues[currentTable], setPivotRowField: (value) => {
1490
+ setTableLoading(false); // only set to false if this was the final call
1491
+ }, selectPivotOnEdit: true, showTrigger: !pivot, theme: theme, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, dateRange: undefined, pivotCountRequest: 4, query: activeQuery, initialUniqueValues: uniqueValues[currentTable], uniqueValuesIsLoading: uniqueValuesIsLoading, disabled: !baseAst || !dataDisplayed || tableLoading, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, report: tempReport }), pivot && (_jsx(PivotForm, { columns: columns, uniqueValues: uniqueValues[currentTable], uniqueValuesIsLoading: uniqueValuesIsLoading, setPivotRowField: (value) => {
1423
1492
  setPivotRowField(value);
1424
1493
  updatePivot(value, 'rowField');
1425
1494
  }, setPivotColumnField: (value) => {
@@ -1436,7 +1505,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1436
1505
  setPivotData([]);
1437
1506
  const formattedRows = formatRows(rows, columns, false);
1438
1507
  setFormattedRows(formattedRows);
1439
- }, pivotRowField: pivotRowField, pivotColumnField: pivotColumnField, pivotValueField: pivotValueField, pivotAggregation: pivotAggregation, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer }))] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && (_jsx("div", { style: {
1508
+ }, isLoading: tableLoading, pivotRowField: pivotRowField, pivotColumnField: pivotColumnField, pivotValueField: pivotValueField, pivotAggregation: pivotAggregation, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, PivotColumnContainer: PivotColumnContainer }))] }), _jsxs("div", { style: { width: '100%' }, children: [_jsx(SidebarHeadingComponent, { label: "Sort" }), pivot && pivot.sort && (_jsx("div", { style: {
1440
1509
  display: 'flex',
1441
1510
  flexDirection: 'column',
1442
1511
  gap: 8,
@@ -1451,7 +1520,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1451
1520
  `.${pivot.rowField}`,
1452
1521
  `.${pivot.valueField || 'count'}`,
1453
1522
  ]
1454
- : selectedColumns, setIsPending: setIsPending, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: async () => {
1523
+ : selectedColumns, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: async () => {
1455
1524
  if (pivot) {
1456
1525
  const tempPivot = { ...pivot, sort: false };
1457
1526
  let dateBucket = undefined;
@@ -1506,7 +1575,7 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1506
1575
  flexDirection: 'column',
1507
1576
  gap: 8,
1508
1577
  marginBottom: 12,
1509
- }, children: baseAst.orderby.map((sortData, id) => (_jsx(SortSentence, { sortData: sortData, columns: selectedColumns, setIsPending: setIsPending, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: () => {
1578
+ }, children: baseAst.orderby.map((sortData, id) => (_jsx(SortSentence, { sortData: sortData, columns: selectedColumns, setIsPending: () => { }, setEditPopoverKey: () => { }, setActiveEditItem: setActiveEditItem, setActivePath: setActivePath, setOpenPopover: setOpenPopover, SortPopover: SortPopoverComponent, EditPopover: AddSortPopover, handleDelete: () => {
1510
1579
  if (pivot) {
1511
1580
  setPivot({ ...pivot, sort: false });
1512
1581
  return;
@@ -1529,7 +1598,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1529
1598
  });
1530
1599
  return;
1531
1600
  }
1532
- setIsPending(false);
1533
1601
  setActiveEditItem(null);
1534
1602
  setOpenPopover(null);
1535
1603
  if (column === '')
@@ -1560,7 +1628,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1560
1628
  ...(openPopover === 'AddSortPopover' && { top: 12 }),
1561
1629
  }, children: _jsx(PopoverComponent, { isOpen: openPopover === 'AddSortPopover', setIsOpen: (isOpen) => {
1562
1630
  if (!isOpen) {
1563
- setIsPending(false);
1564
1631
  setActiveEditItem(null);
1565
1632
  setActivePath(null);
1566
1633
  setOpenPopover(null);
@@ -1655,7 +1722,6 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1655
1722
  ...(openPopover === 'AddLimitPopover' && { top: 12 }),
1656
1723
  }, children: _jsx(PopoverComponent, { isOpen: openPopover === 'AddLimitPopover', setIsOpen: (isOpen) => {
1657
1724
  if (!isOpen) {
1658
- setIsPending(false);
1659
1725
  setActiveEditItem(null);
1660
1726
  setActivePath(null);
1661
1727
  setOpenPopover(null);
@@ -1689,9 +1755,10 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1689
1755
  ? 'Ask a follow-up question...'
1690
1756
  : 'Ask a question...' }), _jsx(ButtonComponent, { onClick: () => {
1691
1757
  fetchAstFromPromptHelper();
1692
- }, label: 'Ask AI' }), ((baseAst && dataDisplayed) || initialLoad) && !reportId && (_jsx(SecondaryButtonComponent, { label: 'New report', onClick: clearAllState }))] }) })), baseAst && (_jsx(TableComponent, { isLoading: tableLoading ||
1693
- (loading && errorMessage.length === 0) ||
1694
- initialChartLoad, rows: formattedRows, rowCount: pivot ? undefined : numberOfRows, rowsPerPage: 20, columns: pivot
1758
+ }, label: 'Ask AI' }), ((baseAst && dataDisplayed) || initialLoad) && !reportId && (_jsx(SecondaryButtonComponent, { label: 'New report', onClick: clearAllState }))] }) })), baseAst && (_jsx(TableComponent, { isLoading: !isAddLoading &&
1759
+ (tableLoading ||
1760
+ (loading && errorMessage.length === 0) ||
1761
+ initialChartLoad), rows: formattedRows, rowCount: pivot ? undefined : numberOfRows, rowCountIsLoading: rowCountIsLoading, rowsPerPage: 20, columns: pivot
1695
1762
  ? pivotData?.columns || emptyPivotColumns()
1696
1763
  : enforceOrderOnColumns(Object.keys(rows[0] ?? {})).map((c) => {
1697
1764
  return {
@@ -1715,13 +1782,17 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1715
1782
  alignItems: 'center',
1716
1783
  }, children: [_jsx(ErrorMessageComponent, { errorMessage: errorMessage }), _jsx(SecondaryButtonComponent, { onClick: () => {
1717
1784
  fetchAstFromPromptHelper();
1718
- }, label: 'Retry' })] })) : (_jsx("div", { style: { width: '100%' } })), baseAst && dataDisplayed && !initialChartLoad && (_jsxs(_Fragment, { children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && (_jsx(SecondaryButtonComponent, { label: isCopying ? 'Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), _jsx(ButtonComponent, { onClick: () => {
1785
+ }, label: 'Retry' })] })) : (_jsx("div", { style: { width: '100%' } })), baseAst && dataDisplayed && !initialChartLoad && (_jsxs(_Fragment, { children: [onDiscardChanges && (_jsx(SecondaryButtonComponent, { onClick: onDiscardChanges, label: "Discard changes" })), !hideCopySQL && (_jsx(SecondaryButtonComponent, { label: isCopying ? 'Copied' : 'Copy SQL', onClick: () => copySQLToClipboard() })), _jsx(ButtonComponent, { onClick: async () => {
1786
+ setIsAddLoading(true);
1787
+ await handleRunQuery(currentProcessing, true);
1788
+ setIsAddLoading(false);
1719
1789
  onSaveChanges && onSaveChanges();
1720
1790
  setIsChartBuilderOpen(true);
1721
- }, disabled: !!errorMessage, label: reportId ? 'Save changes' : 'Add to dashboard' })] }))] })] }), _jsx("style", { children: `body{margin:0;}` })] })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && (_jsx(ChartBuilderWithModal, { report: reportInfo
1791
+ }, disabled: !!errorMessage, label: reportId ? 'Save changes' : 'Add to dashboard', isLoading: isAddLoading })] }))] })] }), _jsx("style", { children: `body{margin:0;}` })] })), (!isChartBuilderHorizontalView || isChartBuilderOpen) && (_jsx(ChartBuilderWithModal, { report: reportInfo
1722
1792
  ? {
1723
1793
  ...reportInfo,
1724
1794
  ...tempReport,
1795
+ filtersApplied: dashboardFilters.filter((f) => f && destinationDashboard === f.dashboardName),
1725
1796
  pivot: pivot,
1726
1797
  yAxisFields: reportInfo.pivot && !pivot ? [] : reportInfo.yAxisFields,
1727
1798
  columns: reportInfo.columns.filter((col) => {
@@ -1732,5 +1803,8 @@ SidebarComponent = QuillSidebar, ContainerComponent = CustomContainer, SelectCol
1732
1803
  queryString: activeQuery,
1733
1804
  rows: rows,
1734
1805
  }
1735
- : tempReport, rows: rows, columns: columns, pivot: pivot, query: activeQuery, showTableFormatOptions: showChartBuilderTableFormatOptions, showDateFieldOptions: isAdminEnabled, showAccessControlOptions: isAdminEnabled, isAdmin: isAdminEnabled, title: reportId ? 'Save changes' : 'Add to dashboard', isHorizontalView: true, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: reportId ? onSubmitEditReport : onSubmitCreateReport, destinationDashboard: destinationDashboard, organizationName: organizationName, pivotData: pivotData, initialUniqueValues: uniqueValues[currentTable], pivotRecommendationsEnabled: pivotRecommendationsEnabled && overrideRecommendations, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, CardComponent: CardComponent, ModalComponent: ChartBuilderModalComponent, PopoverComponent: PopoverComponent, TableComponent: TableComponent, DeleteButtonComponent: DeleteButtonComponent, LoadingComponent: LoadingComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true, buttonLabel: !!reportId ? 'Save changes' : 'Add to dashboard', onClickChartElement: onClickChartElement, rowCount: numberOfRows, onPageChange: onPageChange, onSortChange: onSortChange, isLoading: tableLoading, isEditingMode: true }))] }));
1806
+ : {
1807
+ ...tempReport,
1808
+ filtersApplied: dashboardFilters.filter((f) => f && destinationDashboard === f.dashboardName),
1809
+ }, rows: rows, columns: columns, pivot: pivot, query: activeQuery, showTableFormatOptions: showChartBuilderTableFormatOptions, showDateFieldOptions: isAdminEnabled, showAccessControlOptions: isAdminEnabled, isAdmin: isAdminEnabled, title: reportId ? 'Save changes' : 'Add to dashboard', isHorizontalView: true, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: reportId ? onSubmitEditReport : onSubmitCreateReport, destinationDashboard: destinationDashboard, organizationName: organizationName, pivotData: pivotData, initialUniqueValues: uniqueValues[currentTable], initialUniqueValuesIsLoading: uniqueValuesIsLoading, pivotRecommendationsEnabled: pivotRecommendationsEnabledState, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, CardComponent: CardComponent, ModalComponent: ChartBuilderModalComponent, PopoverComponent: PopoverComponent, TableComponent: TableComponent, DeleteButtonComponent: DeleteButtonComponent, LoadingComponent: LoadingComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true, buttonLabel: !!reportId ? 'Save changes' : 'Add to dashboard', onClickChartElement: onClickChartElement, rowCount: numberOfRows, onPageChange: onPageChange, onSortChange: onSortChange, onFilterPreviewChange: onFilterPreviewChange, isLoading: tableLoading || isAddLoading, isEditingMode: true }))] }));
1736
1810
  }