@quillsql/admin 1.6.4 → 1.7.0

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 (222) hide show
  1. package/dist/cjs/Admin.d.ts +11 -8
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +114 -7
  4. package/dist/cjs/AdminProvider.d.ts +24 -5
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +173 -85
  7. package/dist/cjs/api/ConnectionClient.d.ts +6 -3
  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/ClipboardButton.d.ts.map +1 -1
  13. package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
  14. package/dist/cjs/components/DashboardSelectPopover.js +29 -1
  15. package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  16. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts +1 -1
  17. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
  18. package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
  19. package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  20. package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
  21. package/dist/cjs/components/InternalDashboard/InternalDashboard.js +114 -34
  22. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  23. package/dist/cjs/components/OrgSelect.js +48 -4
  24. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +5 -1
  25. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  26. package/dist/cjs/components/QuillMultiSelectWithCombo.js +328 -149
  27. package/dist/cjs/components/QuillSelectWithCombo.d.ts +4 -3
  28. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  29. package/dist/cjs/components/QuillSelectWithCombo.js +34 -6
  30. package/dist/cjs/components/QuillToolTipPortal.d.ts.map +1 -1
  31. package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
  32. package/dist/cjs/components/SqlTextEditor.js +15 -2
  33. package/dist/cjs/components/Tenants/EditTenant.d.ts.map +1 -1
  34. package/dist/cjs/components/Tenants/EditTenant.js +51 -8
  35. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  36. package/dist/cjs/components/UiComponents.js +1 -0
  37. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  38. package/dist/cjs/forms/client_onboard/ConnectDatabase.js +50 -2
  39. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  40. package/dist/cjs/forms/client_onboard/ConnectSchema.js +33 -1
  41. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
  42. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
  43. package/dist/cjs/forms/client_onboard/CreateVirtualTables.js +55 -21
  44. package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.js +1 -1
  45. package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.js +1 -1
  46. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
  47. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.js +92 -10
  48. package/dist/cjs/hooks/useDatabaseSchema.d.ts.map +1 -1
  49. package/dist/cjs/hooks/useDatabaseSchema.js +12 -1
  50. package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
  51. package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
  52. package/dist/cjs/hooks/useLongLoading.js +67 -0
  53. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  54. package/dist/cjs/hooks/useThrottle.d.ts.map +1 -1
  55. package/dist/cjs/icons/ArrowDownHeadIcon.d.ts.map +1 -1
  56. package/dist/cjs/icons/CheckCircleIcon.d.ts.map +1 -1
  57. package/dist/cjs/icons/ExclamationFilledIcon.d.ts.map +1 -1
  58. package/dist/cjs/icons/ExteriorLinkIcon.d.ts.map +1 -1
  59. package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
  60. package/dist/cjs/modals/CodePreview.d.ts.map +1 -1
  61. package/dist/cjs/modals/CodePreview.js +7 -2
  62. package/dist/cjs/modals/CreateEnvironmentModal.d.ts +5 -0
  63. package/dist/cjs/modals/CreateEnvironmentModal.d.ts.map +1 -0
  64. package/dist/cjs/modals/CreateEnvironmentModal.js +21 -0
  65. package/dist/cjs/modals/EditEnvironmentModal.d.ts.map +1 -1
  66. package/dist/cjs/modals/EditEnvironmentModal.js +67 -15
  67. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
  68. package/dist/cjs/modals/EditFiltersModal.js +12 -8
  69. package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
  70. package/dist/cjs/modals/NewDashboardModal.js +54 -28
  71. package/dist/cjs/modals/PromoteReportModal.d.ts.map +1 -1
  72. package/dist/cjs/modals/PromoteReportModal.js +15 -4
  73. package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
  74. package/dist/cjs/modals/PromoteViewModal.js +13 -2
  75. package/dist/cjs/primitives/CheckboxPrimitive.d.ts.map +1 -1
  76. package/dist/cjs/primitives/CheckboxPrimitive.js +2 -0
  77. package/dist/cjs/primitives/PopoverPrimitive.d.ts.map +1 -1
  78. package/dist/cjs/primitives/PopoverPrimitive.js +16 -5
  79. package/dist/cjs/primitives/TogglePrimitive.d.ts.map +1 -1
  80. package/dist/cjs/public_components/ChartQueryBuilder.d.ts.map +1 -1
  81. package/dist/cjs/public_components/ChartQueryBuilder.js +6 -6
  82. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  83. package/dist/cjs/public_components/CreateEnvironment.js +49 -16
  84. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  85. package/dist/cjs/public_components/DashboardManager.js +63 -5
  86. package/dist/cjs/public_components/EnvSelectPopover.d.ts.map +1 -1
  87. package/dist/cjs/public_components/EnvSelectPopover.js +31 -3
  88. package/dist/cjs/public_components/VirtualTableManager.d.ts.map +1 -1
  89. package/dist/cjs/public_components/VirtualTableManager.js +95 -5
  90. package/dist/cjs/public_components/__tests__/CreateEnvironment.test.js +41 -2
  91. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  92. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  93. package/dist/cjs/utils/columnProcessing.js +6 -1
  94. package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
  95. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  96. package/dist/cjs/utils/databases.d.ts +6 -1
  97. package/dist/cjs/utils/databases.d.ts.map +1 -1
  98. package/dist/cjs/utils/databases.js +18 -0
  99. package/dist/cjs/utils/delay.d.ts.map +1 -1
  100. package/dist/cjs/utils/filter.d.ts +17 -21
  101. package/dist/cjs/utils/filter.d.ts.map +1 -1
  102. package/dist/cjs/utils/filter.js +6 -6
  103. package/dist/cjs/utils/report.d.ts +5 -5
  104. package/dist/cjs/utils/report.d.ts.map +1 -1
  105. package/dist/cjs/utils/schema.d.ts +6 -3
  106. package/dist/cjs/utils/schema.d.ts.map +1 -1
  107. package/dist/cjs/utils/schema.js +42 -3
  108. package/dist/cjs/utils/table.d.ts.map +1 -1
  109. package/dist/cjs/utils/tenants.d.ts.map +1 -1
  110. package/dist/cjs/utils/ui.d.ts.map +1 -1
  111. package/dist/esm/Admin.d.ts +11 -8
  112. package/dist/esm/Admin.d.ts.map +1 -1
  113. package/dist/esm/Admin.js +115 -8
  114. package/dist/esm/AdminProvider.d.ts +24 -5
  115. package/dist/esm/AdminProvider.d.ts.map +1 -1
  116. package/dist/esm/AdminProvider.js +174 -86
  117. package/dist/esm/api/ConnectionClient.d.ts +6 -3
  118. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  119. package/dist/esm/api/ConnectionClient.js +66 -6
  120. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  121. package/dist/esm/assets/XIcon.d.ts.map +1 -1
  122. package/dist/esm/components/ClipboardButton.d.ts.map +1 -1
  123. package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
  124. package/dist/esm/components/DashboardSelectPopover.js +29 -1
  125. package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  126. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts +1 -1
  127. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
  128. package/dist/esm/components/InternalDashboard/DashboardFilter.js +1 -1
  129. package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
  130. package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  131. package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
  132. package/dist/esm/components/InternalDashboard/InternalDashboard.js +115 -35
  133. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  134. package/dist/esm/components/OrgSelect.js +48 -4
  135. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +5 -1
  136. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  137. package/dist/esm/components/QuillMultiSelectWithCombo.js +328 -149
  138. package/dist/esm/components/QuillSelectWithCombo.d.ts +4 -3
  139. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  140. package/dist/esm/components/QuillSelectWithCombo.js +34 -6
  141. package/dist/esm/components/QuillToolTipPortal.d.ts.map +1 -1
  142. package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
  143. package/dist/esm/components/SqlTextEditor.js +15 -2
  144. package/dist/esm/components/Tenants/EditTenant.d.ts.map +1 -1
  145. package/dist/esm/components/Tenants/EditTenant.js +51 -8
  146. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  147. package/dist/esm/components/UiComponents.js +1 -0
  148. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  149. package/dist/esm/forms/client_onboard/ConnectDatabase.js +50 -2
  150. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  151. package/dist/esm/forms/client_onboard/ConnectSchema.js +33 -1
  152. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
  153. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
  154. package/dist/esm/forms/client_onboard/CreateVirtualTables.js +56 -22
  155. package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.js +1 -1
  156. package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.js +1 -1
  157. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
  158. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.js +93 -11
  159. package/dist/esm/hooks/useDatabaseSchema.d.ts.map +1 -1
  160. package/dist/esm/hooks/useDatabaseSchema.js +12 -1
  161. package/dist/esm/hooks/useLongLoading.d.ts +13 -0
  162. package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
  163. package/dist/esm/hooks/useLongLoading.js +64 -0
  164. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  165. package/dist/esm/hooks/useThrottle.d.ts.map +1 -1
  166. package/dist/esm/icons/ArrowDownHeadIcon.d.ts.map +1 -1
  167. package/dist/esm/icons/CheckCircleIcon.d.ts.map +1 -1
  168. package/dist/esm/icons/ExclamationFilledIcon.d.ts.map +1 -1
  169. package/dist/esm/icons/ExteriorLinkIcon.d.ts.map +1 -1
  170. package/dist/esm/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
  171. package/dist/esm/modals/CodePreview.d.ts.map +1 -1
  172. package/dist/esm/modals/CodePreview.js +7 -2
  173. package/dist/esm/modals/CreateEnvironmentModal.d.ts +5 -0
  174. package/dist/esm/modals/CreateEnvironmentModal.d.ts.map +1 -0
  175. package/dist/esm/modals/CreateEnvironmentModal.js +15 -0
  176. package/dist/esm/modals/EditEnvironmentModal.d.ts.map +1 -1
  177. package/dist/esm/modals/EditEnvironmentModal.js +67 -15
  178. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
  179. package/dist/esm/modals/EditFiltersModal.js +13 -9
  180. package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
  181. package/dist/esm/modals/NewDashboardModal.js +55 -29
  182. package/dist/esm/modals/PromoteReportModal.d.ts.map +1 -1
  183. package/dist/esm/modals/PromoteReportModal.js +15 -4
  184. package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
  185. package/dist/esm/modals/PromoteViewModal.js +13 -2
  186. package/dist/esm/primitives/CheckboxPrimitive.d.ts.map +1 -1
  187. package/dist/esm/primitives/CheckboxPrimitive.js +2 -0
  188. package/dist/esm/primitives/PopoverPrimitive.d.ts.map +1 -1
  189. package/dist/esm/primitives/PopoverPrimitive.js +16 -5
  190. package/dist/esm/primitives/TogglePrimitive.d.ts.map +1 -1
  191. package/dist/esm/public_components/ChartQueryBuilder.d.ts.map +1 -1
  192. package/dist/esm/public_components/ChartQueryBuilder.js +8 -8
  193. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  194. package/dist/esm/public_components/CreateEnvironment.js +49 -16
  195. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  196. package/dist/esm/public_components/DashboardManager.js +64 -6
  197. package/dist/esm/public_components/EnvSelectPopover.d.ts.map +1 -1
  198. package/dist/esm/public_components/EnvSelectPopover.js +31 -3
  199. package/dist/esm/public_components/VirtualTableManager.d.ts.map +1 -1
  200. package/dist/esm/public_components/VirtualTableManager.js +95 -5
  201. package/dist/esm/public_components/__tests__/CreateEnvironment.test.js +41 -2
  202. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  203. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  204. package/dist/esm/utils/columnProcessing.js +6 -1
  205. package/dist/esm/utils/dataEditor.d.ts.map +1 -1
  206. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  207. package/dist/esm/utils/databases.d.ts +6 -1
  208. package/dist/esm/utils/databases.d.ts.map +1 -1
  209. package/dist/esm/utils/databases.js +18 -0
  210. package/dist/esm/utils/delay.d.ts.map +1 -1
  211. package/dist/esm/utils/filter.d.ts +17 -21
  212. package/dist/esm/utils/filter.d.ts.map +1 -1
  213. package/dist/esm/utils/filter.js +5 -5
  214. package/dist/esm/utils/report.d.ts +5 -5
  215. package/dist/esm/utils/report.d.ts.map +1 -1
  216. package/dist/esm/utils/schema.d.ts +6 -3
  217. package/dist/esm/utils/schema.d.ts.map +1 -1
  218. package/dist/esm/utils/schema.js +42 -3
  219. package/dist/esm/utils/table.d.ts.map +1 -1
  220. package/dist/esm/utils/tenants.d.ts.map +1 -1
  221. package/dist/esm/utils/ui.d.ts.map +1 -1
  222. package/package.json +1 -1
