@quillsql/react 2.14.14 → 2.14.15

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 (233) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +0 -12
  3. package/dist/cjs/ChartBuilder.d.ts +2 -3
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +16 -105
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +0 -2
  8. package/dist/cjs/Context.d.ts +2 -6
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +32 -159
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +16 -93
  13. package/dist/cjs/QuillProvider.d.ts +1 -38
  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 +1 -4
  17. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  18. package/dist/cjs/ReportBuilder.js +1270 -103
  19. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  20. package/dist/cjs/SQLEditor.js +6 -50
  21. package/dist/cjs/Table.d.ts.map +1 -1
  22. package/dist/cjs/Table.js +0 -12
  23. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/InternalChart.js +1 -24
  25. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  26. package/dist/cjs/components/Dashboard/DashboardTemplate.js +1 -2
  27. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  28. package/dist/cjs/components/Dashboard/DataLoader.js +2 -73
  29. package/dist/cjs/components/Dashboard/util.d.ts +1 -2
  30. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  31. package/dist/cjs/components/Dashboard/util.js +1 -12
  32. package/dist/cjs/components/QuillTable.d.ts +1 -2
  33. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  34. package/dist/cjs/components/QuillTable.js +2 -2
  35. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  36. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +1 -7
  37. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  38. package/dist/cjs/components/ReportBuilder/ui.js +1 -3
  39. package/dist/cjs/components/UiComponents.d.ts +2 -5
  40. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  41. package/dist/cjs/components/UiComponents.js +5 -6
  42. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  43. package/dist/cjs/hooks/useAskQuill.js +0 -38
  44. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  45. package/dist/cjs/hooks/useDashboard.js +4 -60
  46. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  47. package/dist/cjs/hooks/useExport.js +2 -5
  48. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  49. package/dist/cjs/hooks/useQuill.js +1 -25
  50. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  51. package/dist/cjs/hooks/useVirtualTables.js +2 -27
  52. package/dist/cjs/index.d.ts +0 -11
  53. package/dist/cjs/index.d.ts.map +1 -1
  54. package/dist/cjs/index.js +1 -17
  55. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +1 -14
  56. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  57. package/dist/cjs/internals/ReportBuilder/PivotForm.js +3 -86
  58. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +2 -18
  59. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  60. package/dist/cjs/internals/ReportBuilder/PivotModal.js +141 -420
  61. package/dist/cjs/utils/astProcessing.d.ts +2 -4
  62. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  63. package/dist/cjs/utils/astProcessing.js +2 -25
  64. package/dist/cjs/utils/client.d.ts +1 -2
  65. package/dist/cjs/utils/client.d.ts.map +1 -1
  66. package/dist/cjs/utils/client.js +1 -12
  67. package/dist/cjs/utils/dashboard.d.ts +1 -3
  68. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  69. package/dist/cjs/utils/dashboard.js +3 -44
  70. package/dist/cjs/utils/filterProcessing.d.ts +1 -2
  71. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  72. package/dist/cjs/utils/filterProcessing.js +1 -12
  73. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  74. package/dist/cjs/utils/pivotConstructor.js +9 -11
  75. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  76. package/dist/cjs/utils/pivotProcessing.js +3 -1
  77. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  78. package/dist/cjs/utils/queryConstructor.js +9 -1
  79. package/dist/cjs/utils/report.d.ts +5 -10
  80. package/dist/cjs/utils/report.d.ts.map +1 -1
  81. package/dist/cjs/utils/report.js +7 -51
  82. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
  83. package/dist/cjs/utils/reportBuilder.js +2 -5
  84. package/dist/cjs/utils/schema.d.ts +2 -5
  85. package/dist/cjs/utils/schema.d.ts.map +1 -1
  86. package/dist/cjs/utils/schema.js +2 -14
  87. package/dist/cjs/utils/tableProcessing.d.ts +10 -17
  88. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  89. package/dist/cjs/utils/tableProcessing.js +17 -99
  90. package/dist/esm/Chart.d.ts.map +1 -1
  91. package/dist/esm/Chart.js +1 -13
  92. package/dist/esm/ChartBuilder.d.ts +2 -3
  93. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  94. package/dist/esm/ChartBuilder.js +18 -107
  95. package/dist/esm/ChartEditor.d.ts.map +1 -1
  96. package/dist/esm/ChartEditor.js +1 -3
  97. package/dist/esm/Context.d.ts +2 -6
  98. package/dist/esm/Context.d.ts.map +1 -1
  99. package/dist/esm/Context.js +31 -158
  100. package/dist/esm/Dashboard.d.ts.map +1 -1
  101. package/dist/esm/Dashboard.js +17 -94
  102. package/dist/esm/QuillProvider.d.ts +1 -38
  103. package/dist/esm/QuillProvider.d.ts.map +1 -1
  104. package/dist/esm/QuillProvider.js +2 -2
  105. package/dist/esm/ReportBuilder.d.ts +1 -4
  106. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  107. package/dist/esm/ReportBuilder.js +1270 -106
  108. package/dist/esm/SQLEditor.d.ts.map +1 -1
  109. package/dist/esm/SQLEditor.js +7 -51
  110. package/dist/esm/Table.d.ts.map +1 -1
  111. package/dist/esm/Table.js +1 -13
  112. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  113. package/dist/esm/components/Chart/InternalChart.js +2 -25
  114. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  115. package/dist/esm/components/Dashboard/DashboardTemplate.js +2 -3
  116. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  117. package/dist/esm/components/Dashboard/DataLoader.js +3 -74
  118. package/dist/esm/components/Dashboard/util.d.ts +1 -2
  119. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  120. package/dist/esm/components/Dashboard/util.js +1 -12
  121. package/dist/esm/components/QuillTable.d.ts +1 -2
  122. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  123. package/dist/esm/components/QuillTable.js +2 -2
  124. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  125. package/dist/esm/components/ReportBuilder/AddColumnModal.js +1 -7
  126. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  127. package/dist/esm/components/ReportBuilder/ui.js +2 -4
  128. package/dist/esm/components/UiComponents.d.ts +2 -5
  129. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  130. package/dist/esm/components/UiComponents.js +5 -6
  131. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  132. package/dist/esm/hooks/useAskQuill.js +1 -39
  133. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  134. package/dist/esm/hooks/useDashboard.js +5 -61
  135. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  136. package/dist/esm/hooks/useExport.js +3 -6
  137. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  138. package/dist/esm/hooks/useQuill.js +2 -26
  139. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  140. package/dist/esm/hooks/useVirtualTables.js +3 -28
  141. package/dist/esm/index.d.ts +0 -11
  142. package/dist/esm/index.d.ts.map +1 -1
  143. package/dist/esm/index.js +0 -8
  144. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +1 -14
  145. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  146. package/dist/esm/internals/ReportBuilder/PivotForm.js +4 -87
  147. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +2 -18
  148. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  149. package/dist/esm/internals/ReportBuilder/PivotModal.js +143 -422
  150. package/dist/esm/utils/astProcessing.d.ts +2 -4
  151. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  152. package/dist/esm/utils/astProcessing.js +2 -25
  153. package/dist/esm/utils/client.d.ts +1 -2
  154. package/dist/esm/utils/client.d.ts.map +1 -1
  155. package/dist/esm/utils/client.js +1 -12
  156. package/dist/esm/utils/dashboard.d.ts +1 -3
  157. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  158. package/dist/esm/utils/dashboard.js +3 -44
  159. package/dist/esm/utils/filterProcessing.d.ts +1 -2
  160. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  161. package/dist/esm/utils/filterProcessing.js +1 -12
  162. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  163. package/dist/esm/utils/pivotConstructor.js +9 -11
  164. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  165. package/dist/esm/utils/pivotProcessing.js +3 -1
  166. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  167. package/dist/esm/utils/queryConstructor.js +9 -1
  168. package/dist/esm/utils/report.d.ts +5 -10
  169. package/dist/esm/utils/report.d.ts.map +1 -1
  170. package/dist/esm/utils/report.js +7 -51
  171. package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
  172. package/dist/esm/utils/reportBuilder.js +2 -5
  173. package/dist/esm/utils/schema.d.ts +2 -5
  174. package/dist/esm/utils/schema.d.ts.map +1 -1
  175. package/dist/esm/utils/schema.js +2 -14
  176. package/dist/esm/utils/tableProcessing.d.ts +10 -17
  177. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  178. package/dist/esm/utils/tableProcessing.js +17 -99
  179. package/package.json +1 -1
  180. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts +0 -48
  181. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts.map +0 -1
  182. package/dist/cjs/components/ReportBuilder/ColumnComponent.js +0 -46
  183. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts +0 -65
  184. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts.map +0 -1
  185. package/dist/cjs/components/ReportBuilder/FilterComponent.js +0 -51
  186. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts +0 -42
  187. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts.map +0 -1
  188. package/dist/cjs/components/ReportBuilder/LimitComponent.js +0 -50
  189. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts +0 -66
  190. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts.map +0 -1
  191. package/dist/cjs/components/ReportBuilder/PivotComponent.js +0 -47
  192. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts +0 -162
  193. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts.map +0 -1
  194. package/dist/cjs/components/ReportBuilder/SaveReport.js +0 -31
  195. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts +0 -42
  196. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts.map +0 -1
  197. package/dist/cjs/components/ReportBuilder/SortComponent.js +0 -50
  198. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts +0 -28
  199. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts.map +0 -1
  200. package/dist/cjs/components/ReportBuilder/TableComponent.js +0 -24
  201. package/dist/cjs/hooks/useLongLoading.d.ts +0 -13
  202. package/dist/cjs/hooks/useLongLoading.d.ts.map +0 -1
  203. package/dist/cjs/hooks/useLongLoading.js +0 -67
  204. package/dist/cjs/hooks/useReportBuilder.d.ts +0 -178
  205. package/dist/cjs/hooks/useReportBuilder.d.ts.map +0 -1
  206. package/dist/cjs/hooks/useReportBuilder.js +0 -1476
  207. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts +0 -48
  208. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts.map +0 -1
  209. package/dist/esm/components/ReportBuilder/ColumnComponent.js +0 -39
  210. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts +0 -65
  211. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts.map +0 -1
  212. package/dist/esm/components/ReportBuilder/FilterComponent.js +0 -44
  213. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts +0 -42
  214. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts.map +0 -1
  215. package/dist/esm/components/ReportBuilder/LimitComponent.js +0 -46
  216. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts +0 -66
  217. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts.map +0 -1
  218. package/dist/esm/components/ReportBuilder/PivotComponent.js +0 -40
  219. package/dist/esm/components/ReportBuilder/SaveReport.d.ts +0 -162
  220. package/dist/esm/components/ReportBuilder/SaveReport.d.ts.map +0 -1
  221. package/dist/esm/components/ReportBuilder/SaveReport.js +0 -31
  222. package/dist/esm/components/ReportBuilder/SortComponent.d.ts +0 -42
  223. package/dist/esm/components/ReportBuilder/SortComponent.d.ts.map +0 -1
  224. package/dist/esm/components/ReportBuilder/SortComponent.js +0 -46
  225. package/dist/esm/components/ReportBuilder/TableComponent.d.ts +0 -28
  226. package/dist/esm/components/ReportBuilder/TableComponent.d.ts.map +0 -1
  227. package/dist/esm/components/ReportBuilder/TableComponent.js +0 -20
  228. package/dist/esm/hooks/useLongLoading.d.ts +0 -13
  229. package/dist/esm/hooks/useLongLoading.d.ts.map +0 -1
  230. package/dist/esm/hooks/useLongLoading.js +0 -64
  231. package/dist/esm/hooks/useReportBuilder.d.ts +0 -178
  232. package/dist/esm/hooks/useReportBuilder.d.ts.map +0 -1
  233. package/dist/esm/hooks/useReportBuilder.js +0 -1471
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useContext, useMemo, useState, useEffect, useRef, } from 'react';
3
- import { ClientContext, EventTrackingContext, FetchContext, SchemaDataContext, TenantContext, } from '../../Context';
3
+ import { ClientContext, FetchContext, SchemaDataContext, TenantContext, } from '../../Context';
4
4
  import { PivotList, PivotCard } from './PivotList';
