@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.
- package/dist/cjs/Admin.d.ts +11 -8
- package/dist/cjs/Admin.d.ts.map +1 -1
- package/dist/cjs/Admin.js +114 -7
- package/dist/cjs/AdminProvider.d.ts +24 -5
- package/dist/cjs/AdminProvider.d.ts.map +1 -1
- package/dist/cjs/AdminProvider.js +173 -85
- package/dist/cjs/api/ConnectionClient.d.ts +6 -3
- package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
- package/dist/cjs/api/ConnectionClient.js +66 -6
- package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/assets/XIcon.d.ts.map +1 -1
- package/dist/cjs/components/ClipboardButton.d.ts.map +1 -1
- package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
- package/dist/cjs/components/DashboardSelectPopover.js +29 -1
- package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts +1 -1
- package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
- package/dist/cjs/components/InternalDashboard/InternalDashboard.js +114 -34
- package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
- package/dist/cjs/components/OrgSelect.js +48 -4
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +5 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +328 -149
- package/dist/cjs/components/QuillSelectWithCombo.d.ts +4 -3
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +34 -6
- package/dist/cjs/components/QuillToolTipPortal.d.ts.map +1 -1
- package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
- package/dist/cjs/components/SqlTextEditor.js +15 -2
- package/dist/cjs/components/Tenants/EditTenant.d.ts.map +1 -1
- package/dist/cjs/components/Tenants/EditTenant.js +51 -8
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +1 -0
- package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
- package/dist/cjs/forms/client_onboard/ConnectDatabase.js +50 -2
- package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
- package/dist/cjs/forms/client_onboard/ConnectSchema.js +33 -1
- package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
- package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
- package/dist/cjs/forms/client_onboard/CreateVirtualTables.js +55 -21
- package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.js +1 -1
- package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.js +1 -1
- package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
- package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.js +92 -10
- package/dist/cjs/hooks/useDatabaseSchema.d.ts.map +1 -1
- package/dist/cjs/hooks/useDatabaseSchema.js +12 -1
- package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
- package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
- package/dist/cjs/hooks/useLongLoading.js +67 -0
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useThrottle.d.ts.map +1 -1
- package/dist/cjs/icons/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/cjs/icons/CheckCircleIcon.d.ts.map +1 -1
- package/dist/cjs/icons/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/cjs/icons/ExteriorLinkIcon.d.ts.map +1 -1
- package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
- package/dist/cjs/modals/CodePreview.d.ts.map +1 -1
- package/dist/cjs/modals/CodePreview.js +7 -2
- package/dist/cjs/modals/CreateEnvironmentModal.d.ts +5 -0
- package/dist/cjs/modals/CreateEnvironmentModal.d.ts.map +1 -0
- package/dist/cjs/modals/CreateEnvironmentModal.js +21 -0
- package/dist/cjs/modals/EditEnvironmentModal.d.ts.map +1 -1
- package/dist/cjs/modals/EditEnvironmentModal.js +67 -15
- package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
- package/dist/cjs/modals/EditFiltersModal.js +12 -8
- package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
- package/dist/cjs/modals/NewDashboardModal.js +54 -28
- package/dist/cjs/modals/PromoteReportModal.d.ts.map +1 -1
- package/dist/cjs/modals/PromoteReportModal.js +15 -4
- package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
- package/dist/cjs/modals/PromoteViewModal.js +13 -2
- package/dist/cjs/primitives/CheckboxPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/CheckboxPrimitive.js +2 -0
- package/dist/cjs/primitives/PopoverPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/PopoverPrimitive.js +16 -5
- package/dist/cjs/primitives/TogglePrimitive.d.ts.map +1 -1
- package/dist/cjs/public_components/ChartQueryBuilder.d.ts.map +1 -1
- package/dist/cjs/public_components/ChartQueryBuilder.js +6 -6
- package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
- package/dist/cjs/public_components/CreateEnvironment.js +49 -16
- package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
- package/dist/cjs/public_components/DashboardManager.js +63 -5
- package/dist/cjs/public_components/EnvSelectPopover.d.ts.map +1 -1
- package/dist/cjs/public_components/EnvSelectPopover.js +31 -3
- package/dist/cjs/public_components/VirtualTableManager.d.ts.map +1 -1
- package/dist/cjs/public_components/VirtualTableManager.js +95 -5
- package/dist/cjs/public_components/__tests__/CreateEnvironment.test.js +41 -2
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +6 -1
- package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/databases.d.ts +6 -1
- package/dist/cjs/utils/databases.d.ts.map +1 -1
- package/dist/cjs/utils/databases.js +18 -0
- package/dist/cjs/utils/delay.d.ts.map +1 -1
- package/dist/cjs/utils/filter.d.ts +17 -21
- package/dist/cjs/utils/filter.d.ts.map +1 -1
- package/dist/cjs/utils/filter.js +6 -6
- package/dist/cjs/utils/report.d.ts +5 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/schema.d.ts +6 -3
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +42 -3
- package/dist/cjs/utils/table.d.ts.map +1 -1
- package/dist/cjs/utils/tenants.d.ts.map +1 -1
- package/dist/cjs/utils/ui.d.ts.map +1 -1
- package/dist/esm/Admin.d.ts +11 -8
- package/dist/esm/Admin.d.ts.map +1 -1
- package/dist/esm/Admin.js +115 -8
- package/dist/esm/AdminProvider.d.ts +24 -5
- package/dist/esm/AdminProvider.d.ts.map +1 -1
- package/dist/esm/AdminProvider.js +174 -86
- package/dist/esm/api/ConnectionClient.d.ts +6 -3
- package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
- package/dist/esm/api/ConnectionClient.js +66 -6
- package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/assets/XIcon.d.ts.map +1 -1
- package/dist/esm/components/ClipboardButton.d.ts.map +1 -1
- package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
- package/dist/esm/components/DashboardSelectPopover.js +29 -1
- package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts +1 -1
- package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
- package/dist/esm/components/InternalDashboard/InternalDashboard.js +115 -35
- package/dist/esm/components/OrgSelect.d.ts.map +1 -1
- package/dist/esm/components/OrgSelect.js +48 -4
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +5 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +328 -149
- package/dist/esm/components/QuillSelectWithCombo.d.ts +4 -3
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +34 -6
- package/dist/esm/components/QuillToolTipPortal.d.ts.map +1 -1
- package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
- package/dist/esm/components/SqlTextEditor.js +15 -2
- package/dist/esm/components/Tenants/EditTenant.d.ts.map +1 -1
- package/dist/esm/components/Tenants/EditTenant.js +51 -8
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +1 -0
- package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
- package/dist/esm/forms/client_onboard/ConnectDatabase.js +50 -2
- package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
- package/dist/esm/forms/client_onboard/ConnectSchema.js +33 -1
- package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
- package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
- package/dist/esm/forms/client_onboard/CreateVirtualTables.js +56 -22
- package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.js +1 -1
- package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.js +1 -1
- package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
- package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.js +93 -11
- package/dist/esm/hooks/useDatabaseSchema.d.ts.map +1 -1
- package/dist/esm/hooks/useDatabaseSchema.js +12 -1
- package/dist/esm/hooks/useLongLoading.d.ts +13 -0
- package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
- package/dist/esm/hooks/useLongLoading.js +64 -0
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useThrottle.d.ts.map +1 -1
- package/dist/esm/icons/ArrowDownHeadIcon.d.ts.map +1 -1
- package/dist/esm/icons/CheckCircleIcon.d.ts.map +1 -1
- package/dist/esm/icons/ExclamationFilledIcon.d.ts.map +1 -1
- package/dist/esm/icons/ExteriorLinkIcon.d.ts.map +1 -1
- package/dist/esm/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
- package/dist/esm/modals/CodePreview.d.ts.map +1 -1
- package/dist/esm/modals/CodePreview.js +7 -2
- package/dist/esm/modals/CreateEnvironmentModal.d.ts +5 -0
- package/dist/esm/modals/CreateEnvironmentModal.d.ts.map +1 -0
- package/dist/esm/modals/CreateEnvironmentModal.js +15 -0
- package/dist/esm/modals/EditEnvironmentModal.d.ts.map +1 -1
- package/dist/esm/modals/EditEnvironmentModal.js +67 -15
- package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
- package/dist/esm/modals/EditFiltersModal.js +13 -9
- package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
- package/dist/esm/modals/NewDashboardModal.js +55 -29
- package/dist/esm/modals/PromoteReportModal.d.ts.map +1 -1
- package/dist/esm/modals/PromoteReportModal.js +15 -4
- package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
- package/dist/esm/modals/PromoteViewModal.js +13 -2
- package/dist/esm/primitives/CheckboxPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/CheckboxPrimitive.js +2 -0
- package/dist/esm/primitives/PopoverPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/PopoverPrimitive.js +16 -5
- package/dist/esm/primitives/TogglePrimitive.d.ts.map +1 -1
- package/dist/esm/public_components/ChartQueryBuilder.d.ts.map +1 -1
- package/dist/esm/public_components/ChartQueryBuilder.js +8 -8
- package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
- package/dist/esm/public_components/CreateEnvironment.js +49 -16
- package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
- package/dist/esm/public_components/DashboardManager.js +64 -6
- package/dist/esm/public_components/EnvSelectPopover.d.ts.map +1 -1
- package/dist/esm/public_components/EnvSelectPopover.js +31 -3
- package/dist/esm/public_components/VirtualTableManager.d.ts.map +1 -1
- package/dist/esm/public_components/VirtualTableManager.js +95 -5
- package/dist/esm/public_components/__tests__/CreateEnvironment.test.js +41 -2
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +6 -1
- package/dist/esm/utils/dataEditor.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/databases.d.ts +6 -1
- package/dist/esm/utils/databases.d.ts.map +1 -1
- package/dist/esm/utils/databases.js +18 -0
- package/dist/esm/utils/delay.d.ts.map +1 -1
- package/dist/esm/utils/filter.d.ts +17 -21
- package/dist/esm/utils/filter.d.ts.map +1 -1
- package/dist/esm/utils/filter.js +5 -5
- package/dist/esm/utils/report.d.ts +5 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/schema.d.ts +6 -3
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +42 -3
- package/dist/esm/utils/table.d.ts.map +1 -1
- package/dist/esm/utils/tenants.d.ts.map +1 -1
- package/dist/esm/utils/ui.d.ts.map +1 -1
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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
|
|
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.
|
|
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)(
|
|
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,
|
|
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:
|
|
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:
|
|
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,
|
|
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
|
|
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)(
|
|
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,
|