@quillsql/admin 1.6.4 → 1.7.1

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 (357) hide show
  1. package/dist/cjs/Admin.d.ts +3 -44
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +117 -28
  4. package/dist/cjs/AdminProvider.d.ts +9 -145
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +176 -97
  7. package/dist/cjs/api/ConnectionClient.d.ts +7 -4
  8. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  9. package/dist/cjs/api/ConnectionClient.js +66 -6
  10. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  11. package/dist/cjs/assets/XIcon.d.ts.map +1 -1
  12. package/dist/cjs/components/Banner/index.js +2 -2
  13. package/dist/cjs/components/CardSection.js +2 -2
  14. package/dist/cjs/components/ClipboardButton.d.ts.map +1 -1
  15. package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
  16. package/dist/cjs/components/DashboardSelectPopover.js +29 -1
  17. package/dist/cjs/components/DatabaseSelector.d.ts +1 -1
  18. package/dist/cjs/components/DatabaseSelector.d.ts.map +1 -1
  19. package/dist/cjs/components/DateRangePicker/SingleDatePicker.js +2 -2
  20. package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.js +2 -2
  21. package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  22. package/dist/cjs/components/DropDownMenuWithLabel.js +2 -2
  23. package/dist/cjs/components/DynamicBanner.d.ts +1 -1
  24. package/dist/cjs/components/DynamicBanner.d.ts.map +1 -1
  25. package/dist/cjs/components/EmptyDashboardComponent/index.js +2 -2
  26. package/dist/cjs/components/EmptyVirtualTablesComponent.js +2 -2
  27. package/dist/cjs/components/FormTooltip.js +2 -2
  28. package/dist/cjs/components/InputLabel.js +2 -2
  29. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts +1 -1
  30. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
  31. package/dist/cjs/components/InternalDashboard/DashboardFilter.js +2 -2
  32. package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
  33. package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +2 -2
  34. package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  35. package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
  36. package/dist/cjs/components/InternalDashboard/InternalDashboard.js +118 -38
  37. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  38. package/dist/cjs/components/OrgSelect.js +51 -7
  39. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +5 -1
  40. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  41. package/dist/cjs/components/QuillMultiSelectWithCombo.js +331 -152
  42. package/dist/cjs/components/QuillPopover.js +2 -2
  43. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  44. package/dist/cjs/components/QuillSelect.js +2 -2
  45. package/dist/cjs/components/QuillSelectWithCombo.d.ts +4 -3
  46. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  47. package/dist/cjs/components/QuillSelectWithCombo.js +36 -8
  48. package/dist/cjs/components/QuillToolTipPortal.d.ts.map +1 -1
  49. package/dist/cjs/components/QuillToolTipPortal.js +2 -2
  50. package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
  51. package/dist/cjs/components/SqlTextEditor.js +15 -2
  52. package/dist/cjs/components/Tenants/EditTenant.d.ts +1 -1
  53. package/dist/cjs/components/Tenants/EditTenant.d.ts.map +1 -1
  54. package/dist/cjs/components/Tenants/EditTenant.js +52 -9
  55. package/dist/cjs/components/UiComponents.d.ts +1 -1
  56. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  57. package/dist/cjs/components/UiComponents.js +9 -8
  58. package/dist/cjs/components/VirtualTableTile.d.ts +1 -1
  59. package/dist/cjs/components/VirtualTableTile.d.ts.map +1 -1
  60. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts +1 -1
  61. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  62. package/dist/cjs/forms/client_onboard/ConnectDatabase.js +51 -3
  63. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts +1 -1
  64. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  65. package/dist/cjs/forms/client_onboard/ConnectSchema.js +34 -2
  66. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts +1 -8
  67. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
  68. package/dist/cjs/forms/client_onboard/CreateVirtualTables.js +24 -39
  69. package/dist/cjs/forms/client_onboard/__tests__/ConnectDatabase.test.js +2 -2
  70. package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.js +5 -5
  71. package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.js +5 -5
  72. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts +1 -1
  73. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
  74. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.js +98 -16
  75. package/dist/cjs/hooks/useAdmin.d.ts +16 -0
  76. package/dist/cjs/hooks/useAdmin.d.ts.map +1 -0
  77. package/dist/cjs/hooks/useAdmin.js +13 -0
  78. package/dist/cjs/hooks/useDashboardManager.js +2 -2
  79. package/dist/cjs/hooks/useDatabaseSchema.d.ts.map +1 -1
  80. package/dist/cjs/hooks/useDatabaseSchema.js +13 -2
  81. package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
  82. package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
  83. package/dist/cjs/hooks/useLongLoading.js +67 -0
  84. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  85. package/dist/cjs/hooks/useTenants.d.ts +1 -1
  86. package/dist/cjs/hooks/useTenants.d.ts.map +1 -1
  87. package/dist/cjs/hooks/useTenants.js +2 -2
  88. package/dist/cjs/hooks/useThrottle.d.ts.map +1 -1
  89. package/dist/cjs/icons/ArrowDownHeadIcon.d.ts.map +1 -1
  90. package/dist/cjs/icons/CheckCircleIcon.d.ts.map +1 -1
  91. package/dist/cjs/icons/ExclamationFilledIcon.d.ts.map +1 -1
  92. package/dist/cjs/icons/ExteriorLinkIcon.d.ts.map +1 -1
  93. package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
  94. package/dist/cjs/modals/CodePreview.d.ts.map +1 -1
  95. package/dist/cjs/modals/CodePreview.js +8 -3
  96. package/dist/cjs/modals/CreateEnvironmentModal.d.ts +5 -0
  97. package/dist/cjs/modals/CreateEnvironmentModal.d.ts.map +1 -0
  98. package/dist/cjs/modals/CreateEnvironmentModal.js +21 -0
  99. package/dist/cjs/modals/EditEnvironmentModal.d.ts.map +1 -1
  100. package/dist/cjs/modals/EditEnvironmentModal.js +68 -16
  101. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
  102. package/dist/cjs/modals/EditFiltersModal.js +14 -10
  103. package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
  104. package/dist/cjs/modals/NewDashboardModal.js +56 -30
  105. package/dist/cjs/modals/PromoteDashboardModal.js +2 -2
  106. package/dist/cjs/modals/PromoteReportModal.d.ts.map +1 -1
  107. package/dist/cjs/modals/PromoteReportModal.js +16 -5
  108. package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
  109. package/dist/cjs/modals/PromoteViewModal.js +14 -3
  110. package/dist/cjs/modals/ReorderDashboardModal.js +2 -2
  111. package/dist/cjs/modals/SavedQueriesModal.js +3 -3
  112. package/dist/cjs/modals/TenantFieldModal.d.ts +9 -0
  113. package/dist/cjs/modals/TenantFieldModal.d.ts.map +1 -0
  114. package/dist/cjs/modals/TenantFieldModal.js +54 -0
  115. package/dist/cjs/models/AdminContext.d.ts +158 -0
  116. package/dist/cjs/models/AdminContext.d.ts.map +1 -0
  117. package/dist/cjs/models/AdminContext.js +5 -0
  118. package/dist/cjs/models/Provider.d.ts +45 -0
  119. package/dist/cjs/models/Provider.d.ts.map +1 -0
  120. package/dist/cjs/models/Provider.js +21 -0
  121. package/dist/cjs/models/Tenant.d.ts +39 -0
  122. package/dist/cjs/models/Tenant.d.ts.map +1 -0
  123. package/dist/cjs/models/Tenant.js +2 -0
  124. package/dist/cjs/primitives/ButtonPrimitive.d.ts +1 -1
  125. package/dist/cjs/primitives/ButtonPrimitive.d.ts.map +1 -1
  126. package/dist/cjs/primitives/ButtonPrimitive.js +2 -2
  127. package/dist/cjs/primitives/CheckboxPrimitive.d.ts.map +1 -1
  128. package/dist/cjs/primitives/CheckboxPrimitive.js +2 -0
  129. package/dist/cjs/primitives/HeaderPrimitive.d.ts +1 -1
  130. package/dist/cjs/primitives/HeaderPrimitive.d.ts.map +1 -1
  131. package/dist/cjs/primitives/HeaderPrimitive.js +2 -2
  132. package/dist/cjs/primitives/MiniButtonPrimitive.js +2 -2
  133. package/dist/cjs/primitives/PopoverPrimitive.d.ts.map +1 -1
  134. package/dist/cjs/primitives/PopoverPrimitive.js +18 -7
  135. package/dist/cjs/primitives/SecondaryButtonPrimitive.d.ts +1 -1
  136. package/dist/cjs/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
  137. package/dist/cjs/primitives/SecondaryButtonPrimitive.js +2 -2
  138. package/dist/cjs/primitives/TextInputPrimitive.d.ts +1 -1
  139. package/dist/cjs/primitives/TextInputPrimitive.d.ts.map +1 -1
  140. package/dist/cjs/primitives/TextInputPrimitive.js +2 -2
  141. package/dist/cjs/primitives/TogglePrimitive.d.ts.map +1 -1
  142. package/dist/cjs/public_components/ChartQueryBuilder.d.ts.map +1 -1
  143. package/dist/cjs/public_components/ChartQueryBuilder.js +11 -10
  144. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  145. package/dist/cjs/public_components/CreateEnvironment.js +50 -17
  146. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  147. package/dist/cjs/public_components/DashboardManager.js +70 -10
  148. package/dist/cjs/public_components/EnvSelectPopover.d.ts.map +1 -1
  149. package/dist/cjs/public_components/EnvSelectPopover.js +32 -4
  150. package/dist/cjs/public_components/VirtualTableManager.d.ts +0 -1
  151. package/dist/cjs/public_components/VirtualTableManager.d.ts.map +1 -1
  152. package/dist/cjs/public_components/VirtualTableManager.js +99 -25
  153. package/dist/cjs/public_components/__tests__/CreateEnvironment.test.js +43 -4
  154. package/dist/cjs/utils/astProcessing.d.ts +1 -1
  155. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  156. package/dist/cjs/utils/columnProcessing.d.ts +1 -0
  157. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  158. package/dist/cjs/utils/columnProcessing.js +23 -1
  159. package/dist/cjs/utils/dataEditor.d.ts +1 -1
  160. package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
  161. package/dist/cjs/utils/dataFetcher.d.ts +1 -1
  162. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  163. package/dist/cjs/utils/databases.d.ts +6 -1
  164. package/dist/cjs/utils/databases.d.ts.map +1 -1
  165. package/dist/cjs/utils/databases.js +18 -0
  166. package/dist/cjs/utils/delay.d.ts.map +1 -1
  167. package/dist/cjs/utils/filter.d.ts +17 -21
  168. package/dist/cjs/utils/filter.d.ts.map +1 -1
  169. package/dist/cjs/utils/filter.js +6 -6
  170. package/dist/cjs/utils/report.d.ts +5 -5
  171. package/dist/cjs/utils/report.d.ts.map +1 -1
  172. package/dist/cjs/utils/schema.d.ts +8 -5
  173. package/dist/cjs/utils/schema.d.ts.map +1 -1
  174. package/dist/cjs/utils/schema.js +42 -3
  175. package/dist/cjs/utils/table.d.ts.map +1 -1
  176. package/dist/cjs/utils/tenants.d.ts +2 -39
  177. package/dist/cjs/utils/tenants.d.ts.map +1 -1
  178. package/dist/cjs/utils/ui.d.ts.map +1 -1
  179. package/dist/esm/Admin.d.ts +3 -44
  180. package/dist/esm/Admin.d.ts.map +1 -1
  181. package/dist/esm/Admin.js +116 -29
  182. package/dist/esm/AdminProvider.d.ts +9 -145
  183. package/dist/esm/AdminProvider.d.ts.map +1 -1
  184. package/dist/esm/AdminProvider.js +177 -96
  185. package/dist/esm/api/ConnectionClient.d.ts +7 -4
  186. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  187. package/dist/esm/api/ConnectionClient.js +66 -6
  188. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  189. package/dist/esm/assets/XIcon.d.ts.map +1 -1
  190. package/dist/esm/components/Banner/index.js +1 -1
  191. package/dist/esm/components/CardSection.js +1 -1
  192. package/dist/esm/components/ClipboardButton.d.ts.map +1 -1
  193. package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
  194. package/dist/esm/components/DashboardSelectPopover.js +29 -1
  195. package/dist/esm/components/DatabaseSelector.d.ts +1 -1
  196. package/dist/esm/components/DatabaseSelector.d.ts.map +1 -1
  197. package/dist/esm/components/DateRangePicker/SingleDatePicker.js +1 -1
  198. package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.js +1 -1
  199. package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  200. package/dist/esm/components/DropDownMenuWithLabel.js +1 -1
  201. package/dist/esm/components/DynamicBanner.d.ts +1 -1
  202. package/dist/esm/components/DynamicBanner.d.ts.map +1 -1
  203. package/dist/esm/components/EmptyDashboardComponent/index.js +1 -1
  204. package/dist/esm/components/EmptyVirtualTablesComponent.js +1 -1
  205. package/dist/esm/components/FormTooltip.js +1 -1
  206. package/dist/esm/components/InputLabel.js +1 -1
  207. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts +1 -1
  208. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
  209. package/dist/esm/components/InternalDashboard/DashboardFilter.js +2 -2
  210. package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
  211. package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +1 -1
  212. package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  213. package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
  214. package/dist/esm/components/InternalDashboard/InternalDashboard.js +116 -36
  215. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  216. package/dist/esm/components/OrgSelect.js +49 -5
  217. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +5 -1
  218. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  219. package/dist/esm/components/QuillMultiSelectWithCombo.js +329 -150
  220. package/dist/esm/components/QuillPopover.js +1 -1
  221. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  222. package/dist/esm/components/QuillSelect.js +1 -1
  223. package/dist/esm/components/QuillSelectWithCombo.d.ts +4 -3
  224. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  225. package/dist/esm/components/QuillSelectWithCombo.js +35 -7
  226. package/dist/esm/components/QuillToolTipPortal.d.ts.map +1 -1
  227. package/dist/esm/components/QuillToolTipPortal.js +1 -1
  228. package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
  229. package/dist/esm/components/SqlTextEditor.js +15 -2
  230. package/dist/esm/components/Tenants/EditTenant.d.ts +1 -1
  231. package/dist/esm/components/Tenants/EditTenant.d.ts.map +1 -1
  232. package/dist/esm/components/Tenants/EditTenant.js +52 -9
  233. package/dist/esm/components/UiComponents.d.ts +1 -1
  234. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  235. package/dist/esm/components/UiComponents.js +2 -1
  236. package/dist/esm/components/VirtualTableTile.d.ts +1 -1
  237. package/dist/esm/components/VirtualTableTile.d.ts.map +1 -1
  238. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts +1 -1
  239. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  240. package/dist/esm/forms/client_onboard/ConnectDatabase.js +51 -3
  241. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts +1 -1
  242. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  243. package/dist/esm/forms/client_onboard/ConnectSchema.js +34 -2
  244. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts +1 -8
  245. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
  246. package/dist/esm/forms/client_onboard/CreateVirtualTables.js +23 -37
  247. package/dist/esm/forms/client_onboard/__tests__/ConnectDatabase.test.js +1 -1
  248. package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.js +3 -3
  249. package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.js +3 -3
  250. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts +1 -1
  251. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
  252. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.js +96 -14
  253. package/dist/esm/hooks/useAdmin.d.ts +16 -0
  254. package/dist/esm/hooks/useAdmin.d.ts.map +1 -0
  255. package/dist/esm/hooks/useAdmin.js +9 -0
  256. package/dist/esm/hooks/useDashboardManager.js +1 -1
  257. package/dist/esm/hooks/useDatabaseSchema.d.ts.map +1 -1
  258. package/dist/esm/hooks/useDatabaseSchema.js +13 -2
  259. package/dist/esm/hooks/useLongLoading.d.ts +13 -0
  260. package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
  261. package/dist/esm/hooks/useLongLoading.js +64 -0
  262. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  263. package/dist/esm/hooks/useTenants.d.ts +1 -1
  264. package/dist/esm/hooks/useTenants.d.ts.map +1 -1
  265. package/dist/esm/hooks/useTenants.js +1 -1
  266. package/dist/esm/hooks/useThrottle.d.ts.map +1 -1
  267. package/dist/esm/icons/ArrowDownHeadIcon.d.ts.map +1 -1
  268. package/dist/esm/icons/CheckCircleIcon.d.ts.map +1 -1
  269. package/dist/esm/icons/ExclamationFilledIcon.d.ts.map +1 -1
  270. package/dist/esm/icons/ExteriorLinkIcon.d.ts.map +1 -1
  271. package/dist/esm/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
  272. package/dist/esm/modals/CodePreview.d.ts.map +1 -1
  273. package/dist/esm/modals/CodePreview.js +8 -3
  274. package/dist/esm/modals/CreateEnvironmentModal.d.ts +5 -0
  275. package/dist/esm/modals/CreateEnvironmentModal.d.ts.map +1 -0
  276. package/dist/esm/modals/CreateEnvironmentModal.js +15 -0
  277. package/dist/esm/modals/EditEnvironmentModal.d.ts.map +1 -1
  278. package/dist/esm/modals/EditEnvironmentModal.js +68 -16
  279. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
  280. package/dist/esm/modals/EditFiltersModal.js +14 -10
  281. package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
  282. package/dist/esm/modals/NewDashboardModal.js +56 -30
  283. package/dist/esm/modals/PromoteDashboardModal.js +1 -1
  284. package/dist/esm/modals/PromoteReportModal.d.ts.map +1 -1
  285. package/dist/esm/modals/PromoteReportModal.js +16 -5
  286. package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
  287. package/dist/esm/modals/PromoteViewModal.js +14 -3
  288. package/dist/esm/modals/ReorderDashboardModal.js +1 -1
  289. package/dist/esm/modals/SavedQueriesModal.js +1 -1
  290. package/dist/esm/modals/TenantFieldModal.d.ts +9 -0
  291. package/dist/esm/modals/TenantFieldModal.d.ts.map +1 -0
  292. package/dist/esm/modals/TenantFieldModal.js +51 -0
  293. package/dist/esm/models/AdminContext.d.ts +158 -0
  294. package/dist/esm/models/AdminContext.d.ts.map +1 -0
  295. package/dist/esm/models/AdminContext.js +2 -0
  296. package/dist/esm/models/Provider.d.ts +45 -0
  297. package/dist/esm/models/Provider.d.ts.map +1 -0
  298. package/dist/esm/models/Provider.js +18 -0
  299. package/dist/esm/models/Tenant.d.ts +39 -0
  300. package/dist/esm/models/Tenant.d.ts.map +1 -0
  301. package/dist/esm/models/Tenant.js +1 -0
  302. package/dist/esm/primitives/ButtonPrimitive.d.ts +1 -1
  303. package/dist/esm/primitives/ButtonPrimitive.d.ts.map +1 -1
  304. package/dist/esm/primitives/ButtonPrimitive.js +1 -1
  305. package/dist/esm/primitives/CheckboxPrimitive.d.ts.map +1 -1
  306. package/dist/esm/primitives/CheckboxPrimitive.js +2 -0
  307. package/dist/esm/primitives/HeaderPrimitive.d.ts +1 -1
  308. package/dist/esm/primitives/HeaderPrimitive.d.ts.map +1 -1
  309. package/dist/esm/primitives/HeaderPrimitive.js +1 -1
  310. package/dist/esm/primitives/MiniButtonPrimitive.js +1 -1
  311. package/dist/esm/primitives/PopoverPrimitive.d.ts.map +1 -1
  312. package/dist/esm/primitives/PopoverPrimitive.js +17 -6
  313. package/dist/esm/primitives/SecondaryButtonPrimitive.d.ts +1 -1
  314. package/dist/esm/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
  315. package/dist/esm/primitives/SecondaryButtonPrimitive.js +1 -1
  316. package/dist/esm/primitives/TextInputPrimitive.d.ts +1 -1
  317. package/dist/esm/primitives/TextInputPrimitive.d.ts.map +1 -1
  318. package/dist/esm/primitives/TextInputPrimitive.js +1 -1
  319. package/dist/esm/primitives/TogglePrimitive.d.ts.map +1 -1
  320. package/dist/esm/public_components/ChartQueryBuilder.d.ts.map +1 -1
  321. package/dist/esm/public_components/ChartQueryBuilder.js +11 -10
  322. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  323. package/dist/esm/public_components/CreateEnvironment.js +50 -17
  324. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  325. package/dist/esm/public_components/DashboardManager.js +68 -8
  326. package/dist/esm/public_components/EnvSelectPopover.d.ts.map +1 -1
  327. package/dist/esm/public_components/EnvSelectPopover.js +32 -4
  328. package/dist/esm/public_components/VirtualTableManager.d.ts +0 -1
  329. package/dist/esm/public_components/VirtualTableManager.d.ts.map +1 -1
  330. package/dist/esm/public_components/VirtualTableManager.js +97 -21
  331. package/dist/esm/public_components/__tests__/CreateEnvironment.test.js +42 -3
  332. package/dist/esm/utils/astProcessing.d.ts +1 -1
  333. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  334. package/dist/esm/utils/columnProcessing.d.ts +1 -0
  335. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  336. package/dist/esm/utils/columnProcessing.js +21 -1
  337. package/dist/esm/utils/dataEditor.d.ts +1 -1
  338. package/dist/esm/utils/dataEditor.d.ts.map +1 -1
  339. package/dist/esm/utils/dataFetcher.d.ts +1 -1
  340. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  341. package/dist/esm/utils/databases.d.ts +6 -1
  342. package/dist/esm/utils/databases.d.ts.map +1 -1
  343. package/dist/esm/utils/databases.js +18 -0
  344. package/dist/esm/utils/delay.d.ts.map +1 -1
  345. package/dist/esm/utils/filter.d.ts +17 -21
  346. package/dist/esm/utils/filter.d.ts.map +1 -1
  347. package/dist/esm/utils/filter.js +5 -5
  348. package/dist/esm/utils/report.d.ts +5 -5
  349. package/dist/esm/utils/report.d.ts.map +1 -1
  350. package/dist/esm/utils/schema.d.ts +8 -5
  351. package/dist/esm/utils/schema.d.ts.map +1 -1
  352. package/dist/esm/utils/schema.js +42 -3
  353. package/dist/esm/utils/table.d.ts.map +1 -1
  354. package/dist/esm/utils/tenants.d.ts +2 -39
  355. package/dist/esm/utils/tenants.d.ts.map +1 -1
  356. package/dist/esm/utils/ui.d.ts.map +1 -1
  357. package/package.json +1 -1