5
5
  import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval,
6
6
  // endOfDay,
@@ -14,7 +14,7 @@ import {
14
14
  // getValidDate,
15
15
  valueFormatter, } from '../../utils/valueFormatter';
16
16
  import { snakeAndCamelCaseToTitleCase } from '../../utils/textProcessing';
17
- import { MemoizedDeleteButton, MemoizedSubHeader, OverflowContainer, QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, } from '../../components/UiComponents';
17
+ import { MemoizedDeleteButton, MemoizedSubHeader, QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, } from '../../components/UiComponents';
18
18
  import { QuillCard } from '../../components/QuillCard';
19
19
  import { cleanPivot, getPossiblePivotFieldOptions, isValidPivot, } from '../../utils/pivotProcessing';
20
20
  import { hashCode } from '../../utils/crypto';
@@ -23,7 +23,7 @@ import { generatePivotWithSQL } from '../../utils/pivotConstructor';
23
23
  import { getDateBucketFromRange } from '../../utils/dates';
24
24
  import equal from 'fast-deep-equal';
25
25
  import { isStringType } from '../../utils/columnProcessing';
26
- export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotAggregations, setPivotAggregations, pivotSort, setPivotSort, pivotLimit, setPivotLimit, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, TextInputComponent, ButtonComponent, SecondaryButtonComponent, PopoverComponent, ErrorMessageComponent = QuillErrorMessageComponent, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, LoadingComponent = QuillLoadingComponent, CardComponent = QuillCard, HeaderComponent, SubheaderComponent = MemoizedSubHeader, DeleteButtonComponent = MemoizedDeleteButton, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, showTrigger = true, pivotCountRequest = 6, query, initialUniqueValues, uniqueValuesIsLoading, initialSelectedPivotTable, disabled = false, pivotRecommendationsEnabled = true, report, dashboardName, dateFilter, parentRef, heightAdjustment = 0, }) => {
26
+ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotAggregations, setPivotAggregations, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, SecondaryButtonComponent, PopoverComponent, ErrorMessageComponent = QuillErrorMessageComponent, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, LoadingComponent = QuillLoadingComponent, CardComponent = QuillCard, HeaderComponent, SubheaderComponent = MemoizedSubHeader, DeleteButtonComponent = MemoizedDeleteButton, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, showTrigger = true, pivotCountRequest = 6, query, initialUniqueValues, uniqueValuesIsLoading, initialSelectedPivotTable, disabled = false, pivotRecommendationsEnabled = true, report, dashboardName, dateFilter, }) => {
27
27
  const { getToken, quillFetchWithToken } = useContext(FetchContext);
28
28
  const [isLoading, setIsLoading] = useState(false);
29
29
  const [previewLoading, setPreviewLoading] = useState(false);
@@ -33,7 +33,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
33
33
  const [client] = useContext(ClientContext);
34
34
  const [schemaData] = useContext(SchemaDataContext);
35
35
  const { tenants } = useContext(TenantContext);
36
- const { eventTracking } = useContext(EventTrackingContext);
37
36
  const rowFieldRef = useRef(null);
38
37
  const colFieldRef = useRef(null);
39
38
  const [pivotCardWidth, setPivotCardWidth] = useState(420);
@@ -48,15 +47,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
48
47
  // const percentageAggButtonRef = useRef<HTMLDivElement>(null);
49
48
  const [dateRanges, setDateRanges] = useState({});
50
49
  const [pivotError, setPivotError] = useState('');
51
- const [limitInput, setLimitInput] = useState(pivotLimit?.toString() ?? '100');
52
- const [sortFieldInput, setSortFieldInput] = useState(pivotSort?.sortField ?? '');
53
- const [sortDirectionInput, setSortDirectionInput] = useState(pivotSort?.sortDirection ?? 'ASC');
54
- const [showLimitInput, setShowLimitInput] = useState(!!pivotLimit);
55
- const [showSortInput, setShowSortInput] = useState(!!pivotSort);
56
- const [availableHeight, setAvailableHeight] = useState(0);
57
- const [pivotModalTopHeight, setPivotModalTopHeight] = useState(450);
58
- const [popoverPosition, setPopoverPosition] = useState('bottom');
59
- const popoverRef = useRef(null);
60
50
  const getDistinctValues = async (fetchDistinct) => {
61
51
  if (!client) {
62
52
  return {
@@ -77,7 +67,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
77
67
  }
78
68
  let newUniqueValues = uniqueValues ?? null;
79
69
  if (fetchDistinct || !uniqueValues) {
80
- const { filteredColumns: smallStringColumns, exceededColumns } = await getCountsByColumns(stringColumns, query || '', client, getToken, tenants, schemaData.customFields ?? {}, eventTracking, dashboardName);
70
+ const { filteredColumns: smallStringColumns, exceededColumns } = await getCountsByColumns(stringColumns, query || '', client, getToken, tenants, schemaData.customFields ?? {}, dashboardName);
81
71
  newUniqueValues = await getUniqueValuesByQuery({
82
72
  columns: smallStringColumns,
83
73
  query: query || '',
@@ -86,7 +76,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
86
76
  tenants,
87
77
  customFields: schemaData.customFields ?? {},
88
78
  dashboardName,
89
- eventTracking,
90
79
  });
91
80
  exceededColumns?.forEach((column) => {
92
81
  if (newUniqueValues) {
@@ -118,7 +107,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
118
107
  if (dateColumns.length === 0) {
119
108
  return;
120
109
  }
121
- const dateRangeByColumn = await getQueryDateRangeByColumns(dateColumns, query || '', client, getToken, tenants, eventTracking, schemaData.customFields ?? {}, dashboardName);
110
+ const dateRangeByColumn = await getQueryDateRangeByColumns(dateColumns, query || '', client, getToken, tenants, schemaData.customFields ?? {}, dashboardName);
122
111
  setDateRanges(dateRangeByColumn || {});
123
112
  }
124
113
  };
@@ -184,22 +173,10 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
184
173
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
185
174
  }, // limit preview
186
175
  getToken,
187
- eventTracking,
188
176
  });
189
177
  setSamplePivotTable({ pivot: pivot, rows, columns });
190
178
  }
191
179
  catch (e) {
192
- eventTracking?.logError?.({
193
- type: 'bug', // TODO: determine type
194
- severity: 'high',
195
- message: 'Error fetching pivot data',
196
- errorMessage: e.message,
197
- errorStack: e.stack,
198
- errorData: {
199
- caller: 'PivotModal',
200
- function: 'fetchPivotData',
201
- },
202
- });
203
180
  if (e instanceof Error) {
204
181
  setPivotError(e.message);
205
182
  return;
@@ -257,22 +234,10 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
257
234
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
258
235
  }, // limit preview
259
236
  getToken,
260
- eventTracking,
261
237
  });
