@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
@@ -7,20 +7,25 @@ exports.default = ConnectSchema;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_1 = require("react");
9
9
  const primitives_1 = require("../../primitives");
10
- const AdminProvider_1 = require("../../AdminProvider");
10
+ const useAdmin_1 = require("../../hooks/useAdmin");
11
11
  const EditTenant_1 = require("../../components/Tenants/EditTenant");
12
12
  const CardSection_1 = __importDefault(require("../../components/CardSection"));
13
13
  const useDatabaseSchema_1 = require("../../hooks/useDatabaseSchema");
14
14
  const UiComponents_1 = require("../../components/UiComponents");
15
+ const useLongLoading_1 = require("../../hooks/useLongLoading");
15
16
  function ConnectSchema({ containerStyle, header1Style,
16
17
  // header2Style,
17
18
  databaseSchema, connection, tenantInit, onTenantCreation, clientId, selectedSchemas, state, label, returnToConnectDatabase, }) {
18
19
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
20
  const [formError, setFormError] = (0, react_1.useState)(undefined);
20
21
  const [isSubmitTenantLoading, setSubmitTenantLoading] = (0, react_1.useState)(false);
22
+ (0, useLongLoading_1.useLongLoading)(isSubmitTenantLoading, {
23
+ origin: 'ConnectSchema',
24
+ loadDescription: 'Submitting tenant',
25
+ });
21
26
  const [tenantToEdit, setTenantToEdit] = (0, react_1.useState)(tenantInit?.ownerTenant);
22
27
  const { schema, isLoading } = (0, useDatabaseSchema_1.useDatabaseSchema)();
23
- const { quillFetchWithToken } = (0, AdminProvider_1.useAdmin)();
28
+ const { quillFetchWithToken, eventTracking } = (0, useAdmin_1.useAdmin)();
24
29
  const tenantRequest = async (tenant, mode, isOnboarding) => {
25
30
  return await quillFetchWithToken({
26
31
  client: {
@@ -76,6 +81,17 @@ databaseSchema, connection, tenantInit, onTenantCreation, clientId, selectedSche
76
81
  }
77
82
  catch (e) {
78
83
  console.log('error', e);
84
+ eventTracking?.logError?.({
85
+ type: 'bug', // TODO: determine type
86
+ severity: 'high',
87
+ message: 'Error updating tenant',
88
+ errorMessage: e.message,
89
+ errorStack: e.stack,
90
+ errorData: {
91
+ caller: 'ConnectSchema',
92
+ function: 'onSubmitEditTenant',
93
+ },
94
+ });
79
95
  setFormError('Error updating tenant');
80
96
  }
81
97
  finally {
@@ -105,11 +121,27 @@ databaseSchema, connection, tenantInit, onTenantCreation, clientId, selectedSche
105
121
  if (!results?.length) {
106
122
  setFormError(`No rows were returned from this ${tenant.tenantTableQuery ? 'query' : 'table'}`);
107
123
  }
124
+ const uniqueIds = new Set(results?.map((r) => r.id));
125
+ if (uniqueIds.size < results?.length) {
126
+ setFormError('Duplicate tenant IDs found in results. Each tenant must have a unique ID.');
127
+ return [];
128
+ }
108
129
  return results;
109
130
  }
110
131
  }
111
132
  catch (e) {
112
133
  console.log('error', e);
134
+ eventTracking?.logError?.({
135
+ type: 'bug', // TODO: determine type
136
+ severity: 'high',
137
+ message: 'Error validating tenant',
138
+ errorMessage: e.message,
139
+ errorStack: e.stack,
140
+ errorData: {
141
+ caller: 'ConnectSchema',
142
+ function: 'onValidateEditTenant',
143
+ },
144
+ });
113
145
  setFormError('Error validating tenant');
114
146
  return [];
115
147
  }
@@ -1,8 +1,7 @@
1
1
  import { CSSProperties } from 'react';
2
2
  import { ColumnsByTable } from '../../utils/table';
3
3
  import { ConnectionType } from '../../utils/databases';
4
- import { State } from '../../AdminProvider';
5
- import { QuillTenant } from '../../utils/tenants';
4
+ import { State } from '../../models/AdminContext';
6
5
  import { QuillProviderClient } from '@quillsql/react/dist/cjs/models/Client';
7
6
  import { TenantInit } from '../../utils/schema';
8
7
  export default function CreateVirtualTables({ containerStyle, header1Style, header2Style, environmentDetails, databaseSchema, completeOnboarding, client, state, tenantInit, isLoading, sqlTables, setSqlTables, }: {
@@ -38,10 +37,4 @@ export declare function VirtualTableModal({ isOpen, setIsOpen, queryInfo, setQue
38
37
  }) => void;
39
38
  addVirtualTable: (e: boolean) => Promise<void>;
40
39
  }): import("react/jsx-runtime").JSX.Element;
41
- export declare function TenantFieldModal({ isOpen, setClosed, tenant, onOverride, }: {
42
- isOpen: boolean;
43
- setClosed: () => void;
44
- tenant?: QuillTenant;
45
- onOverride?: () => void;
46
- }): import("react/jsx-runtime").JSX.Element;
47
40
  //# sourceMappingURL=CreateVirtualTables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CreateVirtualTables.d.ts","sourceRoot":"","sources":["../../../../src/forms/client_onboard/CreateVirtualTables.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AACnE,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAY3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOvD,OAAO,EAAE,KAAK,EAAY,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,GACb,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;CAClE,2CAwiBA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3D,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD,2CA2HA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,GACX,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,2CA8EA"}
1
+ {"version":3,"file":"CreateVirtualTables.d.ts","sourceRoot":"","sources":["../../../../src/forms/client_onboard/CreateVirtualTables.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AACnE,OAAO,EAAkB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUvD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAIlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,GACb,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,YAAY,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;CAClE,2CA2jBA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,EACT,SAAS,EACT,YAAY,EACZ,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3D,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD,2CA2HA"}
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.default = CreateVirtualTables;
7
7
  exports.VirtualTableModal = VirtualTableModal;
8
- exports.TenantFieldModal = TenantFieldModal;
9
8
  const react_1 = require("react");
10
9
  const jsx_runtime_1 = require("react/jsx-runtime");
11
10
  const react_2 = require("react");
@@ -15,11 +14,12 @@ const VirtualTableTile_1 = __importDefault(require("../../components/VirtualTabl
15
14
  const SqlTextEditor_1 = __importDefault(require("../../components/SqlTextEditor"));
16
15
  const react_3 = require("@quillsql/react");
17
16
  const UiComponents_1 = require("../../components/UiComponents");
18
- const VirtualTableManager_1 = require("../../public_components/VirtualTableManager");
19
17
  const columnProcessing_1 = require("../../utils/columnProcessing");
20
- const AdminProvider_1 = require("../../AdminProvider");
18
+ const useAdmin_1 = require("../../hooks/useAdmin");
21
19
  const constants_1 = require("../../utils/constants");
22
20
  const prism_react_renderer_1 = require("prism-react-renderer");
21
+ const useLongLoading_1 = require("../../hooks/useLongLoading");
22
+ const TenantFieldModal_1 = __importDefault(require("../../modals/TenantFieldModal"));
23
23
  function CreateVirtualTables({ containerStyle, header1Style, header2Style, environmentDetails, databaseSchema, completeOnboarding, client, state, tenantInit, isLoading, sqlTables, setSqlTables, }) {
24
24
  const [queryInfo, setQueryInfo] = (0, react_2.useState)({
25
25
  name: '',
@@ -33,11 +33,24 @@ function CreateVirtualTables({ containerStyle, header1Style, header2Style, envir
33
33
  const [openModalButtonLoading, setOpenModalButtonLoading] = (0, react_2.useState)(false);
34
34
  const [askAIButtonLoading, setAskAIButtonLoading] = (0, react_2.useState)(false);
35
35
  const [runQueryButtonLoading, setRunQueryButtonLoading] = (0, react_2.useState)(false);
36
+ (0, useLongLoading_1.useLongLoading)(openModalButtonLoading, {
37
+ origin: 'CreateVirtualTables',
38
+ loadDescription: 'Opening virtual table modal',
39
+ });
40
+ (0, useLongLoading_1.useLongLoading)(askAIButtonLoading, {
41
+ origin: 'CreateVirtualTables',
42
+ loadDescription: 'Asking AI',
43
+ });
44
+ (0, useLongLoading_1.useLongLoading)(runQueryButtonLoading, {
45
+ origin: 'CreateVirtualTables',
46
+ loadDescription: 'Running query',
47
+ });
36
48
  const [failingTenant, setFailingTenant] = (0, react_2.useState)(undefined);
49
+ const [failingTenantErrorType, setFailingTenantErrorType] = (0, react_2.useState)(undefined);
37
50
  const [tableSearchQuery, setTableSearchQuery] = (0, react_2.useState)('');
38
51
  const [displayedTableData, setDisplayedTableData] = (0, react_2.useState)(databaseSchema);
39
52
  const middleColumn = (0, react_2.useRef)(null);
40
- const { getToken, quillFetchWithToken } = (0, AdminProvider_1.useAdmin)();
53
+ const { getToken, quillFetchWithToken, eventTracking } = (0, useAdmin_1.useAdmin)();
41
54
  (0, react_2.useEffect)(() => {
42
55
  const scrollToBottom = () => {
43
56
  // Scroll to the bottom of the container (or page)
@@ -66,6 +79,7 @@ function CreateVirtualTables({ containerStyle, header1Style, header2Style, envir
66
79
  }) ?? [], client.clientId, tenantField === constants_1.SINGLE_TENANT || override ? [] : [tenantField], state.queryEndpoint, state.queryHeaders, getToken);
67
80
  if (results.failingTenant) {
68
81
  setFailingTenant(results.failingTenant);
82
+ setFailingTenantErrorType(results.failingTenantErrorType);
69
83
  return;
70
84
  }
71
85
  if (results.success && results.tables) {
@@ -169,7 +183,7 @@ function CreateVirtualTables({ containerStyle, header1Style, header2Style, envir
169
183
  paddingLeft: 16,
170
184
  paddingRight: 16,
171
185
  marginTop: 2,
172
- }, schema: displayedTableData, databaseType: environmentDetails?.type, resizable: false }) }), (0, jsx_runtime_1.jsxs)("div", { style: {
186
+ }, schema: databaseSchema, databaseType: environmentDetails?.type, resizable: false }) }), (0, jsx_runtime_1.jsxs)("div", { style: {
173
187
  display: 'flex',
174
188
  flexDirection: 'row',
175
189
  paddingTop: 12,
@@ -178,7 +192,7 @@ function CreateVirtualTables({ containerStyle, header1Style, header2Style, envir
178
192
  height: 70,
179
193
  }, children: [(0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: 'Run query', isLoading: runQueryButtonLoading, onClick: async () => {
180
194
  setRunQueryButtonLoading(true);
181
- const getSqlResults = await (0, ConnectionClient_1.getVirtualTableData)(client.clientId, queryInfo.query, environmentDetails.type, state.queryEndpoint, getToken, client.queryHeaders);
195
+ const getSqlResults = await (0, ConnectionClient_1.getVirtualTableData)(client.clientId, queryInfo.query, environmentDetails.type, state.queryEndpoint, getToken, eventTracking, client.queryHeaders);
182
196
  if (!getSqlResults.success) {
183
197
  setErrorInfo({ status: true, msg: getSqlResults.error });
184
198
  }
@@ -215,9 +229,10 @@ function CreateVirtualTables({ containerStyle, header1Style, header2Style, envir
215
229
  // textTransform: 'capitalize',
216
230
  }, children: sqlQueryError.msg })) : ((0, jsx_runtime_1.jsx)("div", {})), (0, jsx_runtime_1.jsx)("div", { "data-testid": "add-virtual-table-button", children: (0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: "Add Virtual Table", isLoading: openModalButtonLoading, disabled: !!failingTenant, onClick: async () => {
217
231
  setOpenModalButtonLoading(true);
218
- const duplicateColumns2 = (0, VirtualTableManager_1.getDuplicateColumns)(tableData?.fields);
232
+ const duplicateColumns2 = (0, columnProcessing_1.getDuplicateColumns)(tableData?.fields);
219
233
  if (duplicateColumns2.length > 0) {
220
234
  alert(`Ambiguous column names found. Either use aliases or remove the column to make every column name unique: \n\n${duplicateColumns2.join('\n')}`);
235
+ setOpenModalButtonLoading(false);
221
236
  return;
222
237
  }
223
238
  const clientId = client?.publicKey || client?.clientId;
@@ -312,10 +327,10 @@ function CreateVirtualTables({ containerStyle, header1Style, header2Style, envir
312
327
  completeOnboarding();
313
328
  }, style: {
314
329
  // marginBottom: -8,
315
- }, isLoading: isLoading }) })) : null] })] }), (0, jsx_runtime_1.jsx)(TenantFieldModal, { isOpen: !!failingTenant, setClosed: () => setFailingTenant(undefined), tenant: failingTenant, onOverride: () => addVirtualTable(true) }), (0, jsx_runtime_1.jsx)(VirtualTableModal, { isOpen: virtualTableModalOpen, setIsOpen: setVirtualTableModalOpen, queryInfo: queryInfo, setQueryInfo: setQueryInfo, addVirtualTable: () => addVirtualTable(false) })] }));
330
+ }, isLoading: isLoading }) })) : null] })] }), (0, jsx_runtime_1.jsx)(TenantFieldModal_1.default, { isOpen: !!failingTenant, setClosed: () => setFailingTenant(undefined), tenant: failingTenant, onOverride: () => addVirtualTable(true), errorType: failingTenantErrorType }), (0, jsx_runtime_1.jsx)(VirtualTableModal, { isOpen: virtualTableModalOpen, setIsOpen: setVirtualTableModalOpen, queryInfo: queryInfo, setQueryInfo: setQueryInfo, addVirtualTable: () => addVirtualTable(false) })] }));
316
331
  }