@@ -45,13 +45,13 @@ const StepDisplay_1 = __importDefault(require("../components/StepDisplay"));
45
45
  const ConnectSchema_1 = __importDefault(require("../forms/client_onboard/ConnectSchema"));
46
46
  const AdminProvider_1 = require("../AdminProvider");
47
47
  const databases_1 = require("../utils/databases");
48
- const CreateVirtualTables_1 = __importDefault(require("../forms/client_onboard/CreateVirtualTables"));
49
48
  const ConnectionClient_1 = require("../api/ConnectionClient");
50
49
  const dataFetcher_1 = require("../utils/dataFetcher");
50
+ const useLongLoading_1 = require("../hooks/useLongLoading");
51
51
  function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
52
52
  const parentRef = react_1.default.useRef(null);
53
- const { state, dispatch, setClient, getToken, quillFetchWithToken } = (0, AdminProvider_1.useAdmin)();
54
- const domainName = state.client?.domainName || state.domainName;
53
+ const { state, dispatch, setClient, getToken, quillFetchWithToken, eventTracking, } = (0, AdminProvider_1.useAdmin)();
54
+ const clerkOrgId = state.client?.clerkOrgId || state.clerkOrgId;
55
55
  const defaultDatabaseType = state.client?.databaseType || 'PostgreSQL';