262
238
  setSamplePivotTable({ pivot: pivot, rows, columns });
263
239
  }
264
240
  catch (e) {
265
- eventTracking?.logError?.({
266
- type: 'bug', // TODO: determine type
267
- severity: 'high',
268
- message: 'Error fetching pivot data',
269
- errorMessage: e.message,
270
- errorStack: e.stack,
271
- errorData: {
272
- caller: 'PivotModal',
273
- function: 'fetchPivotData',
274
- },
275
- });
276
241
  if (e instanceof Error) {
277
242
  setPivotError(e.message);
278
243
  return;
@@ -340,7 +305,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
340
305
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
341
306
  }, // limit preview
342
307
  getToken,
343
- eventTracking,
344
308
  });
345
309
  setSelectedPivotTable({
346
310
  pivot: pivot,
@@ -349,17 +313,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
349
313
  });
350
314
  }
351
315
  catch (e) {
352
- eventTracking?.logError?.({
353
- type: 'bug', // TODO: determine type
354
- severity: 'high',
355
- message: 'Error fetching pivot tables',
356
- errorMessage: e.message,
357
- errorStack: e.stack,
358
- errorData: {
359
- caller: 'PivotModal',
360
- function: 'fetchPivotTables',
361
- },
362
- });
363
316
  if (e instanceof Error) {
364
317
  setPivotError(e.message);
365
318
  return;
@@ -420,15 +373,8 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
420
373
  if (pivotColumnField && !columnsToShow[pivotColumnField]) {
421
374
  errors.push('Error in column field: undefined type');
422
375
  }
423
- if (showLimitInput && limitInput && !Number.isInteger(Number(limitInput))) {
424
- errors.push('Limit must be an integer');
425
- }
426
376
  if (errors.length === 0 &&
427
377
  pivotAggregations?.every((p) => p.aggregationType && (p.valueField || p.aggregationType === 'count'))) {
428
- const sort = showSortInput && !!sortFieldInput && !!sortDirectionInput;
429
- const sortField = sort ? sortFieldInput : undefined;
430
- const sortDirection = sort ? sortDirectionInput : undefined;
431
- const rowLimit = showLimitInput && limitInput ? Number(limitInput) : undefined;
432
378
  const pivot = {
433
379
  rowField: pivotRowField,
434
380
  rowFieldType: columnTypes[pivotRowField ?? ''],
@@ -441,10 +387,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
441
387
  valueField2Type: columnTypes[p.valueField2 ?? ''],
442
388
  aggregationType: p.aggregationType,
443
389
  })),
444
- sort,
445
- sortField,
446
- sortDirection,
447
- rowLimit,
448
390
  // For backwards compatibility
449
391
  valueField: pivotAggregations?.[0]?.valueField,
450
392
  valueFieldType: columnTypes[pivotAggregations?.[0]?.valueField ?? ''],
@@ -465,16 +407,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
465
407
  }
