@quillsql/react 2.12.36 → 2.12.37

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 (456) hide show
  1. package/dist/cjs/ChartBuilder.js +2 -2
  2. package/dist/cjs/Dashboard.d.ts.map +1 -1
  3. package/dist/cjs/Dashboard.js +1 -1
  4. package/dist/cjs/components/Chart/ChartError.js +1 -1
  5. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  6. package/dist/cjs/utils/dataFetcher.js +7 -1
  7. package/dist/cjs/utils/report.d.ts.map +1 -1
  8. package/dist/cjs/utils/report.js +6 -3
  9. package/package.json +1 -1
  10. package/dist/esm/Chart.d.ts +0 -204
  11. package/dist/esm/Chart.d.ts.map +0 -1
  12. package/dist/esm/Chart.js +0 -431
  13. package/dist/esm/ChartBuilder.d.ts +0 -339
  14. package/dist/esm/ChartBuilder.d.ts.map +0 -1
  15. package/dist/esm/ChartBuilder.js +0 -1312
  16. package/dist/esm/ChartEditor.d.ts +0 -209
  17. package/dist/esm/ChartEditor.d.ts.map +0 -1
  18. package/dist/esm/ChartEditor.js +0 -182
  19. package/dist/esm/Context.d.ts +0 -14
  20. package/dist/esm/Context.d.ts.map +0 -1
  21. package/dist/esm/Context.js +0 -269
  22. package/dist/esm/Dashboard.d.ts +0 -279
  23. package/dist/esm/Dashboard.d.ts.map +0 -1
  24. package/dist/esm/Dashboard.js +0 -660
  25. package/dist/esm/DateRangePicker/Calendar.d.ts +0 -17
  26. package/dist/esm/DateRangePicker/Calendar.d.ts.map +0 -1
  27. package/dist/esm/DateRangePicker/Calendar.js +0 -164
  28. package/dist/esm/DateRangePicker/DateRangePicker.d.ts +0 -39
  29. package/dist/esm/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  30. package/dist/esm/DateRangePicker/DateRangePicker.js +0 -95
  31. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts +0 -22
  32. package/dist/esm/DateRangePicker/DateRangePickerButton.d.ts.map +0 -1
  33. package/dist/esm/DateRangePicker/DateRangePickerButton.js +0 -134
  34. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +0 -25
  35. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +0 -1
  36. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +0 -260
  37. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +0 -80
  38. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +0 -1
  39. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +0 -521
  40. package/dist/esm/DateRangePicker/index.d.ts +0 -3
  41. package/dist/esm/DateRangePicker/index.d.ts.map +0 -1
  42. package/dist/esm/DateRangePicker/index.js +0 -2
  43. package/dist/esm/QuillProvider.d.ts +0 -163
  44. package/dist/esm/QuillProvider.d.ts.map +0 -1
  45. package/dist/esm/QuillProvider.js +0 -104
  46. package/dist/esm/ReportBuilder.d.ts +0 -318
  47. package/dist/esm/ReportBuilder.d.ts.map +0 -1
  48. package/dist/esm/ReportBuilder.js +0 -3279
  49. package/dist/esm/SQLEditor.d.ts +0 -272
  50. package/dist/esm/SQLEditor.d.ts.map +0 -1
  51. package/dist/esm/SQLEditor.js +0 -510
  52. package/dist/esm/Table.d.ts +0 -167
  53. package/dist/esm/Table.d.ts.map +0 -1
  54. package/dist/esm/Table.js +0 -215
  55. package/dist/esm/TableChart.d.ts +0 -15
  56. package/dist/esm/TableChart.d.ts.map +0 -1
  57. package/dist/esm/TableChart.js +0 -95
  58. package/dist/esm/assets/ArrowDownHeadIcon.d.ts +0 -5
  59. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +0 -1
  60. package/dist/esm/assets/ArrowDownHeadIcon.js +0 -3
  61. package/dist/esm/assets/ArrowDownIcon.d.ts +0 -5
  62. package/dist/esm/assets/ArrowDownIcon.d.ts.map +0 -1
  63. package/dist/esm/assets/ArrowDownIcon.js +0 -3
  64. package/dist/esm/assets/ArrowDownRightIcon.d.ts +0 -5
  65. package/dist/esm/assets/ArrowDownRightIcon.d.ts.map +0 -1
  66. package/dist/esm/assets/ArrowDownRightIcon.js +0 -3
  67. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts +0 -5
  68. package/dist/esm/assets/ArrowLeftHeadIcon.d.ts.map +0 -1
  69. package/dist/esm/assets/ArrowLeftHeadIcon.js +0 -3
  70. package/dist/esm/assets/ArrowRightHeadIcon.d.ts +0 -5
  71. package/dist/esm/assets/ArrowRightHeadIcon.d.ts.map +0 -1
  72. package/dist/esm/assets/ArrowRightHeadIcon.js +0 -3
  73. package/dist/esm/assets/ArrowRightIcon.d.ts +0 -5
  74. package/dist/esm/assets/ArrowRightIcon.d.ts.map +0 -1
  75. package/dist/esm/assets/ArrowRightIcon.js +0 -3
  76. package/dist/esm/assets/ArrowUpHeadIcon.d.ts +0 -5
  77. package/dist/esm/assets/ArrowUpHeadIcon.d.ts.map +0 -1
  78. package/dist/esm/assets/ArrowUpHeadIcon.js +0 -3
  79. package/dist/esm/assets/ArrowUpIcon.d.ts +0 -5
  80. package/dist/esm/assets/ArrowUpIcon.d.ts.map +0 -1
  81. package/dist/esm/assets/ArrowUpIcon.js +0 -3
  82. package/dist/esm/assets/ArrowUpRightIcon.d.ts +0 -5
  83. package/dist/esm/assets/ArrowUpRightIcon.d.ts.map +0 -1
  84. package/dist/esm/assets/ArrowUpRightIcon.js +0 -3
  85. package/dist/esm/assets/CalendarIcon.d.ts +0 -5
  86. package/dist/esm/assets/CalendarIcon.d.ts.map +0 -1
  87. package/dist/esm/assets/CalendarIcon.js +0 -3
  88. package/dist/esm/assets/CalendarNormalIcon.d.ts +0 -5
  89. package/dist/esm/assets/CalendarNormalIcon.d.ts.map +0 -1
  90. package/dist/esm/assets/CalendarNormalIcon.js +0 -3
  91. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts +0 -5
  92. package/dist/esm/assets/DoubleArrowLeftHeadIcon.d.ts.map +0 -1
  93. package/dist/esm/assets/DoubleArrowLeftHeadIcon.js +0 -3
  94. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts +0 -5
  95. package/dist/esm/assets/DoubleArrowRightHeadIcon.d.ts.map +0 -1
  96. package/dist/esm/assets/DoubleArrowRightHeadIcon.js +0 -3
  97. package/dist/esm/assets/ExclamationFilledIcon.d.ts +0 -5
  98. package/dist/esm/assets/ExclamationFilledIcon.d.ts.map +0 -1
  99. package/dist/esm/assets/ExclamationFilledIcon.js +0 -3
  100. package/dist/esm/assets/FilterIcon.d.ts +0 -5
  101. package/dist/esm/assets/FilterIcon.d.ts.map +0 -1
  102. package/dist/esm/assets/FilterIcon.js +0 -3
  103. package/dist/esm/assets/LoadingSpinner.d.ts +0 -5
  104. package/dist/esm/assets/LoadingSpinner.d.ts.map +0 -1
  105. package/dist/esm/assets/LoadingSpinner.js +0 -3
  106. package/dist/esm/assets/RefreshIcon.d.ts +0 -5
  107. package/dist/esm/assets/RefreshIcon.d.ts.map +0 -1
  108. package/dist/esm/assets/RefreshIcon.js +0 -3
  109. package/dist/esm/assets/SearchIcon.d.ts +0 -5
  110. package/dist/esm/assets/SearchIcon.d.ts.map +0 -1
  111. package/dist/esm/assets/SearchIcon.js +0 -3
  112. package/dist/esm/assets/UpLeftArrowsIcon.d.ts +0 -5
  113. package/dist/esm/assets/UpLeftArrowsIcon.d.ts.map +0 -1
  114. package/dist/esm/assets/UpLeftArrowsIcon.js +0 -3
  115. package/dist/esm/assets/XCircleIcon.d.ts +0 -5
  116. package/dist/esm/assets/XCircleIcon.d.ts.map +0 -1
  117. package/dist/esm/assets/XCircleIcon.js +0 -3
  118. package/dist/esm/assets/XIcon.d.ts +0 -5
  119. package/dist/esm/assets/XIcon.d.ts.map +0 -1
  120. package/dist/esm/assets/XIcon.js +0 -3
  121. package/dist/esm/assets/index.d.ts +0 -22
  122. package/dist/esm/assets/index.d.ts.map +0 -1
  123. package/dist/esm/assets/index.js +0 -21
  124. package/dist/esm/components/Banner/index.d.ts +0 -3
  125. package/dist/esm/components/Banner/index.d.ts.map +0 -1
  126. package/dist/esm/components/Banner/index.js +0 -24
  127. package/dist/esm/components/BigModal/BigModal.d.ts +0 -15
  128. package/dist/esm/components/BigModal/BigModal.d.ts.map +0 -1
  129. package/dist/esm/components/BigModal/BigModal.js +0 -56
  130. package/dist/esm/components/Chart/BarChart.d.ts +0 -23
  131. package/dist/esm/components/Chart/BarChart.d.ts.map +0 -1
  132. package/dist/esm/components/Chart/BarChart.js +0 -110
  133. package/dist/esm/components/Chart/BarList.d.ts +0 -27
  134. package/dist/esm/components/Chart/BarList.d.ts.map +0 -1
  135. package/dist/esm/components/Chart/BarList.js +0 -148
  136. package/dist/esm/components/Chart/ChartError.d.ts +0 -10
  137. package/dist/esm/components/Chart/ChartError.d.ts.map +0 -1
  138. package/dist/esm/components/Chart/ChartError.js +0 -65
  139. package/dist/esm/components/Chart/ChartSkeleton.d.ts +0 -8
  140. package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +0 -1
  141. package/dist/esm/components/Chart/ChartSkeleton.js +0 -19
  142. package/dist/esm/components/Chart/ChartTooltip.d.ts +0 -31
  143. package/dist/esm/components/Chart/ChartTooltip.d.ts.map +0 -1
  144. package/dist/esm/components/Chart/ChartTooltip.js +0 -234
  145. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -6
  146. package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +0 -1
  147. package/dist/esm/components/Chart/ChartTooltipFrame.js +0 -14
  148. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts +0 -11
  149. package/dist/esm/components/Chart/ChartTooltipGroup.d.ts.map +0 -1
  150. package/dist/esm/components/Chart/ChartTooltipGroup.js +0 -23
  151. package/dist/esm/components/Chart/ChartTooltipRow.d.ts +0 -8
  152. package/dist/esm/components/Chart/ChartTooltipRow.d.ts.map +0 -1
  153. package/dist/esm/components/Chart/ChartTooltipRow.js +0 -41
  154. package/dist/esm/components/Chart/LineChart.d.ts +0 -29
  155. package/dist/esm/components/Chart/LineChart.d.ts.map +0 -1
  156. package/dist/esm/components/Chart/LineChart.js +0 -163
  157. package/dist/esm/components/Chart/PieChart.d.ts +0 -62
  158. package/dist/esm/components/Chart/PieChart.d.ts.map +0 -1
  159. package/dist/esm/components/Chart/PieChart.js +0 -195
  160. package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -4
  161. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +0 -1
  162. package/dist/esm/components/Dashboard/ChartComponent.js +0 -60
  163. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +0 -38
  164. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +0 -1
  165. package/dist/esm/components/Dashboard/DashboardFilter.js +0 -89
  166. package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -7
  167. package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +0 -1
  168. package/dist/esm/components/Dashboard/DashboardSection.js +0 -22
  169. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -3
  170. package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +0 -1
  171. package/dist/esm/components/Dashboard/DashboardSectionContainer.js +0 -10
  172. package/dist/esm/components/Dashboard/DataLoader.d.ts +0 -44
  173. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +0 -1
  174. package/dist/esm/components/Dashboard/DataLoader.js +0 -190
  175. package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -4
  176. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +0 -1
  177. package/dist/esm/components/Dashboard/MetricComponent.js +0 -133
  178. package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -15
  179. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +0 -1
  180. package/dist/esm/components/Dashboard/TableComponent.js +0 -62
  181. package/dist/esm/components/Dropdown/Dropdown.d.ts +0 -14
  182. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +0 -1
  183. package/dist/esm/components/Dropdown/Dropdown.js +0 -69
  184. package/dist/esm/components/Dropdown/DropdownItem.d.ts +0 -11
  185. package/dist/esm/components/Dropdown/DropdownItem.d.ts.map +0 -1
  186. package/dist/esm/components/Dropdown/DropdownItem.js +0 -37
  187. package/dist/esm/components/Dropdown/index.d.ts +0 -3
  188. package/dist/esm/components/Dropdown/index.d.ts.map +0 -1
  189. package/dist/esm/components/Dropdown/index.js +0 -2
  190. package/dist/esm/components/Modal/Modal.d.ts +0 -15
  191. package/dist/esm/components/Modal/Modal.d.ts.map +0 -1
  192. package/dist/esm/components/Modal/Modal.js +0 -64
  193. package/dist/esm/components/Modal/index.d.ts +0 -2
  194. package/dist/esm/components/Modal/index.d.ts.map +0 -1
  195. package/dist/esm/components/Modal/index.js +0 -1
  196. package/dist/esm/components/QuillCard.d.ts +0 -9
  197. package/dist/esm/components/QuillCard.d.ts.map +0 -1
  198. package/dist/esm/components/QuillCard.js +0 -56
  199. package/dist/esm/components/QuillMultiSelect.d.ts +0 -11
  200. package/dist/esm/components/QuillMultiSelect.d.ts.map +0 -1
  201. package/dist/esm/components/QuillMultiSelect.js +0 -193
  202. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +0 -11
  203. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +0 -1
  204. package/dist/esm/components/QuillMultiSelectWithCombo.js +0 -215
  205. package/dist/esm/components/QuillSelect.d.ts +0 -6
  206. package/dist/esm/components/QuillSelect.d.ts.map +0 -1
  207. package/dist/esm/components/QuillSelect.js +0 -136
  208. package/dist/esm/components/QuillSelectWithCombo.d.ts +0 -6
  209. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +0 -1
  210. package/dist/esm/components/QuillSelectWithCombo.js +0 -163
  211. package/dist/esm/components/QuillTable.d.ts +0 -31
  212. package/dist/esm/components/QuillTable.d.ts.map +0 -1
  213. package/dist/esm/components/QuillTable.js +0 -261
  214. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +0 -34
  215. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +0 -1
  216. package/dist/esm/components/ReportBuilder/AddColumnModal.js +0 -145
  217. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +0 -26
  218. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +0 -1
  219. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +0 -36
  220. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +0 -23
  221. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +0 -1
  222. package/dist/esm/components/ReportBuilder/AddSortPopover.js +0 -73
  223. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +0 -30
  224. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +0 -1
  225. package/dist/esm/components/ReportBuilder/FilterModal.js +0 -576
  226. package/dist/esm/components/ReportBuilder/ast.d.ts +0 -523
  227. package/dist/esm/components/ReportBuilder/ast.d.ts.map +0 -1
  228. package/dist/esm/components/ReportBuilder/ast.js +0 -230
  229. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts +0 -7
  230. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts.map +0 -1
  231. package/dist/esm/components/ReportBuilder/bigDateMap.js +0 -687
  232. package/dist/esm/components/ReportBuilder/constants.d.ts +0 -117
  233. package/dist/esm/components/ReportBuilder/constants.d.ts.map +0 -1
  234. package/dist/esm/components/ReportBuilder/constants.js +0 -161
  235. package/dist/esm/components/ReportBuilder/convert.d.ts +0 -65
  236. package/dist/esm/components/ReportBuilder/convert.d.ts.map +0 -1
  237. package/dist/esm/components/ReportBuilder/convert.js +0 -717
  238. package/dist/esm/components/ReportBuilder/operators.d.ts +0 -462
  239. package/dist/esm/components/ReportBuilder/operators.d.ts.map +0 -1
  240. package/dist/esm/components/ReportBuilder/operators.js +0 -581
  241. package/dist/esm/components/ReportBuilder/pivot.d.ts +0 -16
  242. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +0 -1
  243. package/dist/esm/components/ReportBuilder/pivot.js +0 -1
  244. package/dist/esm/components/ReportBuilder/postgres.d.ts +0 -150
  245. package/dist/esm/components/ReportBuilder/postgres.d.ts.map +0 -1
  246. package/dist/esm/components/ReportBuilder/postgres.js +0 -355
  247. package/dist/esm/components/ReportBuilder/schema.d.ts +0 -23
  248. package/dist/esm/components/ReportBuilder/schema.d.ts.map +0 -1
  249. package/dist/esm/components/ReportBuilder/schema.js +0 -1
  250. package/dist/esm/components/ReportBuilder/ui.d.ts +0 -119
  251. package/dist/esm/components/ReportBuilder/ui.d.ts.map +0 -1
  252. package/dist/esm/components/ReportBuilder/ui.js +0 -382
  253. package/dist/esm/components/ReportBuilder/util.d.ts +0 -76
  254. package/dist/esm/components/ReportBuilder/util.d.ts.map +0 -1
  255. package/dist/esm/components/ReportBuilder/util.js +0 -729
  256. package/dist/esm/components/UiComponents.d.ts +0 -221
  257. package/dist/esm/components/UiComponents.d.ts.map +0 -1
  258. package/dist/esm/components/UiComponents.js +0 -571
  259. package/dist/esm/components/selectUtils.d.ts +0 -9
  260. package/dist/esm/components/selectUtils.d.ts.map +0 -1
  261. package/dist/esm/components/selectUtils.js +0 -17
  262. package/dist/esm/contexts/BaseColorContext.d.ts +0 -4
  263. package/dist/esm/contexts/BaseColorContext.d.ts.map +0 -1
  264. package/dist/esm/contexts/BaseColorContext.js +0 -3
  265. package/dist/esm/contexts/HoveredValueContext.d.ts +0 -8
  266. package/dist/esm/contexts/HoveredValueContext.d.ts.map +0 -1
  267. package/dist/esm/contexts/HoveredValueContext.js +0 -5
  268. package/dist/esm/contexts/RootStylesContext.d.ts +0 -4
  269. package/dist/esm/contexts/RootStylesContext.d.ts.map +0 -1
  270. package/dist/esm/contexts/RootStylesContext.js +0 -3
  271. package/dist/esm/contexts/SelectedValueContext.d.ts +0 -8
  272. package/dist/esm/contexts/SelectedValueContext.d.ts.map +0 -1
  273. package/dist/esm/contexts/SelectedValueContext.js +0 -6
  274. package/dist/esm/contexts/index.d.ts +0 -5
  275. package/dist/esm/contexts/index.d.ts.map +0 -1
  276. package/dist/esm/contexts/index.js +0 -4
  277. package/dist/esm/hooks/index.d.ts +0 -6
  278. package/dist/esm/hooks/index.d.ts.map +0 -1
  279. package/dist/esm/hooks/index.js +0 -5
  280. package/dist/esm/hooks/useAstToFilterTree.d.ts +0 -11
  281. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +0 -1
  282. package/dist/esm/hooks/useAstToFilterTree.js +0 -24
  283. package/dist/esm/hooks/useDashboard.d.ts +0 -7
  284. package/dist/esm/hooks/useDashboard.d.ts.map +0 -1
  285. package/dist/esm/hooks/useDashboard.js +0 -69
  286. package/dist/esm/hooks/useExport.d.ts +0 -6
  287. package/dist/esm/hooks/useExport.d.ts.map +0 -1
  288. package/dist/esm/hooks/useExport.js +0 -125
  289. package/dist/esm/hooks/useFormat.d.ts +0 -5
  290. package/dist/esm/hooks/useFormat.d.ts.map +0 -1
  291. package/dist/esm/hooks/useFormat.js +0 -25
  292. package/dist/esm/hooks/useInternalState.d.ts +0 -4
  293. package/dist/esm/hooks/useInternalState.d.ts.map +0 -1
  294. package/dist/esm/hooks/useInternalState.js +0 -14
  295. package/dist/esm/hooks/useOnClickOutside.d.ts +0 -3
  296. package/dist/esm/hooks/useOnClickOutside.d.ts.map +0 -1
  297. package/dist/esm/hooks/useOnClickOutside.js +0 -18
  298. package/dist/esm/hooks/useOnWindowResize.d.ts +0 -5
  299. package/dist/esm/hooks/useOnWindowResize.d.ts.map +0 -1
  300. package/dist/esm/hooks/useOnWindowResize.js +0 -14
  301. package/dist/esm/hooks/useQuill.d.ts +0 -37
  302. package/dist/esm/hooks/useQuill.d.ts.map +0 -1
  303. package/dist/esm/hooks/useQuill.js +0 -182
  304. package/dist/esm/hooks/useSelectOnKeyDown.d.ts +0 -3
  305. package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +0 -1
  306. package/dist/esm/hooks/useSelectOnKeyDown.js +0 -63
  307. package/dist/esm/hooks/useTheme.d.ts +0 -7
  308. package/dist/esm/hooks/useTheme.d.ts.map +0 -1
  309. package/dist/esm/hooks/useTheme.js +0 -10
  310. package/dist/esm/index.d.ts +0 -29
  311. package/dist/esm/index.d.ts.map +0 -1
  312. package/dist/esm/index.js +0 -16
  313. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +0 -28
  314. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +0 -1
  315. package/dist/esm/internals/ReportBuilder/PivotForm.js +0 -62
  316. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +0 -39
  317. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +0 -1
  318. package/dist/esm/internals/ReportBuilder/PivotList.js +0 -89
  319. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +0 -146
  320. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +0 -1
  321. package/dist/esm/internals/ReportBuilder/PivotModal.js +0 -1210
  322. package/dist/esm/lib/font.d.ts +0 -14
  323. package/dist/esm/lib/font.d.ts.map +0 -1
  324. package/dist/esm/lib/font.js +0 -13
  325. package/dist/esm/lib/index.d.ts +0 -4
  326. package/dist/esm/lib/index.d.ts.map +0 -1
  327. package/dist/esm/lib/index.js +0 -3
  328. package/dist/esm/lib/inputTypes.d.ts +0 -21
  329. package/dist/esm/lib/inputTypes.d.ts.map +0 -1
  330. package/dist/esm/lib/inputTypes.js +0 -55
  331. package/dist/esm/lib/utils.d.ts +0 -10
  332. package/dist/esm/lib/utils.d.ts.map +0 -1
  333. package/dist/esm/lib/utils.js +0 -35
  334. package/dist/esm/models/Columns.d.ts +0 -12
  335. package/dist/esm/models/Columns.d.ts.map +0 -1
  336. package/dist/esm/models/Columns.js +0 -1
  337. package/dist/esm/models/Filter.d.ts +0 -118
  338. package/dist/esm/models/Filter.d.ts.map +0 -1
  339. package/dist/esm/models/Filter.js +0 -98
  340. package/dist/esm/models/Pagination.d.ts +0 -10
  341. package/dist/esm/models/Pagination.d.ts.map +0 -1
  342. package/dist/esm/models/Pagination.js +0 -1
  343. package/dist/esm/models/Pivots.d.ts +0 -2
  344. package/dist/esm/models/Pivots.d.ts.map +0 -1
  345. package/dist/esm/models/Pivots.js +0 -1
  346. package/dist/esm/models/Report.d.ts +0 -103
  347. package/dist/esm/models/Report.d.ts.map +0 -1
  348. package/dist/esm/models/Report.js +0 -1
  349. package/dist/esm/models/Tables.d.ts +0 -8
  350. package/dist/esm/models/Tables.d.ts.map +0 -1
  351. package/dist/esm/models/Tables.js +0 -1
  352. package/dist/esm/utils/aggregate.d.ts +0 -4
  353. package/dist/esm/utils/aggregate.d.ts.map +0 -1
  354. package/dist/esm/utils/aggregate.js +0 -422
  355. package/dist/esm/utils/astFilterProcessing.d.ts +0 -36
  356. package/dist/esm/utils/astFilterProcessing.d.ts.map +0 -1
  357. package/dist/esm/utils/astFilterProcessing.js +0 -8084
  358. package/dist/esm/utils/astProcessing.d.ts +0 -26
  359. package/dist/esm/utils/astProcessing.d.ts.map +0 -1
  360. package/dist/esm/utils/astProcessing.js +0 -254
  361. package/dist/esm/utils/axisFormatter.d.ts +0 -20
  362. package/dist/esm/utils/axisFormatter.d.ts.map +0 -1
  363. package/dist/esm/utils/axisFormatter.js +0 -179
  364. package/dist/esm/utils/color.d.ts +0 -44
  365. package/dist/esm/utils/color.d.ts.map +0 -1
  366. package/dist/esm/utils/color.js +0 -425
  367. package/dist/esm/utils/columnProcessing.d.ts +0 -13
  368. package/dist/esm/utils/columnProcessing.d.ts.map +0 -1
  369. package/dist/esm/utils/columnProcessing.js +0 -260
  370. package/dist/esm/utils/constants.d.ts +0 -2
  371. package/dist/esm/utils/constants.d.ts.map +0 -1
  372. package/dist/esm/utils/constants.js +0 -1
  373. package/dist/esm/utils/crypto.d.ts +0 -2
  374. package/dist/esm/utils/crypto.d.ts.map +0 -1
  375. package/dist/esm/utils/crypto.js +0 -10
  376. package/dist/esm/utils/csv.d.ts +0 -6
  377. package/dist/esm/utils/csv.d.ts.map +0 -1
  378. package/dist/esm/utils/csv.js +0 -78
  379. package/dist/esm/utils/dashboard.d.ts +0 -13
  380. package/dist/esm/utils/dashboard.d.ts.map +0 -1
  381. package/dist/esm/utils/dashboard.js +0 -171
  382. package/dist/esm/utils/dataFetcher.d.ts +0 -3
  383. package/dist/esm/utils/dataFetcher.d.ts.map +0 -1
  384. package/dist/esm/utils/dataFetcher.js +0 -199
  385. package/dist/esm/utils/dataProcessing.d.ts +0 -11
  386. package/dist/esm/utils/dataProcessing.d.ts.map +0 -1
  387. package/dist/esm/utils/dataProcessing.js +0 -162
  388. package/dist/esm/utils/dates.d.ts +0 -20
  389. package/dist/esm/utils/dates.d.ts.map +0 -1
  390. package/dist/esm/utils/dates.js +0 -95
  391. package/dist/esm/utils/error.d.ts +0 -5
  392. package/dist/esm/utils/error.d.ts.map +0 -1
  393. package/dist/esm/utils/error.js +0 -8
  394. package/dist/esm/utils/errorProcessing.d.ts +0 -2
  395. package/dist/esm/utils/errorProcessing.d.ts.map +0 -1
  396. package/dist/esm/utils/errorProcessing.js +0 -5
  397. package/dist/esm/utils/filterConstants.d.ts +0 -34
  398. package/dist/esm/utils/filterConstants.d.ts.map +0 -1
  399. package/dist/esm/utils/filterConstants.js +0 -33
  400. package/dist/esm/utils/filterProcessing.d.ts +0 -10
  401. package/dist/esm/utils/filterProcessing.d.ts.map +0 -1
  402. package/dist/esm/utils/filterProcessing.js +0 -232
  403. package/dist/esm/utils/getDomain.d.ts +0 -8
  404. package/dist/esm/utils/getDomain.d.ts.map +0 -1
  405. package/dist/esm/utils/getDomain.js +0 -52
  406. package/dist/esm/utils/logging.d.ts +0 -2
  407. package/dist/esm/utils/logging.d.ts.map +0 -1
  408. package/dist/esm/utils/logging.js +0 -7
  409. package/dist/esm/utils/merge.d.ts +0 -2
  410. package/dist/esm/utils/merge.d.ts.map +0 -1
  411. package/dist/esm/utils/merge.js +0 -18
  412. package/dist/esm/utils/monacoConfig.d.ts +0 -21
  413. package/dist/esm/utils/monacoConfig.d.ts.map +0 -1
  414. package/dist/esm/utils/monacoConfig.js +0 -319
  415. package/dist/esm/utils/paginationProcessing.d.ts +0 -5
  416. package/dist/esm/utils/paginationProcessing.d.ts.map +0 -1
  417. package/dist/esm/utils/paginationProcessing.js +0 -25
  418. package/dist/esm/utils/parserBigQuery.d.ts +0 -6
  419. package/dist/esm/utils/parserBigQuery.d.ts.map +0 -1
  420. package/dist/esm/utils/parserBigQuery.js +0 -52
  421. package/dist/esm/utils/parserPostgres.d.ts +0 -3
  422. package/dist/esm/utils/parserPostgres.d.ts.map +0 -1
  423. package/dist/esm/utils/parserPostgres.js +0 -37
  424. package/dist/esm/utils/pivotConstructor.d.ts +0 -7
  425. package/dist/esm/utils/pivotConstructor.d.ts.map +0 -1
  426. package/dist/esm/utils/pivotConstructor.js +0 -151
  427. package/dist/esm/utils/pivotProcessing.d.ts +0 -17
  428. package/dist/esm/utils/pivotProcessing.d.ts.map +0 -1
  429. package/dist/esm/utils/pivotProcessing.js +0 -132
  430. package/dist/esm/utils/queryConstructor.d.ts +0 -7
  431. package/dist/esm/utils/queryConstructor.d.ts.map +0 -1
  432. package/dist/esm/utils/queryConstructor.js +0 -226
  433. package/dist/esm/utils/report.d.ts +0 -10
  434. package/dist/esm/utils/report.d.ts.map +0 -1
  435. package/dist/esm/utils/report.js +0 -183
  436. package/dist/esm/utils/schema.d.ts +0 -6
  437. package/dist/esm/utils/schema.d.ts.map +0 -1
  438. package/dist/esm/utils/schema.js +0 -153
  439. package/dist/esm/utils/styles.d.ts +0 -17
  440. package/dist/esm/utils/styles.d.ts.map +0 -1
  441. package/dist/esm/utils/styles.js +0 -16
  442. package/dist/esm/utils/tableProcessing.d.ts +0 -45
  443. package/dist/esm/utils/tableProcessing.d.ts.map +0 -1
  444. package/dist/esm/utils/tableProcessing.js +0 -300
  445. package/dist/esm/utils/textProcessing.d.ts +0 -6
  446. package/dist/esm/utils/textProcessing.d.ts.map +0 -1
  447. package/dist/esm/utils/textProcessing.js +0 -49
  448. package/dist/esm/utils/validation.d.ts +0 -9
  449. package/dist/esm/utils/validation.d.ts.map +0 -1
  450. package/dist/esm/utils/validation.js +0 -20
  451. package/dist/esm/utils/valueFormatter.d.ts +0 -29
  452. package/dist/esm/utils/valueFormatter.d.ts.map +0 -1
  453. package/dist/esm/utils/valueFormatter.js +0 -342
  454. package/dist/esm/utils/width.d.ts +0 -12
  455. package/dist/esm/utils/width.d.ts.map +0 -1
  456. package/dist/esm/utils/width.js +0 -21