@@ -4,15 +4,15 @@ import React, { useCallback, useMemo, useState, } from 'react';
4
4
  import ConnectDatabase from '../forms/client_onboard/ConnectDatabase';
5
5
  import StepDisplay from '../components/StepDisplay';
6
6
  import ConnectSchema from '../forms/client_onboard/ConnectSchema';
7
- import { useAdmin } from '../AdminProvider';
7
+ import { useAdmin } from '../hooks/useAdmin';
8
8
  import { getDatabaseConnectionFormat, } from '../utils/databases';
9
- import CreateVirtualTables from '../forms/client_onboard/CreateVirtualTables';
10
9
  import { getTableColumnsBySchema } from '../api/ConnectionClient';
11
10
  import { quillFetch } from '../utils/dataFetcher';
11
+ import { useLongLoading } from '../hooks/useLongLoading';
12
12
  export default function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
13
13
  const parentRef = React.useRef(null);
14
- const { state, dispatch, setClient, getToken, quillFetchWithToken } = useAdmin();
15
- const domainName = state.client?.domainName || state.domainName;
14
+ const { state, dispatch, setClient, getToken, quillFetchWithToken, eventTracking, } = useAdmin();
15
+ const clerkOrgId = state.client?.clerkOrgId || state.clerkOrgId;
16
16
  const defaultDatabaseType = state.client?.databaseType || 'PostgreSQL';