317
332
  function VirtualTableModal({ isOpen, setIsOpen, queryInfo, setQueryInfo, addVirtualTable, }) {
318
- const { state: { theme }, } = (0, AdminProvider_1.useAdmin)();
333
+ const { state: { theme }, } = (0, useAdmin_1.useAdmin)();
319
334
  return ((0, jsx_runtime_1.jsx)(primitives_1.ModalPrimitive, { isOpen: isOpen, onClose: () => {
320
335
  setIsOpen(false);
321
336
  }, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', width: '100%' }, children: [(0, jsx_runtime_1.jsx)("h1", { style: {
@@ -368,33 +383,3 @@ function VirtualTableModal({ isOpen, setIsOpen, queryInfo, setQueryInfo, addVirt
368
383
  setIsOpen(false);
369
384
  } })] })] }) }));
370
385
  }
371
- function TenantFieldModal({ isOpen, setClosed, tenant, onOverride, }) {
372
- return ((0, jsx_runtime_1.jsx)(primitives_1.ModalPrimitive, { isOpen: isOpen, onClose: () => setClosed(), children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', width: '500px' }, children: [(0, jsx_runtime_1.jsx)("h1", { style: {
373
- fontSize: 24,
374
- fontWeight: 600,
375
- color: '#212121',
376
- paddingBottom: 14,
377
- }, children: "Foreign Key Missing" }), (0, jsx_runtime_1.jsxs)("div", { style: { marginBottom: '12px' }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
378
- color: '#212121',
379
- fontWeight: 600,
380
- backgroundColor: '#f7f7f7',
381
- padding: '2px 4px',
382
- borderRadius: 4,
383
- border: '1px solid #e0e0e0',
384
- }, children: tenant?.name }), "'s foreign key", ' ', (0, jsx_runtime_1.jsx)("span", { style: {
385
- color: 'red',
386
- fontWeight: 600,
387
- backgroundColor: '#f7f7f7',
388
- padding: '2px 4px',
389
- borderRadius: 4,
390
- border: '1px solid #e0e0e0',
391
- }, children: tenant?.tenantField.replaceAll('"', '') }), ' ', "is not present in the current query to allow for filtering.", onOverride ? ((0, jsx_runtime_1.jsxs)("span", { children: [' ', "Only override if this data is meant to be accessible by", ' ', (0, jsx_runtime_1.jsx)("strong", { children: "every tenant" }), " (this is rare)"] })) : ((0, jsx_runtime_1.jsxs)("span", { children: [' ', "If this tenant is not meant to filter this data, remove it from the owners dropdown"] }))] }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
392
- display: 'flex',
393
- flexDirection: 'row',
394
- gap: '12px',
395
- justifyContent: 'flex-end',
396
- }, children: [onOverride && ((0, jsx_runtime_1.jsx)(primitives_1.SecondaryButtonPrimitive, { label: "Override", onClick: () => {
397
- onOverride();
398
- setClosed();
399
- } })), (0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { label: "Got It", onClick: () => setClosed() })] })] }) }));
400
- }
@@ -8,7 +8,7 @@ const react_1 = require("react");
8
8
  const react_2 = require("@testing-library/react");