56
56
  const [createEnvSteps, setCreateEnvSteps] = (0, react_1.useState)({
57
57
  connectDB: {
@@ -79,6 +79,14 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
79
79
  }), [newClient, connection, databaseSchema]);
80
80
  const [tenantInit, setTenantInit] = (0, react_1.useState)({});
81
81
  const [fetchSchemasLoading, setFetchSchemasLoading] = (0, react_1.useState)(false);
82
+ (0, useLongLoading_1.useLongLoading)(onboardingCompleteIsLoading, {
83
+ origin: 'CreateEnvironment',
84
+ loadDescription: 'Finishing onboarding',
85
+ });
86
+ (0, useLongLoading_1.useLongLoading)(fetchSchemasLoading, {
87
+ origin: 'CreateEnvironment',
88
+ loadDescription: 'Fetching schemas',
89
+ });
82
90
  const onConnectDatabase = (0, react_1.useCallback)(async (clientId) => {
83
91
  setTenantInit({});
84
92
  setSqlTables([]);
@@ -97,6 +105,10 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
97
105
  getToken,
98
106
  });
99
107
  }
108
+ eventTracking?.logEvent?.('start-onboarding', {
109
+ clientId,
110
+ clerkOrgId,
111
+ });
100
112
  setNewClient({
101
113
  clientId,
102
114
  });
@@ -110,7 +122,7 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
110
122
  clientId,
111
123
  databaseType: connectionInfo.type,
112
124
  schemaNames: selectedSchemaNames,
113
- domainName,
125
+ clerkOrgId,
114
126
  });
115
127
  // FIXME: Error handling
116
128
  try {
@@ -131,10 +143,31 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
131
143
  openStep('connectSchema');
132
144
  })
133
145
  .catch((error) => {
146
+ eventTracking?.logError?.({
147
+ type: 'bug', // TODO: determine type
148
+ severity: 'high',
149
+ message: 'Error fetching schema',
150
+ errorMessage: error.message,
151
+ errorData: {
152
+ caller: 'CreateEnvironment',
153
+ function: 'setEnvironmentDetails',
154
+ },
155
+ });
134
156
  console.error(error);
135
157
  });
136
158
  }
137
159
  catch (error) {
160
+ eventTracking?.logError?.({
161
+ type: 'bug', // TODO: determine type
162
+ severity: 'high',
163
+ message: 'Error setting up database',
164
+ errorMessage: error.message,
165
+ errorStack: error.stack,
166
+ errorData: {
167
+ caller: 'CreateEnvironment',
168
+ function: 'setEnvironmentDetails',
169
+ },
170
+ });
138
171
  console.error(error);
139
172
  }
140
173
  setFetchSchemasLoading(false);
@@ -153,6 +186,7 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
153
186
  };
154
187
  const finishOnboarding = async () => {
155
188
  setOnboardingCompleteIsLoading(true);
189
+ const orgName = localStorage.getItem('orgName'); // Set via portal, alternatively, pass a prop through Admin Provider
156
190
  // TODO: Anyone could create a client with some domain through this endpoint
157
191
  const response = await quillFetchWithToken({
158
192
  client: {
@@ -167,8 +201,9 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
167
201
  ...newClient,
168
202
  allTenantTypes: undefined,
169
203
  },
170
- domainName: domainName,
204
+ clerkOrgId: clerkOrgId,
171
205
  clientId: newClient.clientId,
206
+ orgName,
172
207
  },
173
208
  adminMode: true,
174
209
  });