17
17
  const [createEnvSteps, setCreateEnvSteps] = useState({
18
18
  connectDB: {
@@ -40,6 +40,14 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
40
40
  }), [newClient, connection, databaseSchema]);
41
41
  const [tenantInit, setTenantInit] = useState({});
42
42
  const [fetchSchemasLoading, setFetchSchemasLoading] = useState(false);
43
+ useLongLoading(onboardingCompleteIsLoading, {
44
+ origin: 'CreateEnvironment',
45
+ loadDescription: 'Finishing onboarding',
46
+ });
47
+ useLongLoading(fetchSchemasLoading, {
48
+ origin: 'CreateEnvironment',
49
+ loadDescription: 'Fetching schemas',
50
+ });
43
51
  const onConnectDatabase = useCallback(async (clientId) => {
44
52
  setTenantInit({});
45
53
  setSqlTables([]);
@@ -58,6 +66,10 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
58
66
  getToken,
59
67
  });
60
68
  }
69
+ eventTracking?.logEvent?.('start-onboarding', {
70
+ clientId,
71
+ clerkOrgId,
72
+ });
61
73
  setNewClient({
62
74
  clientId,
63
75
  });
@@ -71,7 +83,7 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
71
83
  clientId,
72
84
  databaseType: connectionInfo.type,