9
9
  require("@testing-library/jest-dom");
10
10
  const ConnectDatabase_1 = __importDefault(require("../ConnectDatabase"));
11
- const AdminProvider_1 = require("../../../AdminProvider");
11
+ const useAdmin_1 = require("../../../hooks/useAdmin");
12
12
  // Mock the hooks
13
13
  jest.mock('../../../AdminProvider');
14
14
  jest.mock('@quillsql/react');
@@ -61,7 +61,7 @@ describe('ConnectDatabase', () => {
61
61
  // Reset all mocks before each test
62
62
  jest.clearAllMocks();
63
63
  // Setup default mock implementations
64
- AdminProvider_1.useAdmin.mockReturnValue({ state: mockState });
64
+ useAdmin_1.useAdmin.mockReturnValue({ state: mockState });
65
65
  });
66
66
  // Database Type Selection Tests
67
67
  describe('Database Type Selection', () => {
@@ -8,8 +8,8 @@ const react_1 = require("react");
8
8
  const react_2 = require("@testing-library/react");
9
9
  require("@testing-library/jest-dom");
10
10
  const ConnectSchema_1 = __importDefault(require("../ConnectSchema"));
11
- const AdminProvider_1 = require("../../../AdminProvider");
12
- const Admin_1 = require("../../../Admin");
11
+ const useAdmin_1 = require("../../../hooks/useAdmin");
12
+ const Provider_1 = require("../../../models/Provider");
13
13
  // Add these mocks before the describe block
14
14
  class MockResizeObserver {
15
15
  observe() { }
@@ -93,10 +93,10 @@ describe('ConnectSchema', () => {
93
93
  selectedDashboard: null,
94
94
  reportId: null,
95
95
  report: null,
96
- theme: Admin_1.defaultTheme,
96
+ theme: Provider_1.defaultTheme,
97
97
  organizationIdSet: false,
98
98
  dateFilter: {},
99
- domainName: '',
99
+ clerkOrgId: '',
100
100
  databaseTypeMismatch: { show: false, backendDatabaseType: '' },
101
101
  selectedTenantField: undefined,
102
102
  selectedTenantValues: undefined,
@@ -201,7 +201,7 @@ describe('ConnectSchema', () => {
201
201
  // Reset all mocks before each test
202
202
  jest.clearAllMocks();
203
203
  // Setup default mock implementations
204
- AdminProvider_1.useAdmin.mockReturnValue({
204
+ useAdmin_1.useAdmin.mockReturnValue({
205
205
  state: {
206
206
  queryEndpoint: 'http://test-endpoint',
207
207
  client: {
@@ -8,8 +8,8 @@ const react_1 = require("react");
8
8
  const react_2 = require("@testing-library/react");
9
9
  require("@testing-library/jest-dom");
10
10
  const CreateVirtualTables_1 = __importDefault(require("../CreateVirtualTables"));
11
- const AdminProvider_1 = require("../../../AdminProvider");
12
- const Admin_1 = require("../../../Admin");
11
+ const useAdmin_1 = require("../../../hooks/useAdmin");
12
+ const Provider_1 = require("../../../models/Provider");
13
13
  // Mock the hooks
14
14
  jest.mock('../../../AdminProvider');
15
15
  jest.mock('@quillsql/react', () => ({
@@ -77,10 +77,10 @@ describe('CreateVirtualTables', () => {
77
77
  selectedDashboard: null,
78
78
  reportId: null,
79
79
  report: null,
80
- theme: Admin_1.defaultTheme,
80
+ theme: Provider_1.defaultTheme,
81
81
  organizationIdSet: false,
82
82
  dateFilter: {},
83
- domainName: '',
83
+ clerkOrgId: '',
84
84
  databaseTypeMismatch: { show: false, backendDatabaseType: '' },
85
85
  selectedTenantField: undefined,
86
86
  selectedTenantValues: undefined,
@@ -183,7 +183,7 @@ describe('CreateVirtualTables', () => {
183
183
  // Reset all mocks before each test
184
184
  jest.clearAllMocks();
185
185
  // Setup default mock implementations
186
- AdminProvider_1.useAdmin.mockReturnValue({
186
+ useAdmin_1.useAdmin.mockReturnValue({
187
187
  state: mockState,
188
188
  getToken: mockGetToken,
189
189
  quillFetchWithToken: mockQuillFetchWithToken,
@@ -1,7 +1,7 @@
1
1
  import { ButtonComponentProps } from '@quillsql/react';
2
2
  import { TextInputComponentProps } from '../../components/UiComponents';
3
3
  import { ColumnsByTable, Table as TableType } from '../../utils/table';
4
- import { QuillProviderClient } from '../../Admin';
4
+ import { QuillProviderClient } from '../../models/Provider';
5
5
  interface CreateEditVirtualTableProps {
6
6
  containerStyle: React.CSSProperties;
7
7
  initialVirtualTable?: TableType;
@@ -1 +1 @@
1
- {"version":3,"file":"CreateEditVirtualTable.d.ts","sourceRoot":"","sources":["../../../../src/forms/virtual_tables/CreateEditVirtualTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAGrB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAOL,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAU,cAAc,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAO/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,UAAU,2BAA2B;IACnC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACxE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,mBAAmB,EAAE,CACnB,OAAO,EAAE,KAAK,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EAAE,EAC3B,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,GAAG,EAAE,EACf,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;IACV,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,gBAA2C,EAC3C,eAAgC,EAChC,wBAAkD,EAClD,SAA6B,EAC7B,YAAY,EACZ,eAAe,EACf,MAAM,GACP,EAAE,2BAA2B,GAAG,GAAG,CAAC,OAAO,CA+gB3C"}
1
+ {"version":3,"file":"CreateEditVirtualTable.d.ts","sourceRoot":"","sources":["../../../../src/forms/virtual_tables/CreateEditVirtualTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAGrB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAOL,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,cAAc,EACd,KAAK,IAAI,SAAS,EACnB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,UAAU,2BAA2B;IACnC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACxE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,mBAAmB,EAAE,CACnB,OAAO,EAAE,KAAK,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EAAE,EAC3B,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,GAAG,EAAE,EACf,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;IACV,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EAAE,qBAAqB,EAC5C,mBAAmB,EAAE,mBAAmB,EACxC,gBAA2C,EAC3C,eAAgC,EAChC,wBAAkD,EAClD,SAA6B,EAC7B,YAAY,EACZ,eAAe,EACf,MAAM,GACP,EAAE,2BAA2B,GAAG,GAAG,CAAC,OAAO,CA6mB3C"}
@@ -7,14 +7,14 @@ exports.default = CreateEditVirtualTable;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const react_1 = require("@quillsql/react");
9
9
  const react_2 = require("react");
10
- const AdminProvider_1 = require("../../AdminProvider");
10
+ const useAdmin_1 = require("../../hooks/useAdmin");
11
11
  const ConnectionClient_1 = require("../../api/ConnectionClient");
12
12
  const SqlTextEditor_1 = __importDefault(require("../../components/SqlTextEditor"));
13
13
  const UiComponents_1 = require("../../components/UiComponents");
14
- const CreateVirtualTables_1 = require("../client_onboard/CreateVirtualTables");
14
+ const TenantFieldModal_1 = __importDefault(require("../../modals/TenantFieldModal"));
15
15
  const DynamicBanner_1 = __importDefault(require("../../components/DynamicBanner"));
16
- const VirtualTableManager_1 = require("../../public_components/VirtualTableManager");
17
16
  const columnProcessing_1 = require("../../utils/columnProcessing");
17
+ const columnProcessing_2 = require("../../utils/columnProcessing");
18
18
  const astProcessing_1 = require("../../utils/astProcessing");
19
19
  const constants_1 = require("../../utils/constants");
20
20
  const tenants_1 = require("../../utils/tenants");
@@ -30,6 +30,7 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
30
30
  client.ownerTenantFields?.filter((f) => f !== constants_1.SINGLE_TENANT) ??
31
31
  []);
32
32
  const [failingTenant, setFailingTenant] = (0, react_2.useState)(undefined);
33
+ const [failingTenantErrorType, setFailingTenantErrorType] = (0, react_2.useState)(undefined);
33
34
  const [isLoading, setIsLoading] = (0, react_2.useState)(false);
34
35
  const [tableSearchQuery, setTableSearchQuery] = (0, react_2.useState)('');
35
36
  const [editorMounted, setEditorMounted] = (0, react_2.useState)(false);
@@ -37,15 +38,37 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
37
38
  const [errorInfo, setErrorInfo] = (0, react_2.useState)({ show: false, message: '' });
38
39
  const [tableData, setTableData] = (0, react_2.useState)(undefined);
39
40
  const [runningQuery, setRunningQuery] = (0, react_2.useState)(false);
40
- const { state, getToken, quillFetchWithToken } = (0, AdminProvider_1.useAdmin)();
41
+ const { state, getToken, quillFetchWithToken, eventTracking } = (0, useAdmin_1.useAdmin)();
41
42
  const containerRef = (0, react_2.useRef)(null);
42
43
  const addEditProcessVirtualTable = async (override = false) => {
43
- const failingTenant = virtualTableOwners?.find((field) => tableData &&
44
+ const missingTenantField = virtualTableOwners?.find((field) => tableData &&
44
45
  !tableData.fields.find((col) => col.name === field?.replaceAll('"', '')));
45
- if (!override && tableData && failingTenant) {
46
- const tenant = client.allTenantTypes?.find((t) => t.tenantField === failingTenant);
47
- setFailingTenant(tenant);
48
- return;
46
+ if (!override && tableData) {
47
+ if (missingTenantField) {
48
+ const tenant = client.allTenantTypes?.find((t) => t.tenantField === missingTenantField);
49
+ setFailingTenant(tenant);
50
+ setFailingTenantErrorType('missing');
51
+ return;
52
+ }
53
+ else {
54
+ // let typeMismatchedTenant: QuillTenant | undefined;
55
+ // check that the all tenant field type match
56
+ // loop through all virtualTableOwneers and check the field type
57
+ const typeMismatchedTenant = virtualTableOwners.find((owner) => {
58
+ const tenant = client.allTenantTypes?.find((t) => t.tenantField === owner);
59
+ const tableDataField = tableData.fields.find((col) => col.name === owner?.replaceAll('"', ''));
60
+ return ((tenant?.fieldType === 'string' &&
61
+ (0, columnProcessing_2.isNumberType)(tableDataField?.fieldType ?? '')) ||
62
+ (tenant?.fieldType === 'number' &&
63
+ (0, columnProcessing_2.isStringType)(tableDataField?.fieldType ?? '')));
64
+ });
65
+ if (typeMismatchedTenant) {
66
+ const tenant = client.allTenantTypes?.find((t) => t.tenantField === typeMismatchedTenant);
67
+ setFailingTenant(tenant);
68
+ setFailingTenantErrorType('type_mismatch');
69
+ return;
70
+ }
71
+ }
49
72
  }
50
73
  addEditVirtualTable(initialVirtualTable ? 'edit' : 'add', ranVirtualTableQuery, virtualTableOwners, name, initialVirtualTable ? initialVirtualTable._id : undefined, tableData?.fields || [], override);
51
74
  };
@@ -60,6 +83,12 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
60
83
  // Run query on mount
61
84
  (0, react_2.useEffect)(() => {
62
85
  if (initialVirtualTable) {
86
+ eventTracking?.addBreadcrumb?.({
87
+ message: 'Initial Query Run on CreateEditVirtualTable load',
88
+ category: 'network',
89
+ level: 'info',
90
+ timestamp: Date.now(),
91
+ });
63
92
  handleRunQuery(initialVirtualTable.viewQuery);
64
93
  }
65
94
  }, []);
@@ -67,6 +96,12 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
67
96
  setErrorInfo({ show: false, message: '' });
68
97
  setVirtualTableAddable(false);
69
98
  setAskAIButtonLoading(true);
99
+ eventTracking?.addBreadcrumb?.({
100
+ message: 'Used Ask AI in CreateEditVirtualTable',
101
+ category: 'network',
102
+ level: 'info',
103
+ timestamp: Date.now(),
104
+ });
70
105
  const results = await (0, ConnectionClient_1.getQueryFromAiWithConnection)(state.isSelfHosted, allTableData, state.queryEndpoint, aiPrompt, state.client._id, getToken, state.client.schemaNames, state.queryHeaders);
71
106
  setEditVirtualTableQuery(results);
72
107
  setAskAIButtonLoading(false);
@@ -76,7 +111,7 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
76
111
  if (!name) {
77
112
  return;
78
113
  }
79
- const newQuery = `SELECT * FROM ${(0, columnProcessing_1.processColumnReference)(name, state.client.databaseType)};`;
114
+ const newQuery = `SELECT * FROM ${(0, columnProcessing_2.processColumnReference)(name, state.client.databaseType)};`;
80
115
  if (!editVirtualTableQuery || editVirtualTableQuery.length === 0) {
81
116
  setEditVirtualTableQuery(newQuery);
82
117
  }
@@ -112,7 +147,7 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
112
147
  return;
113
148
  }
114
149
  setIsLoading(true);
115
- const resp = await (0, ConnectionClient_1.getVirtualTableData)(state.client._id, query, state.client.databaseType, state.queryEndpoint, getToken, state.queryHeaders);
150
+ const resp = await (0, ConnectionClient_1.getVirtualTableData)(state.client._id, query, state.client.databaseType, state.queryEndpoint, getToken, eventTracking, state.queryHeaders);
116
151
  if (!resp.success) {
117
152
  setErrorInfo({ show: true, message: resp.error });
118
153
  setTableData(undefined);
@@ -131,7 +166,7 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
131
166
  }
132
167
  return row;
133
168
  });
134
- const duplicateColumns = (0, VirtualTableManager_1.getDuplicateColumns)(resp.fields);
169
+ const duplicateColumns = (0, columnProcessing_1.getDuplicateColumns)(resp.fields);
135
170
  if (duplicateColumns.length > 0 && !runOnce) {
136
171
  let parsedAST = resp.ast;
137
172
  if (Array.isArray(resp.ast)) {
@@ -249,10 +284,27 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
249
284
  flexDirection: 'row',
250
285
  justifyContent: 'space-between',
251
286
  }, children: [(0, jsx_runtime_1.jsx)(ButtonComponent, { label: 'Run query', onClick: () => {
287
+ eventTracking?.addBreadcrumb?.({
288
+ message: 'Clicked run query button in CreateEditVirtualTable',
289
+ category: 'interaction',
290
+ level: 'info',
291
+ timestamp: Date.now(),
292
+ });
252
293
  handleRunQuery();
253
294
  } }), !!dashboardOwnerTenants?.length && ((0, jsx_runtime_1.jsx)(QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, { label: 'Owner Tenants', width: 230, value: virtualTableOwners, options: dashboardOwnerTenants?.map((f) => {
254
295
  return { value: f.tenantField, label: f.name };
255
- }) ?? [], onChange: (e) => setVirtualTableOwners(e.target.value), allSelectedLabel: (0, jsx_runtime_1.jsx)("div", { children: "All tenants" }), noneSelectedLabel: (0, jsx_runtime_1.jsx)("div", { children: "No owners" }) }))] })), errorInfo.show ? ((0, jsx_runtime_1.jsx)("div", { style: {
296
+ }) ?? [], onChange: (e) => {
297
+ setVirtualTableOwners(e.target.value);
298
+ eventTracking?.addBreadcrumb?.({
299
+ message: 'Changed owner tenants in CreateEditVirtualTable',
300
+ category: 'interaction',
301
+ level: 'info',
302
+ timestamp: Date.now(),
303
+ data: {
304
+ ownerTenants: e.target.value,
305
+ },
306
+ });
307
+ }, allSelectedLabel: (0, jsx_runtime_1.jsx)("div", { children: "All tenants" }), noneSelectedLabel: (0, jsx_runtime_1.jsx)("div", { children: "No owners" }) }))] })), errorInfo.show ? ((0, jsx_runtime_1.jsx)("div", { style: {
256
308
  fontSize: 15,
257
309
  fontWeight: '400',
258
310
  width: '100%',
@@ -274,8 +326,38 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
274
326
  flexDirection: 'row',
275
327
  gap: 12,
276
328
  marginTop: 'auto',
277
- }, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: closeEditVirtualTable, label: 'Discard changes' }), (0, jsx_runtime_1.jsx)(ButtonComponent, { label: `${initialVirtualTable ? 'Save changes' : 'Create virtual table'}`, onClick: () => {
278
- const duplicateColumns = (0, VirtualTableManager_1.getDuplicateColumns)(tableData?.fields);
329
+ }, children: [(0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: () => {
330
+ closeEditVirtualTable();
331
+ eventTracking?.addBreadcrumb?.({
332
+ message: 'Clicked discard changes button in CreateEditVirtualTable',
333
+ category: 'interaction',
334
+ level: 'info',
335
+ timestamp: Date.now(),
336
+ });
337
+ }, label: 'Discard changes' }), (0, jsx_runtime_1.jsx)(ButtonComponent, { label: `${initialVirtualTable ? 'Save changes' : 'Create virtual table'}`, onClick: () => {
338
+ if (initialVirtualTable) {
339
+ eventTracking?.addBreadcrumb?.({
340
+ message: 'Saved changes to existing virtual table',
341
+ data: {
342
+ virtualTable: initialVirtualTable.name,
343
+ },
344
+ category: 'interaction',
345
+ level: 'info',
346
+ timestamp: Date.now(),
347
+ });
348
+ }
349
+ else {
350
+ eventTracking?.addBreadcrumb?.({
351
+ message: 'Created new virtual table',
352
+ data: {
353
+ virtualTable: name,
354
+ },
355
+ category: 'interaction',
356
+ level: 'info',
357
+ timestamp: Date.now(),
358
+ });
359
+ }
360
+ const duplicateColumns = (0, columnProcessing_1.getDuplicateColumns)(tableData?.fields);
279
361
  if (duplicateColumns.length > 0) {
280
362
  alert(`Ambiguous column names found. Either use aliases or remove the column to make every column name unique: \n\n${duplicateColumns.join('\n')}`);
281
363
  return;
@@ -294,5 +376,5 @@ function CreateEditVirtualTable({ containerStyle, initialVirtualTable, closeEdit
294
376
  display: 'flex',
295
377
  flexDirection: 'row',
296
378
  gap: 12,
297
- }, children: (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: closeEditVirtualTable, label: 'Discard changes' }) }))] })] }), (0, jsx_runtime_1.jsx)(CreateVirtualTables_1.TenantFieldModal, { isOpen: !!failingTenant, setClosed: () => setFailingTenant(undefined), tenant: failingTenant })] }) }));
379
+ }, children: (0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { onClick: closeEditVirtualTable, label: 'Discard changes' }) }))] })] }), (0, jsx_runtime_1.jsx)(TenantFieldModal_1.default, { isOpen: !!failingTenant, setClosed: () => setFailingTenant(undefined), tenant: failingTenant, errorType: failingTenantErrorType })] }) }));
298
380
  }
