@quillsql/react 2.10.30 → 2.10.31

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 (601) hide show
  1. package/package.json +1 -1
  2. package/dist/cjs/BarList.d.ts +0 -22
  3. package/dist/cjs/BarList.d.ts.map +0 -1
  4. package/dist/cjs/BarList.js +0 -286
  5. package/dist/cjs/Chart.d.ts +0 -42
  6. package/dist/cjs/Chart.d.ts.map +0 -1
  7. package/dist/cjs/Chart.js +0 -360
  8. package/dist/cjs/ChartBuilder.d.ts +0 -46
  9. package/dist/cjs/ChartBuilder.d.ts.map +0 -1
  10. package/dist/cjs/ChartBuilder.js +0 -708
  11. package/dist/cjs/ChartEditor.d.ts +0 -27
  12. package/dist/cjs/ChartEditor.d.ts.map +0 -1
  13. package/dist/cjs/ChartEditor.js +0 -78
  14. package/dist/cjs/Context.d.ts +0 -36
  15. package/dist/cjs/Context.d.ts.map +0 -1
  16. package/dist/cjs/Context.js +0 -230
  17. package/dist/cjs/Dashboard.d.ts +0 -178
  18. package/dist/cjs/Dashboard.d.ts.map +0 -1
  19. package/dist/cjs/Dashboard.js +0 -498
  20. package/dist/cjs/DateRangePicker/Calendar.d.ts +0 -17
  21. package/dist/cjs/DateRangePicker/Calendar.d.ts.map +0 -1
  22. package/dist/cjs/DateRangePicker/Calendar.js +0 -171
  23. package/dist/cjs/DateRangePicker/DateRangePicker.d.ts +0 -39
  24. package/dist/cjs/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  25. package/dist/cjs/DateRangePicker/DateRangePicker.js +0 -150
  26. package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts +0 -23
  27. package/dist/cjs/DateRangePicker/DateRangePickerButton.d.ts.map +0 -1
  28. package/dist/cjs/DateRangePicker/DateRangePickerButton.js +0 -138
  29. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +0 -3
  30. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  31. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +0 -260
  32. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +0 -80
  33. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  34. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +0 -549
  35. package/dist/cjs/DateRangePicker/index.d.ts +0 -3
  36. package/dist/cjs/DateRangePicker/index.d.ts.map +0 -1
  37. package/dist/cjs/DateRangePicker/index.js +0 -9
  38. package/dist/cjs/PieChart.d.ts +0 -59
  39. package/dist/cjs/PieChart.d.ts.map +0 -1
  40. package/dist/cjs/PieChart.js +0 -567
  41. package/dist/cjs/QuillProvider.d.ts +0 -58
  42. package/dist/cjs/QuillProvider.d.ts.map +0 -1
  43. package/dist/cjs/QuillProvider.js +0 -34
  44. package/dist/cjs/ReportBuilder.d.ts +0 -41
  45. package/dist/cjs/ReportBuilder.d.ts.map +0 -1
  46. package/dist/cjs/ReportBuilder.js +0 -1004
  47. package/dist/cjs/SQLEditor.d.ts +0 -54
  48. package/dist/cjs/SQLEditor.d.ts.map +0 -1
  49. package/dist/cjs/SQLEditor.js +0 -509
  50. package/dist/cjs/TableChart.d.ts +0 -15
  51. package/dist/cjs/TableChart.d.ts.map +0 -1
  52. package/dist/cjs/TableChart.js +0 -317
  53. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts +0 -5
  54. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  55. package/dist/cjs/assets/ArrowDownHeadIcon.js +0 -5
  56. package/dist/cjs/assets/ArrowDownIcon.d.ts +0 -5
  57. package/dist/cjs/assets/ArrowDownIcon.d.ts.map +0 -1
  58. package/dist/cjs/assets/ArrowDownIcon.js +0 -5
  59. package/dist/cjs/assets/ArrowDownRightIcon.d.ts +0 -5
  60. package/dist/cjs/assets/ArrowDownRightIcon.d.ts.map +0 -1
  61. package/dist/cjs/assets/ArrowDownRightIcon.js +0 -5
  62. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts +0 -5
  63. package/dist/cjs/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  64. package/dist/cjs/assets/ArrowLeftHeadIcon.js +0 -5
  65. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts +0 -5
  66. package/dist/cjs/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  67. package/dist/cjs/assets/ArrowRightHeadIcon.js +0 -5
  68. package/dist/cjs/assets/ArrowRightIcon.d.ts +0 -5
  69. package/dist/cjs/assets/ArrowRightIcon.d.ts.map +0 -1
  70. package/dist/cjs/assets/ArrowRightIcon.js +0 -5
  71. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts +0 -5
  72. package/dist/cjs/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  73. package/dist/cjs/assets/ArrowUpHeadIcon.js +0 -5
  74. package/dist/cjs/assets/ArrowUpIcon.d.ts +0 -5
  75. package/dist/cjs/assets/ArrowUpIcon.d.ts.map +0 -1
  76. package/dist/cjs/assets/ArrowUpIcon.js +0 -5
  77. package/dist/cjs/assets/ArrowUpRightIcon.d.ts +0 -5
  78. package/dist/cjs/assets/ArrowUpRightIcon.d.ts.map +0 -1
  79. package/dist/cjs/assets/ArrowUpRightIcon.js +0 -5
  80. package/dist/cjs/assets/CalendarIcon.d.ts +0 -5
  81. package/dist/cjs/assets/CalendarIcon.d.ts.map +0 -1
  82. package/dist/cjs/assets/CalendarIcon.js +0 -5
  83. package/dist/cjs/assets/CalendarNormalIcon.d.ts +0 -5
  84. package/dist/cjs/assets/CalendarNormalIcon.d.ts.map +0 -1
  85. package/dist/cjs/assets/CalendarNormalIcon.js +0 -5
  86. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  87. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  88. package/dist/cjs/assets/DoubleArrowLeftHeadIcon.js +0 -5
  89. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  90. package/dist/cjs/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  91. package/dist/cjs/assets/DoubleArrowRightHeadIcon.js +0 -5
  92. package/dist/cjs/assets/ExclamationFilledIcon.d.ts +0 -5
  93. package/dist/cjs/assets/ExclamationFilledIcon.d.ts.map +0 -1
  94. package/dist/cjs/assets/ExclamationFilledIcon.js +0 -5
  95. package/dist/cjs/assets/FilterIcon.d.ts +0 -5
  96. package/dist/cjs/assets/FilterIcon.d.ts.map +0 -1
  97. package/dist/cjs/assets/FilterIcon.js +0 -5
  98. package/dist/cjs/assets/LoadingSpinner.d.ts +0 -5
  99. package/dist/cjs/assets/LoadingSpinner.d.ts.map +0 -1
  100. package/dist/cjs/assets/LoadingSpinner.js +0 -5
  101. package/dist/cjs/assets/RefreshIcon.d.ts +0 -5
  102. package/dist/cjs/assets/RefreshIcon.d.ts.map +0 -1
  103. package/dist/cjs/assets/RefreshIcon.js +0 -5
  104. package/dist/cjs/assets/SearchIcon.d.ts +0 -5
  105. package/dist/cjs/assets/SearchIcon.d.ts.map +0 -1
  106. package/dist/cjs/assets/SearchIcon.js +0 -5
  107. package/dist/cjs/assets/UpLeftArrowsIcon.d.ts +0 -5
  108. package/dist/cjs/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  109. package/dist/cjs/assets/UpLeftArrowsIcon.js +0 -5
  110. package/dist/cjs/assets/XCircleIcon.d.ts +0 -5
  111. package/dist/cjs/assets/XCircleIcon.d.ts.map +0 -1
  112. package/dist/cjs/assets/XCircleIcon.js +0 -5
  113. package/dist/cjs/assets/XIcon.d.ts +0 -5
  114. package/dist/cjs/assets/XIcon.d.ts.map +0 -1
  115. package/dist/cjs/assets/XIcon.js +0 -5
  116. package/dist/cjs/assets/index.d.ts +0 -22
  117. package/dist/cjs/assets/index.d.ts.map +0 -1
  118. package/dist/cjs/assets/index.js +0 -48
  119. package/dist/cjs/components/Banner/index.d.ts +0 -3
  120. package/dist/cjs/components/Banner/index.d.ts.map +0 -1
  121. package/dist/cjs/components/Banner/index.js +0 -27
  122. package/dist/cjs/components/BigModal/BigModal.d.ts +0 -15
  123. package/dist/cjs/components/BigModal/BigModal.d.ts.map +0 -1
  124. package/dist/cjs/components/BigModal/BigModal.js +0 -87
  125. package/dist/cjs/components/Chart/BarChart.d.ts +0 -18
  126. package/dist/cjs/components/Chart/BarChart.d.ts.map +0 -1
  127. package/dist/cjs/components/Chart/BarChart.js +0 -81
  128. package/dist/cjs/components/Chart/ChartError.d.ts +0 -3
  129. package/dist/cjs/components/Chart/ChartError.d.ts.map +0 -1
  130. package/dist/cjs/components/Chart/ChartError.js +0 -29
  131. package/dist/cjs/components/Chart/ChartSkeleton.d.ts +0 -6
  132. package/dist/cjs/components/Chart/ChartSkeleton.d.ts.map +0 -1
  133. package/dist/cjs/components/Chart/ChartSkeleton.js +0 -20
  134. package/dist/cjs/components/Chart/ChartTooltip.d.ts +0 -29
  135. package/dist/cjs/components/Chart/ChartTooltip.d.ts.map +0 -1
  136. package/dist/cjs/components/Chart/ChartTooltip.js +0 -235
  137. package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts +0 -6
  138. package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  139. package/dist/cjs/components/Chart/ChartTooltipFrame.js +0 -16
  140. package/dist/cjs/components/Chart/ChartTooltipGroup.d.ts +0 -11
  141. package/dist/cjs/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  142. package/dist/cjs/components/Chart/ChartTooltipGroup.js +0 -29
  143. package/dist/cjs/components/Chart/ChartTooltipRow.d.ts +0 -8
  144. package/dist/cjs/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  145. package/dist/cjs/components/Chart/ChartTooltipRow.js +0 -44
  146. package/dist/cjs/components/Chart/LineChart.d.ts +0 -16
  147. package/dist/cjs/components/Chart/LineChart.d.ts.map +0 -1
  148. package/dist/cjs/components/Chart/LineChart.js +0 -97
  149. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +0 -3
  150. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +0 -1
  151. package/dist/cjs/components/Dashboard/ChartComponent.js +0 -64
  152. package/dist/cjs/components/Dashboard/DashboardSection.d.ts +0 -3
  153. package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +0 -1
  154. package/dist/cjs/components/Dashboard/DashboardSection.js +0 -17
  155. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts +0 -3
  156. package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  157. package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +0 -13
  158. package/dist/cjs/components/Dashboard/DataLoader.d.ts +0 -3
  159. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +0 -1
  160. package/dist/cjs/components/Dashboard/DataLoader.js +0 -74
  161. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +0 -3
  162. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +0 -1
  163. package/dist/cjs/components/Dashboard/MetricComponent.js +0 -65
  164. package/dist/cjs/components/Dashboard/TableComponent.d.ts +0 -3
  165. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +0 -1
  166. package/dist/cjs/components/Dashboard/TableComponent.js +0 -35
  167. package/dist/cjs/components/Dropdown/Dropdown.d.ts +0 -14
  168. package/dist/cjs/components/Dropdown/Dropdown.d.ts.map +0 -1
  169. package/dist/cjs/components/Dropdown/Dropdown.js +0 -99
  170. package/dist/cjs/components/Dropdown/DropdownItem.d.ts +0 -11
  171. package/dist/cjs/components/Dropdown/DropdownItem.d.ts.map +0 -1
  172. package/dist/cjs/components/Dropdown/DropdownItem.js +0 -67
  173. package/dist/cjs/components/Dropdown/index.d.ts +0 -3
  174. package/dist/cjs/components/Dropdown/index.d.ts.map +0 -1
  175. package/dist/cjs/components/Dropdown/index.js +0 -10
  176. package/dist/cjs/components/Modal/Modal.d.ts +0 -15
  177. package/dist/cjs/components/Modal/Modal.d.ts.map +0 -1
  178. package/dist/cjs/components/Modal/Modal.js +0 -90
  179. package/dist/cjs/components/Modal/index.d.ts +0 -2
  180. package/dist/cjs/components/Modal/index.d.ts.map +0 -1
  181. package/dist/cjs/components/Modal/index.js +0 -8
  182. package/dist/cjs/components/QuillCard.d.ts +0 -14
  183. package/dist/cjs/components/QuillCard.d.ts.map +0 -1
  184. package/dist/cjs/components/QuillCard.js +0 -56
  185. package/dist/cjs/components/QuillSelect.d.ts +0 -3
  186. package/dist/cjs/components/QuillSelect.d.ts.map +0 -1
  187. package/dist/cjs/components/QuillSelect.js +0 -128
  188. package/dist/cjs/components/QuillTable.d.ts +0 -3
  189. package/dist/cjs/components/QuillTable.d.ts.map +0 -1
  190. package/dist/cjs/components/QuillTable.js +0 -255
  191. package/dist/cjs/components/UiComponents.d.ts +0 -130
  192. package/dist/cjs/components/UiComponents.d.ts.map +0 -1
  193. package/dist/cjs/components/UiComponents.js +0 -262
  194. package/dist/cjs/components/selectUtils.d.ts +0 -10
  195. package/dist/cjs/components/selectUtils.d.ts.map +0 -1
  196. package/dist/cjs/components/selectUtils.js +0 -47
  197. package/dist/cjs/contexts/BaseColorContext.d.ts +0 -4
  198. package/dist/cjs/contexts/BaseColorContext.d.ts.map +0 -1
  199. package/dist/cjs/contexts/BaseColorContext.js +0 -5
  200. package/dist/cjs/contexts/HoveredValueContext.d.ts +0 -8
  201. package/dist/cjs/contexts/HoveredValueContext.d.ts.map +0 -1
  202. package/dist/cjs/contexts/HoveredValueContext.js +0 -7
  203. package/dist/cjs/contexts/RootStylesContext.d.ts +0 -4
  204. package/dist/cjs/contexts/RootStylesContext.d.ts.map +0 -1
  205. package/dist/cjs/contexts/RootStylesContext.js +0 -5
  206. package/dist/cjs/contexts/SelectedValueContext.d.ts +0 -8
  207. package/dist/cjs/contexts/SelectedValueContext.d.ts.map +0 -1
  208. package/dist/cjs/contexts/SelectedValueContext.js +0 -8
  209. package/dist/cjs/contexts/index.d.ts +0 -5
  210. package/dist/cjs/contexts/index.d.ts.map +0 -1
  211. package/dist/cjs/contexts/index.js +0 -14
  212. package/dist/cjs/hooks/index.d.ts +0 -5
  213. package/dist/cjs/hooks/index.d.ts.map +0 -1
  214. package/dist/cjs/hooks/index.js +0 -14
  215. package/dist/cjs/hooks/useDashboard.d.ts +0 -7
  216. package/dist/cjs/hooks/useDashboard.d.ts.map +0 -1
  217. package/dist/cjs/hooks/useDashboard.js +0 -54
  218. package/dist/cjs/hooks/useExport.d.ts +0 -15
  219. package/dist/cjs/hooks/useExport.d.ts.map +0 -1
  220. package/dist/cjs/hooks/useExport.js +0 -31
  221. package/dist/cjs/hooks/useFormat.d.ts +0 -6
  222. package/dist/cjs/hooks/useFormat.d.ts.map +0 -1
  223. package/dist/cjs/hooks/useFormat.js +0 -25
  224. package/dist/cjs/hooks/useInternalState.d.ts +0 -4
  225. package/dist/cjs/hooks/useInternalState.d.ts.map +0 -1
  226. package/dist/cjs/hooks/useInternalState.js +0 -16
  227. package/dist/cjs/hooks/useOnClickOutside.d.ts +0 -3
  228. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +0 -1
  229. package/dist/cjs/hooks/useOnClickOutside.js +0 -20
  230. package/dist/cjs/hooks/useOnWindowResize.d.ts +0 -5
  231. package/dist/cjs/hooks/useOnWindowResize.d.ts.map +0 -1
  232. package/dist/cjs/hooks/useOnWindowResize.js +0 -16
  233. package/dist/cjs/hooks/useQuill.d.ts +0 -46
  234. package/dist/cjs/hooks/useQuill.d.ts.map +0 -1
  235. package/dist/cjs/hooks/useQuill.js +0 -94
  236. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts +0 -3
  237. package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  238. package/dist/cjs/hooks/useSelectOnKeyDown.js +0 -65
  239. package/dist/cjs/index.d.ts +0 -19
  240. package/dist/cjs/index.d.ts.map +0 -1
  241. package/dist/cjs/index.js +0 -38
  242. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +0 -34
  243. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  244. package/dist/cjs/internals/ReportBuilder/PivotList.js +0 -61
  245. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +0 -62
  246. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  247. package/dist/cjs/internals/ReportBuilder/PivotModal.js +0 -916
  248. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.d.ts +0 -2
  249. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.d.ts.map +0 -1
  250. package/dist/cjs/internals/ReportBuilder/PivotModal.spec.js +0 -213
  251. package/dist/cjs/lib/font.d.ts +0 -14
  252. package/dist/cjs/lib/font.d.ts.map +0 -1
  253. package/dist/cjs/lib/font.js +0 -16
  254. package/dist/cjs/lib/index.d.ts +0 -4
  255. package/dist/cjs/lib/index.d.ts.map +0 -1
  256. package/dist/cjs/lib/index.js +0 -19
  257. package/dist/cjs/lib/inputTypes.d.ts +0 -21
  258. package/dist/cjs/lib/inputTypes.d.ts.map +0 -1
  259. package/dist/cjs/lib/inputTypes.js +0 -56
  260. package/dist/cjs/lib/utils.d.ts +0 -10
  261. package/dist/cjs/lib/utils.d.ts.map +0 -1
  262. package/dist/cjs/lib/utils.js +0 -45
  263. package/dist/cjs/utils/aggregate.d.ts +0 -4
  264. package/dist/cjs/utils/aggregate.d.ts.map +0 -1
  265. package/dist/cjs/utils/aggregate.js +0 -429
  266. package/dist/cjs/utils/axisFormatter.d.ts +0 -20
  267. package/dist/cjs/utils/axisFormatter.d.ts.map +0 -1
  268. package/dist/cjs/utils/axisFormatter.js +0 -194
  269. package/dist/cjs/utils/color.d.ts +0 -13
  270. package/dist/cjs/utils/color.d.ts.map +0 -1
  271. package/dist/cjs/utils/color.js +0 -251
  272. package/dist/cjs/utils/crypto.d.ts +0 -2
  273. package/dist/cjs/utils/crypto.d.ts.map +0 -1
  274. package/dist/cjs/utils/crypto.js +0 -10
  275. package/dist/cjs/utils/csv.d.ts +0 -6
  276. package/dist/cjs/utils/csv.d.ts.map +0 -1
  277. package/dist/cjs/utils/csv.js +0 -80
  278. package/dist/cjs/utils/dashboard.d.ts +0 -12
  279. package/dist/cjs/utils/dashboard.d.ts.map +0 -1
  280. package/dist/cjs/utils/dashboard.js +0 -174
  281. package/dist/cjs/utils/dataFetcher.d.ts +0 -3
  282. package/dist/cjs/utils/dataFetcher.d.ts.map +0 -1
  283. package/dist/cjs/utils/dataFetcher.js +0 -81
  284. package/dist/cjs/utils/dates.d.ts +0 -10
  285. package/dist/cjs/utils/dates.d.ts.map +0 -1
  286. package/dist/cjs/utils/dates.js +0 -37
  287. package/dist/cjs/utils/getDomain.d.ts +0 -8
  288. package/dist/cjs/utils/getDomain.d.ts.map +0 -1
  289. package/dist/cjs/utils/getDomain.js +0 -31
  290. package/dist/cjs/utils/merge.d.ts +0 -2
  291. package/dist/cjs/utils/merge.d.ts.map +0 -1
  292. package/dist/cjs/utils/merge.js +0 -49
  293. package/dist/cjs/utils/styles.d.ts +0 -17
  294. package/dist/cjs/utils/styles.d.ts.map +0 -1
  295. package/dist/cjs/utils/styles.js +0 -20
  296. package/dist/cjs/utils/valueFormatter.d.ts +0 -27
  297. package/dist/cjs/utils/valueFormatter.d.ts.map +0 -1
  298. package/dist/cjs/utils/valueFormatter.js +0 -252
  299. package/dist/cjs/utils/valueFormatterCSV.d.ts +0 -17
  300. package/dist/cjs/utils/valueFormatterCSV.d.ts.map +0 -1
  301. package/dist/cjs/utils/valueFormatterCSV.js +0 -99
  302. package/dist/esm/BarList.d.ts +0 -22
  303. package/dist/esm/BarList.d.ts.map +0 -1
  304. package/dist/esm/BarList.js +0 -279
  305. package/dist/esm/Chart.d.ts +0 -42
  306. package/dist/esm/Chart.d.ts.map +0 -1
  307. package/dist/esm/Chart.js +0 -353
  308. package/dist/esm/ChartBuilder.d.ts +0 -46
  309. package/dist/esm/ChartBuilder.d.ts.map +0 -1
  310. package/dist/esm/ChartBuilder.js +0 -700
  311. package/dist/esm/ChartEditor.d.ts +0 -27
  312. package/dist/esm/ChartEditor.d.ts.map +0 -1
  313. package/dist/esm/ChartEditor.js +0 -72
  314. package/dist/esm/Context.d.ts +0 -36
  315. package/dist/esm/Context.d.ts.map +0 -1
  316. package/dist/esm/Context.js +0 -223
  317. package/dist/esm/Dashboard.d.ts +0 -178
  318. package/dist/esm/Dashboard.d.ts.map +0 -1
  319. package/dist/esm/Dashboard.js +0 -490
  320. package/dist/esm/DateRangePicker/Calendar.d.ts +0 -17
  321. package/dist/esm/DateRangePicker/Calendar.d.ts.map +0 -1
  322. package/dist/esm/DateRangePicker/Calendar.js +0 -167
  323. package/dist/esm/DateRangePicker/DateRangePicker.d.ts +0 -39
  324. package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  325. package/dist/esm/DateRangePicker/DateRangePicker.js +0 -122
  326. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +0 -23
  327. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +0 -1
  328. package/dist/esm/DateRangePicker/DateRangePickerButton.js +0 -136
  329. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +0 -3
  330. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  331. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -256
  332. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +0 -80
  333. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  334. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +0 -535
  335. package/dist/esm/DateRangePicker/index.d.ts +0 -3
  336. package/dist/esm/DateRangePicker/index.d.ts.map +0 -1
  337. package/dist/esm/DateRangePicker/index.js +0 -2
  338. package/dist/esm/PieChart.d.ts +0 -59
  339. package/dist/esm/PieChart.d.ts.map +0 -1
  340. package/dist/esm/PieChart.js +0 -533
  341. package/dist/esm/QuillProvider.d.ts +0 -58
  342. package/dist/esm/QuillProvider.d.ts.map +0 -1
  343. package/dist/esm/QuillProvider.js +0 -31
  344. package/dist/esm/ReportBuilder.d.ts +0 -41
  345. package/dist/esm/ReportBuilder.d.ts.map +0 -1
  346. package/dist/esm/ReportBuilder.js +0 -996
  347. package/dist/esm/SQLEditor.d.ts +0 -54
  348. package/dist/esm/SQLEditor.d.ts.map +0 -1
  349. package/dist/esm/SQLEditor.js +0 -500
  350. package/dist/esm/TableChart.d.ts +0 -15
  351. package/dist/esm/TableChart.d.ts.map +0 -1
  352. package/dist/esm/TableChart.js +0 -290
  353. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +0 -5
  354. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  355. package/dist/esm/assets/ArrowDownHeadIcon.js +0 -3
  356. package/dist/esm/assets/ArrowDownIcon.d.ts +0 -5
  357. package/dist/esm/assets/ArrowDownIcon.d.ts.map +0 -1
  358. package/dist/esm/assets/ArrowDownIcon.js +0 -3
  359. package/dist/esm/assets/ArrowDownRightIcon.d.ts +0 -5
  360. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +0 -1
  361. package/dist/esm/assets/ArrowDownRightIcon.js +0 -3
  362. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts +0 -5
  363. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  364. package/dist/esm/assets/ArrowLeftHeadIcon.js +0 -3
  365. package/dist/esm/assets/ArrowRightHeadIcon.d.ts +0 -5
  366. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  367. package/dist/esm/assets/ArrowRightHeadIcon.js +0 -3
  368. package/dist/esm/assets/ArrowRightIcon.d.ts +0 -5
  369. package/dist/esm/assets/ArrowRightIcon.d.ts.map +0 -1
  370. package/dist/esm/assets/ArrowRightIcon.js +0 -3
  371. package/dist/esm/assets/ArrowUpHeadIcon.d.ts +0 -5
  372. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  373. package/dist/esm/assets/ArrowUpHeadIcon.js +0 -3
  374. package/dist/esm/assets/ArrowUpIcon.d.ts +0 -5
  375. package/dist/esm/assets/ArrowUpIcon.d.ts.map +0 -1
  376. package/dist/esm/assets/ArrowUpIcon.js +0 -3
  377. package/dist/esm/assets/ArrowUpRightIcon.d.ts +0 -5
  378. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +0 -1
  379. package/dist/esm/assets/ArrowUpRightIcon.js +0 -3
  380. package/dist/esm/assets/CalendarIcon.d.ts +0 -5
  381. package/dist/esm/assets/CalendarIcon.d.ts.map +0 -1
  382. package/dist/esm/assets/CalendarIcon.js +0 -3
  383. package/dist/esm/assets/CalendarNormalIcon.d.ts +0 -5
  384. package/dist/esm/assets/CalendarNormalIcon.d.ts.map +0 -1
  385. package/dist/esm/assets/CalendarNormalIcon.js +0 -3
  386. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  387. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  388. package/dist/esm/assets/DoubleArrowLeftHeadIcon.js +0 -3
  389. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  390. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  391. package/dist/esm/assets/DoubleArrowRightHeadIcon.js +0 -3
  392. package/dist/esm/assets/ExclamationFilledIcon.d.ts +0 -5
  393. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +0 -1
  394. package/dist/esm/assets/ExclamationFilledIcon.js +0 -3
  395. package/dist/esm/assets/FilterIcon.d.ts +0 -5
  396. package/dist/esm/assets/FilterIcon.d.ts.map +0 -1
  397. package/dist/esm/assets/FilterIcon.js +0 -3
  398. package/dist/esm/assets/LoadingSpinner.d.ts +0 -5
  399. package/dist/esm/assets/LoadingSpinner.d.ts.map +0 -1
  400. package/dist/esm/assets/LoadingSpinner.js +0 -3
  401. package/dist/esm/assets/RefreshIcon.d.ts +0 -5
  402. package/dist/esm/assets/RefreshIcon.d.ts.map +0 -1
  403. package/dist/esm/assets/RefreshIcon.js +0 -3
  404. package/dist/esm/assets/SearchIcon.d.ts +0 -5
  405. package/dist/esm/assets/SearchIcon.d.ts.map +0 -1
  406. package/dist/esm/assets/SearchIcon.js +0 -3
  407. package/dist/esm/assets/UpLeftArrowsIcon.d.ts +0 -5
  408. package/dist/esm/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  409. package/dist/esm/assets/UpLeftArrowsIcon.js +0 -3
  410. package/dist/esm/assets/XCircleIcon.d.ts +0 -5
  411. package/dist/esm/assets/XCircleIcon.d.ts.map +0 -1
  412. package/dist/esm/assets/XCircleIcon.js +0 -3
  413. package/dist/esm/assets/XIcon.d.ts +0 -5
  414. package/dist/esm/assets/XIcon.d.ts.map +0 -1
  415. package/dist/esm/assets/XIcon.js +0 -3
  416. package/dist/esm/assets/index.d.ts +0 -22
  417. package/dist/esm/assets/index.d.ts.map +0 -1
  418. package/dist/esm/assets/index.js +0 -21
  419. package/dist/esm/components/Banner/index.d.ts +0 -3
  420. package/dist/esm/components/Banner/index.d.ts.map +0 -1
  421. package/dist/esm/components/Banner/index.js +0 -24
  422. package/dist/esm/components/BigModal/BigModal.d.ts +0 -15
  423. package/dist/esm/components/BigModal/BigModal.d.ts.map +0 -1
  424. package/dist/esm/components/BigModal/BigModal.js +0 -62
  425. package/dist/esm/components/Chart/BarChart.d.ts +0 -18
  426. package/dist/esm/components/Chart/BarChart.d.ts.map +0 -1
  427. package/dist/esm/components/Chart/BarChart.js +0 -75
  428. package/dist/esm/components/Chart/ChartError.d.ts +0 -3
  429. package/dist/esm/components/Chart/ChartError.d.ts.map +0 -1
  430. package/dist/esm/components/Chart/ChartError.js +0 -26
  431. package/dist/esm/components/Chart/ChartSkeleton.d.ts +0 -6
  432. package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +0 -1
  433. package/dist/esm/components/Chart/ChartSkeleton.js +0 -17
  434. package/dist/esm/components/Chart/ChartTooltip.d.ts +0 -29
  435. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +0 -1
  436. package/dist/esm/components/Chart/ChartTooltip.js +0 -229
  437. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -6
  438. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  439. package/dist/esm/components/Chart/ChartTooltipFrame.js +0 -13
  440. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts +0 -11
  441. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  442. package/dist/esm/components/Chart/ChartTooltipGroup.js +0 -23
  443. package/dist/esm/components/Chart/ChartTooltipRow.d.ts +0 -8
  444. package/dist/esm/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  445. package/dist/esm/components/Chart/ChartTooltipRow.js +0 -41
  446. package/dist/esm/components/Chart/LineChart.d.ts +0 -16
  447. package/dist/esm/components/Chart/LineChart.d.ts.map +0 -1
  448. package/dist/esm/components/Chart/LineChart.js +0 -91
  449. package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -3
  450. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +0 -1
  451. package/dist/esm/components/Dashboard/ChartComponent.js +0 -61
  452. package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -3
  453. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +0 -1
  454. package/dist/esm/components/Dashboard/DashboardSection.js +0 -14
  455. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -3
  456. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  457. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -10
  458. package/dist/esm/components/Dashboard/DataLoader.d.ts +0 -3
  459. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +0 -1
  460. package/dist/esm/components/Dashboard/DataLoader.js +0 -71
  461. package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -3
  462. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +0 -1
  463. package/dist/esm/components/Dashboard/MetricComponent.js +0 -62
  464. package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -3
  465. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +0 -1
  466. package/dist/esm/components/Dashboard/TableComponent.js +0 -29
  467. package/dist/esm/components/Dropdown/Dropdown.d.ts +0 -14
  468. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +0 -1
  469. package/dist/esm/components/Dropdown/Dropdown.js +0 -71
  470. package/dist/esm/components/Dropdown/DropdownItem.d.ts +0 -11
  471. package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +0 -1
  472. package/dist/esm/components/Dropdown/DropdownItem.js +0 -42
  473. package/dist/esm/components/Dropdown/index.d.ts +0 -3
  474. package/dist/esm/components/Dropdown/index.d.ts.map +0 -1
  475. package/dist/esm/components/Dropdown/index.js +0 -2
  476. package/dist/esm/components/Modal/Modal.d.ts +0 -15
  477. package/dist/esm/components/Modal/Modal.d.ts.map +0 -1
  478. package/dist/esm/components/Modal/Modal.js +0 -65
  479. package/dist/esm/components/Modal/index.d.ts +0 -2
  480. package/dist/esm/components/Modal/index.d.ts.map +0 -1
  481. package/dist/esm/components/Modal/index.js +0 -1
  482. package/dist/esm/components/QuillCard.d.ts +0 -14
  483. package/dist/esm/components/QuillCard.d.ts.map +0 -1
  484. package/dist/esm/components/QuillCard.js +0 -52
  485. package/dist/esm/components/QuillSelect.d.ts +0 -3
  486. package/dist/esm/components/QuillSelect.d.ts.map +0 -1
  487. package/dist/esm/components/QuillSelect.js +0 -124
  488. package/dist/esm/components/QuillTable.d.ts +0 -3
  489. package/dist/esm/components/QuillTable.d.ts.map +0 -1
  490. package/dist/esm/components/QuillTable.js +0 -252
  491. package/dist/esm/components/UiComponents.d.ts +0 -130
  492. package/dist/esm/components/UiComponents.d.ts.map +0 -1
  493. package/dist/esm/components/UiComponents.js +0 -248
  494. package/dist/esm/components/selectUtils.d.ts +0 -10
  495. package/dist/esm/components/selectUtils.d.ts.map +0 -1
  496. package/dist/esm/components/selectUtils.js +0 -37
  497. package/dist/esm/contexts/BaseColorContext.d.ts +0 -4
  498. package/dist/esm/contexts/BaseColorContext.d.ts.map +0 -1
  499. package/dist/esm/contexts/BaseColorContext.js +0 -3
  500. package/dist/esm/contexts/HoveredValueContext.d.ts +0 -8
  501. package/dist/esm/contexts/HoveredValueContext.d.ts.map +0 -1
  502. package/dist/esm/contexts/HoveredValueContext.js +0 -5
  503. package/dist/esm/contexts/RootStylesContext.d.ts +0 -4
  504. package/dist/esm/contexts/RootStylesContext.d.ts.map +0 -1
  505. package/dist/esm/contexts/RootStylesContext.js +0 -3
  506. package/dist/esm/contexts/SelectedValueContext.d.ts +0 -8
  507. package/dist/esm/contexts/SelectedValueContext.d.ts.map +0 -1
  508. package/dist/esm/contexts/SelectedValueContext.js +0 -6
  509. package/dist/esm/contexts/index.d.ts +0 -5
  510. package/dist/esm/contexts/index.d.ts.map +0 -1
  511. package/dist/esm/contexts/index.js +0 -4
  512. package/dist/esm/hooks/index.d.ts +0 -5
  513. package/dist/esm/hooks/index.d.ts.map +0 -1
  514. package/dist/esm/hooks/index.js +0 -4
  515. package/dist/esm/hooks/useDashboard.d.ts +0 -7
  516. package/dist/esm/hooks/useDashboard.d.ts.map +0 -1
  517. package/dist/esm/hooks/useDashboard.js +0 -50
  518. package/dist/esm/hooks/useExport.d.ts +0 -15
  519. package/dist/esm/hooks/useExport.d.ts.map +0 -1
  520. package/dist/esm/hooks/useExport.js +0 -27
  521. package/dist/esm/hooks/useFormat.d.ts +0 -6
  522. package/dist/esm/hooks/useFormat.d.ts.map +0 -1
  523. package/dist/esm/hooks/useFormat.js +0 -21
  524. package/dist/esm/hooks/useInternalState.d.ts +0 -4
  525. package/dist/esm/hooks/useInternalState.d.ts.map +0 -1
  526. package/dist/esm/hooks/useInternalState.js +0 -14
  527. package/dist/esm/hooks/useOnClickOutside.d.ts +0 -3
  528. package/dist/esm/hooks/useOnClickOutside.d.ts.map +0 -1
  529. package/dist/esm/hooks/useOnClickOutside.js +0 -18
  530. package/dist/esm/hooks/useOnWindowResize.d.ts +0 -5
  531. package/dist/esm/hooks/useOnWindowResize.d.ts.map +0 -1
  532. package/dist/esm/hooks/useOnWindowResize.js +0 -14
  533. package/dist/esm/hooks/useQuill.d.ts +0 -46
  534. package/dist/esm/hooks/useQuill.d.ts.map +0 -1
  535. package/dist/esm/hooks/useQuill.js +0 -90
  536. package/dist/esm/hooks/useSelectOnKeyDown.d.ts +0 -3
  537. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  538. package/dist/esm/hooks/useSelectOnKeyDown.js +0 -63
  539. package/dist/esm/index.d.ts +0 -19
  540. package/dist/esm/index.d.ts.map +0 -1
  541. package/dist/esm/index.js +0 -16
  542. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +0 -34
  543. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  544. package/dist/esm/internals/ReportBuilder/PivotList.js +0 -56
  545. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +0 -62
  546. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  547. package/dist/esm/internals/ReportBuilder/PivotModal.js +0 -909
  548. package/dist/esm/internals/ReportBuilder/PivotModal.spec.d.ts +0 -2
  549. package/dist/esm/internals/ReportBuilder/PivotModal.spec.d.ts.map +0 -1
  550. package/dist/esm/internals/ReportBuilder/PivotModal.spec.js +0 -211
  551. package/dist/esm/lib/font.d.ts +0 -14
  552. package/dist/esm/lib/font.d.ts.map +0 -1
  553. package/dist/esm/lib/font.js +0 -13
  554. package/dist/esm/lib/index.d.ts +0 -4
  555. package/dist/esm/lib/index.d.ts.map +0 -1
  556. package/dist/esm/lib/index.js +0 -3
  557. package/dist/esm/lib/inputTypes.d.ts +0 -21
  558. package/dist/esm/lib/inputTypes.d.ts.map +0 -1
  559. package/dist/esm/lib/inputTypes.js +0 -55
  560. package/dist/esm/lib/utils.d.ts +0 -10
  561. package/dist/esm/lib/utils.d.ts.map +0 -1
  562. package/dist/esm/lib/utils.js +0 -35
  563. package/dist/esm/utils/aggregate.d.ts +0 -4
  564. package/dist/esm/utils/aggregate.d.ts.map +0 -1
  565. package/dist/esm/utils/aggregate.js +0 -423
  566. package/dist/esm/utils/axisFormatter.d.ts +0 -20
  567. package/dist/esm/utils/axisFormatter.d.ts.map +0 -1
  568. package/dist/esm/utils/axisFormatter.js +0 -190
  569. package/dist/esm/utils/color.d.ts +0 -13
  570. package/dist/esm/utils/color.d.ts.map +0 -1
  571. package/dist/esm/utils/color.js +0 -247
  572. package/dist/esm/utils/crypto.d.ts +0 -2
  573. package/dist/esm/utils/crypto.d.ts.map +0 -1
  574. package/dist/esm/utils/crypto.js +0 -6
  575. package/dist/esm/utils/csv.d.ts +0 -6
  576. package/dist/esm/utils/csv.d.ts.map +0 -1
  577. package/dist/esm/utils/csv.js +0 -76
  578. package/dist/esm/utils/dashboard.d.ts +0 -12
  579. package/dist/esm/utils/dashboard.d.ts.map +0 -1
  580. package/dist/esm/utils/dashboard.js +0 -170
  581. package/dist/esm/utils/dataFetcher.d.ts +0 -3
  582. package/dist/esm/utils/dataFetcher.d.ts.map +0 -1
  583. package/dist/esm/utils/dataFetcher.js +0 -76
  584. package/dist/esm/utils/dates.d.ts +0 -10
  585. package/dist/esm/utils/dates.d.ts.map +0 -1
  586. package/dist/esm/utils/dates.js +0 -32
  587. package/dist/esm/utils/getDomain.d.ts +0 -8
  588. package/dist/esm/utils/getDomain.d.ts.map +0 -1
  589. package/dist/esm/utils/getDomain.js +0 -28
  590. package/dist/esm/utils/merge.d.ts +0 -2
  591. package/dist/esm/utils/merge.d.ts.map +0 -1
  592. package/dist/esm/utils/merge.js +0 -45
  593. package/dist/esm/utils/styles.d.ts +0 -17
  594. package/dist/esm/utils/styles.d.ts.map +0 -1
  595. package/dist/esm/utils/styles.js +0 -16
  596. package/dist/esm/utils/valueFormatter.d.ts +0 -27
  597. package/dist/esm/utils/valueFormatter.d.ts.map +0 -1
  598. package/dist/esm/utils/valueFormatter.js +0 -246
  599. package/dist/esm/utils/valueFormatterCSV.d.ts +0 -17
  600. package/dist/esm/utils/valueFormatterCSV.d.ts.map +0 -1
  601. package/dist/esm/utils/valueFormatterCSV.js +0 -95