73
85
  schemaNames: selectedSchemaNames,
74
- domainName,
86
+ clerkOrgId,
75
87
  });
76
88
  // FIXME: Error handling
77
89
  try {
@@ -92,10 +104,31 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
92
104
  openStep('connectSchema');
93
105
  })
94
106
  .catch((error) => {
107
+ eventTracking?.logError?.({
108
+ type: 'bug', // TODO: determine type
109
+ severity: 'high',
110
+ message: 'Error fetching schema',
111
+ errorMessage: error.message,
112
+ errorData: {
113
+ caller: 'CreateEnvironment',
114
+ function: 'setEnvironmentDetails',
115
+ },
116
+ });
95
117
  console.error(error);
96
118
  });
97
119
  }
98
120
  catch (error) {
121
+ eventTracking?.logError?.({
122
+ type: 'bug', // TODO: determine type
123
+ severity: 'high',
124
+ message: 'Error setting up database',
125
+ errorMessage: error.message,
126
+ errorStack: error.stack,
127
+ errorData: {
128
+ caller: 'CreateEnvironment',
129
+ function: 'setEnvironmentDetails',
130
+ },
131
+ });
99
132
  console.error(error);
100
133
  }
101
134
  setFetchSchemasLoading(false);
@@ -114,6 +147,7 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
114
147
  };
115
148
  const finishOnboarding = async () => {
116
149
  setOnboardingCompleteIsLoading(true);
150
+ const orgName = localStorage.getItem('orgName'); // Set via portal, alternatively, pass a prop through Admin Provider
117
151
  // TODO: Anyone could create a client with some domain through this endpoint
118
152
  const response = await quillFetchWithToken({
119
153
  client: {
@@ -128,8 +162,9 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
128
162
  ...newClient,
129
163
  allTenantTypes: undefined,
130
164
  },
131
- domainName: domainName,
165
+ clerkOrgId: clerkOrgId,
132
166
  clientId: newClient.clientId,
167
+ orgName,
133
168
  },
134
169
  adminMode: true,
135
170
  });
@@ -137,7 +172,15 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
137
172
  setOnboardingCompleteIsLoading(false);
138
173
  throw new Error(response.message);
139
174
  }
175
+ eventTracking?.logEvent?.('finish-onboarding', {
176
+ clientId: newClient.clientId,
177
+ clerkOrgId: clerkOrgId,
178
+ });
140
179
  setClient(response.data.client);
180
+ dispatch({
181
+ type: 'UPDATE_CLIENTS',
182
+ payload: response.data.client,
183
+ });
141
184
  sessionStorage.removeItem('quill-adminState');
142
185
  sessionStorage.setItem('quill-client', JSON.stringify(response.data.client));
143
186
  dispatch({
@@ -195,7 +238,7 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
195
238
  ownerTenantFields: [tenantInit.ownerTenant.tenantField],
196
239
  allTenantTypes: [tenantInit.ownerTenant],
197
240
  });