@@ -176,7 +211,15 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
176
211
  setOnboardingCompleteIsLoading(false);
177
212
  throw new Error(response.message);
178
213
  }
214
+ eventTracking?.logEvent?.('finish-onboarding', {
215
+ clientId: newClient.clientId,
216
+ clerkOrgId: clerkOrgId,
217
+ });
179
218
  setClient(response.data.client);
219
+ dispatch({
220
+ type: 'UPDATE_CLIENTS',
221
+ payload: response.data.client,
222
+ });
180
223
  sessionStorage.removeItem('quill-adminState');
181
224
  sessionStorage.setItem('quill-client', JSON.stringify(response.data.client));
182
225
  dispatch({
@@ -234,7 +277,7 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
234
277
  ownerTenantFields: [tenantInit.ownerTenant.tenantField],
235
278
  allTenantTypes: [tenantInit.ownerTenant],
236
279
  });
237
- openStep('createVirtualTables');
280
+ finishOnboarding();
238
281
  }, returnToConnectDatabase: () => {
239
282
  setNewClient({
240
283
  ...newClient,
@@ -248,15 +291,5 @@ function CreateEnvironment({ onOnboardComplete, containerStyle, }) {
248
291
  !!newClient?.schemaNames?.length) {
249
292
  openStep('connectSchema');
250
293
  }
251
- } })), createEnvSteps.createVirtualTables.open ? ((0, jsx_runtime_1.jsx)(CreateVirtualTables_1.default, { containerStyle: {
252
- borderRadius: 6,
253
- border: '1px solid #e7e7e7',
254
- boxShadow: '0px 1px 6px rgba(0, 0, 0, 0.07)',
255
- height: 'calc(100vh - 59px)',
256
- width: 'calc(100vw - 200px)',
257
- }, header1Style: header1Style, header2Style: header2Style, databaseSchema: databaseSchema, environmentDetails: connection, completeOnboarding: finishOnboarding, state: state, client: newClient, tenantInit: tenantInit, isLoading: onboardingCompleteIsLoading, sqlTables: sqlTables, setSqlTables: setSqlTables })) : ((0, jsx_runtime_1.jsx)(StepDisplay_1.default, { label: "Create Virtual Tables", completed: false, header1Style: header1Style, onClick: () => {
258
- if (tenantInit?.ownerTenant) {
259
- openStep('createVirtualTables');
260
- }
261
294
  } }))] }));
262
295
  }
@@ -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;AA6ChF,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"}
@@ -27,9 +27,10 @@ const PopoverPrimitive_1 = require("../primitives/PopoverPrimitive");
27
27
  const CodePreview_1 = __importDefault(require("../modals/CodePreview"));
28
28
  const SavedQueriesModal_1 = __importDefault(require("../modals/SavedQueriesModal"));
29
29
  const InternalDashboard_1 = require("../components/InternalDashboard/InternalDashboard");
30
- const CreateEnvironment_1 = __importDefault(require("./CreateEnvironment"));
30
+ const useLongLoading_1 = require("../hooks/useLongLoading");
31
+ const CreateEnvironmentModal_1 = __importDefault(require("../modals/CreateEnvironmentModal"));
31
32
  function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTableManager, containerStyle, }) {
32
- const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, } = (0, AdminProvider_1.useAdmin)();
33
+ const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, eventTracking, } = (0, AdminProvider_1.useAdmin)();
33
34
  const parentRef = (0, react_1.useRef)(null);
34
35
  const envSelectPopoverRef = (0, react_1.useRef)(null);
35
36
  const dashboardSelectPopoverRef = (0, react_1.useRef)(null);
@@ -41,8 +42,12 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
41
42
  //FIXME: we don't want to lift up this state
42
43
  const [userFilters, setUserFilters] = (0, react_1.useState)([]);
43
44
  const [showCreateEnvironmentModal, setShowCreateEnvironmentModal] = (0, react_1.useState)(false);
44
- const { data: dashboardConfig, reload: reloadDashboard } = (0, react_2.useDashboard)(state.selectedDashboard, userFilters);
45
+ const { data: dashboardConfig, reload: reloadDashboard } = (0, react_2.useDashboardInternal)(state.selectedDashboard, userFilters);
45
46
  const { dashboards, isLoading: dashboardsLoading } = (0, react_2.useDashboards)();
47
+ (0, useLongLoading_1.useLongLoading)(dashboardsLoading, {
48
+ origin: 'DashboardManager',
49
+ loadDescription: 'Loading dashboards',
50
+ });
46
51
  const { setSelectedDashboard } = (0, useDashboardManager_1.useDashboardManager)();
47
52
  // const [editMode, setEditMode] = useState(true);
48
53
  const [autoPromoteVirtualTables, setAutoPromoteVirtualTables] = (0, react_1.useState)(true);
@@ -63,6 +68,15 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
63
68
  type: 'SET_ACTIVE_COMPONENT',
64
69
  payload: 'Report',
65
70
  });
71
+ eventTracking?.addBreadcrumb?.({
72
+ message: 'Clicked report in DashboardManager',
73
+ data: {
74
+ report: elem.id,
75
+ },
76
+ category: 'navigation',
77
+ level: 'info',
78
+ timestamp: Date.now(),
79
+ });
66
80
  }, [dispatch]);