@@ -0,0 +1,16 @@
1
+ import { EventTracking } from '@quillsql/react';
2
+ import { Action, State } from '../models/AdminContext';
3
+ import { QuillFetchOptions, QuillResults } from '../utils/dataFetcher';
4
+ import { QuillProviderClient } from '../models/Provider';
5
+ export declare const useAdmin: () => {
6
+ state: State;
7
+ dispatch: React.Dispatch<Action>;
8
+ clientLoading: boolean;
9
+ setClient: (client: QuillProviderClient, fetchTenantInfo?: boolean) => void;
10
+ getToken: () => Promise<string>;
11
+ quillFetchWithToken: (options: Omit<QuillFetchOptions, "getToken">) => Promise<QuillResults>;
12
+ eventTracking: EventTracking | null;
13
+ onOnboardComplete?: (client: any) => void;
14
+ onRequestAddVirtualTable?: () => void;
15
+ };
16
+ //# sourceMappingURL=useAdmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAdmin.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAdmin.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,eAAO,MAAM,QAAQ,QAAO;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,eAAe,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5E,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,mBAAmB,EAAE,CACnB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,KACzC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC1C,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;CAOvC,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAdmin = void 0;
4
+ const react_1 = require("react");
5
+ const AdminContext_1 = require("../models/AdminContext");
6
+ const useAdmin = () => {
7
+ const context = (0, react_1.useContext)(AdminContext_1.AdminContext);
8
+ if (context === undefined) {
9
+ throw new Error('useAdmin must be used within an AdminProvider');
10
+ }
11
+ return { ...context, clientLoading: context.loading };
12
+ };
13
+ exports.useAdmin = useAdmin;
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useDashboardManager = void 0;
4
4
  const react_1 = require("@quillsql/react");
5
- const AdminProvider_1 = require("../AdminProvider");
5
+ const useAdmin_1 = require("../hooks/useAdmin");
6
6
  const react_2 = require("react");
7
7
  const constants_1 = require("../utils/constants");
8
8
  const useDashboardManager = () => {
9
9
  const { dashboards } = (0, react_1.useDashboards)();
10
- const { state, dispatch } = (0, AdminProvider_1.useAdmin)();
10
+ const { state, dispatch } = (0, useAdmin_1.useAdmin)();
11
11
  const selectedDashboard = (0, react_2.useMemo)(() => dashboards?.find((d) => d.name === state.selectedDashboard), [dashboards, state.selectedDashboard]);
12
12
  const setSelectedDashboard = (name, reportId) => {
13
13
  if (!name || name === constants_1.SAVED_QUERIES_DASHBOARD) {
@@ -1 +1 @@
1
- {"version":3,"file":"useDatabaseSchema.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDatabaseSchema.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB;;;CAgE7B,CAAC"}
1
+ {"version":3,"file":"useDatabaseSchema.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDatabaseSchema.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB;;;CA2E7B,CAAC"}