198
- openStep('createVirtualTables');
241
+ finishOnboarding();
199
242
  }, returnToConnectDatabase: () => {
200
243
  setNewClient({
201
244
  ...newClient,
@@ -209,15 +252,5 @@ export default function CreateEnvironment({ onOnboardComplete, containerStyle, }
209
252
  !!newClient?.schemaNames?.length) {
210
253
  openStep('connectSchema');
211
254
  }
212
- } })), createEnvSteps.createVirtualTables.open ? (_jsx(CreateVirtualTables, { containerStyle: {
213
- borderRadius: 6,
214
- border: '1px solid #e7e7e7',
215
- boxShadow: '0px 1px 6px rgba(0, 0, 0, 0.07)',
216
- height: 'calc(100vh - 59px)',
217
- width: 'calc(100vw - 200px)',
218
- }, header1Style: header1Style, header2Style: header2Style, databaseSchema: databaseSchema, environmentDetails: connection, completeOnboarding: finishOnboarding, state: state, client: newClient, tenantInit: tenantInit, isLoading: onboardingCompleteIsLoading, sqlTables: sqlTables, setSqlTables: setSqlTables })) : (_jsx(StepDisplay, { label: "Create Virtual Tables", completed: false, header1Style: header1Style, onClick: () => {
219
- if (tenantInit?.ownerTenant) {
220
- openStep('createVirtualTables');
221
- }
222
255
  } }))] }));
223
256
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,OAAO,CAAC;AAwChF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,6BAA6B,EAAE,6BAA6B,EAC5D,cAAc,GACf,EAAE;IACD,6BAA6B,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAi0BA"}
1
+ {"version":3,"file":"DashboardManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/DashboardManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,OAAO,CAAC;AA2ChF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,6BAA6B,EAAE,6BAA6B,EAC5D,cAAc,GACf,EAAE;IACD,6BAA6B,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CAw3BA"}
@@ -1,8 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useRef, useState } from 'react';
3
- import { useAdmin } from '../AdminProvider';
4
- import { OrgSelect, EnvSelectPopover, DashboardSelectPopover, } from '../components';
5
- import { useDashboard, useDashboards } from '@quillsql/react';
3
+ import { useAdmin } from '../hooks/useAdmin';
4
+ import { useDashboardInternal, useDashboards, } from '@quillsql/react';
6
5
  import { deleteReport, ReportWrapper } from '../Admin';
7
6
  import { ButtonPrimitive, HeaderPrimitive, ModalPrimitive, SecondaryButtonPrimitive, TextInputPrimitive, CheckboxPrimitive, } from '../primitives';
8
7
  import { NewDashboardModal } from '../modals/NewDashboardModal';
@@ -21,9 +20,13 @@ import { Popover } from '../primitives/PopoverPrimitive';
21
20
  import CodePreview from '../modals/CodePreview';
22
21
  import SavedQueriesModal from '../modals/SavedQueriesModal';
23
22
  import { InternalDashboard } from '../components/InternalDashboard/InternalDashboard';
24
- import CreateEnvironment from './CreateEnvironment';
23
+ import { useLongLoading } from '../hooks/useLongLoading';
24
+ import CreateEnvironmentModal from '../modals/CreateEnvironmentModal';
25
+ import EnvSelectPopover from './EnvSelectPopover';
26
+ import DashboardSelectPopover from '../components/DashboardSelectPopover';
27
+ import OrgSelect from '../components/OrgSelect';
25
28
  export default function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTableManager, containerStyle, }) {
26
- const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, } = useAdmin();
29
+ const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, eventTracking, } = useAdmin();
27
30
  const parentRef = useRef(null);
28
31
  const envSelectPopoverRef = useRef(null);
29
32
  const dashboardSelectPopoverRef = useRef(null);
@@ -35,8 +38,12 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
35
38
  //FIXME: we don't want to lift up this state
36
39
  const [userFilters, setUserFilters] = useState([]);
37
40
  const [showCreateEnvironmentModal, setShowCreateEnvironmentModal] = useState(false);
38
- const { data: dashboardConfig, reload: reloadDashboard } = useDashboard(state.selectedDashboard, userFilters);
41
+ const { data: dashboardConfig, reload: reloadDashboard } = useDashboardInternal(state.selectedDashboard, userFilters);
39
42
  const { dashboards, isLoading: dashboardsLoading } = useDashboards();
43
+ useLongLoading(dashboardsLoading, {
44
+ origin: 'DashboardManager',
45
+ loadDescription: 'Loading dashboards',
46
+ });
40
47
  const { setSelectedDashboard } = useDashboardManager();
41
48
  // const [editMode, setEditMode] = useState(true);
42
49
  const [autoPromoteVirtualTables, setAutoPromoteVirtualTables] = useState(true);
@@ -57,6 +64,15 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
57
64
  type: 'SET_ACTIVE_COMPONENT',
58
65
  payload: 'Report',
59
66
  });
67
+ eventTracking?.addBreadcrumb?.({
68
+ message: 'Clicked report in DashboardManager',
69
+ data: {
70
+ report: elem.id,
71
+ },
72
+ category: 'navigation',
73
+ level: 'info',
74
+ timestamp: Date.now(),
75
+ });
60
76
  }, [dispatch]);
