@quillsql/react 2.14.12 → 2.14.14

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 (247) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +12 -0
  3. package/dist/cjs/ChartBuilder.d.ts +3 -2
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +105 -16
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +2 -0
  8. package/dist/cjs/Context.d.ts +6 -2
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +163 -35
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +93 -16
  13. package/dist/cjs/QuillProvider.d.ts +40 -1
  14. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  15. package/dist/cjs/QuillProvider.js +2 -2
  16. package/dist/cjs/ReportBuilder.d.ts +4 -1
  17. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  18. package/dist/cjs/ReportBuilder.js +103 -1262
  19. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  20. package/dist/cjs/SQLEditor.js +50 -6
  21. package/dist/cjs/Table.d.ts.map +1 -1
  22. package/dist/cjs/Table.js +12 -0
  23. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/BarChart.js +14 -9
  25. package/dist/cjs/components/Chart/CustomBar.d.ts +18 -0
  26. package/dist/cjs/components/Chart/CustomBar.d.ts.map +1 -0
  27. package/dist/cjs/components/Chart/CustomBar.js +70 -0
  28. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  29. package/dist/cjs/components/Chart/InternalChart.js +24 -1
  30. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  31. package/dist/cjs/components/Dashboard/DashboardTemplate.js +2 -1
  32. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  33. package/dist/cjs/components/Dashboard/DataLoader.js +73 -2
  34. package/dist/cjs/components/Dashboard/util.d.ts +2 -1
  35. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  36. package/dist/cjs/components/Dashboard/util.js +12 -1
  37. package/dist/cjs/components/QuillTable.d.ts +2 -1
  38. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  39. package/dist/cjs/components/QuillTable.js +2 -2
  40. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  41. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +7 -1
  42. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts +48 -0
  43. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts.map +1 -0
  44. package/dist/cjs/components/ReportBuilder/ColumnComponent.js +46 -0
  45. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts +65 -0
  46. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts.map +1 -0
  47. package/dist/cjs/components/ReportBuilder/FilterComponent.js +51 -0
  48. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts +42 -0
  49. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts.map +1 -0
  50. package/dist/cjs/components/ReportBuilder/LimitComponent.js +50 -0
  51. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts +66 -0
  52. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts.map +1 -0
  53. package/dist/cjs/components/ReportBuilder/PivotComponent.js +47 -0
  54. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts +162 -0
  55. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts.map +1 -0
  56. package/dist/cjs/components/ReportBuilder/SaveReport.js +31 -0
  57. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts +42 -0
  58. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts.map +1 -0
  59. package/dist/cjs/components/ReportBuilder/SortComponent.js +50 -0
  60. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts +28 -0
  61. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts.map +1 -0
  62. package/dist/cjs/components/ReportBuilder/TableComponent.js +24 -0
  63. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  64. package/dist/cjs/components/ReportBuilder/ui.js +3 -1
  65. package/dist/cjs/components/UiComponents.d.ts +5 -2
  66. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  67. package/dist/cjs/components/UiComponents.js +6 -5
  68. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  69. package/dist/cjs/hooks/useAskQuill.js +38 -0
  70. package/dist/cjs/hooks/useDashboard.d.ts +3 -1
  71. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  72. package/dist/cjs/hooks/useDashboard.js +91 -6
  73. package/dist/cjs/hooks/useExport.d.ts +5 -2
  74. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  75. package/dist/cjs/hooks/useExport.js +29 -14
  76. package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
  77. package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
  78. package/dist/cjs/hooks/useLongLoading.js +67 -0
  79. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  80. package/dist/cjs/hooks/useQuill.js +25 -1
  81. package/dist/cjs/hooks/useReportBuilder.d.ts +178 -0
  82. package/dist/cjs/hooks/useReportBuilder.d.ts.map +1 -0
  83. package/dist/cjs/hooks/useReportBuilder.js +1476 -0
  84. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  85. package/dist/cjs/hooks/useVirtualTables.js +27 -2
  86. package/dist/cjs/index.d.ts +11 -0
  87. package/dist/cjs/index.d.ts.map +1 -1
  88. package/dist/cjs/index.js +17 -1
  89. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +14 -1
  90. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  91. package/dist/cjs/internals/ReportBuilder/PivotForm.js +86 -3
  92. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +19 -2
  93. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  94. package/dist/cjs/internals/ReportBuilder/PivotModal.js +421 -141
  95. package/dist/cjs/models/Client.d.ts +6 -2
  96. package/dist/cjs/models/Client.d.ts.map +1 -1
  97. package/dist/cjs/utils/astProcessing.d.ts +4 -2
  98. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  99. package/dist/cjs/utils/astProcessing.js +25 -2
  100. package/dist/cjs/utils/client.d.ts +2 -1
  101. package/dist/cjs/utils/client.d.ts.map +1 -1
  102. package/dist/cjs/utils/client.js +13 -2
  103. package/dist/cjs/utils/csv.d.ts.map +1 -1
  104. package/dist/cjs/utils/csv.js +2 -6
  105. package/dist/cjs/utils/dashboard.d.ts +3 -1
  106. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  107. package/dist/cjs/utils/dashboard.js +44 -3
  108. package/dist/cjs/utils/filterProcessing.d.ts +2 -1
  109. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  110. package/dist/cjs/utils/filterProcessing.js +12 -1
  111. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  112. package/dist/cjs/utils/pivotConstructor.js +11 -9
  113. package/dist/cjs/utils/report.d.ts +11 -5
  114. package/dist/cjs/utils/report.d.ts.map +1 -1
  115. package/dist/cjs/utils/report.js +55 -8
  116. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
  117. package/dist/cjs/utils/reportBuilder.js +5 -2
  118. package/dist/cjs/utils/schema.d.ts +5 -2
  119. package/dist/cjs/utils/schema.d.ts.map +1 -1
  120. package/dist/cjs/utils/schema.js +14 -2
  121. package/dist/cjs/utils/tableProcessing.d.ts +17 -10
  122. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  123. package/dist/cjs/utils/tableProcessing.js +99 -17
  124. package/dist/esm/Chart.d.ts.map +1 -1
  125. package/dist/esm/Chart.js +13 -1
  126. package/dist/esm/ChartBuilder.d.ts +3 -2
  127. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  128. package/dist/esm/ChartBuilder.js +107 -18
  129. package/dist/esm/ChartEditor.d.ts.map +1 -1
  130. package/dist/esm/ChartEditor.js +3 -1
  131. package/dist/esm/Context.d.ts +6 -2
  132. package/dist/esm/Context.d.ts.map +1 -1
  133. package/dist/esm/Context.js +162 -34
  134. package/dist/esm/Dashboard.d.ts.map +1 -1
  135. package/dist/esm/Dashboard.js +94 -17
  136. package/dist/esm/QuillProvider.d.ts +40 -1
  137. package/dist/esm/QuillProvider.d.ts.map +1 -1
  138. package/dist/esm/QuillProvider.js +2 -2
  139. package/dist/esm/ReportBuilder.d.ts +4 -1
  140. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  141. package/dist/esm/ReportBuilder.js +106 -1262
  142. package/dist/esm/SQLEditor.d.ts.map +1 -1
  143. package/dist/esm/SQLEditor.js +51 -7
  144. package/dist/esm/Table.d.ts.map +1 -1
  145. package/dist/esm/Table.js +13 -1
  146. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  147. package/dist/esm/components/Chart/BarChart.js +15 -10
  148. package/dist/esm/components/Chart/CustomBar.d.ts +18 -0
  149. package/dist/esm/components/Chart/CustomBar.d.ts.map +1 -0
  150. package/dist/esm/components/Chart/CustomBar.js +68 -0
  151. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  152. package/dist/esm/components/Chart/InternalChart.js +25 -2
  153. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  154. package/dist/esm/components/Dashboard/DashboardTemplate.js +3 -2
  155. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  156. package/dist/esm/components/Dashboard/DataLoader.js +74 -3
  157. package/dist/esm/components/Dashboard/util.d.ts +2 -1
  158. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  159. package/dist/esm/components/Dashboard/util.js +12 -1
  160. package/dist/esm/components/QuillTable.d.ts +2 -1
  161. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  162. package/dist/esm/components/QuillTable.js +2 -2
  163. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  164. package/dist/esm/components/ReportBuilder/AddColumnModal.js +7 -1
  165. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts +48 -0
  166. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts.map +1 -0
  167. package/dist/esm/components/ReportBuilder/ColumnComponent.js +39 -0
  168. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts +65 -0
  169. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts.map +1 -0
  170. package/dist/esm/components/ReportBuilder/FilterComponent.js +44 -0
  171. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts +42 -0
  172. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts.map +1 -0
  173. package/dist/esm/components/ReportBuilder/LimitComponent.js +46 -0
  174. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts +66 -0
  175. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts.map +1 -0
  176. package/dist/esm/components/ReportBuilder/PivotComponent.js +40 -0
  177. package/dist/esm/components/ReportBuilder/SaveReport.d.ts +162 -0
  178. package/dist/esm/components/ReportBuilder/SaveReport.d.ts.map +1 -0
  179. package/dist/esm/components/ReportBuilder/SaveReport.js +31 -0
  180. package/dist/esm/components/ReportBuilder/SortComponent.d.ts +42 -0
  181. package/dist/esm/components/ReportBuilder/SortComponent.d.ts.map +1 -0
  182. package/dist/esm/components/ReportBuilder/SortComponent.js +46 -0
  183. package/dist/esm/components/ReportBuilder/TableComponent.d.ts +28 -0
  184. package/dist/esm/components/ReportBuilder/TableComponent.d.ts.map +1 -0
  185. package/dist/esm/components/ReportBuilder/TableComponent.js +20 -0
  186. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/ui.js +4 -2
  188. package/dist/esm/components/UiComponents.d.ts +5 -2
  189. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  190. package/dist/esm/components/UiComponents.js +6 -5
  191. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  192. package/dist/esm/hooks/useAskQuill.js +39 -1
  193. package/dist/esm/hooks/useDashboard.d.ts +3 -1
  194. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  195. package/dist/esm/hooks/useDashboard.js +92 -7
  196. package/dist/esm/hooks/useExport.d.ts +5 -2
  197. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  198. package/dist/esm/hooks/useExport.js +30 -15
  199. package/dist/esm/hooks/useLongLoading.d.ts +13 -0
  200. package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
  201. package/dist/esm/hooks/useLongLoading.js +64 -0
  202. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  203. package/dist/esm/hooks/useQuill.js +26 -2
  204. package/dist/esm/hooks/useReportBuilder.d.ts +178 -0
  205. package/dist/esm/hooks/useReportBuilder.d.ts.map +1 -0
  206. package/dist/esm/hooks/useReportBuilder.js +1471 -0
  207. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  208. package/dist/esm/hooks/useVirtualTables.js +28 -3
  209. package/dist/esm/index.d.ts +11 -0
  210. package/dist/esm/index.d.ts.map +1 -1
  211. package/dist/esm/index.js +8 -0
  212. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +14 -1
  213. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  214. package/dist/esm/internals/ReportBuilder/PivotForm.js +87 -4
  215. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +19 -2
  216. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  217. package/dist/esm/internals/ReportBuilder/PivotModal.js +423 -143
  218. package/dist/esm/models/Client.d.ts +6 -2
  219. package/dist/esm/models/Client.d.ts.map +1 -1
  220. package/dist/esm/utils/astProcessing.d.ts +4 -2
  221. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  222. package/dist/esm/utils/astProcessing.js +25 -2
  223. package/dist/esm/utils/client.d.ts +2 -1
  224. package/dist/esm/utils/client.d.ts.map +1 -1
  225. package/dist/esm/utils/client.js +13 -2
  226. package/dist/esm/utils/csv.d.ts.map +1 -1
  227. package/dist/esm/utils/csv.js +2 -6
  228. package/dist/esm/utils/dashboard.d.ts +3 -1
  229. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  230. package/dist/esm/utils/dashboard.js +44 -3
  231. package/dist/esm/utils/filterProcessing.d.ts +2 -1
  232. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  233. package/dist/esm/utils/filterProcessing.js +12 -1
  234. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  235. package/dist/esm/utils/pivotConstructor.js +11 -9
  236. package/dist/esm/utils/report.d.ts +11 -5
  237. package/dist/esm/utils/report.d.ts.map +1 -1
  238. package/dist/esm/utils/report.js +55 -8
  239. package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
  240. package/dist/esm/utils/reportBuilder.js +5 -2
  241. package/dist/esm/utils/schema.d.ts +5 -2
  242. package/dist/esm/utils/schema.d.ts.map +1 -1
  243. package/dist/esm/utils/schema.js +14 -2
  244. package/dist/esm/utils/tableProcessing.d.ts +17 -10
  245. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  246. package/dist/esm/utils/tableProcessing.js +99 -17
  247. package/package.json +1 -1