466
408
  }
467
409
  setErrors(errors);
468
- }, [
469
- pivotRowField,
470
- pivotColumnField,
471
- pivotAggregations,
472
- sortFieldInput,
473
- sortDirectionInput,
474
- showSortInput,
475
- showLimitInput,
476
- limitInput,
477
- ]);
410
+ }, [pivotRowField, pivotColumnField, pivotAggregations]);
478
411
  const onEditPivot = async (pivot, index, pivotType) => {
479
412
  setIsLoading(false);
480
413
  setErrors([]);
@@ -507,23 +440,11 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
507
440
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
508
441
  }, // limit preview
509
442
  getToken,
510
- eventTracking,
511
443
  });
512
444
  setSamplePivotTable({ pivot, rows, columns });
513
445
  return;
514
446
  }
515
447
  catch (e) {
516
- eventTracking?.logError?.({
517
- type: 'bug', // TODO: determine type
518
- severity: 'high',
519
- message: 'Error fetching pivot data',
520
- errorMessage: e.message,
521
- errorStack: e.stack,
522
- errorData: {
523
- caller: 'PivotModal',
524
- function: 'onEditPivot',
525
- },
526
- });
527
448
  if (e instanceof Error) {
528
449
  setPivotError(e.message);
529
450
  setSamplePivotTable(null);
@@ -633,22 +554,10 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
633
554
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
634
555
  }, // limit preview
635
556
  getToken,
636
- eventTracking,
637
557
  });
638
558
  return { pivot: p, rows, columns };
639
559
  }
640
560
  catch (e) {
641
- eventTracking?.logError?.({
642
- type: 'bug', // TODO: determine type
643
- severity: 'high',
644
- message: 'Error fetching pivot data',
645
- errorMessage: e.message,
646
- errorStack: e.stack,
647
- errorData: {
648
- caller: 'PivotModal',
649
- function: 'refreshPivots',
650
- },
651
- });
652
561
  return undefined;
653
562
  }
654
563
  }));
@@ -672,17 +581,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
672
581
  setSelectedPivotIndex(-1);
673
582
  }
674
583
  catch (e) {
675
- eventTracking?.logError?.({
676
- type: 'bug', // TODO: determine type
677
- severity: 'high',
678
- message: 'Error fetching pivot recommendations',
679
- errorMessage: e.message,
680
- errorStack: e.stack,
681
- errorData: {
682
- caller: 'PivotModal',
683
- function: 'refreshPivots',
684
- },
685
- });
686
584
  setPivotError('Failed to fetch pivot recommendations');
687
585
  console.error('Failed parsing pivotai response', e);
688
586
  }
@@ -795,22 +693,10 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
795
693
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
796
694
  }, // limit preview
797
695
  getToken,
798
- eventTracking,
799
696
  });
800
697
  setSamplePivotTable({ pivot, rows, columns });
801
698
  }
802
699
  catch (e) {
803
- eventTracking?.logError?.({
804
- type: 'bug', // TODO: determine type
805
- severity: 'high',
806
- message: 'Error fetching pivot data',
807
- errorMessage: e.message,
808
- errorStack: e.stack,
809
- errorData: {
810
- caller: 'PivotModal',
811
- function: 'pivotFieldChange',
812
- },
813
- });
814
700
  if (e instanceof Error) {
815
701
  console.log('error', e);
816
702
  setPivotError(e.message);
@@ -841,22 +727,10 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
841
727
  page: { rowsPerPage: 6, rowsPerRequest: 6, page: 0 },
842
728
  },
843
729
  getToken,
844
- eventTracking,
845
730
  });
846
731
  return { pivot: p, rows, columns };
847
732
  }
848
733
  catch (e) {
849
- eventTracking?.logError?.({
850
- type: 'bug', // TODO: determine type
851
- severity: 'high',
852
- message: 'Error fetching pivot data',
853
- errorMessage: e.message,
854
- errorStack: e.stack,
855
- errorData: {
856
- caller: 'PivotModal',
857
- function: 'fetchPivotTables',
858
- },
859
- });
860
734
  return undefined;
861
735
  }