61
77
  const hoverActions = (data) => {
62
78
  return (_jsx("div", { style: {
@@ -80,7 +96,7 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
80
96
  gap: 4,
81
97
  }, onClick: async (event) => {
82
98
  event.stopPropagation();
83
- if (await deleteReport(data.id, state, getToken)) {
99
+ if (await deleteReport(data.id, state, getToken, eventTracking)) {
84
100
  reloadDashboard(undefined, false, {
85
101
  report: { id: data.id },
86
102
  action: 'delete',
@@ -154,11 +170,22 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
154
170
  }
155
171
  catch (error) {
156
172
  console.error('Promotion failed:', error);
173
+ eventTracking?.logError?.({
174
+ type: 'bug', // TODO: determine type
175
+ severity: 'high',
176
+ message: 'Error promoting dashboard',
177
+ errorMessage: error.message,
178
+ errorStack: error.stack,
179
+ errorData: {
180
+ caller: 'DashboardManager',
181
+ function: 'handlePromote',
182
+ },
183
+ });
157
184
  alert('Could not promote this dashboard.');
158
185
  }
159
186
  };
160
187
  if (showCreateEnvironmentModal) {
161
- return (_jsx(ModalPrimitive, { isOpen: showCreateEnvironmentModal, onClose: () => setShowCreateEnvironmentModal(false), children: _jsx(CreateEnvironment, { onOnboardComplete: () => setShowCreateEnvironmentModal(false) }) }));
188
+ return (_jsx(CreateEnvironmentModal, { showCreateEnvironmentModal: showCreateEnvironmentModal, setShowCreateEnvironmentModal: setShowCreateEnvironmentModal }));
162
189
  }
163
190
  return (_jsxs("div", { style: containerStyle, children: [(state.activeComponent === 'Report Builder' ||
164
191
  state.activeComponent === 'SQL Editor') && (_jsx(ChartQueryBuilder, { activeComponent: state.activeComponent, destinationDashboard: state.selectedDashboard ??
@@ -268,6 +295,12 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
268
295
  type: 'SET_ACTIVE_COMPONENT',
269
296
  payload: 'CodePreview',
270
297
  });
298
+ eventTracking?.addBreadcrumb?.({
299
+ message: 'Opened embed preview in DashboardManager',
300
+ category: 'navigation',
301
+ level: 'info',
302
+ timestamp: Date.now(),
303
+ });
271
304
  }, label: "Embed Preview" }), _jsx(Popover, { content: _jsxs("div", { style: {
272
305
  display: 'flex',
273
306
  flexDirection: 'column',
@@ -281,6 +314,12 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
281
314
  type: 'SET_ACTIVE_COMPONENT',
282
315
  payload: 'Report Builder',
283
316
  });
317
+ eventTracking?.addBreadcrumb?.({
318
+ message: 'Opened report builder in DashboardManager',
319
+ category: 'navigation',
320
+ level: 'info',
321
+ timestamp: Date.now(),
322
+ });
284
323
  }, label: "Report Builder \u2197" }), _jsx(SecondaryButtonPrimitive, { onClick: () => {
285
324
  if (!state.selectedDashboard) {
286
325
  return;
@@ -289,6 +328,12 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
289
328
  type: 'SET_ACTIVE_COMPONENT',
290
329
  payload: 'SQL Editor',
291
330
  });
331
+ eventTracking?.addBreadcrumb?.({
332
+ message: 'Opened SQL editor in DashboardManager',
333
+ category: 'navigation',
334
+ level: 'info',
335
+ timestamp: Date.now(),
336
+ });
292
337
  }, label: "SQL Editor \u2197" }), _jsx(SecondaryButtonPrimitive, { onClick: () => {
293
338
  if (!state.selectedDashboard) {
294
339
  return;
@@ -297,6 +342,12 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
297
342
  type: 'SET_ACTIVE_COMPONENT',
298
343
  payload: 'SavedQueries',
299
344
  });
345
+ eventTracking?.addBreadcrumb?.({
346
+ message: 'Opened saved queries in DashboardManager',
347
+ category: 'navigation',
348
+ level: 'info',
349
+ timestamp: Date.now(),
350
+ });
300
351
  }, label: "Saved Queries \u2197" })] }), trigger: _jsx(ButtonPrimitive
301
352
  // onClick={() => {
302
353
  // if (!state.selectedDashboard) {
@@ -360,6 +411,15 @@ export default function DashboardManager({ navigateToVirtualTableManager: naviga
360
411
  dashboardsLoading ||
361
412
  dashboards?.filter((d) => d.name !== SAVED_QUERIES_DASHBOARD)
362
413
  .length ? (_jsx("div", { style: { width: '100%', position: 'relative' }, children: _jsx(InternalDashboard, { name: state.selectedDashboard ?? '', containerStyle: { padding: 25, width: '100%' }, onClickReport: handleClickReport, hoverActions: hoverActions, onUserFiltersUpdated: setUserFilters, parentLoading: clientLoading || dashboardsLoading, onManageDashboard: () => {
414
+ eventTracking?.addBreadcrumb?.({
415
+ message: 'Opened manage dashboard in DashboardManager',
416
+ data: {
417
+ dashboard: state.selectedDashboard,
418
+ },
419
+ category: 'navigation',
420
+ level: 'info',
421
+ timestamp: Date.now(),
422
+ });
363
423
  setEditFilterModalIsOpen(true);
364
424
  } }) })) : null] }), !clientLoading && !dashboardsLoading && (_jsxs(_Fragment, { children: [_jsx(EditEnvironmentModal, { isOpen: editEnvironmentModalIsOpen, setIsOpen: setEditEnvironmentModalIsOpen, onSave: async () => {
365
425
  await reloadDashboard(state.selectedDashboard ?? undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"EnvSelectPopover.d.ts","sourceRoot":"","sources":["../../../src/public_components/EnvSelectPopover.tsx"],"names":[],"mappings":"AAMA,UAAU,qBAAqB;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;IACX,yBAAyB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,yBAAyB,EACzB,SAAS,EACT,SAAS,EACT,sBAAsB,GACvB,EAAE,qBAAqB,2CAwOvB"}
1
+ {"version":3,"file":"EnvSelectPopover.d.ts","sourceRoot":"","sources":["../../../src/public_components/EnvSelectPopover.tsx"],"names":[],"mappings":"AAMA,UAAU,qBAAqB;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;IACX,yBAAyB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,yBAAyB,EACzB,SAAS,EACT,SAAS,EACT,sBAAsB,GACvB,EAAE,qBAAqB,2CAsQvB"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useMemo, useState } from 'react';
3
- import { useAdmin } from '../AdminProvider';
3
+ import { useAdmin } from '../hooks/useAdmin';
4
4
  import { ListboxRow, Popover } from '../components/OrgSelect';
5
5
  import MiniButtonPrimitive from '../primitives/MiniButtonPrimitive';
6
6
  import { LoadingSpinner } from '../components/UiComponents';
7
7
  import { ListboxTextInput } from '../components/QuillMultiSelectWithCombo';
8
8
  export default function EnvSelectPopover({ clients, setClient, client, theme, onSelectedEditEnvironment, parentRef, isLoading, onCreateNewEnvironment, }) {
9
- const { state, dispatch } = useAdmin();
9
+ const { state, dispatch, eventTracking } = useAdmin();
10
10
  const [isOpen, setIsOpen] = useState(false);
11
11
  const [searchQuery, setSearchQuery] = useState('');
12
12
  const filteredClients = useMemo(() => {
@@ -20,6 +20,15 @@ export default function EnvSelectPopover({ clients, setClient, client, theme, on
20
20
  dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
21
21
  dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
22
22
  }
23
+ eventTracking?.addBreadcrumb?.({
24
+ message: 'Set client in EnvSelectPopover',
25
+ data: {
26
+ clientId: selectedClient._id || selectedClient.id,
27
+ },
28
+ category: 'navigation',
29
+ level: 'info',
30
+ timestamp: Date.now(),
31
+ });
23
32
  setClient(selectedClient);
24
33
  setIsOpen(false);
25
34
  };
@@ -84,7 +93,9 @@ export default function EnvSelectPopover({ clients, setClient, client, theme, on
84
93
  boxSizing: 'border-box',
85
94
  fontSize: 14,
86
95
  maxHeight: '50vh',
87
- }, setIsOpen: setIsOpen, onClick: () => { }, children: !isLoading ? (_jsxs(_Fragment, { children: [_jsx(ListboxTextInput, { id: "quill-search-bar", placeholder: "Search", value: searchQuery, onChange: setSearchQuery, width: 180 }), _jsx("div", { style: {
96
+ }, setIsOpen: setIsOpen, onClick: () => { }, children: !isLoading ? (_jsxs(_Fragment, { children: [_jsx(ListboxTextInput, { id: "quill-search-bar", placeholder: "Search", value: searchQuery, onChange: (e) => {
97
+ setSearchQuery(e);
98
+ }, width: 180 }), _jsx("div", { style: {
88
99
  height: 9,
89
100
  width: 230,
90
101
  borderTop: `1px solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
@@ -93,6 +104,15 @@ export default function EnvSelectPopover({ clients, setClient, client, theme, on
93
104
  : undefined, item: item.name, isSelected: client._id === item._id, hoverActions: onSelectedEditEnvironment
94
105
  ? (item) => (_jsx(MiniButtonPrimitive, { label: "Manage", onClick: () => {
95
106
  onSelectedEditEnvironment(item);
107
+ eventTracking?.addBreadcrumb?.({
108
+ message: 'Opened manage environment in EnvSelectPopover',
109
+ data: {
110
+ environment: item,
111
+ },
112
+ category: 'navigation',
113
+ level: 'info',
114
+ timestamp: Date.now(),
115
+ });
96
116
  setIsOpen(false);
97
117
  }, style: {
98
118
  marginRight: -8,
@@ -102,7 +122,15 @@ export default function EnvSelectPopover({ clients, setClient, client, theme, on
102
122
  color: theme.secondaryTextColor,
103
123
  backgroundColor: theme.backgroundColor,
104
124
  } }))
105
- : undefined }, item._id))), _jsx("div", { className: 'quill-list-select', style: { paddingBottom: 6, cursor: 'pointer' }, children: _jsxs("a", { onClick: onCreateNewEnvironment, style: {
125
+ : undefined }, item._id))), _jsx("div", { className: 'quill-list-select', style: { paddingBottom: 6, cursor: 'pointer' }, children: _jsxs("a", { onClick: () => {
126
+ eventTracking?.addBreadcrumb?.({
127
+ message: 'Opened create new environment in EnvSelectPopover',
128
+ category: 'navigation',
129
+ level: 'info',
130
+ timestamp: Date.now(),
131
+ });
132
+ onCreateNewEnvironment?.();
133
+ }, style: {
106
134
  height: 42,
107
135
  width: 216,
108
136
  borderRadius: 6,
@@ -1,5 +1,4 @@
1
1
  import { CSSProperties } from 'react';
2
- export declare const getDuplicateColumns: (columns?: any[]) => string[];
3
2
  export default function VirtualTableManager({ containerStyle, virtualTable, }: {
4
3
  containerStyle?: CSSProperties;
5
4
  virtualTable?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualTableManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/VirtualTableManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AA2C5E,eAAO,MAAM,mBAAmB,aAAc,GAAG,EAAE,aAalD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,cAAc,EACd,YAAY,GACb,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,2CAw+BA"}
1
+ {"version":3,"file":"VirtualTableManager.d.ts","sourceRoot":"","sources":["../../../src/public_components/VirtualTableManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AA6C5E,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,cAAc,EACd,YAAY,GACb,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,2CAukCA"}
@@ -2,7 +2,7 @@ import { createElement as _createElement } from "react";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { ButtonPrimitive, HeaderPrimitive, ModalPrimitive, SecondaryButtonPrimitive, TextInputPrimitive, } from '../primitives';
5
- import { useAdmin } from '../AdminProvider';
5
+ import { useAdmin } from '../hooks/useAdmin';
6
6
  import { EnvSelectPopover } from '../components';
7
7
  import { TableCell } from '../Admin';
8
8
  import CreateEditVirtualTable from '../forms/virtual_tables/CreateEditVirtualTable';
@@ -23,22 +23,8 @@ import { onlySingleDatabaseTenant } from '../utils/tenants';
23
23
  import { useDatabaseSchema } from '../hooks/useDatabaseSchema';
24
24
  import InputLabel from '../components/InputLabel';
25
25
  import { useDashboardManager } from '../hooks/useDashboardManager';
26
- import CreateEnvironment from './CreateEnvironment';
27
- export const getDuplicateColumns = (columns) => {
28
- if (!columns) {
29
- return [];
30
- }
31
- const columnCount = columns?.reduce((acc, curr) => {
32
- if (acc[curr.field]) {
33
- acc[curr.field] += 1;
34
- }
35
- else {
36
- acc[curr.field] = 1;
37
- }
38
- return acc;
39
- }, {});
40
- return Object.keys(columnCount).filter((column) => columnCount[column] > 1);
41
- };
26
+ import CreateEnvironmentModal from '../modals/CreateEnvironmentModal';
27
+ import { getDuplicateColumns } from '../utils/columnProcessing';
42
28
  export default function VirtualTableManager({ containerStyle, virtualTable, }) {
43
29
  const { data: tables, isLoading: areTablesLoading, reloadAll, refreshSome, loadingTables, } = useVirtualTables();
44
30
  const { reloadFilteredReports } = useReports();
@@ -64,7 +50,7 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
64
50
  const [showCreateEnvironmentModal, setShowCreateEnvironmentModal] = useState(false);
65
51
  const parentRef = useRef(null);
66
52
  const envHeaderRef = useRef(null);
67
- const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, } = useAdmin();
53
+ const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, eventTracking, } = useAdmin();
68
54
  const closeEditModal = () => {
69
55
  setEditModalIsOpen(false);
70
56
  setEditName('');
@@ -80,6 +66,16 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
80
66
  setEditError(table.broken ? (table.error ?? 'Invalid query') : undefined);
81
67
  setCustomFieldInfo(table.customFieldInfo);
82
68
  !suppressModal && setEditModalIsOpen(true);
69
+ eventTracking?.addBreadcrumb?.({
70
+ message: 'Clicked table cell in VirtualTableManager',
71
+ data: {
72
+ table: table.name,
73
+ suppressModal: suppressModal,
74
+ },
75
+ category: 'interaction',
76
+ level: 'info',
77
+ timestamp: Date.now(),
78
+ });
83
79
  };
84
80
  const reloadTables = async (tables) => {
85
81
  const tempClient = {
@@ -256,6 +252,17 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
256
252
  setEditQueryView(false);
257
253
  }
258
254
  catch (e) {
255
+ eventTracking?.logError?.({
256
+ type: 'bug', // TODO: determine type
257
+ severity: 'high',
258
+ message: 'Error submitting virtual table',
259
+ errorMessage: e.message,
260
+ errorStack: e.stack,
261
+ errorData: {
262
+ caller: 'VirtualTableManager',
263
+ function: 'handleModalSubmit',
264
+ },
265
+ });
259
266
  console.error(e);
260
267
  }
261
268
  };
@@ -283,6 +290,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
283
290
  alert(`This table is referenced in the following dashboard filter${filtersIsPlural}.\n\n${referencedFilterInfo.join('\n')} \n\nPlease delete those filters before deleting this table.`);
284
291
  return;
285
292
  }
293
+ eventTracking?.addBreadcrumb?.({
294
+ message: 'Confirmed delete table in VirtualTableManager',
295
+ data: {
296
+ table: name,
297
+ },
298
+ category: 'interaction',
299
+ level: 'info',
300
+ timestamp: Date.now(),
301
+ });
286
302
  const response = await requestDeleteVirtualTable(id, state, getToken);
287
303
  await reloadTables();
288
304
  return response;
@@ -298,7 +314,7 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
298
314
  }
299
315
  };
300
316
  if (showCreateEnvironmentModal) {
301
- return (_jsx(ModalPrimitive, { isOpen: showCreateEnvironmentModal, onClose: () => setShowCreateEnvironmentModal(false), children: _jsx(CreateEnvironment, { onOnboardComplete: () => setShowCreateEnvironmentModal(false) }) }));
317
+ return (_jsx(CreateEnvironmentModal, { showCreateEnvironmentModal: showCreateEnvironmentModal, setShowCreateEnvironmentModal: setShowCreateEnvironmentModal }));
302
318
  }
303
319
  return (_jsx("div", { style: { ...containerStyle }, children: _jsxs("div", { style: {
304
320
  minHeight: '100%',
@@ -347,6 +363,12 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
347
363
  flexDirection: 'row',
348
364
  gap: 8,
349
365
  }, children: [_jsx(SecondaryButtonPrimitive, { onClick: () => {
366
+ eventTracking?.addBreadcrumb?.({
367
+ message: 'Clicked refresh tables button in VirtualTableManager',
368
+ category: 'interaction',
369
+ level: 'info',
370
+ timestamp: Date.now(),
371
+ });
350
372
  reloadTables(tables);
351
373
  }, label: "Refresh Tables" }), _jsx(ButtonPrimitive, { onClick: () => {
352
374
  setEditName('');
@@ -354,6 +376,12 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
354
376
  setEditVirtualTableId('');
355
377
  setInitialVirtualTable(undefined);
356
378
  setEditQueryView(true);
379
+ eventTracking?.addBreadcrumb?.({
380
+ message: 'Clicked add virtual table button in VirtualTableManager',
381
+ category: 'interaction',
382
+ level: 'info',
383
+ timestamp: Date.now(),
384
+ });
357
385
  }, label: "Add Virtual Table +" })] }))] }) })), clientLoading || areTablesLoading ? (_jsx("div", { style: {
358
386
  display: 'grid',
359
387
  gridGap: 24,
@@ -372,6 +400,12 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
372
400
  overflow: 'hidden',
373
401
  }, children: _jsxs("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [_jsx("rect", { width: "100%", height: "100%", fill: '#F9F9FA' }), _jsx("defs", { fill: '#F9F9FA', children: _jsxs("linearGradient", { id: "skeletonGradient", x1: "0%", y1: "0%", x2: "10%", y2: "0%", gradientUnits: "userSpaceOnUse", children: [_jsx("stop", { offset: "0%", stopColor: "rgba(255,255,255,0)" }), _jsx("stop", { offset: "50%", stopColor: "#FEFEFE" }), _jsx("stop", { offset: "100%", stopColor: "rgba(255,255,255,0)" }), _jsx("animate", { attributeName: "x1", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }), _jsx("animate", { attributeName: "x2", from: "-50%", to: "150%", dur: "2s", repeatCount: "indefinite" })] }) }), _jsx("rect", { width: "50%", height: "100%", fill: "url(#skeletonGradient)", children: _jsx("animate", { attributeName: "x", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }) })] }) }) }, i))) }, 'edit-view-query')) : state.databaseTypeMismatch.show ? (_jsx(DatabaseMismatchCard, { environmentName: state.client.name, environmentDatabaseType: state.client.databaseType, backendDatabaseType: state.databaseTypeMismatch.backendDatabaseType })) : (_jsxs(_Fragment, { children: [!editQueryView ? (tables && tables.length === 0 ? (_jsx(EmptyVirtualTablesComponent, { onClick: () => {
374
402
  setEditQueryView(true);
403
+ eventTracking?.addBreadcrumb?.({
404
+ message: 'Clicked EmptyVirtualTablesComponent in VirtualTableManager',
405
+ category: 'interaction',
406
+ level: 'info',
407
+ timestamp: Date.now(),
408
+ });
375
409
  } })) : (_jsx("div", { style: {
376
410
  display: 'grid',
377
411
  gridGap: 24,
@@ -385,6 +419,12 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
385
419
  }, children: tables && tables?.length ? (_jsxs(_Fragment, { children: [tables.map((table) => (_jsx(TableCell, { table: table, clickTableCellHeader: clickTableCell, clickTableCellBody: () => {
386
420
  clickTableCell(table, true);
387
421
  setEditQueryView(true);
422
+ eventTracking?.addBreadcrumb?.({
423
+ message: 'Clicked table body in VirtualTableManager',
424
+ category: 'interaction',
425
+ level: 'info',
426
+ timestamp: Date.now(),
427
+ });
388
428
  }, isLoading: loadingTables[table._id], reloadAction: (table) => reloadTables([table]), hoverActions: (table) => (_jsxs("div", { style: {
389
429
  display: 'flex',
390
430
  flexDirection: 'row',
@@ -403,6 +443,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
403
443
  border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
404
444
  }, onClick: (event) => {
405
445
  event.stopPropagation();
446
+ eventTracking?.addBreadcrumb?.({
447
+ message: 'Clicked edit query button in VirtualTableManager Table Cell',
448
+ data: {
449
+ table: table.name,
450
+ },
451
+ category: 'interaction',
452
+ level: 'info',
453
+ timestamp: Date.now(),
454
+ });
406
455
  clickTableCell(table, true);
407
456
  setEditQueryView(true);
408
457
  }, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 12, width: 12, style: {
@@ -422,6 +471,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
422
471
  border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
423
472
  }, onClick: (event) => {
424
473
  event.stopPropagation();
474
+ eventTracking?.addBreadcrumb?.({
475
+ message: 'Clicked table settings in VirtualTableManager Table Cell',
476
+ data: {
477
+ table: table.name,
478
+ },
479
+ category: 'interaction',
480
+ level: 'info',
481
+ timestamp: Date.now(),
482
+ });
425
483
  clickTableCell(table);
426
484
  }, className: "secondary-button-quill", children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 16, width: 16, style: {
427
485
  marginLeft: 'auto',
@@ -446,6 +504,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
446
504
  border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
447
505
  }, className: "secondary-button-quill", onClick: (event) => {
448
506
  event.stopPropagation();
507
+ eventTracking?.addBreadcrumb?.({
508
+ message: 'Clicked refresh table button in VirtualTableManager Table Cell',
509
+ data: {
510
+ table: table.name,
511
+ },
512
+ category: 'interaction',
513
+ level: 'info',
514
+ timestamp: Date.now(),
515
+ });
449
516
  reloadTables([table]);
450
517
  }, children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 16 16", strokeWidth: 1.5, height: 16, width: 16, style: {
451
518
  marginLeft: 'auto',
@@ -464,6 +531,15 @@ export default function VirtualTableManager({ containerStyle, virtualTable, }) {
464
531
  alignItems: 'center',
465
532
  }, onClick: (event) => {
466
533
  event.stopPropagation();
534
+ eventTracking?.addBreadcrumb?.({
535
+ message: 'Clicked delete table button in VirtualTableManager Table Cell',
536
+ data: {
537
+ table: table.name,
538
+ },
539
+ category: 'interaction',
540
+ level: 'info',
541
+ timestamp: Date.now(),
542
+ });
467
543
  deleteVirtualTable(table._id, table.name, table.name);
468
544
  }, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: 14, width: 14, style: {
469
545
  marginLeft: 'auto',
@@ -500,7 +576,7 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
500
576
  const [tableData, setTableData] = useState(undefined);
501
577
  const [errorInfo, setErrorInfo] = useState({ show: false, message: '' });
502
578
  const clientIsSingleTenant = useMemo(() => onlySingleDatabaseTenant(state.client), [state.client]);
503
- const { getToken } = useAdmin();
579
+ const { getToken, eventTracking } = useAdmin();
504
580
  useEffect(() => {
505
581
  setCustomFieldQuery(customFieldInfo?.query || '');
506
582
  setCustomFieldType(customFieldInfo?.type || 'eav');
@@ -622,7 +698,7 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
622
698
  }
623
699
  setErrorInfo({ show: false, message: '' });
624
700
  setRunQueryButtonLoading(true);
625
- const getSqlResults = await getVirtualTableData(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken, state.queryHeaders);
701
+ const getSqlResults = await getVirtualTableData(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken, eventTracking, state.queryHeaders);
626
702
  if (!getSqlResults.success) {
627
703
  setErrorInfo({
628
704
  show: true,