@quillsql/admin 1.3.1 → 1.3.2
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/{lib → dist}/Admin.d.ts +12 -7
- package/dist/Admin.d.ts.map +1 -0
- package/dist/Admin.js +1384 -0
- package/{lib → dist}/AdminProvider.d.ts +41 -27
- package/dist/AdminProvider.d.ts.map +1 -0
- package/{lib → dist}/AdminProvider.js +105 -89
- package/dist/api/ConnectionClient.d.ts +27 -0
- package/dist/api/ConnectionClient.d.ts.map +1 -0
- package/dist/api/ConnectionClient.js +247 -0
- package/dist/components/Banner/index.d.ts +3 -0
- package/dist/components/Banner/index.d.ts.map +1 -0
- package/dist/components/Banner/index.js +27 -0
- package/dist/components/CardSection.d.ts +3 -0
- package/dist/components/CardSection.d.ts.map +1 -0
- package/dist/components/CardSection.js +9 -0
- package/dist/components/CardTitle.d.ts +3 -0
- package/dist/components/CardTitle.d.ts.map +1 -0
- package/dist/components/CardTitle.js +11 -0
- package/dist/components/DashboardSelectPopover.d.ts +11 -0
- package/dist/components/DashboardSelectPopover.d.ts.map +1 -0
- package/dist/components/DashboardSelectPopover.js +175 -0
- package/dist/components/DatabaseSelector.d.ts +11 -0
- package/dist/components/DatabaseSelector.d.ts.map +1 -0
- package/dist/components/DatabaseSelector.js +22 -0
- package/dist/components/DeleteButton.d.ts +3 -0
- package/dist/components/DeleteButton.d.ts.map +1 -0
- package/dist/components/DeleteButton.js +10 -0
- package/{lib → dist}/components/DropDownMenu.d.ts +1 -0
- package/dist/components/DropDownMenu.d.ts.map +1 -0
- package/dist/components/DropDownMenu.js +39 -0
- package/dist/components/DropDownMenuWithLabel.d.ts +12 -0
- package/dist/components/DropDownMenuWithLabel.d.ts.map +1 -0
- package/dist/components/DropDownMenuWithLabel.js +47 -0
- package/{lib → dist}/components/EnvSelectPopover.d.ts +1 -0
- package/dist/components/EnvSelectPopover.d.ts.map +1 -0
- package/dist/components/EnvSelectPopover.js +205 -0
- package/dist/components/InputLabel.d.ts +3 -0
- package/dist/components/InputLabel.d.ts.map +1 -0
- package/dist/components/InputLabel.js +10 -0
- package/{lib → dist}/components/OrgSelect.d.ts +1 -0
- package/dist/components/OrgSelect.d.ts.map +1 -0
- package/dist/components/OrgSelect.js +193 -0
- package/dist/components/SqlViewTile.d.ts +8 -0
- package/dist/components/SqlViewTile.d.ts.map +1 -0
- package/dist/components/SqlViewTile.js +40 -0
- package/dist/components/StepDisplay.d.ts +10 -0
- package/dist/components/StepDisplay.d.ts.map +1 -0
- package/dist/components/StepDisplay.js +15 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/forms/client_onboard/ConnectDatabase.d.ts +11 -0
- package/dist/forms/client_onboard/ConnectDatabase.d.ts.map +1 -0
- package/dist/forms/client_onboard/ConnectDatabase.js +137 -0
- package/dist/forms/client_onboard/ConnectSchema.d.ts +13 -0
- package/dist/forms/client_onboard/ConnectSchema.d.ts.map +1 -0
- package/dist/forms/client_onboard/ConnectSchema.js +171 -0
- package/dist/forms/client_onboard/CreateSqlViews.d.ts +15 -0
- package/dist/forms/client_onboard/CreateSqlViews.d.ts.map +1 -0
- package/dist/forms/client_onboard/CreateSqlViews.js +202 -0
- package/dist/hooks/useItemBeingEdited.d.ts +4 -0
- package/dist/hooks/useItemBeingEdited.d.ts.map +1 -0
- package/dist/hooks/useItemBeingEdited.js +25 -0
- package/{lib → dist}/icons/ArrowDownHeadIcon.d.ts +1 -0
- package/dist/icons/ArrowDownHeadIcon.d.ts.map +1 -0
- package/dist/icons/ArrowDownHeadIcon.js +3 -0
- package/dist/icons/XMarkIcon.d.ts +3 -0
- package/dist/icons/XMarkIcon.d.ts.map +1 -0
- package/dist/icons/XMarkIcon.js +11 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/{lib/index.d.ts → dist/index.js} +1 -0
- package/{lib → dist}/modals/EditDashboardsModal.d.ts +1 -0
- package/dist/modals/EditDashboardsModal.d.ts.map +1 -0
- package/dist/modals/EditDashboardsModal.js +91 -0
- package/dist/modals/NewDashboardModal.d.ts +19 -0
- package/dist/modals/NewDashboardModal.d.ts.map +1 -0
- package/dist/modals/NewDashboardModal.js +276 -0
- package/{lib → dist}/modals/PromoteDashModal.d.ts +2 -1
- package/dist/modals/PromoteDashModal.d.ts.map +1 -0
- package/dist/modals/PromoteDashModal.js +123 -0
- package/{lib → dist}/modals/PromoteViewModal.d.ts +1 -0
- package/dist/modals/PromoteViewModal.d.ts.map +1 -0
- package/{lib → dist}/modals/PromoteViewModal.js +13 -16
- package/{lib → dist}/modals/ReorderDashboardModal.d.ts +4 -1
- package/dist/modals/ReorderDashboardModal.d.ts.map +1 -0
- package/{lib → dist}/modals/ReorderDashboardModal.js +53 -55
- package/dist/modals/index.d.ts +5 -0
- package/dist/modals/index.d.ts.map +1 -0
- package/{lib → dist}/primitives/ButtonPrimitive.d.ts +3 -0
- package/dist/primitives/ButtonPrimitive.d.ts.map +1 -0
- package/dist/primitives/ButtonPrimitive.js +47 -0
- package/{lib → dist}/primitives/HeaderPrimitive.d.ts +1 -0
- package/dist/primitives/HeaderPrimitive.d.ts.map +1 -0
- package/dist/primitives/HeaderPrimitive.js +9 -0
- package/{lib → dist}/primitives/ModalPrimitive.d.ts +3 -1
- package/dist/primitives/ModalPrimitive.d.ts.map +1 -0
- package/{lib → dist}/primitives/ModalPrimitive.js +9 -11
- package/{lib → dist}/primitives/SecondaryButtonPrimitive.d.ts +1 -0
- package/dist/primitives/SecondaryButtonPrimitive.d.ts.map +1 -0
- package/{lib → dist}/primitives/SecondaryButtonPrimitive.js +5 -8
- package/{lib → dist}/primitives/SelectPrimitive.d.ts +1 -0
- package/dist/primitives/SelectPrimitive.d.ts.map +1 -0
- package/{lib → dist}/primitives/SelectPrimitive.js +8 -11
- package/{lib → dist}/primitives/TextInputPrimitive.d.ts +2 -0
- package/dist/primitives/TextInputPrimitive.d.ts.map +1 -0
- package/dist/primitives/TextInputPrimitive.js +24 -0
- package/dist/primitives/TogglePrimitive.d.ts +6 -0
- package/dist/primitives/TogglePrimitive.d.ts.map +1 -0
- package/dist/primitives/TogglePrimitive.js +45 -0
- package/dist/primitives/index.d.ts +7 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/public_components/CreateEnvironment.d.ts +6 -0
- package/dist/public_components/CreateEnvironment.d.ts.map +1 -0
- package/dist/public_components/CreateEnvironment.js +129 -0
- package/{lib → dist}/public_components/DashboardBuilder.d.ts +2 -1
- package/dist/public_components/DashboardBuilder.d.ts.map +1 -0
- package/dist/public_components/DashboardBuilder.js +192 -0
- package/{lib → dist}/public_components/DashboardManager.d.ts +2 -1
- package/dist/public_components/DashboardManager.d.ts.map +1 -0
- package/dist/public_components/DashboardManager.js +308 -0
- package/{lib → dist}/public_components/SQLViewManager.d.ts +2 -1
- package/dist/public_components/SQLViewManager.d.ts.map +1 -0
- package/dist/public_components/SQLViewManager.js +394 -0
- package/dist/utils/constants.d.ts +26 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +13 -0
- package/dist/utils/databases.d.ts +34 -0
- package/dist/utils/databases.d.ts.map +1 -0
- package/dist/utils/databases.js +51 -0
- package/dist/utils/delay.d.ts +2 -0
- package/dist/utils/delay.d.ts.map +1 -0
- package/dist/utils/delay.js +3 -0
- package/dist/utils/schema.d.ts +22 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +1 -0
- package/dist/utils/table.d.ts +9 -0
- package/dist/utils/table.d.ts.map +1 -0
- package/dist/utils/table.js +1 -0
- package/package.json +19 -26
- package/LICENSE +0 -21
- package/README.md +0 -10
- package/lib/Admin.js +0 -1573
- package/lib/Admin.js.map +0 -1
- package/lib/AdminProvider.js.map +0 -1
- package/lib/components/DashboardSelectPopover.d.ts +0 -9
- package/lib/components/DashboardSelectPopover.js +0 -187
- package/lib/components/DashboardSelectPopover.js.map +0 -1
- package/lib/components/DropDownMenu.js +0 -43
- package/lib/components/DropDownMenu.js.map +0 -1
- package/lib/components/EnvSelectPopover.js +0 -190
- package/lib/components/EnvSelectPopover.js.map +0 -1
- package/lib/components/OrgSelect.js +0 -188
- package/lib/components/OrgSelect.js.map +0 -1
- package/lib/components/index.js +0 -17
- package/lib/components/index.js.map +0 -1
- package/lib/icons/ArrowDownHeadIcon.js +0 -6
- package/lib/icons/ArrowDownHeadIcon.js.map +0 -1
- package/lib/icons/index.js +0 -9
- package/lib/icons/index.js.map +0 -1
- package/lib/index.js +0 -17
- package/lib/index.js.map +0 -1
- package/lib/modals/EditDashboardsModal.js +0 -94
- package/lib/modals/EditDashboardsModal.js.map +0 -1
- package/lib/modals/PromoteDashModal.js +0 -126
- package/lib/modals/PromoteDashModal.js.map +0 -1
- package/lib/modals/PromoteViewModal.js.map +0 -1
- package/lib/modals/ReorderDashboardModal.js.map +0 -1
- package/lib/modals/index.js +0 -15
- package/lib/modals/index.js.map +0 -1
- package/lib/primitives/ButtonPrimitive.js +0 -25
- package/lib/primitives/ButtonPrimitive.js.map +0 -1
- package/lib/primitives/HeaderPrimitive.js +0 -12
- package/lib/primitives/HeaderPrimitive.js.map +0 -1
- package/lib/primitives/ModalPrimitive.js.map +0 -1
- package/lib/primitives/SecondaryButtonPrimitive.js.map +0 -1
- package/lib/primitives/SelectPrimitive.js.map +0 -1
- package/lib/primitives/TextInputPrimitive.js +0 -26
- package/lib/primitives/TextInputPrimitive.js.map +0 -1
- package/lib/primitives/index.js +0 -19
- package/lib/primitives/index.js.map +0 -1
- package/lib/public_components/DashboardBuilder.js +0 -166
- package/lib/public_components/DashboardBuilder.js.map +0 -1
- package/lib/public_components/DashboardManager.js +0 -255
- package/lib/public_components/DashboardManager.js.map +0 -1
- package/lib/public_components/SQLViewManager.js +0 -400
- package/lib/public_components/SQLViewManager.js.map +0 -1
- /package/{lib/components/index.d.ts → dist/components/index.js} +0 -0
- /package/{lib/icons/index.d.ts → dist/icons/index.js} +0 -0
- /package/{lib/modals/index.d.ts → dist/modals/index.js} +0 -0
- /package/{lib/primitives/index.d.ts → dist/primitives/index.js} +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import ConnectDatabase from '../forms/client_onboard/ConnectDatabase';
|
|
4
|
+
import StepDisplay from '../components/StepDisplay';
|
|
5
|
+
import ConnectSchema from '../forms/client_onboard/ConnectSchema';
|
|
6
|
+
import { useAdmin } from '../AdminProvider';
|
|
7
|
+
import { formConnectionString, getDatabaseConnectionFormat, } from '../utils/databases';
|
|
8
|
+
import CreateSQLViews from '../forms/client_onboard/CreateSqlViews';
|
|
9
|
+
import { getTableSchema, } from '../api/ConnectionClient';
|
|
10
|
+
const header1Style = {
|
|
11
|
+
fontWeight: '600',
|
|
12
|
+
fontSize: '18px',
|
|
13
|
+
marginBottom: '6px',
|
|
14
|
+
color: '#000000',
|
|
15
|
+
};
|
|
16
|
+
const header2Style = {
|
|
17
|
+
fontWeight: '500',
|
|
18
|
+
fontSize: '14px',
|
|
19
|
+
color: '#595959',
|
|
20
|
+
marginBottom: '6px',
|
|
21
|
+
};
|
|
22
|
+
export default function CreateEnvironment({ navigateToDashboardManager, containerStyle, }) {
|
|
23
|
+
const { state, dispatch } = useAdmin();
|
|
24
|
+
const domainName = state.domainName;
|
|
25
|
+
const [createEnvSteps, setCreateEnvSteps] = useState({
|
|
26
|
+
connectDB: {
|
|
27
|
+
label: 'Connect Database',
|
|
28
|
+
completed: false,
|
|
29
|
+
open: true,
|
|
30
|
+
},
|
|
31
|
+
connectSchema: {
|
|
32
|
+
label: 'Connect Schema',
|
|
33
|
+
completed: false,
|
|
34
|
+
open: false,
|
|
35
|
+
},
|
|
36
|
+
createSQLViews: {
|
|
37
|
+
label: 'Create SQL Views',
|
|
38
|
+
completed: false,
|
|
39
|
+
open: false,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const [environmentDetails, setEnvironmentDetails] = useState(getDatabaseConnectionFormat('PostgreSQL'));
|
|
43
|
+
const [allSchemaInfo, setAllSchemaInfo] = useState(undefined);
|
|
44
|
+
const [initialError, setInitialError] = useState();
|
|
45
|
+
const [columnsByTable, setColumnsByTable] = useState([]);
|
|
46
|
+
const openStep = (step) => {
|
|
47
|
+
const updatedSteps = { ...createEnvSteps };
|
|
48
|
+
Object.keys(updatedSteps).forEach((key) => {
|
|
49
|
+
if (key === step) {
|
|
50
|
+
updatedSteps[key].open = true;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
updatedSteps[key].open = false;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
setCreateEnvSteps(updatedSteps);
|
|
57
|
+
};
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (navigateToDashboardManager) {
|
|
60
|
+
dispatch({
|
|
61
|
+
type: 'SET_NAVIGATE_TO_DASHBOARD_MANAGER',
|
|
62
|
+
payload: navigateToDashboardManager,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.warn('navigateToDashboardManager is undefined');
|
|
67
|
+
}
|
|
68
|
+
}, [navigateToDashboardManager]);
|
|
69
|
+
return (_jsxs("div", { style: {
|
|
70
|
+
...containerStyle,
|
|
71
|
+
display: 'flex',
|
|
72
|
+
flexDirection: 'column',
|
|
73
|
+
alignItems: 'center',
|
|
74
|
+
gap: 12,
|
|
75
|
+
paddingTop: 24,
|
|
76
|
+
}, children: [createEnvSteps.connectDB.open ? (_jsx(ConnectDatabase, { containerStyle: {
|
|
77
|
+
padding: '24px',
|
|
78
|
+
// width: '50%',
|
|
79
|
+
// minWidth: 800,
|
|
80
|
+
borderRadius: 6,
|
|
81
|
+
border: '1px solid #e7e7e7',
|
|
82
|
+
boxShadow: '0px 1px 12px rgba(0, 0, 0, 0.07)',
|
|
83
|
+
}, header1Style: header1Style, header2Style: header2Style, environmentDetails: environmentDetails, setEnvironmentDetails: (connectionInfo, initialSchemaRequest, initialSchemaRequestError) => {
|
|
84
|
+
setEnvironmentDetails(connectionInfo);
|
|
85
|
+
if (initialSchemaRequestError) {
|
|
86
|
+
setInitialError(initialSchemaRequestError);
|
|
87
|
+
}
|
|
88
|
+
if (initialSchemaRequest) {
|
|
89
|
+
setAllSchemaInfo(initialSchemaRequest);
|
|
90
|
+
}
|
|
91
|
+
const updatedSteps = { ...createEnvSteps };
|
|
92
|
+
updatedSteps.connectDB.completed = true;
|
|
93
|
+
setCreateEnvSteps(updatedSteps);
|
|
94
|
+
openStep('connectSchema');
|
|
95
|
+
} })) : (_jsx(StepDisplay, { label: "Connect Database", completed: createEnvSteps.connectDB.completed, header1Style: header1Style, onClick: () => {
|
|
96
|
+
openStep('connectDB');
|
|
97
|
+
setInitialError(undefined);
|
|
98
|
+
setAllSchemaInfo(undefined);
|
|
99
|
+
} })), createEnvSteps.connectSchema.open ? (_jsx(ConnectSchema, { containerStyle: {
|
|
100
|
+
padding: '24px',
|
|
101
|
+
// width: '50%',
|
|
102
|
+
borderRadius: 6,
|
|
103
|
+
maxWidth: 900,
|
|
104
|
+
border: '1px solid #e7e7e7',
|
|
105
|
+
boxShadow: '0px 1px 12px rgba(0, 0, 0, 0.07)',
|
|
106
|
+
}, header1Style: header1Style, header2Style: header2Style, propogateSchemaDetails: async (schemaDetails) => {
|
|
107
|
+
const updatedSteps = { ...createEnvSteps };
|
|
108
|
+
updatedSteps.connectSchema.completed = true;
|
|
109
|
+
const tableSchemas = await getTableSchema(formConnectionString(environmentDetails), schemaDetails?.tables);
|
|
110
|
+
setColumnsByTable(tableSchemas);
|
|
111
|
+
setCreateEnvSteps(updatedSteps);
|
|
112
|
+
setAllSchemaInfo(schemaDetails);
|
|
113
|
+
openStep('createSQLViews');
|
|
114
|
+
}, allSchemaInfo: allSchemaInfo, environmentDetails: environmentDetails, initialError: initialError })) : (_jsx(StepDisplay, { label: "Connect Schema", completed: createEnvSteps.connectSchema.completed, header1Style: header1Style })), createEnvSteps.createSQLViews.open ? (_jsx(CreateSQLViews, { containerStyle: {
|
|
115
|
+
// padding: '20px',
|
|
116
|
+
// width: '90%',
|
|
117
|
+
borderRadius: 6,
|
|
118
|
+
border: '1px solid #e7e7e7',
|
|
119
|
+
boxShadow: '0px 1px 6px rgba(0, 0, 0, 0.07)',
|
|
120
|
+
height: 'calc(100vh - 59px)',
|
|
121
|
+
width: 'calc(100vw - 200px)',
|
|
122
|
+
}, header1Style: header1Style, header2Style: header2Style, columnsByTable: columnsByTable, environmentDetails: environmentDetails, allSchemaInfo: allSchemaInfo, completeOnboarding: (client) => {
|
|
123
|
+
dispatch({ type: 'SET_CLIENT', payload: client });
|
|
124
|
+
dispatch({ type: 'UPDATE_CLIENTS', payload: client });
|
|
125
|
+
if (navigateToDashboardManager) {
|
|
126
|
+
navigateToDashboardManager();
|
|
127
|
+
}
|
|
128
|
+
}, domainName: domainName })) : (_jsx(StepDisplay, { label: "Create SQL Views", completed: false, header1Style: header1Style }))] }));
|
|
129
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { CSSProperties } from
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
2
|
export default function DashboardBuilder({ navigateToDashboardManager, containerStyle, sqlEditor, }: {
|
|
3
3
|
navigateToDashboardManager?: () => void;
|
|
4
4
|
containerStyle?: CSSProperties;
|
|
5
5
|
sqlEditor?: boolean;
|
|
6
6
|
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DashboardBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardBuilder.d.ts","sourceRoot":"","sources":["../../src/public_components/DashboardBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAwC,MAAM,OAAO,CAAC;AAQ5E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,EACd,SAAgB,GACjB,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CAmSA"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { useAdmin } from '../AdminProvider';
|
|
4
|
+
import { convertPostgresColumn } from '../Admin';
|
|
5
|
+
import { EnvSelectPopover, OrgSelect } from '../components';
|
|
6
|
+
import { SQLEditor } from '@quillsql/react';
|
|
7
|
+
import { QUILL_SERVER } from '../utils/constants';
|
|
8
|
+
import Banner from '../components/Banner';
|
|
9
|
+
export default function DashboardBuilder({ navigateToDashboardManager, containerStyle, sqlEditor = true, }) {
|
|
10
|
+
const parentRef = useRef(null);
|
|
11
|
+
const { state, dispatch } = useAdmin();
|
|
12
|
+
const [customerId, setCustomerId] = useState('');
|
|
13
|
+
const [isEditActive, setIsEditActive] = useState(false);
|
|
14
|
+
const [checked, setChecked] = useState(false);
|
|
15
|
+
const [selected, setSelected] = useState('');
|
|
16
|
+
const [userTyping, setUserTyping] = useState(false);
|
|
17
|
+
const inputRef = useRef(null);
|
|
18
|
+
const [filteredOptions, setFilteredOptions] = useState([]);
|
|
19
|
+
const [sqlPrompt, setSqlPrompt] = useState('');
|
|
20
|
+
const [dashboardNames, setDashboardNames] = useState([]);
|
|
21
|
+
const [selectedDashboardName, setSelectedDashboardName] = useState('');
|
|
22
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
23
|
+
const [query, setQuery] = useState(state.activeQuery);
|
|
24
|
+
const [rows, setRows] = useState([]);
|
|
25
|
+
const [columns, setColumns] = useState([]);
|
|
26
|
+
const [fields, setFields] = useState([]);
|
|
27
|
+
const [errorMessage, setErrorMessage] = useState('');
|
|
28
|
+
const [sqlResponseLoading, setSqlResponseLoading] = useState(false);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (state.activeQuery) {
|
|
31
|
+
setIsEditActive(true);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
setIsEditActive(false);
|
|
35
|
+
}
|
|
36
|
+
}, [state.activeQuery]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
if (navigateToDashboardManager) {
|
|
39
|
+
dispatch({
|
|
40
|
+
type: 'SET_NAVIGATE_TO_DASHBOARD_MANAGER',
|
|
41
|
+
payload: navigateToDashboardManager,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.warn('navigateToDashboardManager is undefined');
|
|
46
|
+
}
|
|
47
|
+
}, [navigateToDashboardManager]);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
setQuery(state.activeQuery);
|
|
50
|
+
}, [state.activeQuery]);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
let isSubscribed = true;
|
|
53
|
+
async function getCustomers() {
|
|
54
|
+
// If you need to retrieve the JSON data from the response:
|
|
55
|
+
const response2 = await fetch(`${QUILL_SERVER}/dashnames/${state.client._id}/`, {
|
|
56
|
+
method: 'GET',
|
|
57
|
+
headers: {
|
|
58
|
+
Authorization: `Bearer `,
|
|
59
|
+
environment: state.environment,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
const response2Data = await response2.json();
|
|
63
|
+
const dashNames = response2Data.dashboardNames.filter((elem) => elem !== null);
|
|
64
|
+
setDashboardNames(dashNames);
|
|
65
|
+
setSelectedDashboardName(dashNames[0]);
|
|
66
|
+
}
|
|
67
|
+
if (isSubscribed) {
|
|
68
|
+
getCustomers();
|
|
69
|
+
}
|
|
70
|
+
return () => {
|
|
71
|
+
isSubscribed = false;
|
|
72
|
+
};
|
|
73
|
+
}, [state.environment]);
|
|
74
|
+
// const navigate = useNavigate();
|
|
75
|
+
const handleRunQuery = async () => {
|
|
76
|
+
const { _id } = state.client;
|
|
77
|
+
try {
|
|
78
|
+
const response = await fetch(`${QUILL_SERVER}/dashquery?orgId=${state.organizationId || ''}&publicKey=${_id}`, {
|
|
79
|
+
method: 'POST',
|
|
80
|
+
headers: {
|
|
81
|
+
Authorization: `Bearer `,
|
|
82
|
+
environment: state.environment,
|
|
83
|
+
'Content-Type': 'application/json', // Important when sending JSON
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify({
|
|
86
|
+
query,
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
const responseData = await response.json();
|
|
90
|
+
if (responseData && responseData.errorMessage) {
|
|
91
|
+
setErrorMessage('Failed to run SQL query: ' + responseData.errorMessage);
|
|
92
|
+
setRows([]);
|
|
93
|
+
setColumns([]);
|
|
94
|
+
setFields([]);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
setErrorMessage('');
|
|
98
|
+
setRows(responseData.rows);
|
|
99
|
+
setColumns(responseData.fields.map((elem) => convertPostgresColumn(elem)));
|
|
100
|
+
setFields(responseData.fields);
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
console.log('ERROR: ', e);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const handleAddToDashboard = () => {
|
|
108
|
+
setIsOpen(true);
|
|
109
|
+
};
|
|
110
|
+
const newRows = useMemo(() => {
|
|
111
|
+
return JSON.parse(JSON.stringify(rows));
|
|
112
|
+
}, [rows]);
|
|
113
|
+
/* all your useState and useContext calls and your useEffect hooks */
|
|
114
|
+
// MMTODO: idk if this is needed
|
|
115
|
+
// const handleSetOrganization = (org) => {
|
|
116
|
+
// setOrganization(null);
|
|
117
|
+
// setTimeout(() => setOrganization(org), 50);
|
|
118
|
+
// };
|
|
119
|
+
return (_jsx("div", { style: {
|
|
120
|
+
// display: "flex",
|
|
121
|
+
// flexDirection: "column",
|
|
122
|
+
// paddingTop: "70px",
|
|
123
|
+
// paddingLeft: "30px",
|
|
124
|
+
// paddingRight: "30px",
|
|
125
|
+
...containerStyle,
|
|
126
|
+
}, ref: parentRef, children: _jsxs("div", { style: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [_jsx("div", { style: {
|
|
127
|
+
// width: 'calc(100vw - 30px)',
|
|
128
|
+
display: 'flex',
|
|
129
|
+
// position: "fixed",
|
|
130
|
+
backgroundColor: 'white',
|
|
131
|
+
zIndex: 1,
|
|
132
|
+
left: 0,
|
|
133
|
+
right: 0,
|
|
134
|
+
top: 0,
|
|
135
|
+
flexDirection: 'row',
|
|
136
|
+
paddingTop: 12,
|
|
137
|
+
alignItems: 'center',
|
|
138
|
+
justifyContent: 'space-between',
|
|
139
|
+
paddingLeft: '30px',
|
|
140
|
+
paddingRight: '30px',
|
|
141
|
+
borderBottomWidth: 1,
|
|
142
|
+
borderTopWidth: 0,
|
|
143
|
+
borderLeftWidth: 0,
|
|
144
|
+
borderRightWidth: 0,
|
|
145
|
+
borderStyle: 'solid',
|
|
146
|
+
borderColor: state.theme.borderColor,
|
|
147
|
+
paddingBottom: 20,
|
|
148
|
+
// boxShadow: "0px 1px 4px 0px rgba(0, 0, 0, 0.07)",
|
|
149
|
+
// paddingRight: '50px',
|
|
150
|
+
// position: 'absolute'
|
|
151
|
+
// // zIndex: 10
|
|
152
|
+
}, children: _jsxs("div", { style: {
|
|
153
|
+
display: 'flex',
|
|
154
|
+
flexDirection: 'row',
|
|
155
|
+
alignItems: 'flex-end',
|
|
156
|
+
justifyContent: 'space-between',
|
|
157
|
+
width: '100%',
|
|
158
|
+
}, children: [_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("h1", { style: {
|
|
159
|
+
fontSize: '14px',
|
|
160
|
+
paddingTop: '0px',
|
|
161
|
+
marginTop: '0px',
|
|
162
|
+
marginBottom: '4px',
|
|
163
|
+
fontWeight: '600',
|
|
164
|
+
color: state.theme.secondaryTextColor,
|
|
165
|
+
fontFamily: state.theme.fontFamily,
|
|
166
|
+
userSelect: 'none',
|
|
167
|
+
}, children: "Environment" }), _jsx(EnvSelectPopover, { setEnvironment: (env) => {
|
|
168
|
+
dispatch({ type: 'SET_ENVIRONMENT', payload: env });
|
|
169
|
+
}, environment: state.environment, clients: state.clients, client: state.client, setClient: (client) => dispatch({ type: 'SET_CLIENT', payload: client }), theme: state.theme, showPromote: false })] }), _jsx(OrgSelect, { environment: state.environment, setEnvironment: (env) => {
|
|
170
|
+
dispatch({ type: 'SET_ENVIRONMENT', payload: env });
|
|
171
|
+
}, organizations: state.organizations, organizationId: state.organizationId, setOrganizationId: (orgId) => {
|
|
172
|
+
dispatch({ type: 'SET_ORGANIZATION_ID', payload: orgId });
|
|
173
|
+
}, theme: state.theme, parentRef: parentRef })] }) }), isEditActive && (_jsx(Banner, { onExit: () => {
|
|
174
|
+
const msg = 'Are you sure you want to exit edit mode? Your changes will not be saved.';
|
|
175
|
+
if (!confirm(msg))
|
|
176
|
+
return;
|
|
177
|
+
dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
|
|
178
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
|
|
179
|
+
} })), sqlEditor && (_jsx(SQLEditor, { chartBuilderEnabled: true, showAccessControlOptions: true, showDateFieldOptions: true, showTableFormatOptions: true, defaultQuery: query, isEditMode: !!state.activeQuery, addToDashboardButtonLabel: state.activeQuery ? 'Save changes' : 'Add to dashboard', chartBuilderTitle: state.activeQuery ? 'Save changes' : 'Add to dashboard', dashboardItem: state.activeQuery ? state.activeEditItem : undefined, onAddToDashboardComplete: () => {
|
|
180
|
+
dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
|
|
181
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
|
|
182
|
+
if (state.navigateToDashboardManager) {
|
|
183
|
+
dispatch({ type: 'SET_ACTIVE_COMPONENT', payload: 'Dashboards' });
|
|
184
|
+
state.navigateToDashboardManager();
|
|
185
|
+
}
|
|
186
|
+
}, containerStyle: {
|
|
187
|
+
height: 'calc(100% - 138px)',
|
|
188
|
+
width: '100%',
|
|
189
|
+
paddingRight: 25,
|
|
190
|
+
paddingTop: 25,
|
|
191
|
+
} }))] }) }));
|
|
192
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { CSSProperties } from
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
2
|
export default function DashboardManager({ navigateToDashboardBuilder, containerStyle, }: {
|
|
3
3
|
navigateToDashboardBuilder?: () => void;
|
|
4
4
|
containerStyle?: CSSProperties;
|
|
5
5
|
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=DashboardManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardManager.d.ts","sourceRoot":"","sources":["../../src/public_components/DashboardManager.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA+B,MAAM,OAAO,CAAC;AA8BnE,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,0BAA0B,EAC1B,cAAc,GACf,EAAE;IACD,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC,2CA6iBA"}
|