@@ -1,1312 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useRef, useState, useContext, useMemo, } from 'react';
3
- import { ClientContext, DashboardContext, DashboardDataContext, DashboardFiltersContext, SchemaContext, ThemeContext, } from './Context';
4
- import { getData, getDataFromCloud } from './utils/dataFetcher';
5
- import { PivotModal, generatePivotTable, isDateField, } from './internals/ReportBuilder/PivotModal';
6
- import { PivotCard } from './internals/ReportBuilder/PivotList';
7
- import { ChartDisplay } from './Chart';
8
- import { MemoizedModal, QuillTextInput, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, QuillTableComponent, QuillChartBuilderInputRowContainer, QuillChartBuilderInputColumnContainer, MemoizedSubHeader, QuillErrorMessageComponent, QuillPivotRowContainer, QuillPivotColumnContainer, QuillChartBuilderFormContainer, QuillLoadingComponent, } from './components/UiComponents';
9
- import { mergeComparisonRange } from './utils/merge';
10
- import { removeDoubleQuotes, snakeAndCamelCaseToTitleCase, } from './utils/textProcessing';
11
- import { QuillSelectComponent } from './components/QuillSelect';
12
- import { QuillCard } from './components/QuillCard';
13
- import { quillFormat } from './utils/valueFormatter';
14
- import { convertColumnInfoToColumnInternal, convertFieldTypeToJSType, } from './utils/columnProcessing';
15
- import { createTableNameToTableAliasMap, getColumnsByTableFromASTAndSchema, getSelectFromAST, } from './utils/astProcessing';
16
- import { getSchemaInfoWithCustomFields } from './utils/schema';
17
- import { getDateBucketFromRange } from './utils/dates';
18
- import { validateReport } from './utils/validation';
19
- import { QuillChartErrorWithAction } from './components/Chart/ChartError';
20
- import { convertInternalReportToReport } from './utils/report';
21
- const CHART_TYPES = ['column', 'line', 'table', 'metric', 'bar', 'pie'];
22
- const POSTGRES_DATE_TYPES = [
23
- 'timestamp',
24
- 'date',
25
- 'timestamptz',
26
- 'time',
27
- 'timetz',
28
- ];
29
- const CHART_TO_LABELS = {
30
- column: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
31
- line: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
32
- table: {},
33
- metric: { xAxisLabel: 'Value' },
34
- bar: { xAxisLabel: 'X-Axis', yAxisLabel: 'Y-Axis' },
35
- pie: { xAxisLabel: 'Category', yAxisLabel: 'Count' },
36
- };
37
- function getPivotMetricOptions(pivot) {
38
- if (!pivot.rowField) {
39
- return [
40
- {
41
- label: `Pivot Value (${pivot.valueField})`,
42
- value: pivot.valueField,
43
- },
44
- ];
45
- }
46
- else {
47
- return [
48
- {
49
- label: `Pivot Row (${pivot.rowField})`,
50
- value: pivot.rowField,
51
- },
52
- ];
53
- }
54
- }
55
- export function createInitialFormData(columns) {
56
- const firstNumberColumn = columns?.find((col) => numberFormatOptions.includes(col.format));
57
- const formEmptyState = {
58
- name: 'My Chart',
59
- columns: columns.map((col) => {
60
- return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
61
- }),
62
- xAxisField: columns?.[0]?.field || '',
63
- xAxisFormat: columns?.[0]?.format || 'whole_number',
64
- yAxisFields: [
65
- {
66
- field: firstNumberColumn?.field || columns?.[0]?.field || '',
67
- label: '',
68
- format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
69
- },
70
- ],
71
- xAxisLabel: '',
72
- chartType: firstNumberColumn ? 'line' : 'table',
73
- pivot: null,
74
- dateField: { table: '', field: '' },
75
- template: false,
76
- };
77
- return formEmptyState;
78
- }
79
- function getChartTypeOptions(formData, dashboard) {
80
- let viableCharts = CHART_TYPES;
81
- if (dashboard.dateFilter && dashboard.dateFilter.comparison) {
82
- viableCharts = viableCharts.filter((chart) => !['table', 'metric', 'bar', 'pie'].includes(chart));
83
- }
84
- if (formData.pivot && !formData.pivot.rowField) {
85
- return viableCharts
86
- .filter((elem) => elem === 'metric' || elem === 'table')
87
- .map((elem) => ({
88
- label: elem,
89
- value: elem,
90
- }));
91
- }
92
- else {
93
- return viableCharts
94
- .filter((elem) => !((formData.pivot && elem === 'metric') ||
95
- (formData.pivot &&
96
- formData.pivot.columnField &&
97
- (elem === 'bar' || elem === 'pie'))))
98
- .map((elem) => ({ label: elem, value: elem }));
99
- }
100
- }
101
- function getTablesHelper(ast, allTables) {
102
- const tableAliasMap = createTableNameToTableAliasMap(ast);
103
- const tablesInQuery = Object.values(tableAliasMap);
104
- // Remove all aliased tables (with statements and subqueries)
105
- const onlyReferenceTables = allTables
106
- .filter((table) => tablesInQuery.includes(table.displayName))
107
- .map((table) => table.displayName);
108
- let referencedColumns = {};
109
- // Get non with statement column references
110
- referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap);
111
- // With statement column references
112
- if (ast.with) {
113
- for (const withStmt of ast.with) {
114
- const astFrom = withStmt.stmt.from ?? withStmt.stmt.ast.from;
115
- if (astFrom) {
116
- const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap);
117
- // @ts-ignore
118
- Object.keys(withReferencedColumns).forEach((tableName) => {
119
- if (referencedColumns[tableName]) {
120
- // @ts-ignore
121
- referencedColumns[tableName].push(...(withReferencedColumns[tableName] || []));
122
- }
123
- else {
124
- // @ts-ignore
125
- referencedColumns[tableName] = withReferencedColumns[tableName];
126
- }
127
- });
128
- }
129
- }
130
- }
131
- // Make all the column strings unique
132
- for (const table in referencedColumns) {
133
- referencedColumns[table] = Array.from(new Set(referencedColumns[table]));
134
- }
135
- const referencedTablesAndColumns = Object.keys(referencedColumns).map((tableName) => {
136
- return {
137
- name: tableName,
138
- columns: referencedColumns[tableName]?.map((column) => {
139
- return { field: column };
140
- }) || [],
141
- };
142
- });
143
- const dateFields = allTables
144
- .filter((table) => onlyReferenceTables.includes(table.displayName))
145
- .map((table) => {
146
- return {
147
- name: table.displayName,
148
- columns: table.columns
149
- .filter((column) => POSTGRES_DATE_TYPES.includes(column.fieldType))
150
- .map((col) => {
151
- return convertColumnInfoToColumnInternal(col);
152
- }),
153
- };
154
- });
155
- return { referencedTablesAndColumns, dateFields };
156
- }
157
- async function getReferencedTables(client, sqlQuery, dbTables) {
158
- const resp = await getDataFromCloud(client, `astify`, {
159
- query: sqlQuery,
160
- useNewNodeSql: true,
161
- });
162
- if (resp.success === false) {
163
- return getTablesHelper(getSelectFromAST({}), dbTables);
164
- }
165
- return getTablesHelper(getSelectFromAST(resp.ast), dbTables);
166
- }
167
- function createReportFromForm(formData, report, selectedPivotTable, rows = []) {
168
- return convertInternalReportToReport({
169
- ...formData,
170
- dashboardName: formData.dashboardName || '',
171
- pivot: formData.pivot,
172
- id: '',
173
- order: -1,
174
- compareRows: report?.compareRows || [],
175
- filtersApplied: report?.filtersApplied || [],
176
- queryString: '',
177
- rows: selectedPivotTable?.rows ?? rows,
178
- rowCount: report?.rowCount || selectedPivotTable?.rows?.length || rows.length || 0,
179
- yAxisFields: formData.yAxisFields ?? [],
180
- pivotColumns: selectedPivotTable?.columns ?? undefined,
181
- pivotRows: selectedPivotTable?.rows ?? undefined,
182
- });
183
- }
184
- export const numberFormatOptions = [
185
- 'whole_number',
186
- 'one_decimal_place',
187
- 'two_decimal_places',
188
- 'dollar_amount',
189
- 'dollar_cents',
190
- ];
191
- export const dateFormatOptions = [
192
- 'MMM_yyyy',
193
- 'MMM_dd',
194
- 'MMM_dd_yyyy',
195
- 'MMM_dd_hh:mm_ap_pm',
196
- 'hh_ap_pm',
197
- 'date',
198
- ];
199
- const NUMBER_OPTIONS = [
200
- { value: 'whole_number', label: 'whole number' },
201
- { value: 'one_decimal_place', label: 'one decimal place' },
202
- { value: 'two_decimal_places', label: 'two decimal places' },
203
- { value: 'dollar_amount', label: 'dollar amount' },
204
- { value: 'dollar_cents', label: 'dollar and cent amount' },
205
- ];
206
- const DATE_OPTIONS = [
207
- { value: 'MMM_yyyy', label: 'month' },
208
- { value: 'MMM_dd', label: 'day' },
209
- { value: 'MMM_dd_yyyy', label: 'day and year' },
210
- { value: 'MMM_dd_hh:mm_ap_pm', label: 'day and time' },
211
- { value: 'hh_ap_pm', label: 'hour' },
212
- ];
213
- const formatOptions = [
214
- ...NUMBER_OPTIONS,
215
- ...DATE_OPTIONS,
216
- { value: 'percent', label: 'percent' },
217
- { value: 'string', label: 'string' },
218
- ];
219
- /**
220
- * ### Quill Chart Builder with Modal
221
- *
222
- * Renders a ChartBuilder component with a modal.
223
- *
224
- * @example
225
- * ```js
226
- * // Usage without custom components
227
- * <ChartBuilder />
228
- * ```
229
- *
230
- * @example
231
- * ```js
232
- * // You can also pass your own components
233
- * <ChartBuilder
234
- * ButtonComponent={MyButton}
235
- * SecondaryButtonComponent={MySecondaryButton}
236
- * />
237
- * ```
238
- *
239
- * ### Chart Builder API
240
- * @see https://docs.quillsql.com/components/chart-builder#with-modal
241
- */
242
- export function ChartBuilderWithModal(props) {
243
- const parentRef = useRef(null);
244
- const [modalWidth, setModalWidth] = useState(200);
245
- const [modalHeight, setModalHeight] = useState(200);
246
- const { isOpen, setIsOpen, title, isHorizontalView } = props;
247
- const Modal = props.ModalComponent ?? MemoizedModal;
248
- useEffect(() => {
249
- function handleResize() {
250
- const screenSize = window.innerWidth;
251
- if (screenSize >= 1200) {
252
- setModalWidth(window.innerWidth - 80);
253
- }
254
- else {
255
- setModalWidth(undefined); // use dynamic width of contents
256
- }
257
- setModalHeight(window.innerHeight - 80);
258
- }
259
- handleResize();
260
- window.addEventListener('resize', handleResize);
261
- return () => {
262
- window.removeEventListener('resize', handleResize);
263
- };
264
- }, []);
265
- return (_jsx("div", { style: { height: '100%' }, ref: parentRef, children: _jsx(Modal, { isOpen: isOpen, setIsOpen: setIsOpen, title: title || 'Add to dashboard',
266
- // For isHorizontalView, use full viewport size minus 80px for padding,
267
- // otherwise use the default layout method of the modal (contents).
268
- width: isHorizontalView ? modalWidth : undefined, height: isHorizontalView ? modalHeight : undefined, children: _jsx(ChartBuilder, { ...props }) }) }));
269
- }
270
- /**
271
- * ### Quill Chart Builder
272
- *
273
- * A simple form that lets users turn a SQL query into a chart, metric, or table
274
- * and then add that dashboard item into one of their dashboards.
275
- *
276
- * @example
277
- * ```js
278
- * // Usage without custom components
279
- * <ChartBuilder />
280
- * ```
281
- *
282
- * @example
283
- * ```js
284
- * // You can also pass your own components
285
- * <ChartBuilder
286
- * ButtonComponent={MyButton}
287
- * SecondaryButtonComponent={MySecondaryButton}
288
- * />
289
- * ```
290
- *
291
- * ### Chart Builder API
292
- * @see https://docs.quillsql.com/components/chart-builder
293
- */
294
- export default function ChartBuilder({ TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, LabelComponent = MemoizedLabel, DeleteButtonComponent = MemoizedDeleteButton, TextComponent = MemoizedText, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, TableComponent = QuillTableComponent, ModalComponent = MemoizedModal, LoadingComponent = QuillLoadingComponent, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, FormContainer = QuillChartBuilderFormContainer, ErrorComponent = QuillChartErrorWithAction, onClickChartError, isOpen, isHorizontalView = true, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, showDashboardDropdown = true, onAddToDashboardComplete, onDelete, report = undefined, recommendedPivots: rp = [], createdPivots: cp = [], destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton = false, hideSubmitButton = false, hideDateRangeFilter = false, initialUniqueValues, pivotRecommendationsEnabled = true, onSortChange, onPageChange, rowCount, isLoading, isComparison, onClickChartElement, }) {
295
- const dateRange = dr;
296
- const [client] = useContext(ClientContext);
297
- const [theme] = useContext(ThemeContext);
298
- const [schema, setSchema] = useContext(SchemaContext);
299
- const [windowWidth, setWindowWidth] = useState(1200);
300
- const [isSubmitting, setIsSubmitting] = useState(false);
301
- const [pivotCardWidth, setPivotCardWidth] = useState(665);
302
- const [chartTypes, setChartTypes] = useState(CHART_TYPES.map((type) => {
303
- return { label: type, value: type };
304
- }));
305
- const [formWidth, setFormWidth] = useState(665);
306
- const inputRef = useRef(null);
307
- const selectRef = useRef(null);
308
- const [, dispatch] = useContext(DashboardContext);
309
- const [processedColumns, setProcessedColumns] = useState(columns);
310
- const parentRef = useRef(null);
311
- const deleteRef = useRef(null);
312
- const modalPadding = 20;
313
- const deleteButtonMargin = -12;
314
- const validationHelper = (formData, dashboard, dateField, tables) => {
315
- const issues = validateReport(formData, dashboard, dateField || defaultDateField, tables || allTables);
316
- if (issues.length > 0) {
317
- setFilterIssues(issues);
318
- }
319
- else {
320
- setFilterIssues([]);
321
- }
322
- };
323
- useEffect(() => {
324
- if (schema) {
325
- const newProcessedColumns = columns.map((col) => {
326
- if (col.jsType) {
327
- return col;
328
- }
329
- const newCol = { ...col };
330
- let foundColumn;
331
- schema.forEach((table) => {
332
- if (table.columns) {
333
- const matchedColumn = table.columns.find((c) => c.name === col.field);
334
- if (matchedColumn) {
335
- foundColumn = matchedColumn;
336
- }
337
- }
338
- });
339
- if (!foundColumn) {
340
- return col;
341
- }
342
- newCol.fieldType = foundColumn.fieldType;
343
- newCol.jsType = convertFieldTypeToJSType(foundColumn.fieldType);
344
- return newCol;
345
- });
346
- setProcessedColumns(newProcessedColumns);
347
- }
348
- }, [schema]);
349
- useEffect(() => {
350
- const handleResize = () => setWindowWidth(window.innerWidth);
351
- handleResize();
352
- window.addEventListener('resize', handleResize);
353
- return () => {
354
- window.removeEventListener('resize', handleResize);
355
- };
356
- }, []);
357
- useEffect(() => {
358
- const handleResize = () => {
359
- // The pivot card should be the same width as the row of inputs
360
- // above it (an input, two selects, plus the gaps between them).
361
- if (inputRef.current && selectRef.current) {
362
- const inputSize = inputRef.current?.getBoundingClientRect();
363
- const selectSize = selectRef.current?.getBoundingClientRect();
364
- const selectWidth = selectSize.width;
365
- const showDash = showDashboardDropdown && !destinationDashboard;
366
- const spaceBetween = selectSize.left - inputSize.right;
367
- const gap = showDash ? (spaceBetween - selectWidth) / 2 : spaceBetween;
368
- const width = inputSize.width + 2 * gap + 2 * selectWidth;
369
- setPivotCardWidth(width);
370
- // Calculate the form width by adding the width of the delete button
371
- const deleteSize = deleteRef.current?.getBoundingClientRect();
372
- const deleteWidth = deleteSize?.width ?? 0;
373
- setFormWidth(width + deleteWidth);
374
- }
375
- };
376
- handleResize();
377
- }, [isOpen]);
378
- useEffect(() => {
379
- const handleResize = () => {
380
- // The pivot card should be the same width as the row of inputs
381
- // above it (an input, two selects, plus the gaps between them).
382
- if (inputRef.current && selectRef.current) {
383
- const inputSize = inputRef.current?.getBoundingClientRect();
384
- const selectSize = selectRef.current?.getBoundingClientRect();
385
- const selectWidth = selectSize.width;
386
- const showDash = showDashboardDropdown && !destinationDashboard;
387
- const spaceBetween = selectSize.left - inputSize.right;
388
- const gap = showDash ? (spaceBetween - selectWidth) / 2 : spaceBetween;
389
- const width = inputSize.width + 2 * gap + 2 * selectWidth;
390
- setPivotCardWidth(width);
391
- // Calculate the form width by adding the width of the delete button
392
- const deleteSize = deleteRef.current?.getBoundingClientRect();
393
- const deleteWidth = deleteSize?.width ?? 0;
394
- setFormWidth(width + deleteWidth);
395
- }
396
- };
397
- handleResize();
398
- window.addEventListener('resize', handleResize);
399
- return () => {
400
- window.removeEventListener('resize', handleResize);
401
- };
402
- }, []);
403
- // get dashboards
404
- const [dashboardOptions, setDashboardOptions] = useState([]);
405
- const [defaultDashboardName, setDefaultDashboardName] = useState(destinationDashboard || report?.dashboardName || '');
406
- const { dashboardFilters } = useContext(DashboardFiltersContext);
407
- const { dashboardData } = useContext(DashboardDataContext);
408
- const specificDashboardFilter = useMemo(() => {
409
- return dashboardFilters.filter((f) => f && defaultDashboardName === f.dashboardName);
410
- }, [dashboardFilters]);
411
- const [showFilterModal, setShowFilterModal] = useState(false);
412
- const [filterIssues, setFilterIssues] = useState([]);
413
- const [showPivotPopover, setShowPivotPopover] = useState(false);
414
- const [isEdittingPivot, setIsEdittingPivot] = useState(false);
415
- const [selectedPivotIndex, setSelectedPivotIndex] = useState(-1);
416
- const [tableName, setTableName] = useState(undefined);
417
- const selectedTable = schema?.find((t) => t.displayName === tableName);
418
- const [pivotPopUpTitle, setPivotPopUpTitle] = useState('Add pivot');
419
- const [loadingFormData, setLoadingFormData] = useState(false);
420
- const [triggeredEditChart, setTriggeredEditChart] = useState(false);
421
- const [createdPivots, setCreatedPivots] = useState(pivot ? [pivot] : report?.pivot ? [report.pivot] : cp);
422
- const [recommendedPivots, setRecommendedPivots] = useState(rp);
423
- const [pivotRowField, setPivotRowField] = useState(pivot?.rowField);
424
- const [pivotColumnField, setPivotColumnField] = useState(pivot?.columnField);
425
- const [pivotValueField, setPivotValueField] = useState(pivot?.valueField);
426
- const [pivotAggregation, setPivotAggregation] = useState(pivot?.aggregationType);
427
- // initial state is the fields array passed in, but can eventually be changed to be the pivot fields
428
- const [dateFieldOptions, setDateFieldOptions] = useState([]);
429
- const [allTables, setAllTables] = useState([]);
430
- const [customFieldTableRef, setCustomFieldTableRef] = useState(false);
431
- const [referencedColumns, setReferencedColumns] = useState({});
432
- const [defaultDateField, setDefaultDateField] = useState({
433
- table: dateFieldOptions[0]?.name || '',
434
- field: dateFieldOptions[0]?.columns[0]?.name || '',
435
- });
436
- const firstNumberColumn = columns?.find((col) => numberFormatOptions.includes(col.format));
437
- const formEmptyState = {
438
- name: 'My Chart',
439
- dashboardName: dashboardOptions[0]?.label || '',
440
- columns: columns.map((col) => {
441
- return { ...col, label: snakeAndCamelCaseToTitleCase(col.label) };
442
- }),
443
- xAxisField: columns?.[0]?.field || '',
444
- xAxisFormat: columns?.[0]?.format || 'string',
445
- yAxisFields: [
446
- {
447
- field: firstNumberColumn?.field || columns?.[0]?.field || '',
448
- label: '',
449
- format: firstNumberColumn?.format || columns?.[0]?.format || 'string',
450
- },
451
- ],
452
- xAxisLabel: '',
453
- chartType: firstNumberColumn ? 'line' : 'table',
454
- pivot: null,
455
- dateField: defaultDateField,
456
- template: false,
457
- };
458
- const updateDashboardFilters = async (dashboardName) => {
459
- if (dashboardData && dashboardData[dashboardName]) {
460
- return dashboardData[dashboardName];
461
- }
462
- const { queryEndpoint, queryHeaders, publicKey, customerId } = client;
463
- if (queryEndpoint) {
464
- const response = await fetch(queryEndpoint, {
465
- method: 'POST',
466
- headers: {
467
- ...queryHeaders,
468
- 'Content-Type': 'application/json',
469
- },
470
- body: JSON.stringify({
471
- metadata: {
472
- orgId: customerId || '*',
473
- task: 'config',
474
- name: dashboardName,
475
- clientId: publicKey,
476
- databaseType: client.databaseType,
477
- useNewNodeSql: true,
478
- },
479
- }),
480
- credentials: 'omit', // If withCredentials is true, set to 'include'. Otherwise, set to 'omit'.
481
- });
482
- const responseData = (await response.json()).data;
483
- if (responseData) {
484
- return responseData;
485
- }
486
- }
487
- };
488
- const pivotFormData = (pivot) => {
489
- const yAxisField = pivot.columnField || pivot.valueField;
490
- const yAxisLabel = report?.yAxisFields && report?.yAxisFields?.length > 0
491
- ? // @ts-ignore
492
- report.yAxisFields[0].label
493
- : pivot.valueField;
494
- // date labels for pivots should be treated like strings since they are
495
- const yAxisIsDate = pivot.columnField
496
- ? isDateField(pivot.columnFieldType || '')
497
- : false;
498
- const chartType = report?.chartType ?? (pivot.rowField ? 'column' : 'metric');
499
- return {
500
- pivot,
501
- chartType: chartType,
502
- xAxisField: pivot.rowField ? pivot.rowField : pivot.valueField,
503
- xAxisFormat: isDateField(pivot.rowFieldType)
504
- ? 'string'
505
- : columns.find((col) => col.field === pivot.rowField)?.format ||
506
- report?.xAxisFormat ||
507
- 'whole_number',
508
- xAxisLabel: report?.xAxisLabel || pivot.rowField,
509
- yAxisFields: [
510
- {
511
- field: yAxisField,
512
- label: yAxisLabel,
513
- format: yAxisIsDate
514
- ? 'string'
515
- : report?.yAxisFields && report?.yAxisFields?.length > 0
516
- ? // @ts-ignore
517
- report?.yAxisFields[0].format
518
- : columns.find((col) => col.field === pivot.valueField)?.format ||
519
- 'whole_number',
520
- },
521
- ],
522
- };
523
- };
524
- const formFormDataFromReport = (report) => {
525
- let pivotData = {};
526
- let dateField = defaultDateField;
527
- if (pivot) {
528
- pivotData = pivotFormData(pivot);
529
- }
530
- if (report) {
531
- dateField = report.dateField || defaultDateField;
532
- }
533
- return {
534
- ...formEmptyState,
535
- ...report,
536
- ...pivotData,
537
- ...(destinationDashboard && { dashboardName: destinationDashboard }),
538
- dateField: dateField,
539
- };
540
- };
541
- const [formData, setFormData] = useState(formFormDataFromReport(report));
542
- useEffect(() => {
543
- if (!loadingFormData && triggeredEditChart) {
544
- editChart();
545
- }
546
- }, [loadingFormData]);
547
- useEffect(() => {
548
- async function getFormData() {
549
- setLoadingFormData(true);
550
- const curFormData = formData;
551
- let dashNames = Object.keys(dashboardData).map((dashboard) => {
552
- return dashboard;
553
- }) ?? [];
554
- if (dashNames.length === 0) {
555
- const resp = await getDataFromCloud(client, `dashnames/${client.publicKey}/`, null, 'GET');
556
- dashNames = resp.dashboardNames;
557
- }
558
- let dashboardOptions = dashNames
559
- .filter((elem) => elem !== null)
560
- .map((key) => ({ label: key, value: key }));
561
- if (!dashboardOptions.length) {
562
- dashboardOptions = [
563
- { label: 'New - Dashboard', value: 'New - Dashboard' },
564
- ];
565
- }
566
- if (destinationDashboard) {
567
- dashboardOptions = [
568
- { label: destinationDashboard, value: destinationDashboard },
569
- ];
570
- }
571
- let dashboardName = report?.dashboardName
572
- ? report.dashboardName
573
- : dashboardOptions[0]?.label || '';
574
- if (destinationDashboard) {
575
- dashboardName = destinationDashboard;
576
- }
577
- const curDashboard = await updateDashboardFilters(dashboardName);
578
- setDashboardOptions(dashboardOptions);
579
- curFormData.dashboardName = dashboardName;
580
- setDefaultDashboardName(dashboardName ??
581
- (report ? report?.dashboardName : dashboardOptions[0]?.label));
582
- let curSchemaData = schema;
583
- if (!curSchemaData || curSchemaData.length === 0) {
584
- const { schemaData } = await getSchemaInfoWithCustomFields(client, 'cb');
585
- curSchemaData = schemaData;
586
- setSchema(curSchemaData);
587
- }
588
- if (!query) {
589
- setLoadingFormData(false);
590
- return;
591
- }
592
- const result = await getReferencedTables(client, query, curSchemaData);
593
- setDateFieldOptions(result.dateFields);
594
- if (result.dateFields[0] && result.dateFields[0].columns[0]) {
595
- setDefaultDateField({
596
- table: result.dateFields[0].name,
597
- field: result.dateFields[0].columns[0].field,
598
- });
599
- }
600
- // check if the referenced table is a table with custom field info.. If so block template settings
601
- const tableNames = result.referencedTablesAndColumns.map((table) => table.name);
602
- setAllTables(tableNames);
603
- let customFieldUsage = false;
604
- for (const table of tableNames) {
605
- const tableInfo = curSchemaData.find((elem) => elem.name === table);
606
- if (tableInfo?.customFieldInfo) {
607
- customFieldUsage = true;
608
- break;
609
- }
610
- }
611
- setCustomFieldTableRef(customFieldUsage && client.customerId && client.customerId !== '*');
612
- const referencedColumns = result.referencedTablesAndColumns.reduce((acc, table) => {
613
- acc[table.name] = table.columns.map((col) => col.field);
614
- return acc;
615
- }, {});
616
- setReferencedColumns(referencedColumns);
617
- setTableName(result.dateFields[0]?.name);
618
- const dateField = {
619
- table: result.dateFields[0]?.name || '',
620
- field: result.dateFields[0]?.columns?.find((elem) => elem.field === dateColumn)?.field || '',
621
- };
622
- let isTemplate = curFormData.template;
623
- if (customFieldUsage) {
624
- isTemplate = false;
625
- }
626
- curFormData.dashboardName =
627
- report && report.dashboardName
628
- ? report?.dashboardName
629
- : dashboardOptions[0]?.label;
630
- curFormData.template = isTemplate;
631
- if (!curFormData.dateField) {
632
- curFormData.dateField = { field: '', table: '' };
633
- }
634
- if (!curFormData.dateField.field || !curFormData.dateField.table) {
635
- if (dateField && dateField.field) {
636
- curFormData.dateField = dateField;
637
- }
638
- }
639
- setFormData(curFormData);
640
- validationHelper(curFormData, curDashboard, curFormData.dateField ?? dateField, tableNames);
641
- setLoadingFormData(false);
642
- }
643
- getFormData();
644
- }, []);
645
- const [selectedPivotTable, setSelectedPivotTable] = useState(pivotData || undefined);
646
- const fetchPivotData = async (pivot, uniqueValues, overrideDateRange) => {
647
- if (pivot && rows) {
648
- const dateFilter = report
649
- ? report.filtersApplied.find((filter) => {
650
- return filter.filterType === 'date_range';
651
- })
652
- : undefined;
653
- let dateBucket = undefined;
654
- if (overrideDateRange) {
655
- dateBucket = getDateBucketFromRange(overrideDateRange);
656
- }
657
- setSelectedPivotTable(await generatePivotTable(pivot, rows, overrideDateRange ?? dateRange, isComparison ?? false, -1, dateFilter ? dateFilter.comparisonRange : undefined, dateBucket, report, client, uniqueValues));
658
- }
659
- else {
660
- setSelectedPivotTable(undefined);
661
- }
662
- };
663
- const formattedRows = useMemo(() => {
664
- if (selectedPivotTable &&
665
- selectedPivotTable.columns &&
666
- formData.chartType === 'table') {
667
- const columns = selectedPivotTable.columns;
668
- columns.forEach((col, index) => {
669
- // ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
670
- if ((formData.pivot?.valueFieldType ||
671
- ['min', 'max'].includes(formData.pivot?.aggregationType || '')) &&
672
- index !== 0) {
673
- col.format = formData?.pivot?.valueFieldType || 'two_decimal_places';
674
- }
675
- });
676
- return selectedPivotTable.rows.map((row) => {
677
- return columns.reduce((formattedRow, column) => {
678
- // Apply the format function to each field in the row
679
- const formattedValue = quillFormat({
680
- value: row[column.field],
681
- format: column.format,
682
- });
683
- formattedRow[column.field] = formattedValue;
684
- return formattedRow;
685
- }, {});
686
- });
687
- }
688
- else {
689
- if (!rows)
690
- return [];
691
- return rows.map((row) => {
692
- return formData.columns.reduce((formattedRow, column) => {
693
- // Apply the format function to each field in the row
694
- const formattedValue = quillFormat({
695
- value: row[column.field],
696
- format: column.format,
697
- });
698
- formattedRow[column.field] = formattedValue;
699
- return formattedRow;
700
- }, {});
701
- });
702
- }
703
- }, [
704
- selectedPivotTable,
705
- formData.columns,
706
- formData.chartType,
707
- rows,
708
- formData.pivot,
709
- ]);
710
- const handleChange = async (value, fieldName, index) => {
711
- let updatedForm = { ...formData };
712
- try {
713
- // WE NEED TO REPROCESS THE PIVOT TABLE IF THE PIVOT COLUMN CHANGES
714
- // WE NEED TO UPDATE BOTH VALUEFIELDTYPE AND COLUMN FIELD TYPES
715
- if (fieldName === 'pivotColumn') {
716
- // CAN'T EDIT THE TYPE OF THE RowField
717
- if (index === 0) {
718
- return;
719
- }
720
- const updatedPivot = {
721
- ...formData.pivot,
722
- valueFieldType: value,
723
- };
724
- // @ts-ignore
725
- updatedForm.pivot = updatedPivot;
726
- }
727
- else if (index !== undefined) {
728
- // For dynamic array fields
729
- const [field, subfield] = fieldName.split('.');
730
- // @ts-ignore
731
- const updatedArray = formData[field].map((item, i) => i === index ? { ...item, [subfield]: value } : item);
732
- updatedForm = { ...formData, [field]: updatedArray };
733
- setFormData({ ...formData, [field]: updatedArray });
734
- }
735
- else if (fieldName.includes('.')) {
736
- // For nested fields
737
- const [field, subfield] = fieldName.split('.');
738
- if (field === 'pivot' && subfield !== '') {
739
- const subfieldTypeFieldName = subfield + 'Type';
740
- if (value.length) {
741
- const subFieldType = columns.find((columns) => columns.field === value).fieldType;
742
- updatedForm = {
743
- ...updatedForm,
744
- // @ts-ignore
745
- [field]: {
746
- ...updatedForm[field],
747
- [subfield]: value,
748
- [subfieldTypeFieldName]: subFieldType,
749
- },
750
- };
751
- }
752
- else {
753
- updatedForm = {
754
- ...formData,
755
- // @ts-ignore
756
- [field]: {
757
- ...formData[field],
758
- [subfield]: '',
759
- [subfieldTypeFieldName]: '',
760
- },
761
- };
762
- }
763
- }
764
- else if (field === 'dateField' &&
765
- subfield === 'table' &&
766
- !formData.dateField.field) {
767
- const field = schema?.find((elem) => elem.name === value)
768
- ?.columns?.[0]?.name;
769
- updatedForm.dateField = {
770
- // @ts-ignore
771
- ...updatedForm[field],
772
- [subfield]: value,
773
- field: field,
774
- };
775
- }
776
- updatedForm = {
777
- ...updatedForm,
778
- // @ts-ignore
779
- [field]: { ...updatedForm[field], [subfield]: value },
780
- };
781
- }
782
- else {
783
- // For simple fields
784
- updatedForm = { ...updatedForm, [fieldName]: value };
785
- }
786
- let dashboardName = updatedForm.dashboardName;
787
- if (fieldName === 'dashboardName') {
788
- dashboardName = value;
789
- }
790
- validationHelper(updatedForm, dashboardData[dashboardName || '']);
791
- setChartTypes(getChartTypeOptions(updatedForm, dashboardData[dashboardName || '']));
792
- }
793
- catch (e) {
794
- updatedForm = { ...updatedForm, [fieldName]: value };
795
- }
796
- setFormData(updatedForm);
797
- };
798
- const handleAddPivot = async (pivot, uniqueValues, dateRange, pivotData) => {
799
- const newPivotFormData = pivotFormData(pivot);
800
- // Only keep the old chart type if the shapes of the pivots are the same
801
- // since the valid chart types for some pivots might have changed (eg. going
802
- // from a 1D pivot to a 2D pivot would make bar lists not an option).
803
- // They don't have to have the same value, just same 'truthiness'.
804
- const isPivotSameShape = Boolean(formData.pivot?.rowField) === Boolean(pivot.rowField) &&
805
- Boolean(formData.pivot?.columnField) === Boolean(pivot.columnField);
806
- const isNewChartType = formData.chartType !== newPivotFormData.chartType;
807
- const keepOldChartType = isNewChartType && isPivotSameShape;
808
- if (pivotData) {
809
- setSelectedPivotTable({
810
- rows: pivotData.rows,
811
- columns: pivotData.columns,
812
- });
813
- }
814
- else {
815
- await fetchPivotData(pivot, uniqueValues, dateRange);
816
- }
817
- setFormData((formData) => ({
818
- ...formData,
819
- ...newPivotFormData,
820
- ...(keepOldChartType && { chartType: formData.chartType }),
821
- }));
822
- };
823
- const handleDeletePivot = () => {
824
- if (!formData.pivot) {
825
- return;
826
- }
827
- setFormData({
828
- ...formEmptyState,
829
- dashboardName: formData.dashboardName,
830
- pivot: null,
831
- });
832
- setSelectedPivotTable(undefined);
833
- };
834
- const handleAddField = (fieldName) => {
835
- if (fieldName === 'columns') {
836
- setFormData({
837
- ...formData,
838
- // @ts-ignore
839
- columns: [...formData.columns, { label: '', field: '', format: '' }],
840
- });
841
- }
842
- else if (fieldName === 'yAxisFields') {
843
- setFormData({
844
- ...formData,
845
- yAxisFields: [
846
- ...formData.yAxisFields,
847
- // @ts-ignore
848
- { label: '', field: '', chartType: '', format: '' },
849
- ],
850
- });
851
- }
852
- else if (fieldName === 'pivot') {
853
- setFormData({
854
- ...formData,
855
- pivot: {
856
- title: '',
857
- rowField: '',
858
- rowFieldType: '',
859
- columnField: '',
860
- columnFieldType: '',
861
- valueField: '',
862
- aggregationType: 'sum',
863
- },
864
- });
865
- }
866
- };
867
- const handleRemoveField = (fieldName, index) => {
868
- if (fieldName === 'pivot') {
869
- setFormData({
870
- ...formData,
871
- pivot: null,
872
- });
873
- return;
874
- }
875
- // @ts-ignore
876
- const updatedArray = formData[fieldName].filter((_, i) => i !== index);
877
- setFormData({ ...formData, [fieldName]: updatedArray });
878
- };
879
- const handleSubmit = (event) => {
880
- event.preventDefault();
881
- };
882
- const deleteChart = async () => {
883
- if (!report?.id || !client) {
884
- return;
885
- }
886
- const { publicKey, customerId } = client;
887
- const cloudBody = {
888
- dashboardItemId: report.id,
889
- };
890
- const searchParams = new URLSearchParams(customerId
891
- ? {
892
- clientId: publicKey,
893
- customerId: customerId,
894
- }
895
- : { clientId: publicKey }).toString();
896
- const resp = await getDataFromCloud(client, `deletedash/${publicKey}/${customerId}/?${searchParams}`, cloudBody);
897
- if (resp) {
898
- if (onDelete) {
899
- onDelete();
900
- }
901
- }
902
- setIsOpen(false);
903
- setIsSubmitting(false);
904
- };
905
- const editChart = async () => {
906
- if (isSubmitting) {
907
- setTriggeredEditChart(false);
908
- return;
909
- }
910
- setIsSubmitting(true);
911
- const { publicKey, customerId, databaseType } = client;
912
- if (!client) {
913
- setTriggeredEditChart(false);
914
- return;
915
- }
916
- // If the dashbaordItem is a template but the editor isn't an admin, create a new dashboardItem and set the template to false
917
- let dashboardItemId = report ? report.id : undefined;
918
- if (report && !showAccessControlOptions && formData.template) {
919
- dashboardItemId = undefined;
920
- }
921
- const cloudBody = {
922
- ...formData,
923
- ...(formData.dateField?.table
924
- ? {}
925
- : { dateField: { ...defaultDateField } }),
926
- ...(formData.dashboardName
927
- ? {}
928
- : { dashboardName: defaultDashboardName }),
929
- dashboardItemId,
930
- query: queryNoDateColumn || query,
931
- queryString: queryNoDateColumn || query,
932
- pivot: formData.pivot,
933
- referencedTables: allTables,
934
- referencedColumns,
935
- template: report && !showAccessControlOptions && formData.template
936
- ? false
937
- : formData.template,
938
- customerId: customerId || '*',
939
- useNewNodeSql: true,
940
- };
941
- // @ts-ignore
942
- if (cloudBody['rows']) {
943
- // @ts-ignore
944
- delete cloudBody['rows'];
945
- // @ts-ignore
946
- delete cloudBody['compareRows'];
947
- }
948
- // add orgId: customerId if present for hostedBody
949
- // set defaultDateField if date field not present
950
- const hostedBody = {
951
- metadata: {
952
- task: 'create',
953
- clientId: publicKey,
954
- databaseType: databaseType,
955
- ...cloudBody,
956
- orgId: customerId || '*',
957
- useNewNodeSql: true,
958
- },
959
- };
960
- const searchParams = new URLSearchParams(customerId
961
- ? {
962
- clientId: publicKey,
963
- customerId: customerId,
964
- }
965
- : { clientId: publicKey }).toString();
966
- const resp = await getData(client, `dashedit2?${searchParams}`, 'same-origin', hostedBody, cloudBody);
967
- if (resp && resp.name !== 'error') {
968
- if (resp.compareRows) {
969
- mergeComparisonRange(resp);
970
- }
971
- dispatch({
972
- type: 'UPDATE_DASHBOARD_ITEM',
973
- id: resp._id,
974
- data: {
975
- ...resp,
976
- rows,
977
- columns,
978
- pivotRows: selectedPivotTable?.rows || undefined,
979
- pivotColumns: selectedPivotTable?.columns || undefined,
980
- filtersApplied: specificDashboardFilter,
981
- triggerReload: true,
982
- },
983
- });
984
- }
985
- setIsOpen(false);
986
- setIsSubmitting(false);
987
- setTriggeredEditChart(false);
988
- if (onAddToDashboardComplete) {
989
- onAddToDashboardComplete({
990
- ...resp,
991
- rows,
992
- columns,
993
- filtersApplied: specificDashboardFilter,
994
- });
995
- }
996
- };
997
- // Prevent horizontal view on small screens.
998
- isHorizontalView = windowWidth < 1200 ? false : isHorizontalView;
999
- if (!schema) {
1000
- return null;
1001
- }
1002
- return (_jsxs("div", { style: {
1003
- width: '100%',
1004
- height: '100%',
1005
- display: 'flex',
1006
- flexDirection: 'column',
1007
- flexGrow: 1,
1008
- }, children: [_jsxs("div", { id: "quill-chart-modal", style: {
1009
- width: '100%',
1010
- height: '100%',
1011
- maxWidth: '100%',
1012
- display: 'flex',
1013
- padding: modalPadding,
1014
- gap: '20px',
1015
- flexDirection: isHorizontalView ? 'row' : 'column',
1016
- boxSizing: 'border-box',
1017
- }, children: [_jsxs("div", { style: {
1018
- display: 'flex',
1019
- flexDirection: 'column',
1020
- gap: '20px',
1021
- height: isHorizontalView || !isOpen ? '100%' : 800,
1022
- ...(isHorizontalView && {
1023
- flexGrow: 1,
1024
- maxWidth: !isOpen ? '100%' : `calc(100% - ${formWidth}px - 20px)`, // width of left sidebar plus gap
1025
- }),
1026
- ...(!isHorizontalView && isOpen && { width: formWidth }),
1027
- }, children: [report?.adminError || report?.error ? (_jsx(ErrorComponent, { label: report.adminError || report.error, onClick: onClickChartError })) : (((!isHorizontalView && windowWidth >= 1200) ||
1028
- formData.chartType !== 'table') && (_jsx(ChartDisplay, { reportId: report ? report.id : undefined, config: createReportFromForm(formData, report, selectedPivotTable, rows), scrollable: true, colors: theme.chartColors, loading: isLoading ? true : false, hideDateRangeFilter: hideDateRangeFilter, containerStyle: {
1029
- width: '100%',
1030
- height: formData.chartType === 'metric'
1031
- ? 100
1032
- : isHorizontalView || !isOpen
1033
- ? showTableFormatOptions
1034
- ? 'calc(50% - 10px)'
1035
- : 'calc(100% - 10px)'
1036
- : 400,
1037
- ...(isHorizontalView && { flexGrow: 1 }),
1038
- }, onClickChartElement: onClickChartElement }))),
1039
- // Make sure to display non-pivoted table when using pivot chart
1040
- showTableFormatOptions &&
1041
- (isHorizontalView || (!isOpen && windowWidth < 1200)) && (_jsx("div", { style: {
1042
- width: '100%',
1043
- height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
1044
- flexGrow: 1,
1045
- }, children: formData.chartType !== 'table' ? (_jsx(TableComponent, { rows: formattedRows, columns: formData.columns, onPageChange: (page) => {
1046
- onPageChange && onPageChange(page);
1047
- }, onSortChange: (sort) => {
1048
- onSortChange && onSortChange(sort);
1049
- }, rowCount: rowCount, isLoading: isLoading })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1050
- ? selectedPivotTable.columns
1051
- : formData.columns, onPageChange: (page) => {
1052
- onPageChange && onPageChange(page);
1053
- }, onSortChange: (sort) => {
1054
- onSortChange && onSortChange(sort);
1055
- }, rowCount: rowCount, isLoading: isLoading })) }))] }), isOpen && (_jsxs("form", { ref: parentRef, id: "quill-chart-form", onSubmit: handleSubmit, style: {
1056
- display: 'flex',
1057
- flexDirection: 'column',
1058
- gap: 20,
1059
- ...(isHorizontalView && {
1060
- height: '100%',
1061
- minWidth: formWidth,
1062
- maxWidth: formWidth,
1063
- width: formWidth,
1064
- }),
1065
- ...(windowWidth < 1200 && {
1066
- width: formWidth,
1067
- paddingTop: modalPadding,
1068
- paddingBottom: modalPadding,
1069
- }),
1070
- }, children: [_jsxs(FormContainer, { children: [_jsxs(ChartBuilderInputRowContainer, { children: [_jsx("div", { ref: inputRef, style: { display: 'flex', flexDirection: 'column' }, children: _jsx(TextInputComponent, { id: "chart-builder-name", label: "Name", width: 200, value: formData.name, onChange: (e) => handleChange(e.target.value, 'name'), placeholder: "Name" }) }), showDashboardDropdown && !destinationDashboard && (_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Dashboard", value: formData.dashboardName || '', onChange: async (e) => {
1071
- handleChange(e.target.value, 'dashboardName');
1072
- await updateDashboardFilters(e.target.value);
1073
- }, options: dashboardOptions.map((elem) => ({
1074
- label: elem.label,
1075
- value: elem.label,
1076
- })), width: 200 }) })), _jsx("div", { ref: selectRef, style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Chart type", value: formData.chartType, onChange: (e) => handleChange(e.target.value, 'chartType'),
1077
- // filter out metric for all pivots
1078
- // filter out bar and pie for row and column pivot
1079
- options: chartTypes, width: 200 }) })] }), _jsxs("div", { style: {
1080
- display: 'flex',
1081
- flexDirection: 'column',
1082
- gap: 6,
1083
- }, children: [_jsx(HeaderComponent, { label: "Pivot" }), _jsxs("div", { style: { fontFamily: theme?.fontFamily }, children: [_jsx("div", { style: {
1084
- maxWidth: 200,
1085
- // marginTop: 6,
1086
- display: 'flex',
1087
- flexDirection: 'column',
1088
- }, children: _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, CardComponent: CardComponent, SecondaryButtonComponent: SecondaryButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, LoadingComponent: LoadingComponent, theme: theme, isOpen: showPivotPopover, setIsOpen: setShowPivotPopover, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, parentRef: parentRef, data: rows, columns: processedColumns, triggerButtonText: 'Add pivot +', selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: handleDeletePivot, selectPivot: handleAddPivot, dateRange: dateRange, selectPivotOnEdit: true, showTrigger: !formData.pivot, query: query, pivotCountRequest: 4, initialUniqueValues: initialUniqueValues, initialSelectedPivotTable: selectedPivotTable, pivotRecommendationsEnabled: pivotRecommendationsEnabled, report: report }) }), formData.pivot && selectedPivotTable && (_jsx("div", { children: _jsx("div", { style: { width: pivotCardWidth }, children: _jsx(PivotCard, { pivotTable: {
1089
- pivot: formData.pivot,
1090
- rows: selectedPivotTable?.rows,
1091
- columns: selectedPivotTable?.columns,
1092
- }, theme: theme, index: 0, onSelectPivot: () => {
1093
- setIsEdittingPivot(true);
1094
- setShowPivotPopover(true);
1095
- setPivotRowField(formData.pivot?.rowField);
1096
- setPivotColumnField(formData.pivot?.columnField);
1097
- setPivotValueField(formData.pivot?.valueField);
1098
- setPivotAggregation(formData.pivot?.aggregationType);
1099
- setPivotPopUpTitle('Edit pivot');
1100
- }, selectedPivotIndex: -1, onEditPivot: () => { }, CardComponent: CardComponent, ButtonComponent: ButtonComponent, HeaderComponent: HeaderComponent, showEdit: false, onClose: handleDeletePivot, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent }) }) }))] })] }), (formData.pivot || formData.chartType !== 'table') && (_jsxs("div", { children: [CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsx("div", { style: {
1101
- display: 'flex',
1102
- flexDirection: 'column',
1103
- }, children: _jsx(HeaderComponent, { label: "Chart" }) })), CHART_TO_LABELS[formData.chartType]?.xAxisLabel && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.xAxisLabel ?? '' }), _jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: formData.xAxisField, onChange: (e) => handleChange(e.target.value, 'xAxisField'), options: formData.pivot
1104
- ? getPivotMetricOptions(formData.pivot)
1105
- : columns.map((elem) => ({
1106
- label: elem.field,
1107
- value: elem.field,
1108
- })), width: 200 }), _jsx(TextInputComponent, { id: "chart-builder-x-axis-label", width: 200, value: formData.xAxisLabel, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'xAxisLabel') }), _jsx(SelectComponent, { value: formData.pivot &&
1109
- isDateField(formData.pivot.rowFieldType)
1110
- ? 'pivot_date'
1111
- : formData.xAxisFormat, onChange: (e) => handleChange(e.target.value, 'xAxisFormat'), options: formData.pivot &&
1112
- isDateField(formData.pivot.rowFieldType)
1113
- ? [{ value: 'pivot_date', label: 'date' }]
1114
- : formatOptions, width: 200 })] })] })), CHART_TO_LABELS[formData.chartType]?.yAxisLabel && (_jsxs("div", { children: [_jsx(SubHeaderComponent, { label: CHART_TO_LABELS[formData.chartType]?.yAxisLabel ?? '' }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.yAxisFields
1115
- .filter((yAxisField) => {
1116
- return !yAxisField.field.startsWith('comparison_');
1117
- })
1118
- .map((yAxisField, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: formData.pivot
1119
- ? formData.pivot.valueField || 'count'
1120
- : yAxisField.field, onChange: (e) => handleChange(e.target.value, 'yAxisFields.field', index), options: formData.pivot
1121
- ? [
1122
- {
1123
- label: `Pivot Column (${formData.pivot.valueField || 'count'})`,
1124
- value: formData.pivot.valueField ||
1125
- 'count',
1126
- },
1127
- ]
1128
- : columns
1129
- .filter((elem) => {
1130
- return numberFormatOptions.includes(columns.find((col) => col.field === elem.field)?.format || '');
1131
- })
1132
- .map((elem) => ({
1133
- label: elem.field,
1134
- value: elem.field,
1135
- })), width: 200 }), _jsx(TextInputComponent, { id: "chart-builder-y-axis-label", width: 200, value: yAxisField.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'yAxisFields.label', index) }), _jsx(SelectComponent, { value: formData.pivot
1136
- ? NUMBER_OPTIONS.find((option) => {
1137
- return (option.value === yAxisField.format);
1138
- })
1139
- ? // @ts-ignore
1140
- NUMBER_OPTIONS.find((option) => option.value === yAxisField.format).value
1141
- : ''
1142
- : yAxisField.format, onChange: (e) => handleChange(e.target.value, 'yAxisFields.format', index), options: formData.pivot
1143
- ? NUMBER_OPTIONS
1144
- : formatOptions, width: 200 }), formData.pivot === null && (_jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('yAxisFields', index) }) }))] }, 'yAxisField' + index))), formData.pivot === null && (_jsx("div", { children: _jsx(SecondaryButtonComponent, { onClick: () => handleAddField('yAxisFields'), label: "Add field +" }) }))] })] }))] })), showTableFormatOptions && windowWidth < 1200 && (_jsx("div", { style: {
1145
- width: '100%',
1146
- height: isHorizontalView || !isOpen ? 'calc(50% - 10px)' : 400,
1147
- flexGrow: 1,
1148
- }, children: formData.chartType !== 'table' ? (_jsx(TableComponent, { rows: formattedRows, columns: formData.columns, onPageChange: (page) => {
1149
- onPageChange && onPageChange(page);
1150
- }, onSortChange: (sort) => {
1151
- onSortChange && onSortChange(sort);
1152
- }, rowCount: rowCount, isLoading: isLoading })) : (_jsx(TableComponent, { rows: formattedRows, columns: selectedPivotTable
1153
- ? selectedPivotTable.columns
1154
- : formData.columns, onPageChange: (page) => {
1155
- onPageChange && onPageChange(page);
1156
- }, onSortChange: (sort) => {
1157
- onSortChange && onSortChange(sort);
1158
- }, rowCount: rowCount, isLoading: isLoading })) })), showTableFormatOptions && (_jsxs("div", { children: [_jsxs("div", { style: {
1159
- display: 'flex',
1160
- flexDirection: 'column',
1161
- }, children: [_jsx(HeaderComponent, { label: "Table" }), _jsx(SubHeaderComponent, { label: "Columns" })] }), _jsxs(ChartBuilderInputColumnContainer, { children: [formData.pivot &&
1162
- selectedPivotTable &&
1163
- selectedPivotTable.columns &&
1164
- formData.chartType === 'table'
1165
- ? // THIS CASE IF FOR PIVOT TABLES ONLY
1166
- selectedPivotTable.columns.map((column, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: column.label, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: selectedPivotTable.columns.map((elem) => ({
1167
- label: elem.label,
1168
- value: elem.label,
1169
- })), width: 200 }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value:
1170
- // The first index use rowField for the rest of them use value fields
1171
- formData.pivot &&
1172
- column.field === formData.pivot.rowField
1173
- ? formData.pivot &&
1174
- isDateField(formData.pivot.rowFieldType)
1175
- ? 'pivot_date'
1176
- : 'string'
1177
- : formData.pivot?.valueFieldType ||
1178
- 'two_decimal_places', onChange: (e) => handleChange(e.target.value, 'pivotColumn', index), options: formData.pivot && index === 0
1179
- ? isDateField(formData.pivot.rowFieldType)
1180
- ? [{ label: 'date', value: 'pivot_date' }]
1181
- : [{ label: 'string', value: 'string' }]
1182
- : [...NUMBER_OPTIONS], width: 200 })] }, 'column' + index)))
1183
- : formData.columns.map((column, index) => (_jsxs(ChartBuilderInputRowContainer, { children: [_jsx(SelectComponent, { value: column.field, onChange: (e) => handleChange(e.target.value, 'columns.field', index), options: columns.map((elem) => ({
1184
- label: elem.field,
1185
- value: elem.field,
1186
- })), width: 200 }), _jsx(TextInputComponent, { id: `chart-builder-column-label-${index}`, width: 200, value: column.label, placeholder: "Column Label", onChange: (e) => handleChange(e.target.value, 'columns.label', index) }), _jsx(SelectComponent, { value: column.format, onChange: (e) => handleChange(e.target.value, 'columns.format', index), options: formatOptions, width: 200 }), _jsx("div", { ref: deleteRef, style: { marginLeft: deleteButtonMargin }, children: _jsx(DeleteButtonComponent, { onClick: () => handleRemoveField('columns', index) }) })] }, 'column' + index))), _jsx("div", { children: !(
1187
- // hide when pivoted and chartType === 'table'
1188
- (formData.pivot &&
1189
- selectedPivotTable &&
1190
- selectedPivotTable.columns &&
1191
- formData.chartType === 'table')) && (_jsx(SecondaryButtonComponent, { onClick: () => handleAddField('columns'), label: "Add column +" })) })] })] })), showDateFieldOptions && formData.dateField && (_jsxs("div", { style: {
1192
- display: 'flex',
1193
- flexDirection: 'column',
1194
- gap: 6,
1195
- }, children: [_jsx(HeaderComponent, { label: "Date field" }), _jsxs(ChartBuilderInputRowContainer, { children: [_jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Table", value: formData.dateField?.table, onChange: (e) => handleChange(e.target.value, 'dateField.table'), options: dateFieldOptions.map((elem) => ({
1196
- label: elem.name,
1197
- value: elem.name,
1198
- })), width: 200 }) }), _jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsx(SelectComponent, { label: "Field", value: removeDoubleQuotes(formData.dateField?.field), onChange: (e) => handleChange(e.target.value, 'dateField.field'), options: dateFieldOptions
1199
- ?.find((elem) => elem.name === formData.dateField?.table)
1200
- ?.columns?.map((elem) => ({
1201
- label: elem.field,
1202
- value: elem.field,
1203
- })) || [], width: 200 }) })] })] })), showAccessControlOptions && (_jsxs("div", { style: {
1204
- display: 'flex',
1205
- flexDirection: 'column',
1206
- gap: 12,
1207
- }, children: [_jsx(HeaderComponent, { label: "Organization access" }), _jsx(SegmentedControl, { onChange: (e) => handleChange(e, 'template'), value: formData.template || !organizationName, theme: theme, organizationName: organizationName, customFieldTableRef: customFieldTableRef })] }))] }), _jsxs("div", { style: {
1208
- display: 'flex',
1209
- flexDirection: 'row',
1210
- justifyContent: 'flex-end',
1211
- marginTop: 'auto',
1212
- gap: 10,
1213
- }, children: [!hideDeleteButton && !isHorizontalView && report && (_jsx(SecondaryButtonComponent, { onClick: deleteChart, label: 'Delete' })), !hideSubmitButton && (_jsxs("div", { style: {
1214
- display: 'flex',
1215
- flexDirection: 'row',
1216
- width: '100%',
1217
- justifyContent: 'space-between',
1218
- alignItems: 'center',
1219
- gap: 6,
1220
- }, children: [filterIssues.length === 0 ? (_jsx("div", {})) : (_jsx(ErrorMessageComponent, { errorMessage: filterIssues[0] || 'Dashbord - Report issues', containerStyle: { height: '100%' } })), _jsx(ButtonComponent, { onClick: () => {
1221
- if (loadingFormData) {
1222
- setTriggeredEditChart(true);
1223
- }
1224
- else {
1225
- editChart();
1226
- }
1227
- }, disabled: filterIssues.length !== 0, label: buttonLabel
1228
- ? buttonLabel
1229
- : report
1230
- ? 'Save changes'
1231
- : 'Add to dashboard' })] }))] })] }))] }), _jsx(DashboardFilterModal, { isOpen: showFilterModal, setIsOpen: setShowFilterModal, issues: filterIssues, ButtonComponent: ButtonComponent, ModalComponent: ModalComponent })] }));
1232
- }
1233
- function SegmentedControl({ onChange, value, theme, organizationName, customFieldTableRef, }) {
1234
- return (_jsxs("div", { style: {
1235
- display: 'flex',
1236
- flexDirection: 'row',
1237
- alignItems: 'center',
1238
- background: '#F5F5F6',
1239
- maxWidth: organizationName ? 418 : 209,
1240
- padding: 4,
1241
- borderRadius: 6,
1242
- }, children: [!customFieldTableRef && (_jsxs("button", { className: "quill-tab", onClick: () => onChange(true), style: {
1243
- border: value === true ? '1px solid #E7E7E7' : '1px solid transparent',
1244
- outline: 'none',
1245
- width: '100%',
1246
- borderRadius: 4,
1247
- padding: 10,
1248
- boxShadow: value === true
1249
- ? '0px 1px 4px 0px rgba(56, 65, 81, 0.08)'
1250
- : undefined,
1251
- color: value === true ? 'rgba(56, 65, 81, 1)' : 'rgba(56, 65, 81, 0.85)',
1252
- fontWeight: value === true ? 600 : 500,
1253
- fontSize: 14,
1254
- fontFamily: theme?.fontFamily,
1255
- }, children: [_jsx("style", { children: `
1256
- .quill-tab {
1257
- background-color: ${value === true ? 'white' : 'transparent'};
1258
- }
1259
- .quill-tab:hover {
1260
- background-color: ${value === false ? 'rgba(56, 65, 81, 0.05)' : undefined};
1261
- }
1262
- .quill-tab:active {
1263
- background-color: "rgba(56, 65, 81, 0.15)";
1264
- }
1265
- ` }), 'All Organizations'] })), organizationName && (_jsxs("button", { className: "quill-tab2", onClick: () => onChange(false), style: {
1266
- border: value === false ? '1px solid #E7E7E7' : '1px solid transparent',
1267
- boxShadow: value === false
1268
- ? '0px 1px 4px 0px rgba(56, 65, 81, 0.08)'
1269
- : undefined,
1270
- outline: 'none',
1271
- width: '100%',
1272
- borderRadius: 4,
1273
- color: value === false
1274
- ? 'rgba(56, 65, 81, 1)'
1275
- : 'rgba(56, 65, 81, 0.85)',
1276
- padding: 10,
1277
- fontWeight: value === false ? 600 : 500,
1278
- fontSize: 14,
1279
- fontFamily: theme?.fontFamily,
1280
- }, children: [_jsx("style", { children: `
1281
- .quill-tab2 {
1282
- background-color: ${value === false ? 'white' : 'transparent'};
1283
- }
1284
- .quill-tab2:hover {
1285
- background-color: ${value === true ? 'rgba(56, 65, 81, 0.05)' : undefined};
1286
- }
1287
- .quill-tab2:focused {
1288
- background-color: blue;
1289
- }
1290
- .quill-tab2:active {
1291
- background-color: "rgba(56, 65, 81, 0.15)";
1292
- }
1293
- ` }), organizationName] }))] }));
1294
- }
1295
- export function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent = MemoizedModal, ButtonComponent = MemoizedButton, }) {
1296
- if (!isOpen)
1297
- return null;
1298
- return (_jsx(ModalComponent, { isOpen: isOpen, setIsOpen: setIsOpen, title: 'Chart not compatible with selected dashboard', width: 600, children: _jsxs("div", { style: {
1299
- display: 'flex',
1300
- flexDirection: 'column',
1301
- width: '600px',
1302
- padding: '20px',
1303
- boxSizing: 'border-box',
1304
- overflow: 'scroll',
1305
- maxHeight: 600,
1306
- }, children: [issues.map((issue) => (_jsx("span", { style: { paddingTop: '10px' }, children: issue }, issue))), _jsx("div", { style: {
1307
- display: 'flex',
1308
- flexDirection: 'row',
1309
- justifyContent: 'flex-end',
1310
- paddingTop: '14px',
1311
- }, children: _jsx(ButtonComponent, { label: "Got It", onClick: () => setIsOpen(false) }) })] }) }));
1312
- }