@@ -1,909 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // @ts-nocheck
3
- import { useCallback, useContext, useMemo, useState, useEffect, useRef, } from 'react';
4
- import { ClientContext } from '../../Context';
5
- import { getDataFromCloud } from '../../utils/dataFetcher';
6
- import { RefreshIcon } from '../../assets';
7
- import { PivotList, PivotCard } from './PivotList';
8
- import { differenceInDays, eachDayOfInterval, eachMonthOfInterval, eachWeekOfInterval, eachYearOfInterval, endOfDay, isWithinInterval, subMilliseconds, min, max, add, } from 'date-fns';
9
- import { valueFormatter } from '../../utils/valueFormatter';
10
- import { numberFormatOptions, snakeCaseToTitleCase } from '../../ChartBuilder';
11
- import { QuillCard } from '../../components/QuillCard';
12
- const QuillHover = () => {
13
- return (_jsx("style", { children: `
14
- .quill-hover {
15
- background-color: white;
16
- }
17
- .quill-hover:hover {
18
- background-color: rgba(56, 65, 81, 0.05);
19
- }
20
- .quill-tab:active {
21
- background-color: rgba(56, 65, 81, 0.15);
22
- }
23
- ` }));
24
- };
25
- export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, popUpTitle, setPopUpTitle, selectedTable, SelectComponent, ButtonComponent, PopoverComponent, HeaderComponent, LabelComponent, TextComponent, selectedPivotIndex, setSelectedPivotIndex, removePivot, selectPivot, showUpdatePivot, setShowUpdatePivot, data, columns, theme, isOpen, setIsOpen, dateRange, createdPivots, setCreatedPivots, recommendedPivots, setRecommendedPivots, triggerButtonText = 'Pivot', showPivotEditButton = false, showEditOnPivotClick = true, selectPivotOnEdit = false, showTrigger = true, rightAlign = false, parentRef, }) => {
26
- const [isLoading, setIsLoading] = useState(false);
27
- // for testing
28
- // const [createdPivots, setCreatedPivots] = useState<Pivot[]>([
29
- // {
30
- // rowField: 'created_at',
31
- // rowFieldType: 'date',
32
- // columnField: undefined,
33
- // columnFieldType: undefined,
34
- // valueField: 'amount',
35
- // aggregationType: 'sum',
36
- // title: 'sum of amount by created_at',
37
- // },
38
- // {
39
- // rowField: 'merchant',
40
- // rowFieldType: 'varchar',
41
- // columnField: 'created_at',
42
- // columnFieldType: 'date',
43
- // valueField: 'amount',
44
- // aggregationType: 'sum',
45
- // title: 'sum of amount by merchant and created_at',
46
- // },
47
- // {
48
- // rowField: 'created_at',
49
- // rowFieldType: 'date',
50
- // columnField: 'merchant',
51
- // columnFieldType: 'varchar',
52
- // valueField: 'amount',
53
- // aggregationType: 'sum',
54
- // title: 'sum of amount by created_at and merchant',
55
- // },
56
- // ]);
57
- const [pivotUpdateIndex, setPivotUpdateIndex] = useState(null);
58
- const [selectedPivotType, setSelectedPivotType] = useState('recommended');
59
- const [errors, setErrors] = useState([]);
60
- const [client] = useContext(ClientContext);
61
- const [divWidth, setDivWidth] = useState(0);
62
- const editModalRef = useRef();
63
- const calculateWidth = () => {
64
- return editModalRef.current.offsetWidth;
65
- };
66
- useEffect(() => {
67
- // Measure the width of the div and update state
68
- if (editModalRef.current) {
69
- setDivWidth(calculateWidth());
70
- }
71
- // Optional: Handle window resize
72
- const handleResize = () => {
73
- if (editModalRef.current) {
74
- setDivWidth(calculateWidth());
75
- }
76
- };
77
- window.addEventListener('resize', handleResize);
78
- // Cleanup listener
79
- return () => {
80
- window.removeEventListener('resize', handleResize);
81
- };
82
- }, []);
83
- useEffect(() => {
84
- // Measure the width of the div and update state
85
- if (editModalRef.current) {
86
- setDivWidth(calculateWidth());
87
- }
88
- }, [editModalRef.current, showUpdatePivot]);
89
- useEffect(() => {
90
- setSelectedPivotIndex(-1);
91
- setPivotUpdateIndex(null);
92
- setSelectedPivotType(undefined);
93
- setPivotRowField(undefined);
94
- setPivotColumnField(undefined);
95
- setPivotValueField(undefined);
96
- setPivotAggregation(undefined);
97
- setIsOpen(false);
98
- setErrors([]);
99
- }, [selectedTable]);
100
- const columnsToShow = useMemo(() => {
101
- return (columns || []).reduce((map, col) => {
102
- // only use columns shown in the report builder's table
103
- // also filter out id
104
- if (col.field !== 'id' && !col.field.endsWith('_id')) {
105
- map[col.field] = col.fieldType;
106
- }
107
- return map;
108
- }, {});
109
- }, [columns]);
110
- const selectedPivotTable = useMemo(() => {
111
- if (selectedPivotIndex === -1) {
112
- return null;
113
- }
114
- const pivot = createdPivots[selectedPivotIndex];
115
- const { rows, columns } = generatePivotTable(pivot, data, dateRange);
116
- return {
117
- pivot: pivot,
118
- rows: rows,
119
- columns: columns,
120
- };
121
- }, [selectedPivotIndex, data, dateRange, createdPivots]);
122
- const columnSelectOptions = useMemo(() => {
123
- return [
124
- { label: 'Select', value: '' },
125
- ...Object.keys(columnsToShow).map((key) => {
126
- return { label: key, value: key };
127
- }),
128
- ];
129
- }, [columnsToShow]);
130
- const onSelectRecommendedPivot = (pivot, index) => {
131
- if (showEditOnPivotClick) {
132
- onEditPivot(pivot, index);
133
- return;
134
- }
135
- if (index === selectedPivotIndex && selectedPivotType === 'recommended') {
136
- removePivot();
137
- }
138
- else {
139
- selectPivot(pivot, index);
140
- setSelectedPivotType('recommended');
141
- }
142
- setIsOpen(false);
143
- };
144
- const onSelectCreatedPivot = (pivot, index) => {
145
- selectPivot(pivot, index);
146
- setSelectedPivotType('created');
147
- setIsOpen(false);
148
- setPopUpTitle('Add Pivot');
149
- };
150
- const onEditPivot = (pivot, index) => {
151
- setPivotRowField(pivot.rowField);
152
- setPivotColumnField(pivot.columnField);
153
- setPivotValueField(pivot.valueField);
154
- setPivotAggregation(pivot.aggregationType);
155
- setPivotUpdateIndex(index);
156
- setShowUpdatePivot(true);
157
- };
158
- const onEditRecommendedPivot = (pivot, index) => {
159
- onEditPivot(pivot, null);
160
- };
161
- const refreshPivots = useCallback(async () => {
162
- if (isLoading || Object.keys(columnsToShow).length === 0) {
163
- return;
164
- }
165
- setIsLoading(true);
166
- const cloudBody = {
167
- tableSchema: Object.keys(columnsToShow).reduce(function (map, col) {
168
- // stop ai from seeing date fields. this is meant to stop the ai
169
- // pivot tables from extracting month and year from the date
170
- const fieldType = isDateField(columnsToShow[col])
171
- ? 'string'
172
- : columnsToShow[col];
173
- map[col] = fieldType;
174
- return map;
175
- }, {}),
176
- };
177
- try {
178
- const resp = await getDataFromCloud(client, 'pivotai', cloudBody);
179
- const recommendedPivots = resp?.data?.pivotTables || [];
180
- // for testing if needed
181
- // const recommendedPivots = [
182
- // {
183
- // title: 'Total Amount by Merchant',
184
- // rowField: 'merchant',
185
- // valueField: 'amount',
186
- // aggregationType: 'sum',
187
- // },
188
- // {
189
- // title: 'Average Amount by User and Category',
190
- // rowField: 'user_name',
191
- // columnField: 'category',
192
- // valueField: 'amount',
193
- // aggregationType: 'average',
194
- // },
195
- // {
196
- // title: 'Count of Transactions by User and Merchant',
197
- // rowField: 'user_name',
198
- // columnField: 'merchant',
199
- // valueField: 'id',
200
- // aggregationType: 'count',
201
- // },
202
- // {
203
- // title: 'Total Amount by Merchant and Category',
204
- // rowField: 'merchant',
205
- // columnField: 'category',
206
- // valueField: 'amount',
207
- // aggregationType: 'sum',
208
- // },
209
- // {
210
- // title: 'Average Amount by Category and Date',
211
- // rowField: 'category',
212
- // columnField: 'created_at',
213
- // valueField: 'amount',
214
- // aggregationType: 'average',
215
- // },
216
- // {
217
- // title: 'Count of Transactions by Date and Category',
218
- // rowField: 'created_at',
219
- // columnField: 'category',
220
- // valueField: 'id',
221
- // aggregationType: 'count',
222
- // },
223
- // ];
224
- setRecommendedPivots(recommendedPivots
225
- .filter((pivot) => pivot.rowField != '')
226
- .map((pivot) => {
227
- return {
228
- ...pivot,
229
- rowFieldType: columnsToShow[pivot.rowField],
230
- columnFieldType: columnsToShow[pivot.columnField],
231
- };
232
- }));
233
- // refreshing means the currently selected pivot doesn't exist in the options anymore
234
- setSelectedPivotIndex(-1);
235
- }
236
- catch (e) {
237
- console.error('Failed parsing pivotai response', e);
238
- }
239
- setIsLoading(false);
240
- }, [selectedTable, data, columnsToShow, isLoading]);
241
- useEffect(() => {
242
- if (recommendedPivots.length === 0) {
243
- refreshPivots();
244
- }
245
- }, [refreshPivots]);
246
- const recommendedPivotTables = useMemo(() => {
247
- const pts = recommendedPivots.map((p) => {
248
- const { rows, columns } = generatePivotTable(p, data, dateRange, 6);
249
- return { pivot: p, rows, columns };
250
- });
251
- return pts;
252
- }, [recommendedPivots, data]);
253
- const createdPivotTables = useMemo(() => {
254
- const pts = createdPivots.map((p) => {
255
- const { rows, columns } = generatePivotTable(p, data, dateRange, 6);
256
- return { pivot: p, rows, columns };
257
- });
258
- return pts;
259
- }, [createdPivots, data]);
260
- const samplePivotTable = useMemo(() => {
261
- if (!pivotAggregation || !pivotRowField) {
262
- return null;
263
- }
264
- const pivot = {
265
- rowField: pivotRowField || '',
266
- rowFieldType: columnsToShow[pivotRowField || ''],
267
- columnField: pivotColumnField,
268
- columnFieldType: columnsToShow[pivotColumnField || ''],
269
- valueField: pivotValueField || '',
270
- aggregationType: pivotAggregation || '',
271
- };
272
- const { rows, columns } = generatePivotTable(pivot, data, dateRange);
273
- return { pivot: pivot, rows, columns };
274
- }, [
275
- pivotAggregation,
276
- pivotValueField,
277
- pivotRowField,
278
- pivotColumnField,
279
- columnsToShow,
280
- ]);
281
- return (_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsxs("div", { style: {
282
- position: 'relative',
283
- display: 'inline-block',
284
- textAlign: 'left',
285
- }, children: [_jsx("div", { style: {
286
- display: 'flex',
287
- flexDirection: 'row',
288
- alignItems: 'center',
289
- }, children: selectedPivotIndex !== -1 && (_jsx("span", { style: {
290
- height: 10,
291
- width: 10,
292
- backgroundColor: theme.primaryButtonColor,
293
- borderRadius: '50%',
294
- position: 'absolute',
295
- top: -2,
296
- right: -2,
297
- } })) }), _jsx(PopoverComponent, { onClose: () => {
298
- setShowUpdatePivot(false);
299
- setPopUpTitle('Add Pivot');
300
- }, style: rightAlign ? { right: 0 } : {}, parentRef: parentRef, showTrigger: showTrigger, label: triggerButtonText, isOpen: isOpen, setIsOpen: setIsOpen, onClick: () => {
301
- // table is not loaded yet, so pivot button is not clickable
302
- if (Object.keys(columnsToShow).length === 0) {
303
- return;
304
- }
305
- if (!isOpen && recommendedPivots.length === 0) {
306
- refreshPivots();
307
- }
308
- setShowUpdatePivot(false);
309
- }, children: _jsx("div", { children: showUpdatePivot ? (_jsxs("div", { className: "ref-in-use", ref: editModalRef, style: {
310
- backgroundColor: 'rgb(255, 255, 255)',
311
- display: 'flex',
312
- flexDirection: 'column',
313
- }, children: [_jsx(HeaderComponent, { children: popUpTitle }), _jsx("div", { style: { height: 12 } }), _jsx("div", { style: { width: divWidth }, children: samplePivotTable ? (_jsx("div", { style: {
314
- marginBottom: 20,
315
- minHeight: 160,
316
- }, children: _jsx(PivotCard, { pivotTable: samplePivotTable, theme: theme, index: 0, onSelectPivot: () => { }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, clickable: false, minHeight: 140, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent }) })) : (_jsx("div", { style: { marginBottom: 20, maxWidth: 470 }, children: _jsx(QuillCard, { theme: theme, clickable: false, children: _jsx("div", { style: {
317
- color: theme.secondaryTextColor,
318
- }, children: "Select a row field and aggregation type to see a preview" }) }) })) }), _jsxs("div", { style: {
319
- display: 'flex',
320
- flexDirection: 'column',
321
- gap: 10,
322
- alignItems: 'center',
323
- justifyContent: 'space-between',
324
- }, children: [_jsxs("div", { style: {
325
- display: 'flex',
326
- flexDirection: 'row',
327
- gap: 20,
328
- marginBottom: 5,
329
- }, children: [_jsxs("div", { children: [_jsx(LabelComponent, { children: "Row Field" }), _jsx(SelectComponent, { label: 'Row Field', id: "pivot-row-field", value: pivotRowField, onChange: (e) => {
330
- setPivotRowField(e === '' ? undefined : e);
331
- }, options: columnSelectOptions, theme: theme })] }), _jsxs("div", { children: [_jsx(LabelComponent, { children: "Column Field" }), _jsx(SelectComponent, { label: 'Column Field', id: "pivot-row-field", value: pivotColumnField, onChange: (e) => {
332
- setPivotColumnField(e === '' ? undefined : e);
333
- }, options: columnSelectOptions, theme: theme })] })] }), _jsxs("div", { style: {
334
- display: 'flex',
335
- flexDirection: 'row',
336
- gap: 20,
337
- marginBottom: 20,
338
- }, children: [_jsxs("div", { children: [_jsx(LabelComponent, { children: "Value Field" }), _jsx(SelectComponent, { label: 'Value Field', id: "pivot-row-field", value: pivotValueField, onChange: (e) => {
339
- setPivotValueField(e === '' ? undefined : e);
340
- }, options: pivotAggregation === 'count'
341
- ? columnSelectOptions
342
- : columnSelectOptions.filter((option) => {
343
- return (option.value === '' ||
344
- numberFormatOptions.includes(columns.find((col) => col.field === option.value)?.format));
345
- }), theme: theme })] }), _jsxs("div", { children: [_jsx(LabelComponent, { children: "Aggregation Type" }), _jsx(SelectComponent, { label: 'Aggregation Type', id: "pivot-row-field", value: pivotAggregation, theme: theme, onChange: (e) => {
346
- if (e !== 'count' &&
347
- pivotValueField &&
348
- !numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField)?.format)) {
349
- setPivotValueField(null);
350
- }
351
- setPivotAggregation(e === '' ? undefined : e);
352
- }, options: ['', 'sum', 'average', 'count'].map((option) => {
353
- return { label: option || 'Select', value: option };
354
- }) })] })] })] }), _jsx("div", { children: _jsx(ButtonComponent, { id: "custom-button", onClick: () => {
355
- const errors = [];
356
- if (!pivotRowField) {
357
- errors.push('Row field cannot be empty');
358
- }
359
- if (!pivotValueField && pivotAggregation !== 'count') {
360
- errors.push("Value field cannot be empty when aggregation is not 'count'");
361
- }
362
- if (!pivotAggregation) {
363
- errors.push('Aggregation cannot be empty');
364
- }
365
- if (errors.length === 0) {
366
- const pivot = {
367
- rowField: pivotRowField || '',
368
- rowFieldType: columnsToShow[pivotRowField || ''],
369
- columnField: pivotColumnField,
370
- columnFieldType: columnsToShow[pivotColumnField || ''],
371
- valueField: pivotValueField || '',
372
- aggregationType: pivotAggregation || '',
373
- };
374
- pivot.title = generatePivotTitle(pivot);
375
- setIsOpen(false);
376
- setCreatedPivots([pivot]);
377
- onSelectCreatedPivot(pivot, 0);
378
- setPopUpTitle('Add Pivot');
379
- }
380
- setErrors(errors);
381
- }, label: popUpTitle }) }), _jsx("div", { children: errors.length > 0 && (_jsxs("div", { children: [_jsx("div", { style: {
382
- fontSize: 14,
383
- marginBottom: '6px',
384
- marginTop: '12px',
385
- fontWeight: '600',
386
- color: theme.secondaryTextColor,
387
- }, children: "Pivot Errors" }), errors.map((error, index) => (_jsx("div", { style: {
388
- borderRadius: 8,
389
- backgroundColor: '#FF9494',
390
- paddingLeft: '12px',
391
- paddingRight: '8px',
392
- height: 30,
393
- display: 'flex',
394
- alignItems: 'center',
395
- fontSize: 13,
396
- fontWeight: 'bold',
397
- fontFamily: theme?.fontFamily,
398
- color: 'white',
399
- marginBottom: 5,
400
- }, children: error }, index)))] })) })] })) : (_jsx("div", { style: {
401
- display: 'flex',
402
- flexDirection: 'column',
403
- fontFamily: theme?.fontFamily,
404
- color: theme?.primaryTextColor,
405
- width: selectedPivotTable ? 500 : 600,
406
- maxHeight: 600,
407
- overflowY: 'scroll',
408
- }, children: selectedPivotIndex >= 0 ? (_jsx("div", { children: _jsx("div", { onClick: () => {
409
- setPopUpTitle('Edit Pivot');
410
- onEditPivot(createdPivots[0], 0);
411
- }, children: _jsx(PivotCard, { pivotTable: {
412
- pivot: selectedPivotTable?.pivot,
413
- rows: selectedPivotTable?.rows,
414
- columns: selectedPivotTable?.columns,
415
- }, theme: theme, index: 0, onSelectPivot: () => { }, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, onClose: () => {
416
- removePivot();
417
- }, clickable: true, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent }) }) })) : (_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("div", { style: {
418
- fontWeight: '600',
419
- marginBottom: 5,
420
- fontSize: 18,
421
- }, children: "Recommended Pivots" }), _jsx("div", { children: _jsxs("div", { onClick: refreshPivots, style: {
422
- color: theme?.secondaryTextColor,
423
- cursor: 'pointer',
424
- marginTop: 0,
425
- marginBottom: 12,
426
- display: 'flex',
427
- flexDirection: 'row',
428
- alignItems: 'center',
429
- width: 'min-content',
430
- fontSize: 14,
431
- paddingLeft: 8,
432
- paddingRight: 6,
433
- paddingTop: 6,
434
- paddingBottom: 6,
435
- borderRadius: 5,
436
- }, className: "quill-hover", children: [_jsx(QuillHover, {}), _jsx(RefreshIcon, { style: { marginRight: 5 } }), "Refresh"] }) }), isLoading ? (_jsxs("div", { style: {
437
- background: theme.backgroundColor,
438
- width: 250,
439
- minWidth: 250,
440
- height: '100%',
441
- paddingLeft: 20,
442
- paddingRight: 30,
443
- paddingTop: 40,
444
- display: 'flex',
445
- margin: '0px auto',
446
- justifyContent: 'center',
447
- }, children: [_jsx("div", { style: { height: 100 } }), _jsxs("svg", { width: "24", height: "24", children: [_jsx("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 6)", stroke: theme?.primaryTextColor || '#364153', fill: "none", transform: "rotate(-90 12 12)", children: _jsx("animateTransform", { attributeName: "transform", attributeType: "XML", type: "rotate", from: "-180 12 12", to: "180 12 12", dur: "0.8s", repeatCount: "indefinite" }) }), _jsx("circle", { cx: "12", cy: "12", r: "9.375", strokeWidth: "3.75", strokeDasharray: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 1 / 3)", strokeDashoffset: "calc(2 * 3.14 * 9.375 / 3) calc(2 * 3.14 * 9.375 * 2 / 3)", 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" }) })] })] })) : (_jsxs("div", { children: [recommendedPivotTables.length == 0 && (_jsx("div", { style: { marginBottom: 20 }, children: "There are currently no recommended pivots available." })), _jsx(PivotList, { recommendedPivotTables: recommendedPivotTables, createdPivotTables: createdPivotTables, theme: theme, onSelectRecommendedPivot: onSelectRecommendedPivot, onSelectCreatedPivot: onSelectCreatedPivot, selectedPivotIndex: selectedPivotIndex, selectedPivotType: selectedPivotType, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, onEditRecommendedPivot: onEditRecommendedPivot, onEditCreatedPivot: onEditPivot, showCreatePivot: true, showPivotEditButton: showPivotEditButton, LabelComponent: LabelComponent, TextComponent: TextComponent })] }))] })) })) }) })] }) }));
448
- };
449
- export function generatePivotTableYAxis(pivot, cols, format) {
450
- // Use the column field for the field and label if there is one
451
- if (pivot.columnField) {
452
- return cols.slice(1).map(({ field, label }) => ({ field, label, format }));
453
- }
454
- // For count aggregations, use 'count' for the label
455
- if (pivot?.aggregationType === 'count') {
456
- return [{ field: pivot.valueField, label: 'count', format: format }];
457
- }
458
- // For average aggregations, use 'average <label>' for the label
459
- if (pivot?.aggregationType === 'average') {
460
- const label = `average ${pivot.valueField}`;
461
- return [{ field: pivot.valueField, label, format: format }];
462
- }
463
- // otherwise use the default (ie. the field label)
464
- return [
465
- {
466
- field: pivot.valueField,
467
- label: '',
468
- format: format,
469
- },
470
- ];
471
- }
472
- function generatePivotTitle(pivot) {
473
- return snakeCaseToTitleCase(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
474
- }
475
- function castValueToDate(value) {
476
- if (!value) {
477
- return null;
478
- }
479
- if (typeof value === 'object' && value.value) {
480
- return new Date(value.value);
481
- }
482
- return new Date(value);
483
- }
484
- function getDateRange(dateRange, column, data) {
485
- if (!dateRange || !dateRange[0]) {
486
- if (data.length == 0 || !data[0][column]) {
487
- return { start: new Date(), end: new Date() };
488
- }
489
- const firstDate = castValueToDate(data[0][column]);
490
- if (data.length == 1) {
491
- return {
492
- start: firstDate || new Date(),
493
- end: firstDate || new Date(),
494
- };
495
- }
496
- let earliestDate = firstDate;
497
- let lastestDate = firstDate;
498
- for (let i = 0; i < data.length; i++) {
499
- if (data[i][column]) {
500
- const value = castValueToDate(data[i][column]);
501
- lastestDate = lastestDate === null ? value : max([lastestDate, value]);
502
- earliestDate =
503
- earliestDate === null ? value : min([earliestDate, value]);
504
- }
505
- }
506
- return { start: earliestDate, end: lastestDate };
507
- }
508
- else {
509
- return { start: dateRange[0], end: dateRange[1] };
510
- }
511
- }
512
- function getDateBuckets(dateRange, column, data) {
513
- if (!dateRange || !dateRange[0]) {
514
- return eachMonthOfInterval(getDateRange(dateRange, column, data));
515
- }
516
- const dayDifference = differenceInDays(new Date(dateRange[1]), new Date(dateRange[0]));
517
- return dayDifferenceToInterval(dayDifference, dateRange);
518
- }
519
- function getCompDateBuckets(dateRange, compDateRange, column, data) {
520
- if (!dateRange || !dateRange[0]) {
521
- return eachMonthOfInterval(getDateRange(dateRange, column, data));
522
- }
523
- const dayDifference = differenceInDays(new Date(dateRange[1]), new Date(dateRange[0]));
524
- return dayDifferenceToInterval(dayDifference, compDateRange);
525
- }
526
- function dayDifferenceToInterval(dayDifference, dateRange) {
527
- if (dayDifference < 14) {
528
- return eachDayOfInterval({ start: dateRange[0], end: dateRange[1] });
529
- }
530
- else if (dayDifference < 60) {
531
- return eachWeekOfInterval({ start: dateRange[0], end: dateRange[1] }, { weekStartsOn: 1 });
532
- }
533
- else if (dayDifference < 365 * 3) {
534
- return eachMonthOfInterval({ start: dateRange[0], end: dateRange[1] });
535
- }
536
- else {
537
- return eachYearOfInterval({ start: dateRange[0], end: dateRange[1] });
538
- }
539
- }
540
- function getDateString(value, dateRange) {
541
- let format;
542
- if (!dateRange || !dateRange[0]) {
543
- format = 'MMM_yyyy';
544
- }
545
- else {
546
- const dayDifference = differenceInDays(new Date(dateRange[1]), new Date(dateRange[0]));
547
- if (dayDifference < 14) {
548
- format = 'MMM_dd_yyyy';
549
- }
550
- else if (dayDifference < 60) {
551
- format = 'MMM_dd-MMM_dd';
552
- }
553
- else if (dayDifference < 365 * 3) {
554
- format = 'MMM_yyyy';
555
- }
556
- else {
557
- format = 'yyyy';
558
- }
559
- }
560
- return valueFormatter({
561
- value,
562
- field: 'date',
563
- fields: [{ field: 'date', format }],
564
- });
565
- }
566
- export function isDateField(fieldType) {
567
- return (fieldType === 'date' ||
568
- fieldType === 'datetime' ||
569
- fieldType === 'timestamp' ||
570
- fieldType === 'timestamptz');
571
- }
572
- const isNullUndefinedOrInvalidDate = (date) => date === null || date === undefined || isNaN(date.getTime());
573
- // If the value is an object with key value (ie. a BigQuery date) we will
574
- // return the inner value, otherwise return passed param as-is.
575
- const handleBigQueryValue = (value) => {
576
- if (Boolean(value) &&
577
- typeof value === 'object' &&
578
- Object.keys(value).length === 1 &&
579
- value['value']) {
580
- return value['value'];
581
- }
582
- return value;
583
- };
584
- // Process out all the BigQuery dates.
585
- const fixBigQueryData = (data) => {
586
- const newData = [];
587
- for (const row of data) {
588
- const newRow = {};
589
- for (const key in row) {
590
- newRow[key] = handleBigQueryValue(row[key]);
591
- }
592
- newData.push(newRow);
593
- }
594
- return newData;
595
- };
596
- export function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = null) {
597
- // Handle edge-case for BigQuery objects.
598
- data = fixBigQueryData(data);
599
- if (dateRange[0] === null && dateRange[1] === null) {
600
- dateRange = [new Date(0), add(new Date(), { years: 5 })];
601
- }
602
- if (!compRange ||
603
- isNullUndefinedOrInvalidDate(compRange[0]) ||
604
- isNullUndefinedOrInvalidDate(compRange[1])) {
605
- compRange = null;
606
- }
607
- const pivotRows = [];
608
- const uniqueRows = (isDateField(pivot.rowFieldType)
609
- ? getDateBuckets(dateRange, pivot.rowField, data)
610
- : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
611
- const rowDateRange = pivot.rowField
612
- ? getDateRange(dateRange, pivot.rowField, data)
613
- : null;
614
- const columnDateRange = pivot.columnField
615
- ? getDateRange(dateRange, pivot.columnField, data)
616
- : null;
617
- // If columnField is not provided, we will not be using uniqueColumns
618
- const uniqueColumns = (pivot.columnField && pivot.columnField.trim()
619
- ? isDateField(pivot.columnFieldType)
620
- ? getDateBuckets(dateRange, pivot.columnField, data)
621
- : [...new Set(data.map((item) => item[pivot.columnField || '']))]
622
- : [pivot.valueField]).filter((col) => Boolean(col));
623
- // Map from new dates to their corresponding prior dates
624
- const COL_DATE_MAP = {};
625
- const ROW_DATE_MAP = {};
626
- // add in the comparison columns for all columns in the pivot
627
- let compUniqueRows = [];
628
- let compRowDateRange = [];
629
- if (isComparison) {
630
- if (pivot.columnField) {
631
- const col = pivot.columnField;
632
- const row = pivot.rowField;
633
- const isDateCol = isDateField(pivot.columnFieldType);
634
- const isDateRow = isDateField(pivot.rowFieldType);
635
- data.forEach((item) => {
636
- if (isDateCol) {
637
- const key = getDateString(item[col], dateRange);
638
- const value = getDateString(item[`comparison_${col}`], dateRange);
639
- COL_DATE_MAP[key] = value;
640
- }
641
- if (isDateRow) {
642
- const key = getDateString(item[row], dateRange);
643
- const value = getDateString(item[`comparison_${row}`], dateRange);
644
- ROW_DATE_MAP[key] = value;
645
- }
646
- });
647
- }
648
- else {
649
- const primaryColumns = [...uniqueColumns];
650
- for (const primaryKey of primaryColumns) {
651
- uniqueColumns.push(`comparison_${primaryKey}`);
652
- }
653
- }
654
- compUniqueRows = (isDateField(pivot.rowFieldType)
655
- ? getCompDateBuckets(dateRange, compRange ?? dateRange, pivot.rowField, data)
656
- : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
657
- compRowDateRange = pivot.rowField
658
- ? getDateRange(compRange ?? dateRange, pivot.rowField, data)
659
- : null;
660
- }
661
- const rowsToGenerate = rowLimit !== -1 && rowLimit <= uniqueRows.length
662
- ? uniqueRows.slice(0, rowLimit + 1)
663
- : uniqueRows;
664
- rowsToGenerate.forEach((rowValue, rowIndex) => {
665
- const row = {
666
- [pivot.rowField]: isDateField(pivot.rowFieldType)
667
- ? getDateString(rowValue, dateRange)
668
- : rowValue === null
669
- ? 'Null'
670
- : rowValue === false
671
- ? 'False'
672
- : rowValue === true
673
- ? 'True'
674
- : rowValue,
675
- };
676
- uniqueColumns.forEach((colValue, colIndex) => {
677
- let comparisonFilteredData = [];
678
- let filteredData = [];
679
- let comparisonValue;
680
- let value;
681
- const nextRowValue = isDateField(pivot.rowFieldType)
682
- ? uniqueRows[rowIndex + 1] ?? endOfDay(rowDateRange.end)
683
- : null;
684
- const compRowValue = compUniqueRows[rowIndex];
685
- const compNextRowValue = isDateField(pivot.rowFieldType)
686
- ? compUniqueRows[rowIndex + 1] ?? endOfDay(compRowDateRange.end)
687
- : null;
688
- if (pivot.columnField) {
689
- const nextColumnValue = isDateField(pivot.columnFieldType)
690
- ? uniqueColumns[colIndex + 1] || endOfDay(columnDateRange.end)
691
- : null;
692
- // If columnField is provided, filter by both rowField and columnField
693
- if (isDateField(pivot.columnFieldType) &&
694
- isDateField(pivot.rowFieldType)) {
695
- filteredData = data.filter((item) => {
696
- return (isWithinInterval(new Date(item[pivot.rowField]), {
697
- start: rowValue,
698
- end: subMilliseconds(nextRowValue, 1),
699
- }) &&
700
- isWithinInterval(new Date(item[pivot.columnField]), {
701
- start: colValue,
702
- end: subMilliseconds(nextColumnValue, 1),
703
- }));
704
- });
705
- if (isComparison) {
706
- comparisonFilteredData = data.filter((item) => {
707
- return (isWithinInterval(new Date(item[pivot.rowField]), {
708
- start: rowValue,
709
- end: subMilliseconds(nextRowValue, 1),
710
- }) &&
711
- isWithinInterval(new Date(item[pivot.columnField]), {
712
- start: colValue,
713
- end: subMilliseconds(nextColumnValue, 1),
714
- }));
715
- });
716
- }
717
- }
718
- else if (isDateField(pivot.columnFieldType) &&
719
- !isDateField(pivot.rowFieldType)) {
720
- filteredData = data.filter((item) => {
721
- return (item[pivot.rowField] === rowValue &&
722
- isWithinInterval(new Date(item[pivot.columnField]), {
723
- start: colValue,
724
- end: subMilliseconds(nextColumnValue, 1),
725
- }));
726
- });
727
- if (isComparison) {
728
- comparisonFilteredData = data.filter((item) => {
729
- return (item[`comparison_${pivot.rowField}`] === rowValue &&
730
- isWithinInterval(new Date(item[pivot.columnField]), {
731
- start: colValue,
732
- end: subMilliseconds(nextColumnValue, 1),
733
- }));
734
- });
735
- }
736
- }
737
- else if (!isDateField(pivot.columnFieldType) &&
738
- isDateField(pivot.rowFieldType)) {
739
- filteredData = data.filter((item) => {
740
- return (isWithinInterval(new Date(item[pivot.rowField]), {
741
- start: rowValue,
742
- end: subMilliseconds(nextRowValue, 1),
743
- }) && item[pivot.columnField || ''] === colValue);
744
- });
745
- if (isComparison) {
746
- comparisonFilteredData = data.filter((item) => {
747
- return (isWithinInterval(new Date(item[pivot.rowField]), {
748
- start: rowValue,
749
- end: subMilliseconds(nextRowValue, 1),
750
- }) &&
751
- item[`comparison_${pivot.columnField}` || ''] === colValue);
752
- });
753
- }
754
- }
755
- else {
756
- filteredData = data.filter((item) => {
757
- return (item[pivot.rowField] === rowValue &&
758
- item[pivot.columnField || ''] === colValue);
759
- });
760
- if (isComparison) {
761
- comparisonFilteredData = data.filter((item) => {
762
- return (item[`comparison_${pivot.rowField}`] === rowValue &&
763
- item[`comparison_${pivot.columnField}`] === colValue);
764
- });
765
- }
766
- }
767
- }
768
- else {
769
- // NOTE: For 1D columns, the comparisons are handled inside the colvalue
770
- // so there is no need to filter for comparisonFilteredData here.
771
- // If columnField is not provided, filter by rowField only
772
- if (colValue.startsWith('comparison_')) {
773
- filteredData = isDateField(pivot.rowFieldType)
774
- ? data.filter((item) => {
775
- return (compRowValue &&
776
- isWithinInterval(new Date(item[`comparison_${pivot.rowField}`]), {
777
- start: compRowValue,
778
- end: subMilliseconds(compNextRowValue, 1),
779
- }));
780
- })
781
- : data.filter((item) => item[`comparison_${pivot.rowField}`] === compRowValue);
782
- }
783
- else {
784
- filteredData = isDateField(pivot.rowFieldType)
785
- ? data.filter((item) => {
786
- return isWithinInterval(new Date(item[pivot.rowField]), {
787
- start: rowValue,
788
- end: subMilliseconds(nextRowValue, 1),
789
- });
790
- })
791
- : data.filter((item) => item[pivot.rowField] === rowValue);
792
- }
793
- }
794
- // Aggregation logic remains the same
795
- const key = pivot.columnField && pivot.columnField.trim()
796
- ? pivot.valueField
797
- : colValue;
798
- switch (pivot.aggregationType) {
799
- case 'sum':
800
- value = filteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0);
801
- if (isComparison) {
802
- comparisonValue = comparisonFilteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0);
803
- }
804
- break;
805
- case 'count':
806
- value = filteredData.length;
807
- if (isComparison) {
808
- comparisonValue = comparisonFilteredData.length;
809
- }
810
- break;
811
- case 'average':
812
- value = filteredData.length
813
- ? filteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0) / filteredData.length
814
- : 0;
815
- if (isComparison) {
816
- comparisonValue = comparisonFilteredData.length
817
- ? comparisonFilteredData.reduce((sum, item) => sum + parseFloat(item[key] ?? 0), 0) / comparisonFilteredData.length
818
- : 0;
819
- }
820
- break;
821
- // Implement other aggregation types as needed
822
- default:
823
- throw new Error('Unsupported aggregation type');
824
- }
825
- // Set the value on the row
826
- // If columnField is not provided, colValue will be valueField
827
- row[isDateField(pivot.columnFieldType)
828
- ? getDateString(colValue, dateRange)
829
- : colValue] = pivot.aggregationType === 'count' ? value : value.toFixed(2);
830
- if (isComparison && pivot.columnField) {
831
- if (isDateField(pivot.columnFieldType)) {
832
- row[`comparison_${getDateString(colValue, dateRange)}`] =
833
- pivot.aggregationType === 'count'
834
- ? comparisonValue
835
- : comparisonValue.toFixed(2);
836
- }
837
- else {
838
- row[`comparison_${colValue}`] =
839
- pivot.aggregationType === 'count'
840
- ? comparisonValue
841
- : comparisonValue.toFixed(2);
842
- }
843
- }
844
- });
845
- pivotRows.push(row);
846
- });
847
- const columns = [
848
- {
849
- label: pivot.rowField === null
850
- ? 'Null'
851
- : pivot.rowField === false
852
- ? 'False'
853
- : snakeCaseToTitleCase(pivot.rowField),
854
- field: pivot.rowField,
855
- },
856
- ...(!pivot.columnField
857
- ? [
858
- {
859
- label: pivot.rowField === null
860
- ? 'Null'
861
- : pivot.rowField === false
862
- ? 'False'
863
- : `Comparison ${snakeCaseToTitleCase(pivot.rowField)}`,
864
- field: `comparison_${pivot.rowField}`,
865
- },
866
- ]
867
- : []),
868
- ...uniqueColumns.map((column, index) => {
869
- const columnName = isDateField(pivot.columnFieldType)
870
- ? getDateString(column, dateRange)
871
- : column;
872
- return {
873
- label: column === null
874
- ? 'Null'
875
- : column === false
876
- ? 'False'
877
- : pivot.aggregationType === 'count' &&
878
- !pivot.columnField &&
879
- index === 1
880
- ? 'Count'
881
- : snakeCaseToTitleCase(columnName),
882
- field: columnName,
883
- };
884
- }),
885
- ...(isComparison && pivot.columnField
886
- ? uniqueColumns.map((column, index) => {
887
- const columnName = isDateField(pivot.columnFieldType)
888
- ? getDateString(column, dateRange)
889
- : column;
890
- return {
891
- label: column === null
892
- ? 'Null'
893
- : column === false
894
- ? 'False'
895
- : pivot.aggregationType === 'count' &&
896
- !pivot.columnField &&
897
- index === 1
898
- ? 'Comparison Count'
899
- : isDateField(pivot.columnFieldType)
900
- ? COL_DATE_MAP[getDateString(column, dateRange)] ??
901
- 'Comparison'
902
- : `Comparison ${snakeCaseToTitleCase(columnName)}`,
903
- field: `comparison_${columnName}`,
904
- };
905
- })
906
- : []),
907
- ];
908
- return { rows: pivotRows, columns };
909
- }