@@ -249,7 +249,7 @@ export const MemoizedText = ({ label }) => {
249
249
  /**
250
250
  * The one, true Quill popover component.
251
251
  */
252
- export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle = undefined, popoverChildren, containerStyle, disabled, ignoredRefs, }) => {
252
+ export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle = undefined, popoverChildren, containerStyle, disabled, ignoredRefs, horizontalPadding = 20, titlePaddingLeft = 0, }) => {
253
253
  const [theme] = useContext(ThemeContext);
254
254
  const [rightAlignment, setRightAlignment] = useState('auto');
255
255
  const modalRef = useRef(null);
@@ -309,7 +309,7 @@ export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle
309
309
  zIndex: 999,
310
310
  // top: 12,
311
311
  borderRadius: 6,
312
- padding: 20,
312
+ padding: `20px ${horizontalPadding}px 20px ${horizontalPadding}px`,
313
313
  right: rightAlignment,
314
314
  }, children: [popoverTitle && (_jsx("h1", { style: {
315
315
  fontWeight: '600',
@@ -319,6 +319,7 @@ export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle
319
319
  marginBottom: 5,
320
320
  color: theme?.primaryTextColor,
321
321
  fontFamily: theme?.fontFamily,
322
+ paddingLeft: titlePaddingLeft,
322
323
  }, children: popoverTitle })), popoverChildren] }) }))] }));