67
81
  const hoverActions = (data) => {
68
82
  return ((0, jsx_runtime_1.jsx)("div", { style: {
@@ -86,7 +100,7 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
86
100
  gap: 4,
87
101
  }, onClick: async (event) => {
88
102
  event.stopPropagation();
89
- if (await (0, Admin_1.deleteReport)(data.id, state, getToken)) {
103
+ if (await (0, Admin_1.deleteReport)(data.id, state, getToken, eventTracking)) {
90
104
  reloadDashboard(undefined, false, {
91
105
  report: { id: data.id },
92
106
  action: 'delete',
@@ -160,11 +174,22 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
160
174
  }
161
175
  catch (error) {
162
176
  console.error('Promotion failed:', error);
177
+ eventTracking?.logError?.({
178
+ type: 'bug', // TODO: determine type
179
+ severity: 'high',
180
+ message: 'Error promoting dashboard',
181
+ errorMessage: error.message,
182
+ errorStack: error.stack,
183
+ errorData: {
184
+ caller: 'DashboardManager',
185
+ function: 'handlePromote',
186
+ },
187
+ });
163
188
  alert('Could not promote this dashboard.');
164
189
  }
165
190
  };
166
191
  if (showCreateEnvironmentModal) {
167
- return ((0, jsx_runtime_1.jsx)(primitives_1.ModalPrimitive, { isOpen: showCreateEnvironmentModal, onClose: () => setShowCreateEnvironmentModal(false), children: (0, jsx_runtime_1.jsx)(CreateEnvironment_1.default, { onOnboardComplete: () => setShowCreateEnvironmentModal(false) }) }));
192
+ return ((0, jsx_runtime_1.jsx)(CreateEnvironmentModal_1.default, { showCreateEnvironmentModal: showCreateEnvironmentModal, setShowCreateEnvironmentModal: setShowCreateEnvironmentModal }));
168
193
  }
169
194
  return ((0, jsx_runtime_1.jsxs)("div", { style: containerStyle, children: [(state.activeComponent === 'Report Builder' ||
170
195
  state.activeComponent === 'SQL Editor') && ((0, jsx_runtime_1.jsx)(ChartQueryBuilder_1.default, { activeComponent: state.activeComponent, destinationDashboard: state.selectedDashboard ??
@@ -274,6 +299,12 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
274
299
  type: 'SET_ACTIVE_COMPONENT',
275
300
  payload: 'CodePreview',
276
301
  });
302
+ eventTracking?.addBreadcrumb?.({
303
+ message: 'Opened embed preview in DashboardManager',
304
+ category: 'navigation',
305
+ level: 'info',
306
+ timestamp: Date.now(),
307
+ });
277
308
  }, label: "Embed Preview" }), (0, jsx_runtime_1.jsx)(PopoverPrimitive_1.Popover, { content: (0, jsx_runtime_1.jsxs)("div", { style: {
278
309
  display: 'flex',
279
310
  flexDirection: 'column',
@@ -287,6 +318,12 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
287
318
  type: 'SET_ACTIVE_COMPONENT',
288
319
  payload: 'Report Builder',
289
320
  });
321
+ eventTracking?.addBreadcrumb?.({
322
+ message: 'Opened report builder in DashboardManager',
323
+ category: 'navigation',
324
+ level: 'info',
325
+ timestamp: Date.now(),
326
+ });
290
327
  }, label: "Report Builder \u2197" }), (0, jsx_runtime_1.jsx)(primitives_1.SecondaryButtonPrimitive, { onClick: () => {
291
328
  if (!state.selectedDashboard) {
292
329
  return;
@@ -295,6 +332,12 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
295
332
  type: 'SET_ACTIVE_COMPONENT',
296
333
  payload: 'SQL Editor',
297
334
  });
335
+ eventTracking?.addBreadcrumb?.({
336
+ message: 'Opened SQL editor in DashboardManager',
337
+ category: 'navigation',
338
+ level: 'info',
339
+ timestamp: Date.now(),
340
+ });
298
341
  }, label: "SQL Editor \u2197" }), (0, jsx_runtime_1.jsx)(primitives_1.SecondaryButtonPrimitive, { onClick: () => {
299
342
  if (!state.selectedDashboard) {
300
343
  return;
@@ -303,6 +346,12 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
303
346
  type: 'SET_ACTIVE_COMPONENT',
304
347
  payload: 'SavedQueries',
305
348
  });
349
+ eventTracking?.addBreadcrumb?.({
350
+ message: 'Opened saved queries in DashboardManager',
351
+ category: 'navigation',
352
+ level: 'info',
353
+ timestamp: Date.now(),
354
+ });
306
355
  }, label: "Saved Queries \u2197" })] }), trigger: (0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive
307
356
  // onClick={() => {
308
357
  // if (!state.selectedDashboard) {
@@ -366,6 +415,15 @@ function DashboardManager({ navigateToVirtualTableManager: navigateToVirtualTabl
366
415
  dashboardsLoading ||
367
416
  dashboards?.filter((d) => d.name !== constants_1.SAVED_QUERIES_DASHBOARD)
368
417
  .length ? ((0, jsx_runtime_1.jsx)("div", { style: { width: '100%', position: 'relative' }, children: (0, jsx_runtime_1.jsx)(InternalDashboard_1.InternalDashboard, { name: state.selectedDashboard ?? '', containerStyle: { padding: 25, width: '100%' }, onClickReport: handleClickReport, hoverActions: hoverActions, onUserFiltersUpdated: setUserFilters, parentLoading: clientLoading || dashboardsLoading, onManageDashboard: () => {
418
+ eventTracking?.addBreadcrumb?.({
419
+ message: 'Opened manage dashboard in DashboardManager',
420
+ data: {
421
+ dashboard: state.selectedDashboard,
422
+ },
423
+ category: 'navigation',
424
+ level: 'info',
425
+ timestamp: Date.now(),
426
+ });
369
427
  setEditFilterModalIsOpen(true);
370
428
  } }) })) : null] }), !clientLoading && !dashboardsLoading && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(EditEnvironmentModal_1.EditEnvironmentModal, { isOpen: editEnvironmentModalIsOpen, setIsOpen: setEditEnvironmentModalIsOpen, onSave: async () => {
371
429
  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"}
@@ -12,7 +12,7 @@ const MiniButtonPrimitive_1 = __importDefault(require("../primitives/MiniButtonP
12
12
  const UiComponents_1 = require("../components/UiComponents");
13
13
  const QuillMultiSelectWithCombo_1 = require("../components/QuillMultiSelectWithCombo");
14
14
  function EnvSelectPopover({ clients, setClient, client, theme, onSelectedEditEnvironment, parentRef, isLoading, onCreateNewEnvironment, }) {
15
- const { state, dispatch } = (0, AdminProvider_1.useAdmin)();
15
+ const { state, dispatch, eventTracking } = (0, AdminProvider_1.useAdmin)();
16
16
  const [isOpen, setIsOpen] = (0, react_1.useState)(false);
17
17
  const [searchQuery, setSearchQuery] = (0, react_1.useState)('');
18
18
  const filteredClients = (0, react_1.useMemo)(() => {
@@ -26,6 +26,15 @@ function EnvSelectPopover({ clients, setClient, client, theme, onSelectedEditEnv
26
26
  dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
27
27
  dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
28
28
  }
29
+ eventTracking?.addBreadcrumb?.({
30
+ message: 'Set client in EnvSelectPopover',
31
+ data: {
32
+ clientId: selectedClient._id || selectedClient.id,
33
+ },
34
+ category: 'navigation',
35
+ level: 'info',
36
+ timestamp: Date.now(),
37
+ });
29
38
  setClient(selectedClient);
30
39
  setIsOpen(false);
31
40
  };
@@ -90,7 +99,9 @@ function EnvSelectPopover({ clients, setClient, client, theme, onSelectedEditEnv
90
99
  boxSizing: 'border-box',
91
100
  fontSize: 14,
92
101
  maxHeight: '50vh',
93
- }, setIsOpen: setIsOpen, onClick: () => { }, children: !isLoading ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(QuillMultiSelectWithCombo_1.ListboxTextInput, { id: "quill-search-bar", placeholder: "Search", value: searchQuery, onChange: setSearchQuery, width: 180 }), (0, jsx_runtime_1.jsx)("div", { style: {
102
+ }, setIsOpen: setIsOpen, onClick: () => { }, children: !isLoading ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(QuillMultiSelectWithCombo_1.ListboxTextInput, { id: "quill-search-bar", placeholder: "Search", value: searchQuery, onChange: (e) => {
103
+ setSearchQuery(e);
104
+ }, width: 180 }), (0, jsx_runtime_1.jsx)("div", { style: {
94
105
  height: 9,
95
106
  width: 230,
96
107
  borderTop: `1px solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
@@ -99,6 +110,15 @@ function EnvSelectPopover({ clients, setClient, client, theme, onSelectedEditEnv
99
110
  : undefined, item: item.name, isSelected: client._id === item._id, hoverActions: onSelectedEditEnvironment
100
111
  ? (item) => ((0, jsx_runtime_1.jsx)(MiniButtonPrimitive_1.default, { label: "Manage", onClick: () => {
101
112
  onSelectedEditEnvironment(item);
113
+ eventTracking?.addBreadcrumb?.({
114
+ message: 'Opened manage environment in EnvSelectPopover',
115
+ data: {
116
+ environment: item,
117
+ },
118
+ category: 'navigation',
119
+ level: 'info',
120
+ timestamp: Date.now(),
121
+ });
102
122
  setIsOpen(false);
103
123
  }, style: {
104
124
  marginRight: -8,
@@ -108,7 +128,15 @@ function EnvSelectPopover({ clients, setClient, client, theme, onSelectedEditEnv
108
128
  color: theme.secondaryTextColor,
109
129
  backgroundColor: theme.backgroundColor,
110
130
  } }))
111
- : undefined }, item._id))), (0, jsx_runtime_1.jsx)("div", { className: 'quill-list-select', style: { paddingBottom: 6, cursor: 'pointer' }, children: (0, jsx_runtime_1.jsxs)("a", { onClick: onCreateNewEnvironment, style: {
131
+ : undefined }, item._id))), (0, jsx_runtime_1.jsx)("div", { className: 'quill-list-select', style: { paddingBottom: 6, cursor: 'pointer' }, children: (0, jsx_runtime_1.jsxs)("a", { onClick: () => {
132
+ eventTracking?.addBreadcrumb?.({
133
+ message: 'Opened create new environment in EnvSelectPopover',
134
+ category: 'navigation',
135
+ level: 'info',
136
+ timestamp: Date.now(),
137
+ });
138
+ onCreateNewEnvironment?.();
139
+ }, style: {
112
140
  height: 42,
113
141
  width: 216,
114
142
  borderRadius: 6,
@@ -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;AA2C5E,eAAO,MAAM,mBAAmB,GAAI,UAAU,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,2CAukCA"}
@@ -30,7 +30,7 @@ const tenants_1 = require("../utils/tenants");
30
30
  const useDatabaseSchema_1 = require("../hooks/useDatabaseSchema");
31
31
  const InputLabel_1 = __importDefault(require("../components/InputLabel"));
32
32
  const useDashboardManager_1 = require("../hooks/useDashboardManager");
33
- const CreateEnvironment_1 = __importDefault(require("./CreateEnvironment"));
33
+ const CreateEnvironmentModal_1 = __importDefault(require("../modals/CreateEnvironmentModal"));
34
34
  const getDuplicateColumns = (columns) => {
35
35
  if (!columns) {
36
36
  return [];
@@ -72,7 +72,7 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
72
72
  const [showCreateEnvironmentModal, setShowCreateEnvironmentModal] = (0, react_2.useState)(false);
73
73
  const parentRef = (0, react_2.useRef)(null);
74
74
  const envHeaderRef = (0, react_2.useRef)(null);
75
- const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, } = (0, AdminProvider_1.useAdmin)();
75
+ const { state, dispatch, clientLoading, setClient, getToken, quillFetchWithToken, eventTracking, } = (0, AdminProvider_1.useAdmin)();
76
76
  const closeEditModal = () => {
77
77
  setEditModalIsOpen(false);
78
78
  setEditName('');
@@ -88,6 +88,16 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
88
88
  setEditError(table.broken ? (table.error ?? 'Invalid query') : undefined);
89
89
  setCustomFieldInfo(table.customFieldInfo);
90
90
  !suppressModal && setEditModalIsOpen(true);
91
+ eventTracking?.addBreadcrumb?.({
92
+ message: 'Clicked table cell in VirtualTableManager',
93
+ data: {
94
+ table: table.name,
95
+ suppressModal: suppressModal,
96
+ },
97
+ category: 'interaction',
98
+ level: 'info',
99
+ timestamp: Date.now(),
100
+ });
91
101
  };
92
102
  const reloadTables = async (tables) => {
93
103
  const tempClient = {
@@ -264,6 +274,17 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
264
274
  setEditQueryView(false);
265
275
  }
266
276
  catch (e) {
277
+ eventTracking?.logError?.({
278
+ type: 'bug', // TODO: determine type
279
+ severity: 'high',
280
+ message: 'Error submitting virtual table',
281
+ errorMessage: e.message,
282
+ errorStack: e.stack,
283
+ errorData: {
284
+ caller: 'VirtualTableManager',
285
+ function: 'handleModalSubmit',
286
+ },
287
+ });
267
288
  console.error(e);
268
289
  }
269
290
  };
@@ -291,6 +312,15 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
291
312
  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.`);
292
313
  return;
293
314
  }
315
+ eventTracking?.addBreadcrumb?.({
316
+ message: 'Confirmed delete table in VirtualTableManager',
317
+ data: {
318
+ table: name,
319
+ },
320
+ category: 'interaction',
321
+ level: 'info',
322
+ timestamp: Date.now(),
323
+ });
294
324
  const response = await (0, dataEditor_1.deleteVirtualTable)(id, state, getToken);
295
325
  await reloadTables();
296
326
  return response;
@@ -306,7 +336,7 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
306
336
  }
307
337
  };
308
338
  if (showCreateEnvironmentModal) {
309
- return ((0, jsx_runtime_1.jsx)(primitives_1.ModalPrimitive, { isOpen: showCreateEnvironmentModal, onClose: () => setShowCreateEnvironmentModal(false), children: (0, jsx_runtime_1.jsx)(CreateEnvironment_1.default, { onOnboardComplete: () => setShowCreateEnvironmentModal(false) }) }));
339
+ return ((0, jsx_runtime_1.jsx)(CreateEnvironmentModal_1.default, { showCreateEnvironmentModal: showCreateEnvironmentModal, setShowCreateEnvironmentModal: setShowCreateEnvironmentModal }));
310
340
  }
311
341
  return ((0, jsx_runtime_1.jsx)("div", { style: { ...containerStyle }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
312
342
  minHeight: '100%',
@@ -355,6 +385,12 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
355
385
  flexDirection: 'row',
356
386
  gap: 8,
357
387
  }, children: [(0, jsx_runtime_1.jsx)(primitives_1.SecondaryButtonPrimitive, { onClick: () => {
388
+ eventTracking?.addBreadcrumb?.({
389
+ message: 'Clicked refresh tables button in VirtualTableManager',
390
+ category: 'interaction',
391
+ level: 'info',
392
+ timestamp: Date.now(),
393
+ });
358
394
  reloadTables(tables);
359
395
  }, label: "Refresh Tables" }), (0, jsx_runtime_1.jsx)(primitives_1.ButtonPrimitive, { onClick: () => {
360
396
  setEditName('');
@@ -362,6 +398,12 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
362
398
  setEditVirtualTableId('');
363
399
  setInitialVirtualTable(undefined);
364
400
  setEditQueryView(true);
401
+ eventTracking?.addBreadcrumb?.({
402
+ message: 'Clicked add virtual table button in VirtualTableManager',
403
+ category: 'interaction',
404
+ level: 'info',
405
+ timestamp: Date.now(),
406
+ });
365
407
  }, label: "Add Virtual Table +" })] }))] }) })), clientLoading || areTablesLoading ? ((0, jsx_runtime_1.jsx)("div", { style: {
366
408
  display: 'grid',
367
409
  gridGap: 24,
@@ -380,6 +422,12 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
380
422
  overflow: 'hidden',
381
423
  }, children: (0, jsx_runtime_1.jsxs)("svg", { width: "100%", height: "100%", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", children: [(0, jsx_runtime_1.jsx)("rect", { width: "100%", height: "100%", fill: '#F9F9FA' }), (0, jsx_runtime_1.jsx)("defs", { fill: '#F9F9FA', children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: "skeletonGradient", x1: "0%", y1: "0%", x2: "10%", y2: "0%", gradientUnits: "userSpaceOnUse", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0%", stopColor: "rgba(255,255,255,0)" }), (0, jsx_runtime_1.jsx)("stop", { offset: "50%", stopColor: "#FEFEFE" }), (0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: "rgba(255,255,255,0)" }), (0, jsx_runtime_1.jsx)("animate", { attributeName: "x1", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }), (0, jsx_runtime_1.jsx)("animate", { attributeName: "x2", from: "-50%", to: "150%", dur: "2s", repeatCount: "indefinite" })] }) }), (0, jsx_runtime_1.jsx)("rect", { width: "50%", height: "100%", fill: "url(#skeletonGradient)", children: (0, jsx_runtime_1.jsx)("animate", { attributeName: "x", from: "-100%", to: "100%", dur: "2s", repeatCount: "indefinite" }) })] }) }) }, i))) }, 'edit-view-query')) : state.databaseTypeMismatch.show ? ((0, jsx_runtime_1.jsx)(DatabaseMismatchCard_1.default, { environmentName: state.client.name, environmentDatabaseType: state.client.databaseType, backendDatabaseType: state.databaseTypeMismatch.backendDatabaseType })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [!editQueryView ? (tables && tables.length === 0 ? ((0, jsx_runtime_1.jsx)(EmptyVirtualTablesComponent_1.default, { onClick: () => {
382
424
  setEditQueryView(true);
425
+ eventTracking?.addBreadcrumb?.({
426
+ message: 'Clicked EmptyVirtualTablesComponent in VirtualTableManager',
427
+ category: 'interaction',
428
+ level: 'info',
429
+ timestamp: Date.now(),
430
+ });
383
431
  } })) : ((0, jsx_runtime_1.jsx)("div", { style: {
384
432
  display: 'grid',
385
433
  gridGap: 24,
@@ -393,6 +441,12 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
393
441
  }, children: tables && tables?.length ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [tables.map((table) => ((0, jsx_runtime_1.jsx)(Admin_1.TableCell, { table: table, clickTableCellHeader: clickTableCell, clickTableCellBody: () => {
394
442
  clickTableCell(table, true);
395
443
  setEditQueryView(true);
444
+ eventTracking?.addBreadcrumb?.({
445
+ message: 'Clicked table body in VirtualTableManager',
446
+ category: 'interaction',
447
+ level: 'info',
448
+ timestamp: Date.now(),
449
+ });
396
450
  }, isLoading: loadingTables[table._id], reloadAction: (table) => reloadTables([table]), hoverActions: (table) => ((0, jsx_runtime_1.jsxs)("div", { style: {
397
451
  display: 'flex',
398
452
  flexDirection: 'row',
@@ -411,6 +465,15 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
411
465
  border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
412
466
  }, onClick: (event) => {
413
467
  event.stopPropagation();
468
+ eventTracking?.addBreadcrumb?.({
469
+ message: 'Clicked edit query button in VirtualTableManager Table Cell',
470
+ data: {
471
+ table: table.name,
472
+ },
473
+ category: 'interaction',
474
+ level: 'info',
475
+ timestamp: Date.now(),
476
+ });
414
477
  clickTableCell(table, true);
415
478
  setEditQueryView(true);
416
479
  }, className: "secondary-button-quill", children: [(0, jsx_runtime_1.jsx)("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 12, width: 12, style: {
@@ -430,6 +493,15 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
430
493
  border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
431
494
  }, onClick: (event) => {
432
495
  event.stopPropagation();
496
+ eventTracking?.addBreadcrumb?.({
497
+ message: 'Clicked table settings in VirtualTableManager Table Cell',
498
+ data: {
499
+ table: table.name,
500
+ },
501
+ category: 'interaction',
502
+ level: 'info',
503
+ timestamp: Date.now(),
504
+ });
433
505
  clickTableCell(table);
434
506
  }, className: "secondary-button-quill", children: (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 16, width: 16, style: {
435
507
  marginLeft: 'auto',
@@ -454,6 +526,15 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
454
526
  border: `0 solid ${state.theme?.borderColor ?? '#e7e7e7'}`,
455
527
  }, className: "secondary-button-quill", onClick: (event) => {
456
528
  event.stopPropagation();
529
+ eventTracking?.addBreadcrumb?.({
530
+ message: 'Clicked refresh table button in VirtualTableManager Table Cell',
531
+ data: {
532
+ table: table.name,
533
+ },
534
+ category: 'interaction',
535
+ level: 'info',
536
+ timestamp: Date.now(),
537
+ });
457
538
  reloadTables([table]);
458
539
  }, children: [(0, jsx_runtime_1.jsx)("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 16 16", strokeWidth: 1.5, height: 16, width: 16, style: {
459
540
  marginLeft: 'auto',
@@ -472,6 +553,15 @@ function VirtualTableManager({ containerStyle, virtualTable, }) {
472
553
  alignItems: 'center',
473
554
  }, onClick: (event) => {
474
555
  event.stopPropagation();
556
+ eventTracking?.addBreadcrumb?.({
557
+ message: 'Clicked delete table button in VirtualTableManager Table Cell',
558
+ data: {
559
+ table: table.name,
560
+ },
561
+ category: 'interaction',
562
+ level: 'info',
563
+ timestamp: Date.now(),
564
+ });
475
565
  deleteVirtualTable(table._id, table.name, table.name);
476
566
  }, className: "secondary-button-quill", children: [(0, jsx_runtime_1.jsx)("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), (0, jsx_runtime_1.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: 14, width: 14, style: {
477
567
  marginLeft: 'auto',
@@ -508,7 +598,7 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
508
598
  const [tableData, setTableData] = (0, react_2.useState)(undefined);
509
599
  const [errorInfo, setErrorInfo] = (0, react_2.useState)({ show: false, message: '' });
510
600
  const clientIsSingleTenant = (0, react_2.useMemo)(() => (0, tenants_1.onlySingleDatabaseTenant)(state.client), [state.client]);
511
- const { getToken } = (0, AdminProvider_1.useAdmin)();
601
+ const { getToken, eventTracking } = (0, AdminProvider_1.useAdmin)();
512
602
  (0, react_2.useEffect)(() => {
513
603
  setCustomFieldQuery(customFieldInfo?.query || '');
514
604
  setCustomFieldType(customFieldInfo?.type || 'eav');
@@ -630,7 +720,7 @@ function EditAddViewModal({ viewName, viewQuery, viewOwnerTenantFields, viewId,
630
720
  }
631
721
  setErrorInfo({ show: false, message: '' });
632
722
  setRunQueryButtonLoading(true);
633
- const getSqlResults = await (0, ConnectionClient_1.getVirtualTableData)(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken, state.queryHeaders);
723
+ const getSqlResults = await (0, ConnectionClient_1.getVirtualTableData)(state.client._id, customFieldQuery, state.client.databaseType, state.queryEndpoint, getToken, eventTracking, state.queryHeaders);
634
724
  if (!getSqlResults.success) {
635
725
  setErrorInfo({
636
726
  show: true,