862
736
  }));
@@ -864,58 +738,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
864
738
  };
865
739
  fetchPivotTables();
866
740
  }, [createdPivots, dateRange]);
867
- const handleResize = () => {
868
- const parentRefElement = parentRef?.current;
869
- const popoverRefElement = popoverRef?.current;
870
- if (parentRefElement && popoverRefElement) {
871
- const parentRect = parentRefElement.getBoundingClientRect();
872
- const popoverRect = popoverRefElement.getBoundingClientRect();
873
- const topOffset = popoverRect.top - parentRect.top;
874
- const availableHeight = parentRect.height - topOffset;
875
- setAvailableHeight(availableHeight);
876
- calculatePopoverPosition();
877
- }
878
- };
879
- const calculatePopoverPosition = () => {
880
- if (!buttonRef.current)
881
- return;
882
- const buttonRect = buttonRef.current.getBoundingClientRect();
883
- const parentRefElement = parentRef?.current;
884
- if (!parentRefElement)
885
- return;
886
- const parentRect = parentRefElement.getBoundingClientRect();
887
- // Calculate available space above and below
888
- const spaceBelow = parentRect.bottom - buttonRect.bottom;
889
- const spaceAbove = buttonRect.top - parentRect.top;
890
- const desiredHeight = Math.max(450, spaceAbove - 20);
891
- setPivotModalTopHeight(desiredHeight);
892
- // If there's not enough space below but more space above, position above
893
- if (spaceBelow < desiredHeight && spaceAbove > desiredHeight) {
894
- setPopoverPosition('top');
895
- }
896
- else {
897
- setPopoverPosition('bottom');
898
- }
899
- };
900
- useEffect(() => {
901
- handleResize();
902
- window.addEventListener('resize', handleResize);
903
- // Add scroll listener to the parent element if it exists
904
- const parentElement = parentRef?.current;
905
- if (parentElement) {
906
- parentElement.addEventListener('scroll', handleResize);
907
- }
908
- return () => {
909
- window.removeEventListener('resize', handleResize);
910
- if (parentElement) {
911
- parentElement.removeEventListener('scroll', handleResize);
912
- }
913
- };
914
- }, [
915
- parentRef?.current,
916
- popoverRef?.current,
917
- buttonRef?.current?.getBoundingClientRect().top,
918
- ]);
919
741
  return (_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsxs("div", { style: {
920
742
  position: 'relative',
921
743
  display: 'inline-block',
@@ -950,15 +772,9 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
950
772
  }
951
773
  setIsOpen(!isOpen);
952
774
  setShowUpdatePivot(false);
953
- }, label: triggerButtonText }) })), _jsx("div", { ref: popoverRef, style: {
954
- position: 'absolute', // Change from 'relative' to 'absolute'
955
- ...(isOpen &&
956
- showTrigger && {
957
- top: popoverPosition === 'bottom' ? '100%' : 'auto',
958
- bottom: popoverPosition === 'top' ? '100%' : 'auto',
959
- marginBottom: popoverPosition === 'top' ? pivotModalTopHeight : 0,
960
- marginTop: popoverPosition === 'bottom' ? 8 : 0,
961
- }),
775
+ }, label: triggerButtonText }) })), _jsx("div", { style: {
776
+ position: 'relative',
777
+ ...(isOpen && showTrigger && { top: 12 }),
962
778
  }, children: _jsx(PopoverComponent, { isOpen: isOpen, setIsOpen: (isOpen) => {
963
779
  if (!isOpen) {
964
780
  setShowUpdatePivot(false);
@@ -967,7 +783,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
967
783
  setIsOpen(isOpen);
968
784
  }, ignoredRefs: [buttonRef], popoverTitle: showUpdatePivot || !pivotRecommendationsEnabled
969
785
  ? popUpTitle
970
- : 'Recommended pivots', horizontalPadding: 0, titlePaddingLeft: 20, popoverChildren: _jsx("div", { style: {
786
+ : 'Recommended pivots', popoverChildren: _jsx("div", { style: {
971
787
  paddingTop: showUpdatePivot || !pivotRecommendationsEnabled ? 0 : 20,
972
788
  position: 'relative',
973
789
  }, children: showUpdatePivot || !pivotRecommendationsEnabled ? (_jsxs("div", { style: {
@@ -975,223 +791,145 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
975
791
  display: 'flex',
976
792
  flexDirection: 'column',
977
793
  gap: 20,
978
- position: 'relative',
979
- height: '100%',
980
- overflow: 'auto',
981
- }, children: [_jsx(OverflowContainer, { style: {
982
- height: popoverPosition === 'bottom'
983
- ? Math.max(availableHeight - heightAdjustment, 250)
984
- : pivotModalTopHeight - 140,
985
- }, children: _jsxs("div", { style: {
986
- display: 'flex',
987
- flexDirection: 'column',
988
- paddingLeft: 20,
989
- paddingRight: 20,
990
- }, children: [previewLoading && _jsx(LoadingComponent, {}), samplePivotTable && !previewLoading && (_jsx("div", { style: {
991
- width: pivotCardWidth,
992
- // minHeight: 160,
993
- paddingBottom: 20,
994
- }, children: _jsx(PivotCard, { pivotTable: samplePivotTable, theme: theme, index: 0, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, clickable: false, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, CardComponent: CardComponent, onSelectPivot: () => { }, onClose: () => {
995
- setPivotAggregations([
996
- {
997
- valueField: undefined,
998
- valueField2: undefined,
999
- aggregationType: undefined,
1000
- },
1001
- ]);
1002
- setPivotRowField(undefined);
1003
- setPivotColumnField(undefined);
1004
- setSamplePivotTable(undefined);
1005
- setPivotSort(undefined);
1006
- setPivotLimit(undefined);
1007
- } }) })), _jsxs(PivotColumnContainer, { children: [_jsxs("div", { style: {
1008
- display: 'flex',
1009
- flexDirection: 'column',
1010
- gap: 4,
1011
- }, children: [_jsx(HeaderComponent, { label: "Groupings" }), _jsxs(PivotRowContainer, { children: [_jsx("div", { ref: rowFieldRef, children: _jsx(SelectComponent, { id: "pivot-row-field", label: "Group rows by", value: pivotRowField, onChange: (e) => {
1012
- pivotFieldChange('rowField', e.target.value);
1013
- setPivotRowField(e.target.value === ''
1014
- ? undefined
1015
- : e.target.value);
1016
- }, options: allowedRowFields
1017
- .filter((field) => field !== pivotColumnField)
1018
- .map((field) => {
1019
- return {
1020
- label: snakeAndCamelCaseToTitleCase(field),
1021
- value: field,
1022
- };
1023
- }), isLoading: uniqueValuesIsLoading, width: 200 }) }), _jsx("div", { ref: colFieldRef, children: _jsx(SelectComponent, { id: "pivot-column-field", label: "Group columns by", value: pivotColumnField, onChange: (e) => {
1024
- pivotFieldChange('columnField', e.target.value);
1025
- setPivotColumnField(e.target.value === ''
1026
- ? undefined
1027
- : e.target.value);
1028
- }, options: allowedColumnFields
1029
- .filter((field) => field !== pivotRowField)
1030
- .map((field) => {
1031
- return {
1032
- label: snakeAndCamelCaseToTitleCase(field),
1033
- value: field,
1034
- };
1035
- }), isLoading: uniqueValuesIsLoading, width: 200, disabled: pivotRowField === undefined }) })] })] }), _jsxs("div", { style: {
1036
- display: 'flex',
1037
- flexDirection: 'column',
1038
- gap: 4,
1039
- paddingBottom: 20,
1040
- }, children: [_jsx(HeaderComponent, { label: "Aggregations" }), _jsxs(PivotRowContainer, { children: [_jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Aggregation Type" }) }), _jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Value Field" }) })] }), pivotAggregations?.map((agg, index) => (_jsxs(PivotRowContainer, { children: [_jsx(SelectComponent, { id: "pivot-aggregation-type", value: agg.aggregationType, onChange: (e) => {
1041
- const newAgg = [
1042
- ...pivotAggregations.slice(0, index),
1043
- {
1044
- ...agg,
1045
- aggregationType: e.target.value === ''
1046
- ? undefined
1047
- : e.target.value,
1048
- },
1049
- ...pivotAggregations.slice(index + 1),
1050
- ];
1051
- pivotFieldChange('aggregations', newAgg);
1052
- setPivotAggregations(newAgg);
1053
- }, options: [
1054
- ...[
1055
- 'sum',
1056
- 'average',
1057
- 'count',
1058
- 'max',
1059
- 'min',
1060
- 'percentage',
1061
- ].map((option) => {
1062
- return { label: option, value: option };
1063
- }),
1064
- ], width: 200 }), _jsx(SelectComponent, { id: "pivot-value-field", value: agg.valueField, onChange: (e) => {
1065
- const newAgg = [
1066
- ...pivotAggregations.slice(0, index),
1067
- {
1068
- ...agg,
1069
- valueField: e.target.value === ''
1070
- ? undefined
1071
- : e.target.value,
1072
- },
1073
- ...pivotAggregations.slice(index + 1),
1074
- ];
1075
- pivotFieldChange('aggregations', newAgg);
1076
- setPivotAggregations(newAgg);
1077
- }, options: allowedValueFields.map((field) => {
1078
- return {
1079
- label: snakeAndCamelCaseToTitleCase(field),
1080
- value: field,
1081
- };
1082
- }), isLoading: uniqueValuesIsLoading, width: 200 }), _jsx("div", { style: {
1083
- marginLeft: -16,
1084
- marginRight: -16,
1085
- visibility: index > 0 ? 'visible' : 'hidden',
1086
- }, children: _jsx(DeleteButtonComponent, { onClick: () => {
1087
- setPivotAggregations([
1088
- ...pivotAggregations.slice(0, index),
1089
- ...pivotAggregations.slice(index + 1),
1090
- ]);
1091
- } }) })] }, index)))] })] }), _jsx("div", { style: {
1092
- display: 'flex',
1093
- flexDirection: 'row',
1094
- marginRight: 'auto',
1095
- paddingBottom: 20,
1096
- }, children: _jsx(SecondaryButtonComponent, { label: "Add Aggregation", onClick: () => {
1097
- setPivotAggregations([
1098
- ...pivotAggregations,
1099
- {
1100
- aggregationType: undefined,
1101
- valueField: undefined,
1102
- valueField2: undefined,
1103
- },
1104
- ]);
1105
- } }) }), _jsx(PivotColumnContainer, { children: _jsxs("div", { style: {
1106
- display: 'flex',
1107
- flexDirection: 'column',
1108
- gap: 4,
1109
- paddingBottom: 20,
1110
- }, children: [_jsx(HeaderComponent, { label: "Sort" }), !showSortInput ? (_jsx("div", { style: { width: 200 }, children: _jsx(SecondaryButtonComponent, { onClick: () => setShowSortInput(true), disabled: disabled, label: "Add Sort" }) })) : (_jsxs("div", { children: [_jsxs(PivotRowContainer, { children: [_jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Sort Field" }) }), _jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Sort Direction" }) })] }), _jsxs(PivotRowContainer, { children: [_jsx(SelectComponent, { id: "pivot-sort-field", value: sortFieldInput, onChange: (e) => {
1111
- setSortFieldInput(e.target.value);
1112
- if (e.target.value &&
1113
- sortDirectionInput) {
1114
- setPivotSort({
1115
- sortField: e.target.value,
1116
- sortDirection: sortDirectionInput,
1117
- });
1118
- }
1119
- }, options: (samplePivotTable?.columns ?? []).map((column) => ({
1120
- label: snakeAndCamelCaseToTitleCase(column.field),
1121
- value: column.field,
1122
- })), width: 200 }), _jsx(SelectComponent, { id: "pivot-sort-direction", value: sortDirectionInput, onChange: (e) => {
1123
- setSortDirectionInput(e.target.value);
1124
- if (sortFieldInput && e.target.value) {
1125
- setPivotSort({
1126
- sortField: sortFieldInput,
1127
- sortDirection: e.target.value,
1128
- });
1129
- }
1130
- }, options: [
1131
- { label: 'Ascending', value: 'ASC' },
1132
- { label: 'Descending', value: 'DESC' },
1133
- ], hideEmptyOption: true, width: 200 }), _jsx("div", { style: {
1134
- marginLeft: -16,
1135
- marginRight: -16,
1136
- }, children: _jsx(DeleteButtonComponent, { onClick: () => {
1137
- if (pivotSort !== undefined) {
1138
- setPivotSort(undefined);
1139
- }
1140
- setShowSortInput(false);
1141
- setSortFieldInput('');
1142
- setSortDirectionInput('ASC');
1143
- } }) })] })] }))] }) }), _jsx(PivotColumnContainer, { children: _jsxs("div", { style: {
1144
- display: 'flex',
1145
- flexDirection: 'column',
1146
- gap: 4,
1147
- paddingBottom: 20,
1148
- }, children: [_jsx(HeaderComponent, { label: "Limit" }), !showLimitInput ? (_jsx("div", { style: { width: 200 }, children: _jsx(SecondaryButtonComponent, { onClick: () => setShowLimitInput(true), disabled: disabled, label: "Add Limit" }) })) : (_jsxs("div", { children: [_jsx(PivotRowContainer, { children: _jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Pivot row limit" }) }) }), _jsxs(PivotRowContainer, { children: [_jsx(TextInputComponent, { id: "pivot-limit", value: limitInput, width: 180, onChange: (e) => {
1149
- setLimitInput(e.target.value);
1150
- const limit = parseInt(e.target.value);
1151
- if (limit) {
1152
- setPivotLimit(limit);
1153
- }
1154
- else {
1155
- setPivotLimit(undefined);
1156
- }
1157
- } }), _jsx("div", { style: {
1158
- marginLeft: -16,
1159
- marginRight: -16,
1160
- }, children: _jsx(DeleteButtonComponent, { onClick: () => {
1161
- if (pivotLimit !== undefined) {
1162
- setPivotLimit(undefined);
1163
- }
1164
- setShowLimitInput(false);
1165
- setLimitInput('100');
1166
- } }) })] })] }))] }) }), errors.length > 0 && (_jsx("div", { style: {
1167
- display: 'flex',
1168
- flexDirection: 'column',
1169
- gap: 8,
1170
- paddingTop: 8,
1171
- width: pivotCardWidth,
1172
- maxWidth: pivotCardWidth,
1173
- paddingBottom: 20,
1174
- }, children: errors.map((error, index) => (_jsx(ErrorMessageComponent, { errorMessage: error }, `error_message_${index}`))) }))] }) }), _jsxs("div", { style: {
1175
- position: 'sticky',
794
+ }, children: [previewLoading && _jsx(LoadingComponent, {}), samplePivotTable && !previewLoading && (_jsx("div", { style: {
795
+ width: pivotCardWidth,
796
+ minHeight: 160,
797
+ }, children: _jsx(PivotCard, { pivotTable: samplePivotTable, theme: theme, index: 0, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, clickable: false, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, CardComponent: CardComponent, onSelectPivot: () => { }, onClose: () => {
798
+ setPivotAggregations([
799
+ {
800
+ valueField: undefined,
801
+ valueField2: undefined,
802
+ aggregationType: undefined,
803
+ },
804
+ ]);
805
+ setPivotRowField(undefined);
806
+ setPivotColumnField(undefined);
807
+ setSamplePivotTable(undefined);
808
+ } }) })), _jsxs(PivotColumnContainer, { children: [_jsxs("div", { style: {
809
+ display: 'flex',
810
+ flexDirection: 'column',
811
+ gap: 4,
812
+ }, children: [_jsx(HeaderComponent, { label: "Groupings" }), _jsxs(PivotRowContainer, { children: [_jsx("div", { ref: rowFieldRef, children: _jsx(SelectComponent, { id: "pivot-row-field", label: "Group rows by", value: pivotRowField, onChange: (e) => {
813
+ pivotFieldChange('rowField', e.target.value);
814
+ setPivotRowField(e.target.value === ''
815
+ ? undefined
816
+ : e.target.value);
817
+ }, options: allowedRowFields
818
+ .filter((field) => field !== pivotColumnField)
819
+ .map((field) => {
820
+ return {
821
+ label: snakeAndCamelCaseToTitleCase(field),
822
+ value: field,
823
+ };
824
+ }), isLoading: uniqueValuesIsLoading, width: 200 }) }), _jsx("div", { ref: colFieldRef, children: _jsx(SelectComponent, { id: "pivot-column-field", label: "Group columns by", value: pivotColumnField, onChange: (e) => {
825
+ pivotFieldChange('columnField', e.target.value);
826
+ setPivotColumnField(e.target.value === ''
827
+ ? undefined
828
+ : e.target.value);
829
+ }, options: allowedColumnFields
830
+ .filter((field) => field !== pivotRowField)
831
+ .map((field) => {
832
+ return {
833
+ label: snakeAndCamelCaseToTitleCase(field),
834
+ value: field,
835
+ };
836
+ }), isLoading: uniqueValuesIsLoading, width: 200, disabled: pivotRowField === undefined }) })] })] }), _jsxs("div", { style: {
837
+ display: 'flex',
838
+ flexDirection: 'column',
839
+ gap: 4,
840
+ }, children: [_jsx(HeaderComponent, { label: "Aggregations" }), _jsxs(PivotRowContainer, { children: [_jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Aggregation Type" }) }), _jsx("div", { style: { width: 200 }, children: _jsx(SubheaderComponent, { label: "Value Field" }) })] }), pivotAggregations?.map((agg, index) => (_jsxs(PivotRowContainer, { children: [_jsx(SelectComponent, { id: "pivot-aggregation-type", value: agg.aggregationType, onChange: (e) => {
841
+ // if (
842
+ // e.target.value !== 'count' &&
843
+ // agg.valueField &&
844
+ // !numberFormatOptions.includes(
845
+ // columns.find(
846
+ // (col: Column) =>
847
+ // col.field === agg.valueField,
848
+ // )!.format,
849
+ // )
850
+ // ) {
851
+ // setPivotValueField(undefined);
852
+ // }
853
+ const newAgg = [
854
+ ...pivotAggregations.slice(0, index),
855
+ {
856
+ ...agg,
857
+ aggregationType: e.target.value === ''
858
+ ? undefined
859
+ : e.target.value,
860
+ },
861
+ ...pivotAggregations.slice(index + 1),
862
+ ];
863
+ pivotFieldChange('aggregations', newAgg);
864
+ setPivotAggregations(newAgg);
865
+ }, options: [
866
+ ...[
867
+ 'sum',
868
+ 'average',
869
+ 'count',
870
+ 'max',
871
+ 'min',
872
+ 'percentage',
873
+ ].map((option) => {
874
+ return { label: option, value: option };
875
+ }),
876
+ ], width: 200 }), _jsx(SelectComponent, { id: "pivot-value-field", value: agg.valueField, onChange: (e) => {
877
+ const newAgg = [
878
+ ...pivotAggregations.slice(0, index),
879
+ {
880
+ ...agg,
881
+ valueField: e.target.value === ''
882
+ ? undefined
883
+ : e.target.value,
884
+ },
885
+ ...pivotAggregations.slice(index + 1),
886
+ ];
887
+ pivotFieldChange('aggregations', newAgg);
888
+ setPivotAggregations(newAgg);
889
+ }, options: allowedValueFields.map((field) => {
890
+ return {
891
+ label: snakeAndCamelCaseToTitleCase(field),
892
+ value: field,
893
+ };
894
+ }), isLoading: uniqueValuesIsLoading, width: 200 }), _jsx("div", { style: {
895
+ marginLeft: -16,
896
+ marginRight: -16,
897
+ visibility: index > 0 ? 'visible' : 'hidden',
898
+ }, children: _jsx(DeleteButtonComponent, { onClick: () => {
899
+ setPivotAggregations([
900
+ ...pivotAggregations.slice(0, index),
901
+ ...pivotAggregations.slice(index + 1),
902
+ ]);
903
+ } }) })] }, index)))] })] }), _jsx("div", { style: {
904
+ display: 'flex',
905
+ flexDirection: 'row',
906
+ marginRight: 'auto',
907
+ }, children: _jsx(SecondaryButtonComponent, { label: "Add Aggregation", onClick: () => {
908
+ setPivotAggregations([
909
+ ...pivotAggregations,
910
+ {
911
+ aggregationType: undefined,
912
+ valueField: undefined,
913
+ valueField2: undefined,
914
+ },
915
+ ]);
916
+ } }) }), errors.length > 0 && (_jsx("div", { style: {
917
+ display: 'flex',
918
+ flexDirection: 'column',
919
+ gap: 8,
920
+ paddingTop: 8,
921
+ width: pivotCardWidth,
922
+ maxWidth: pivotCardWidth,
923
+ }, children: errors.map((error, index) => (_jsx(ErrorMessageComponent, { errorMessage: error }, `error_message_${index}`))) })), _jsxs("div", { style: {
1176
924
  display: 'flex',
1177
925
  flexDirection: 'row',
1178
- justifyContent: 'flex-end',
1179
926
  marginLeft: 'auto',
1180
927
  gap: 8,
1181
- bottom: 0,
1182
- right: 0,
1183
- backgroundColor: 'white',
1184
- width: '100%',
1185
- paddingRight: 20,
1186
928
  }, children: [_jsx(SecondaryButtonComponent, { onClick: () => {
1187
929
  setPivotError('');
1188
930
  setIsOpen(false);
1189
931
  setPopUpTitle('Add pivot');
1190
- }, label: "Cancel" }), _jsx(ButtonComponent, { id: "custom-button", onClick: onCommitPivot, label: 'Save', disabled: (showSortInput &&
1191
- (!sortFieldInput ||
1192
- !(samplePivotTable?.columns ?? []).some((c) => c.field === sortFieldInput) ||
1193
- !sortDirectionInput)) ||
1194
- !(pivotAggregations?.length > 0) ||
932
+ }, label: "Cancel" }), _jsx(ButtonComponent, { id: "custom-button", onClick: onCommitPivot, label: 'Save', disabled: !(pivotAggregations?.length > 0) ||
1195
933
  pivotAggregations.some((agg) => !agg.aggregationType ||
1196
934
  (!agg.valueField &&
1197
935
  agg.aggregationType !== 'count')) })] })] })) : (_jsx("div", { style: {
@@ -1200,13 +938,8 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
1200
938
  fontFamily: theme?.fontFamily,
1201
939
  color: theme?.primaryTextColor,
1202
940
  width: selectedPivotTable ? 500 : 600,
1203
- minHeight: pivotModalTopHeight - 100,
1204
- maxHeight: popoverPosition === 'bottom'
1205
- ? 600
1206
- : pivotModalTopHeight - 100,
941
+ maxHeight: 600,
1207
942
  overflowY: 'scroll',
1208
- paddingRight: 20,
1209
- paddingLeft: 20,
1210
943
  }, children: selectedPivotIndex >= 0 ? (_jsx("div", { children: _jsx("div", { onClick: () => {
1211
944
  setPopUpTitle('Edit pivot');
1212
945
  onEditPivot(createdPivots[0], 0);
@@ -1220,7 +953,6 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
1220
953
  display: 'flex',
1221
954
  flexDirection: 'row',
1222
955
  gap: 8,
1223
- paddingRight: 20,
1224
956
  }, children: [_jsx(SecondaryButtonComponent, { label: "Regenerate", onClick: refreshPivots, icon: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", style: { width: 16, height: 16 }, children: _jsx("path", { fillRule: "evenodd", d: "M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5ZM16.5 15a.75.75 0 0 1 .712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 0 1 0 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 0 1-1.422 0l-.395-1.183a1.5 1.5 0 0 0-.948-.948l-1.183-.395a.75.75 0 0 1 0-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0 1 16.5 15Z", clipRule: "evenodd" }) }) }), _jsx(SecondaryButtonComponent, { label: "Create pivot +", onClick: () => onEditPivot({ aggregations: [{}] }, null) })] }), isLoading || uniqueValuesIsLoading ? (_jsx(LoadingComponent, {})) : pivotError ? (_jsx("div", { style: {
1225
957
  width: '100%',
1226
958
  height: '140px',
@@ -1513,7 +1245,7 @@ export function isDateField(fieldType) {
1513
1245
  // }
1514
1246
  // return newData;
1515
1247
  // };
1516
- export async function generatePivotTable({ pivot, dateBucket, dateFilter, report, client, getToken, eventTracking, uniqueValues, dashboardName, tenants, additionalProcessing, caller, pivotQuery, }) {
1248
+ export async function generatePivotTable({ pivot, dateBucket, dateFilter, report, client, getToken, uniqueValues, dashboardName, tenants, additionalProcessing, caller, pivotQuery, }) {
1517
1249
  try {
1518
1250
  if (report && client) {
1519
1251
  const pivotTable = await generatePivotWithSQL({
@@ -1536,17 +1268,6 @@ export async function generatePivotTable({ pivot, dateBucket, dateFilter, report
1536
1268
  }
1537
1269
  }
1538
1270
  catch (e) {
1539
- eventTracking?.logError?.({
1540
- type: 'bug', // TODO: determine type
1541
- severity: 'high',
1542
- message: 'Error generating pivot table',
1543
- errorMessage: e.message,
1544
- errorStack: e.stack,
1545
- errorData: {
1546
- caller: 'PivotModal',
1547
- function: 'generatePivotTable',
1548
- },
1549
- });
1550
1271
  throw Error(`Failed to generate pivot table with SQL: ${e}`);
1551
1272
  }
1552
1273
  throw Error('Failed to generate pivot table: invalid report');