323
324
  };
324
325
  export function MemoizedModal({ isOpen, setIsOpen, title, children, width, height, }) {
@@ -443,7 +444,7 @@ export const QuillTableReportBuilderComponent = ({ rows, columns, isLoading = fa
443
444
  setCurrentPage && setCurrentPage(0);
444
445
  setPage(0);
445
446
  onSortChange && onSortChange(sort);
446
- }, sort: sort, currentPage: currentPage ?? page, isLoading: isLoading, containerStyle: containerStyle, disableSort: disableSort }));
447
+ }, sort: sort, currentPage: currentPage ?? page, isLoading: isLoading, containerStyle: containerStyle, disableSort: disableSort, overrideInMemortSort: true }));
447
448
  };
448
449
  export const QuillTableComponent = ({ rows, columns, isLoading = false, rowCount, rowCountIsLoading, onPageChange, onSortChange, currentPage, hideLabels, }) => {
449
450
  const [sort, setSort] = useState({ field: '', direction: '' });
@@ -696,7 +697,7 @@ export const QuillLoadingComponent = () => {
696
697
  , strokeDashoffset: "19.63 39.25" // calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)
697
698
  , stroke: '#ADB1B9', fill: "none", transform: "rotate(90 12 12)", children: _jsx("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "0 12 12", to: "360 12 12", dur: "0.8s", repeatCount: "indefinite" }) })] })] }));
698
699
  };
699
- export const OverflowContainer = ({ children }) => {
700
+ export const OverflowContainer = ({ children, style, }) => {
700
701
  const containerRef = useRef(null);
701
702
  const [showTopShadow, setShowTopShadow] = useState(false);
702
703
  const [showBottomShadow, setShowBottomShadow] = useState(false);
@@ -731,7 +732,7 @@ export const OverflowContainer = ({ children }) => {
731
732
  const containerStyle = {
732
733
  position: 'relative',
733
734
  overflowY: 'auto',
734
- // height: '100%',
735
+ ...style,
735
736
  };
736
737
  const shadowStyle = {
737
738
  position: 'sticky',
@@ -1 +1 @@
1
- {"version":3,"file":"useAskQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAskQuill.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAEL,cAAc,IAAI,UAAU,EAE7B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB;AA6BD,eAAO,MAAM,WAAW,kBACP,MAAM,KACpB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;KAE/B,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CAmNtD,CAAC"}
1
+ {"version":3,"file":"useAskQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAskQuill.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAEL,cAAc,IAAI,UAAU,EAE7B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB;AA6BD,eAAO,MAAM,WAAW,kBACP,MAAM,KACpB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;KAE/B,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACtC,kBAAkB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CAyPtD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { useContext, useEffect, useState } from 'react';
2
- import { ClientContext, FetchContext, SchemaDataContext, TenantContext, } from '../Context';
2
+ import { ClientContext, EventTrackingContext, FetchContext, SchemaDataContext, TenantContext, } from '../Context';
3
3
  import { fetchAndProcessASTFromPrompt } from '../utils/astProcessing';
4
4
  import { fetchReportBuilderDataFromAST, } from '../utils/report';
5
5
  import { astToFilterTree, filterTreeToAst, } from '../utils/astFilterProcessing';
@@ -37,6 +37,7 @@ export const useAskQuill = (dashboardName) => {
37
37
  const [schemaData] = useContext(SchemaDataContext);
38
38
  const { tenants } = useContext(TenantContext);
39
39
  const { getToken } = useContext(FetchContext);
40
+ const { eventTracking } = useContext(EventTrackingContext);
40
41
  const [astInfo, setAstInfo] = useState(undefined);
41
42
  const [data, setData] = useState({
42
43
  rows: [],
@@ -73,6 +74,7 @@ export const useAskQuill = (dashboardName) => {
73
74
  dashboardName,
74
75
  tenants,
75
76
  getToken,
77
+ eventTracking,
76
78
  });
77
79
  if (astInfo.error) {
78
80
  throw new Error(astInfo.error);
@@ -85,6 +87,7 @@ export const useAskQuill = (dashboardName) => {
85
87
  pivot: astInfo.pivot,
86
88
  dashboardName,
87
89
  getToken,
90
+ eventTracking,
88
91
  });
89
92
  if (!reportBuilderInfo) {
90
93
  throw new Error('Error fetching report');
@@ -102,6 +105,17 @@ export const useAskQuill = (dashboardName) => {
102
105
  setError(err.message);
103
106
  setLoading(false);
104
107
  }
108
+ eventTracking?.logError?.({
109
+ type: 'bug', // TODO: determine type
110
+ severity: 'high',
111
+ message: 'Error fetching ask quill',
112
+ errorMessage: err.message,
113
+ errorStack: err.stack,
114
+ errorData: {
115
+ caller: 'useAskQuill',
116
+ function: 'askHelper',
117
+ },
118
+ });
105
119
  return;
106
120
  }
107
121
  const convertedColumns = convertColumnInternalToAskQuillColumn(reportBuilderInfo?.pivotData?.columns || reportBuilderInfo?.columns || []);
@@ -135,6 +149,7 @@ export const useAskQuill = (dashboardName) => {
135
149
  pivot: newPivot,
136
150
  dashboardName,
137
151
  getToken,
152
+ eventTracking,
138
153
  });
139
154
  setLoading(false);
140
155
  if (!reportBuilderInfo) {
@@ -142,6 +157,17 @@ export const useAskQuill = (dashboardName) => {
142
157
  }
143
158
  }
144
159
  catch (err) {
160
+ eventTracking?.logError?.({
161
+ type: 'bug', // TODO: determine type
162
+ severity: 'high',
163
+ message: 'Error fetching ask quill',
164
+ errorMessage: err.message,
165
+ errorStack: err.stack,
166
+ errorData: {
167
+ caller: 'useAskQuill',
168
+ function: 'onChangePivot',
169
+ },
170
+ });
145
171
  if (err instanceof Error) {
146
172
  setError(err.message);
147
173
  setLoading(false);
@@ -179,10 +205,22 @@ export const useAskQuill = (dashboardName) => {
179
205
  pivot: data.pivot || undefined,
180
206
  dashboardName,
181
207
  getToken,
208
+ eventTracking,
182
209
  });
183
210
  setLoading(false);
184
211
  }
185
212
  catch (err) {
213
+ eventTracking?.logError?.({
214
+ type: 'bug', // TODO: determine type
215
+ severity: 'high',
216
+ message: 'Error fetching ask quill',
217
+ errorMessage: err.message,
218
+ errorStack: err.stack,
219
+ errorData: {
220
+ caller: 'useAskQuill',
221
+ function: 'onChangeFilterTree',
222
+ },
223
+ });
186
224
  if (err instanceof Error) {
187
225
  setError(err.message);
188
226
  setLoading(false);
@@ -75,7 +75,9 @@ export declare const useDashboard: (dashboardName: string) => {
75
75
  };
76
76
  } | Filter>) => void;
77
77
  };
78
- export declare const useDashboardReport: (reportId: string) => {
78
+ export declare const useDashboardReport: (reportId: string, config?: {
79
+ initialFilters?: Filter[];
80
+ }) => {
79
81
  report: QuillReport | null;
80
82
  loading: boolean;
81
83
  applyFilters: (filters: Filter[]) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAGL,uBAAuB,EAGvB,MAAM,EACN,cAAc,EAGd,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,eAAO,MAAM,oBAAoB,kBAChB,MAAM,GAAG,IAAI,kBACZ,cAAc,EAAE;;;;2CA0Mc,MAAM;qCAtK1B,MAAM,4CAEf;QACb,MAAM,EAAE,WAAW,GAAG;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC7B,oBACiB;QAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;oCAmFa;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE;CAwF3E,CAAC;AAEF,eAAO,MAAM,mBAAmB,mBAAoB,MAAM;;;;yBAK5B,OAAO,CAAC,mBAAmB,CAAC;sBAiB/B,mBAAmB;CAoB7C,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAqBzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;uEAsCrB;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,uBAAuB,CAAC;KACtC;4BAqDO,MAAM,gEAOT;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB;4BAyOkC,MAAM;CAwB5C,CAAC;AAGF,eAAO,MAAM,YAAY,kBACR,MAAM,KAEpB;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,YAAY,EAAE,CACZ,OAAO,EAAE,KAAK,CACV;QACE,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;YAAE,SAAS,CAAC,EAAE,IAAI,CAAC;YAAC,OAAO,CAAC,EAAE,IAAI,CAAA;SAAE,CAAC;KACjE,GACD,MAAM,CACT,KACE,IAAI,CAAC;CAiOX,CAAC;AAGF,eAAO,MAAM,kBAAkB,aACnB,MAAM,KACf;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;CAiI1B,CAAC"}
1
+ {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAGL,uBAAuB,EAGvB,MAAM,EACN,cAAc,EAGd,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,eAAO,MAAM,oBAAoB,kBAChB,MAAM,GAAG,IAAI,kBACZ,cAAc,EAAE;;;;2CAoNc,MAAM;qCAjL1B,MAAM,4CAEf;QACb,MAAM,EAAE,WAAW,GAAG;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;KAC7B,oBACiB;QAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;oCAmFa;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE;CAmG3E,CAAC;AAEF,eAAO,MAAM,mBAAmB,mBAAoB,MAAM;;;;yBAK5B,OAAO,CAAC,mBAAmB,CAAC;sBAiB/B,mBAAmB;CAoB7C,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAqBzB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;uEAuCrB;QACD,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,uBAAuB,CAAC;KACtC;4BA2EO,MAAM,gEAOT;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACnC,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB;4BAiQkC,MAAM;CAwB5C,CAAC;AAGF,eAAO,MAAM,YAAY,kBACR,MAAM,KAEpB;IACD,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,YAAY,EAAE,CACZ,OAAO,EAAE,KAAK,CACV;QACE,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;YAAE,SAAS,CAAC,EAAE,IAAI,CAAC;YAAC,OAAO,CAAC,EAAE,IAAI,CAAA;SAAE,CAAC;KACjE,GACD,MAAM,CACT,KACE,IAAI,CAAC;CA2PX,CAAC;AAGF,eAAO,MAAM,kBAAkB,aACnB,MAAM,WACP;IACP,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B,KACA;IACD,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,YAAY,EAAE,MAAM,IAAI,CAAC;CA+I1B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { useContext, useEffect, useMemo, useRef } from 'react';
2
- import { ClientContext, DashboardConfigContext, DashboardContext, DashboardFiltersContext, FetchContext, ReportFiltersContext, ReportsContext, TenantContext, } from '../Context';
2
+ import { ClientContext, DashboardConfigContext, DashboardContext, DashboardFiltersContext, EventTrackingContext, FetchContext, ReportFiltersContext, ReportsContext, TenantContext, } from '../Context';
3
3
  import { convertPresetOptionsToSelectableList, PRIMARY_RANGE, } from '../DateRangePicker/dateRangePickerUtils';
4
4
  import { convertCustomFilter, InternalDashboardFilterType, StringFilterType, convertInternalDashboardFilterToDashboardFilter, } from '../models/Filter';
5
5
  import { createDefaultDateFilter } from '../utils/filterProcessing';
@@ -14,13 +14,12 @@ export const useDashboardInternal = (dashboardName, customFilters) => {
14
14
  // const [error, setError] = useState<any>(null);
15
15
  const [client, isClientLoading] = useContext(ClientContext);
16
16
  const { quillFetchWithToken } = useContext(FetchContext);
17
+ const { eventTracking } = useContext(EventTrackingContext);
17
18
  const loading = useMemo(() => {
18
19
  return (!dashboardName ||
19
20
  isClientLoading ||
20
21
  isDashboardsLoading ||
21
- dashboardConfig[dashboardName]?.loading ||
22
- (dashboardConfig[dashboardName] &&
23
- !dashboardConfig[dashboardName]?.config.sections));
22
+ dashboardConfig[dashboardName]?.loading);
24
23
  }, [isClientLoading, dashboardConfig, dashboardName, isDashboardsLoading]);
25
24
  const populatedDashboardFilters = useMemo(() => {
26
25
  return dashboardName && dashboardFilters[dashboardName] !== undefined
@@ -140,6 +139,17 @@ export const useDashboardInternal = (dashboardName, customFilters) => {
140
139
  }
141
140
  catch (e) {
142
141
  console.error(e);
142
+ eventTracking?.logError?.({
143
+ type: 'bug', // TODO: determine type
144
+ severity: 'high',
145
+ message: 'Error setting section order',
146
+ errorMessage: e.message,
147
+ errorStack: e.stack,
148
+ errorData: {
149
+ caller: 'useDashboard',
150
+ function: 'setSectionOrder',
151
+ },
152
+ });
143
153
  }
144
154
  }
145
155
  };
@@ -228,6 +238,7 @@ export const useDashboards = () => {
228
238
  const { reportFiltersDispatch } = useContext(ReportFiltersContext);
229
239
  const [client, isLoading] = useContext(ClientContext);
230
240
  const { quillFetchWithToken } = useContext(FetchContext);
241
+ const { eventTracking } = useContext(EventTrackingContext);
231
242
  const dashboards = useMemo(() => {
232
243
  return Object.values(dashboardConfig)
233
244
  .map((dashboard) => {
@@ -277,6 +288,15 @@ export const useDashboards = () => {
277
288
  task: 'edit-dashboard',
278
289
  metadata: body,
279
290
  });
291
+ eventTracking?.logEvent?.('create-dashboard', {
292
+ dashboardName: name,
293
+ });
294
+ if (filters.length > 0 || dateFilter) {
295
+ eventTracking?.logEvent?.('update-dashboard-filters', {
296
+ dashboardName: name,
297
+ numFilters: filters.length + (dateFilter ? 1 : 0),
298
+ });
299
+ }
280
300
  dashboardConfigDispatch({
281
301
  type: 'UPDATE_DASHBOARD',
282
302
  id: name,
@@ -291,6 +311,17 @@ export const useDashboards = () => {
291
311
  }
292
312
  catch (e) {
293
313
  console.error(e);
314
+ eventTracking?.logError?.({
315
+ type: 'bug', // TODO: determine type
316
+ severity: 'high',
317
+ message: 'Error creating dashboard',
318
+ errorMessage: e.message,
319
+ errorStack: e.stack,
320
+ errorData: {
321
+ caller: 'useDashboards',
322
+ function: 'createDashboard',
323
+ },
324
+ });
294
325
  }
295
326
  };
296
327
  const updateDashboard = async (name, { newName, filters, dateFilter, customFilters, tenantKeys, }) => {
@@ -324,6 +355,16 @@ export const useDashboards = () => {
324
355
  task: 'edit-dashboard',
325
356
  metadata: body,
326
357
  });
358
+ eventTracking?.logEvent?.('update-dashboard', {
359
+ dashboardName: updated.data.dashboard.name,
360
+ dashboardId: updated.data.dashboard.dashboardId,
361
+ });
362
+ if (filters.length > 0 || dateFilter) {
363
+ eventTracking?.logEvent?.('update-dashboard-filters', {
364
+ dashboardName: name,
365
+ numFilters: filters.length + (dateFilter ? 1 : 0),
366
+ });
367
+ }
327
368
  dashboardConfigDispatch({
328
369
  type: 'UPDATE_DASHBOARD',
329
370
  id: updated.data.dashboard.name,
@@ -475,6 +516,17 @@ export const useDashboards = () => {
475
516
  }
476
517
  catch (e) {
477
518
  console.error(e);
519
+ eventTracking?.logError?.({
520
+ type: 'bug', // TODO: determine type
521
+ severity: 'high',
522
+ message: 'Error updating dashboard',
523
+ errorMessage: e.message,
524
+ errorStack: e.stack,
525
+ errorData: {
526
+ caller: 'useDashboards',
527
+ function: 'updateDashboard',
528
+ },
529
+ });
478
530
  }
479
531
  };
480
532
  const deleteDashboard = async (name) => {
@@ -513,6 +565,12 @@ export const useDashboard = (dashboardName) => {
513
565
  const { tenants, flags } = useContext(TenantContext);
514
566
  const { getToken } = useContext(FetchContext);
515
567
  const { customReportFilters } = useContext(ReportFiltersContext);
568
+ const { eventTracking } = useContext(EventTrackingContext);
569
+ const customFiltersRef = useRef(customReportFilters);
570
+ // Keep ref updated with latest filters
571
+ useEffect(() => {
572
+ customFiltersRef.current = customReportFilters;
573
+ }, [customReportFilters]);
516
574
  // If useDashboard is being used before Dashboard Context is set, we need to
517
575
  // actively load the dashboard
518
576
  useEffect(() => {
@@ -635,6 +693,20 @@ export const useDashboard = (dashboardName) => {
635
693
  const newDashboardFilters = applyDashboardFilters(dashboardFilters);
636
694
  fetchReports(newCustomFilters, newDashboardFilters);
637
695
  };
696
+ // In case useDashboardReport set initial custom filters
697
+ const waitForCustomFilters = async (reportId) => {
698
+ let attempts = 0;
699
+ const maxAttempts = 10; // Prevent infinite loops
700
+ while (attempts < maxAttempts) {
701
+ const filters = customFiltersRef.current[reportId];
702
+ if (filters && filters.length > 0) {
703
+ return filters;
704
+ }
705
+ await new Promise((resolve) => setTimeout(resolve, 100)); // Wait 100ms between checks
706
+ attempts++;
707
+ }
708
+ return [];
709
+ };
638
710
  const fetchReports = async (customFilters, dashboardFilters) => {
639
711
  if (!client || !sections)
640
712
  return;
@@ -645,7 +717,7 @@ export const useDashboard = (dashboardName) => {
645
717
  id: reportId,
646
718
  data: true,
647
719
  });
648
- const customReportFiltersArray = customReportFilters[reportId] ?? [];
720
+ const customReportFiltersArray = await waitForCustomFilters(reportId);
649
721
  const { report, error } = await fetchReport({
650
722
  reportId,
651
723
  client,
@@ -655,6 +727,7 @@ export const useDashboard = (dashboardName) => {
655
727
  .concat(customFilters)
656
728
  .concat(customReportFiltersArray),
657
729
  getToken,
730
+ eventTracking,
658
731
  });
659
732
  if (error) {
660
733
  console.error(error);
@@ -681,20 +754,31 @@ export const useDashboard = (dashboardName) => {
681
754
  };
682
755
  };
683
756
  // useDashboard accompanying hook
684
- export const useDashboardReport = (reportId) => {
757
+ export const useDashboardReport = (reportId, config) => {
685
758
  const { reports, reportsLoadingState, reportsDispatch, reportsLoadingStateDispatch, } = useContext(ReportsContext);
686
759
  const { dashboardFilters } = useContext(DashboardFiltersContext);
687
760
  const { tenants, flags } = useContext(TenantContext);
688
761
  const [client] = useContext(ClientContext);
689
762
  const { getToken } = useContext(FetchContext);
763
+ const { eventTracking } = useContext(EventTrackingContext);
690
764
  const { customReportFiltersDispatch } = useContext(ReportFiltersContext);
691
765
  const { dashboardCustomFilters } = useContext(DashboardFiltersContext);
692
766
  const { data: dashboardData, dashboardFilters: dashboardFiltersInternal, reload: reloadDashboard, } = useDashboardInternal(reports[reportId]?.dashboardName ?? null);
767
+ // Add initial custom filters to context
768
+ useEffect(() => {
769
+ if (config?.initialFilters) {
770
+ customReportFiltersDispatch({
771
+ type: 'ADD_CUSTOM_REPORT_FILTERS',
772
+ reportId,
773
+ data: config.initialFilters.map(convertCustomFilter),
774
+ });
775
+ }
776
+ }, []);
693
777
  const processedReport = useMemo(() => {
694
778
  if (!reports[reportId])
695
779
  return null;
696
780
  const dashboardName = reports[reportId].dashboardName;
697
- return convertInternalReportToReport(mergeComparisonRange(reports[reportId]), Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter), 'useDashboardReport');
781
+ return convertInternalReportToReport(mergeComparisonRange(reports[reportId]), Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter), eventTracking, 'useDashboardReport');
698
782
  }, [reports, reportId, dashboardFilters]);
699
783
  const setReportFilters = (filters) => {
700
784
  updateReport(filters);
@@ -725,6 +809,7 @@ export const useDashboardReport = (reportId) => {
725
809
  flags,
726
810
  filters: requestFilters,
727
811
  getToken,
812
+ eventTracking,
728
813
  });
729
814
  if (error) {
730
815
  console.error(error);
@@ -1,12 +1,15 @@
1
1
  import { QuillReport } from '../models/Report';
2
+ interface DownloadOptions {
3
+ usePivotRows?: boolean;
4
+ }
2
5
  export declare const useExport: (reportId?: string, { CustomDocumentComponent, maximumRowsPerPage, sectionField, }?: {
3
6
  CustomDocumentComponent?: (props: QuillPDFProps) => JSX.Element;
4
7
  maximumRowsPerPage?: number;
5
8
  sectionField?: string;
6
9
  }) => {
7
- downloadPDF: () => Promise<void>;
10
+ downloadPDF: (downloadOptions?: DownloadOptions) => Promise<void>;
8
11
  isPDFLoading: boolean;
9
- downloadCSV: () => Promise<void>;
12
+ downloadCSV: (downloadOptions?: DownloadOptions) => Promise<void>;
10
13
  isCSVLoading: boolean;
11
14
  };
12
15
  interface QuillPDFProps {
@@ -1 +1 @@
1
- {"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAkE/C,eAAO,MAAM,SAAS,cACT,MAAM,mEAMd;IACD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA;IACD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;CAiRvB,CAAC;AAEF,UAAU,aAAa;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
1
+ {"version":3,"file":"useExport.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExport.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqE/C,UAAU,eAAe;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,cACT,MAAM,mEAMd;IACD,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA;IACD,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,EAAE,OAAO,CAAC;CA+RvB,CAAC;AAEF,UAAU,aAAa;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { downloadCSV } from '../utils/csv';
3
3
  import { useContext, useMemo, useState } from 'react';
4
4
  import { parseFetchResponse, quillFetch } from '../utils/dataFetcher';
5
- import { ClientContext, DashboardFiltersContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, } from '../Context';
5
+ import { ClientContext, DashboardFiltersContext, EventTrackingContext, FetchContext, ReportFiltersContext, ReportsContext, SchemaDataContext, TenantContext, } from '../Context';
6
6
  import { cleanDashboardItem } from '../utils/dashboard';
7
7
  import { createRoot } from 'react-dom/client';
8
8
  import { flushSync } from 'react-dom';
@@ -10,7 +10,7 @@ import { fetchReport } from '../utils/report';
10
10
  import jsPDF from 'jspdf';
11
11
  import { quillFormat } from '../utils/valueFormatter';
12
12
  import { useAllReports } from './useDashboard';
13
- async function getExportData(client, dashboardFilters, reportId, getToken, tenants, flags, customFields) {
13
+ async function getExportData(client, dashboardFilters, reportId, getToken, eventTracking, tenants, flags, customFields) {
14
14
  const minimalFilters = Object.values(dashboardFilters).length
15
15
  ? Object.values(dashboardFilters).map((filter) => {
16
16
  const newFilter = { ...filter };
@@ -45,6 +45,7 @@ async function getExportData(client, dashboardFilters, reportId, getToken, tenan
45
45
  customFields,
46
46
  getToken,
47
47
  tenants,
48
+ eventTracking,
48
49
  });
49
50
  if (cleanedReport.chartType === 'table' && cleanedReport.pivot) {
50
51
  cleanedReport.columns = cleanedReport.yAxisFields;
@@ -62,6 +63,7 @@ sectionField, } = {}) => {
62
63
  const [schemaData] = useContext(SchemaDataContext);
63
64
  const { tenants, flags } = useContext(TenantContext);
64
65
  const { getToken } = useContext(FetchContext);
66
+ const { eventTracking } = useContext(EventTrackingContext);
65
67
  const specificDashboardFilters = useMemo(() => {
66
68
  if (!reportId) {
67
69
  return [];
@@ -92,26 +94,32 @@ sectionField, } = {}) => {
92
94
  };
93
95
  }
94
96
  return {
95
- downloadCSV: async () => {
97
+ downloadCSV: async (downloadOptions) => {
96
98
  if (!client) {
97
99
  return;
98
100
  }
99
101
  setIsCSVLoading(true);
100
102
  const resp = await getExportData(client, specificReportFilters.length > 0
101
- ? specificReportFilters.concat(customReportFilters[reportId] ??
102
- dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ??
103
- [])
104
- : specificDashboardFilters.concat(customReportFilters[reportId] ??
105
- dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ??
106
- []), reportId, getToken, tenants, flags, schemaData?.customFields);
103
+ ? specificReportFilters.concat([
104
+ ...(customReportFilters[reportId] ?? []),
105
+ ...(dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ?? []),
106
+ ])
107
+ : specificDashboardFilters.concat([
108
+ ...(customReportFilters[reportId] ?? []),
109
+ ...(dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ?? []),
110
+ ]), reportId, getToken, eventTracking, tenants, flags, schemaData?.customFields);
107
111
  downloadCSV({
108
- rows: resp.pivot && resp.pivotRows ? resp.pivotRows : resp.rows,
109
- fields: resp.pivot && resp.pivotColumns ? resp.pivotColumns : resp.columns,
112
+ rows: resp.pivot && resp.pivotRows && downloadOptions?.usePivotRows
113
+ ? resp.pivotRows
114
+ : resp.rows,
115
+ fields: resp.pivot && resp.pivotColumns && downloadOptions?.usePivotRows
116
+ ? resp.pivotColumns
117
+ : resp.columns,
110
118
  name: resp.name,
111
119
  });
112
120
  setIsCSVLoading(false);
113
121
  },
114
- downloadPDF: async () => {
122
+ downloadPDF: async (downloadOptions) => {
115
123
  setIsPDFLoading(true);
116
124
  const filters = specificReportFilters.length > 0
117
125
  ? specificReportFilters
@@ -122,17 +130,24 @@ sectionField, } = {}) => {
122
130
  tenants,
123
131
  flags,
124
132
  useReportTask: true,
125
- filters: filters.concat((customReportFilters[reportId] ??
126
- dashboardCustomFilters[dashboardReport?.dashboardName ?? ''])),
133
+ filters: filters.concat([
134
+ ...(customReportFilters[reportId] ?? []),
135
+ ...(dashboardCustomFilters[dashboardReport?.dashboardName ?? ''] ??
136
+ []),
137
+ ]),
127
138
  customFields: schemaData?.customFields,
128
139
  getToken,
140
+ eventTracking,
129
141
  });
130
142
  if (error) {
131
143
  console.error(error);
132
144
  return;
133
145
  }
134
146
  const report = fetchedReport;
135
- if (report.pivot && report.pivotRows && report.pivotColumns) {
147
+ if (report.pivot &&
148
+ report.pivotRows &&
149
+ report.pivotColumns &&
150
+ downloadOptions?.usePivotRows) {
136
151
  report.rows = report.pivotRows;
137
152
  report.columns = report.pivotColumns;
138
153
  }
@@ -0,0 +1,13 @@
1
+ type LongLoadingMeta = {
2
+ origin: string;
3
+ loadDescription: string;
4
+ expectedLoadTime?: number;
5
+ abnormalLoadTime?: number;
6
+ };
7
+ type LoadingState = {
8
+ isLongLoading: boolean;
9
+ isAbnormalLoading: boolean;
10
+ };
11
+ export declare function useLongLoading(isLoading: boolean, meta: LongLoadingMeta): LoadingState;
12
+ export {};
13
+ //# sourceMappingURL=useLongLoading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLongLoading.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLongLoading.tsx"],"names":[],"mappings":"AAGA,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,wBAAgB,cAAc,CAC5B,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,eAAe,GACpB,YAAY,CAoEd"}
@@ -0,0 +1,64 @@
1
+ import { useContext, useEffect, useState } from 'react';
2
+ import { EventTrackingContext } from '../Context';
3
+ export function useLongLoading(isLoading, meta) {
4
+ const { origin, expectedLoadTime = 5000, abnormalLoadTime = 15000, loadDescription, } = meta;
5
+ const [isLongLoading, setIsLongLoading] = useState(false);
6
+ const [isAbnormalLoading, setIsAbnormalLoading] = useState(false);
7
+ const { eventTracking } = useContext(EventTrackingContext);
8
+ useEffect(() => {
9
+ let longTimer = null;
10
+ let abnormalTimer = null;
11
+ if (isLoading) {
12
+ // Set timer for long loading
13
+ longTimer = setTimeout(() => {
14
+ setIsLongLoading(true);
15
+ eventTracking?.logError?.({
16
+ type: 'timeout',
17
+ severity: 'medium',
18
+ message: `${origin} loading is taking longer than expected`,
19
+ errorData: {
20
+ loadDescription,
21
+ expectedLoadTime,
22
+ currentTime: Date.now(),
23
+ },
24
+ });
25
+ // Set timer for abnormal loading
26
+ abnormalTimer = setTimeout(() => {
27
+ setIsAbnormalLoading(true);
28
+ eventTracking?.logError?.({
29
+ type: 'timeout',
30
+ severity: 'high',
31
+ message: `${origin} loading is taking abnormally long`,
32
+ errorData: {
33
+ loadDescription,
34
+ expectedLoadTime,
35
+ abnormalLoadTime,
36
+ currentTime: Date.now(),
37
+ },
38
+ });
39
+ }, abnormalLoadTime - expectedLoadTime);
40
+ }, expectedLoadTime);
41
+ }
42
+ else {
43
+ setIsLongLoading(false);
44
+ setIsAbnormalLoading(false);
45
+ }
46
+ return () => {
47
+ if (longTimer)
48
+ clearTimeout(longTimer);
49
+ if (abnormalTimer)
50
+ clearTimeout(abnormalTimer);
51
+ };
52
+ }, [
53
+ isLoading,
54
+ origin,
55
+ expectedLoadTime,
56
+ abnormalLoadTime,
57
+ loadDescription,
58
+ eventTracking,
59
+ ]);
60
+ return {
61
+ isLongLoading,
62
+ isAbnormalLoading,
63
+ };
64
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,WAAW,EAIZ,MAAM,yBAAyB,CAAC;AAKjC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,cACR,MAAM,eACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,KAC3D;IACD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,SAAS,EACL,CAAC,CAAC,QAAQ,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC,GAC/C,CAAC,MAAM,SAAS,CAAC,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAsO1B,CAAC"}
1
+ {"version":3,"file":"useQuill.d.ts","sourceRoot":"","sources":["../../../src/hooks/useQuill.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,WAAW,EAIZ,MAAM,yBAAyB,CAAC;AAKjC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,QAAQ,cACR,MAAM,eACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,KAC3D;IACD,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,SAAS,EACL,CAAC,CAAC,QAAQ,EAAE,WAAW,KAAK,MAAM,GAAG,SAAS,CAAC,GAC/C,CAAC,MAAM,SAAS,CAAC,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CA+P1B,CAAC"}