@quillsql/admin 1.3.9 → 1.5.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/dist/cjs/Admin.d.ts +4 -1
- package/dist/cjs/Admin.d.ts.map +1 -1
- package/dist/cjs/Admin.js +122 -77
- package/dist/cjs/AdminProvider.d.ts +1 -1
- package/dist/cjs/AdminProvider.d.ts.map +1 -1
- package/dist/cjs/AdminProvider.js +9 -9
- package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
- package/dist/cjs/api/ConnectionClient.js +13 -0
- package/dist/cjs/components/UiComponents.d.ts +2 -1
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +9 -7
- package/dist/cjs/forms/client_onboard/CreateSqlViews.js +1 -1
- package/dist/cjs/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
- package/dist/cjs/forms/sql_views/CreateEditSqlView.js +19 -6
- package/dist/cjs/modals/NewDashboardModal.js +1 -1
- package/dist/cjs/modals/ReorderDashboardModal.d.ts.map +1 -1
- package/dist/cjs/modals/ReorderDashboardModal.js +178 -63
- package/dist/cjs/primitives/ModalPrimitive.d.ts.map +1 -1
- package/dist/cjs/primitives/ModalPrimitive.js +1 -2
- package/dist/cjs/public_components/DashboardBuilder.d.ts.map +1 -1
- package/dist/cjs/public_components/DashboardBuilder.js +92 -30
- package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
- package/dist/cjs/public_components/DashboardManager.js +164 -160
- package/dist/cjs/public_components/SQLViewManager.d.ts.map +1 -1
- package/dist/cjs/public_components/SQLViewManager.js +23 -4
- package/dist/cjs/utils/constants.d.ts +4 -4
- package/dist/cjs/utils/constants.js +2 -2
- package/dist/esm/Admin.d.ts +4 -1
- package/dist/esm/Admin.d.ts.map +1 -1
- package/dist/esm/Admin.js +124 -79
- package/dist/esm/AdminProvider.d.ts +1 -1
- package/dist/esm/AdminProvider.d.ts.map +1 -1
- package/dist/esm/AdminProvider.js +10 -10
- package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
- package/dist/esm/api/ConnectionClient.js +13 -0
- package/dist/esm/components/UiComponents.d.ts +2 -1
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +9 -7
- package/dist/esm/forms/client_onboard/CreateSqlViews.js +2 -2
- package/dist/esm/forms/sql_views/CreateEditSqlView.d.ts.map +1 -1
- package/dist/esm/forms/sql_views/CreateEditSqlView.js +19 -6
- package/dist/esm/modals/NewDashboardModal.js +1 -1
- package/dist/esm/modals/ReorderDashboardModal.d.ts.map +1 -1
- package/dist/esm/modals/ReorderDashboardModal.js +178 -63
- package/dist/esm/primitives/ModalPrimitive.d.ts.map +1 -1
- package/dist/esm/primitives/ModalPrimitive.js +1 -2
- package/dist/esm/public_components/DashboardBuilder.d.ts.map +1 -1
- package/dist/esm/public_components/DashboardBuilder.js +93 -31
- package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
- package/dist/esm/public_components/DashboardManager.js +164 -160
- package/dist/esm/public_components/SQLViewManager.d.ts.map +1 -1
- package/dist/esm/public_components/SQLViewManager.js +23 -4
- package/dist/esm/utils/constants.d.ts +4 -4
- package/dist/esm/utils/constants.js +2 -2
- package/package.json +1 -1
package/dist/esm/Admin.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
// @ts-nocheck
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
|
-
import { QuillProvider, useQuill, Chart, ChartEditor, useDashboard,
|
|
4
|
+
import { QuillProvider, useQuill, Chart, ChartEditor, useDashboard, } from '@quillsql/react';
|
|
5
5
|
import prismTheme from 'prism-react-renderer/themes/nightOwlLight';
|
|
6
6
|
import Highlight, { defaultProps } from 'prism-react-renderer';
|
|
7
7
|
import { DndContext, closestCenter, KeyboardSensor, PointerSensor, useSensor, useSensors, MeasuringStrategy, TouchSensor, } from '@dnd-kit/core';
|
|
@@ -9,13 +9,15 @@ import InputLabel from './components/InputLabel';
|
|
|
9
9
|
import CardSection from './components/CardSection';
|
|
10
10
|
import { arrayMove, SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy, useSortable, defaultAnimateLayoutChanges, } from '@dnd-kit/sortable';
|
|
11
11
|
import { CSS } from '@dnd-kit/utilities';
|
|
12
|
-
import {
|
|
12
|
+
import { DashboardManager } from './components';
|
|
13
13
|
import { AdminProvider, useAdmin } from './AdminProvider';
|
|
14
14
|
import { ButtonPrimitive, HeaderPrimitive, ModalPrimitive, SecondaryButtonPrimitive, SelectPrimitive, TextInputPrimitive, } from './primitives';
|
|
15
15
|
import DashboardBuilder from './public_components/DashboardBuilder';
|
|
16
16
|
import SQLViewManager from './public_components/SQLViewManager';
|
|
17
17
|
import { InitialDateRangeOptions, QUILL_SERVER, defaultDateRange, } from './utils/constants';
|
|
18
18
|
import TogglePrimitive from './primitives/TogglePrimitive';
|
|
19
|
+
import { MemoizedModal } from './components/UiComponents';
|
|
20
|
+
import { SQLEditor } from '@quillsql/react';
|
|
19
21
|
// chartColors: ["#6269E9", "#E14F62"],
|
|
20
22
|
const defaultTheme = {
|
|
21
23
|
fontFamily: 'Inter; Helvetica',
|
|
@@ -50,6 +52,7 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
|
|
|
50
52
|
setIsDateComparison(data.dateFilter.comparison);
|
|
51
53
|
dispatch('SET_DATE_FILTER', data.dateFilter);
|
|
52
54
|
}
|
|
55
|
+
setShowDateFilter(Boolean(data?.dateFilter));
|
|
53
56
|
}, [data]);
|
|
54
57
|
useEffect(() => {
|
|
55
58
|
setIsDateComparison(!!state.dateFilter?.comparison ?? false);
|
|
@@ -116,7 +119,8 @@ export function EditFiltersModal({ isOpen, dashboardData, selectedDashboard, cli
|
|
|
116
119
|
}
|
|
117
120
|
});
|
|
118
121
|
if (hasDuplicateField ||
|
|
119
|
-
(newDateFilter &&
|
|
122
|
+
(newDateFilter &&
|
|
123
|
+
Object.keys(newDateFilter).length > 0 &&
|
|
120
124
|
updatedFilters.some((filter) => filter.filterType === 'date'))) {
|
|
121
125
|
alert('Maximum of one filter per field');
|
|
122
126
|
return;
|
|
@@ -990,98 +994,135 @@ const FORMAT_QuillOptionS = [
|
|
|
990
994
|
{ value: 'percent', label: 'percent' },
|
|
991
995
|
{ value: 'string', label: 'string' },
|
|
992
996
|
];
|
|
993
|
-
|
|
994
|
-
|
|
997
|
+
const FakeModal = ({ children }) => (_jsx("div", { style: { height: '100%' }, children: children }));
|
|
998
|
+
const FakeSQLEditorModal = ({ children, isOpen }) => {
|
|
999
|
+
if (!isOpen)
|
|
1000
|
+
return null;
|
|
1001
|
+
return _jsx("div", { style: { height: '100%' }, children: children });
|
|
1002
|
+
};
|
|
1003
|
+
function QuillReport({ reportId, saveDashboardItem, isOpen, setIsOpen, isEditQueryOpen, SecondaryButtonComponent, ButtonComponent, deleteReport, handleSave, updateQuery, OrganizationSelectComponent, ModalComponent, NavigateToDashboardBuilder, }) {
|
|
995
1004
|
const { state, dispatch } = useAdmin();
|
|
996
|
-
const
|
|
997
|
-
|
|
998
|
-
dispatch({ type: 'SET_ACTIVE_COMPONENT', payload: 'Dashboards' });
|
|
999
|
-
};
|
|
1005
|
+
const { data, loading, error } = useQuill(reportId);
|
|
1006
|
+
const [isOpenChartBuilder, setIsOpenChartBuilder] = useState(false);
|
|
1000
1007
|
if (!data || loading) {
|
|
1001
1008
|
return null;
|
|
1002
1009
|
}
|
|
1003
1010
|
if (error) {
|
|
1004
1011
|
return _jsx("div", { children: error });
|
|
1005
1012
|
}
|
|
1006
|
-
return (
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
borderRightWidth: 0,
|
|
1025
|
-
borderStyle: 'solid',
|
|
1026
|
-
borderColor: theme.borderColor,
|
|
1027
|
-
paddingBottom: 20,
|
|
1028
|
-
boxShadow: '0px 1px 4px 0px rgba(0, 0, 0, 0.07)',
|
|
1029
|
-
// paddingRight: '50px',
|
|
1030
|
-
// position: 'absolute'
|
|
1031
|
-
// // zIndex: 10
|
|
1032
|
-
}, children: _jsxs("div", { style: {
|
|
1013
|
+
return (_jsx(MemoizedModal, { isOpen: isOpen, setIsOpen: setIsOpen, onClose: () => {
|
|
1014
|
+
setIsOpen(false);
|
|
1015
|
+
setIsOpenChartBuilder(false);
|
|
1016
|
+
dispatch({
|
|
1017
|
+
type: 'SET_ACTIVE_QUERY',
|
|
1018
|
+
payload: '',
|
|
1019
|
+
});
|
|
1020
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
|
|
1021
|
+
}, title: data.name || 'Report Detail', theme: theme, style: {
|
|
1022
|
+
width: 'calc(100vw - 80px)',
|
|
1023
|
+
height: 'calc(100vh - 80px)',
|
|
1024
|
+
}, children: _jsxs("div", { style: {
|
|
1025
|
+
width: '100%',
|
|
1026
|
+
height: 'calc(100% - 52px)', // full height minus header height
|
|
1027
|
+
display: 'flex',
|
|
1028
|
+
flexDirection: 'column',
|
|
1029
|
+
flexGrow: 1,
|
|
1030
|
+
}, children: [_jsxs("div", { style: {
|
|
1033
1031
|
display: 'flex',
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1032
|
+
alignItems: 'center',
|
|
1033
|
+
gap: 16,
|
|
1034
|
+
padding: 15,
|
|
1035
|
+
}, children: [_jsxs("button", { style: {
|
|
1036
|
+
height: 36,
|
|
1037
|
+
color: theme?.secondaryTextColor,
|
|
1038
|
+
border: '1px solid #e7e7e7',
|
|
1039
|
+
borderRadius: 6,
|
|
1040
|
+
outline: 'none',
|
|
1041
|
+
cursor: 'pointer',
|
|
1042
|
+
fontFamily: theme?.fontFamily,
|
|
1043
|
+
fontWeight: theme?.buttonFontWeight || 500,
|
|
1044
|
+
fontSize: 14,
|
|
1045
|
+
padding: '0px 12px',
|
|
1040
1046
|
display: 'flex',
|
|
1041
1047
|
flexDirection: 'row',
|
|
1042
1048
|
alignItems: 'center',
|
|
1043
|
-
|
|
1044
|
-
},
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1049
|
+
gap: 5,
|
|
1050
|
+
}, onClick: () => {
|
|
1051
|
+
setIsOpenChartBuilder((showEditChart) => !showEditChart);
|
|
1052
|
+
dispatch({
|
|
1053
|
+
type: 'SET_ACTIVE_QUERY',
|
|
1054
|
+
payload: '',
|
|
1055
|
+
});
|
|
1056
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
|
|
1057
|
+
}, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: 15, width: 15, children: [_jsx("path", { d: "M12 9a1 1 0 0 1-1-1V3c0-.552.45-1.007.997-.93a7.004 7.004 0 0 1 5.933 5.933c.078.547-.378.997-.93.997h-5Z" }), _jsx("path", { d: "M8.003 4.07C8.55 3.994 9 4.449 9 5v5a1 1 0 0 0 1 1h5c.552 0 1.008.45.93.997A7.001 7.001 0 0 1 2 11a7.002 7.002 0 0 1 6.003-6.93Z" })] }), "Edit chart"] }), _jsxs("button", { style: {
|
|
1058
|
+
height: 36,
|
|
1059
|
+
color: theme?.secondaryTextColor,
|
|
1060
|
+
border: '1px solid #e7e7e7',
|
|
1061
|
+
borderRadius: 6,
|
|
1062
|
+
outline: 'none',
|
|
1063
|
+
cursor: 'pointer',
|
|
1064
|
+
fontFamily: theme?.fontFamily,
|
|
1065
|
+
fontWeight: theme?.buttonFontWeight || 500,
|
|
1066
|
+
fontSize: 14,
|
|
1067
|
+
padding: '0px 12px',
|
|
1052
1068
|
display: 'flex',
|
|
1053
1069
|
flexDirection: 'row',
|
|
1054
1070
|
alignItems: 'center',
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1071
|
+
gap: 5,
|
|
1072
|
+
}, onClick: () => {
|
|
1073
|
+
if (state.activeQuery && state.activeEditItem) {
|
|
1074
|
+
dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
|
|
1075
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
|
|
1076
|
+
return;
|
|
1077
|
+
}
|
|
1078
|
+
dispatch({
|
|
1079
|
+
type: 'SET_ACTIVE_QUERY',
|
|
1080
|
+
payload: data.queryString,
|
|
1081
|
+
});
|
|
1082
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: data });
|
|
1083
|
+
}, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: 12, width: 12, children: _jsx("path", { d: "M21.731 2.269a2.625 2.625 0 0 0-3.712 0l-1.157 1.157 3.712 3.712 1.157-1.157a2.625 2.625 0 0 0 0-3.712ZM19.513 8.199l-3.712-3.712-12.15 12.15a5.25 5.25 0 0 0-1.32 2.214l-.8 2.685a.75.75 0 0 0 .933.933l2.685-.8a5.25 5.25 0 0 0 2.214-1.32L19.513 8.2Z" }) }), "Edit query"] }), _jsxs("button", { style: {
|
|
1084
|
+
height: 36,
|
|
1085
|
+
color: theme?.secondaryTextColor,
|
|
1086
|
+
border: '1px solid #e7e7e7',
|
|
1087
|
+
borderRadius: 6,
|
|
1088
|
+
outline: 'none',
|
|
1089
|
+
cursor: 'pointer',
|
|
1090
|
+
fontFamily: theme?.fontFamily,
|
|
1091
|
+
fontWeight: theme?.buttonFontWeight || 500,
|
|
1092
|
+
fontSize: 14,
|
|
1093
|
+
padding: '0px 12px',
|
|
1094
|
+
display: 'flex',
|
|
1095
|
+
flexDirection: 'row',
|
|
1096
|
+
alignItems: 'center',
|
|
1097
|
+
gap: 4,
|
|
1098
|
+
}, onClick: deleteReport, className: "secondary-button-quill", children: [_jsx("style", { children: `.secondary-button-quill { background: white } .secondary-button-quill:hover { background: #F4F4F5 }` }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: 14, width: 14, children: _jsx("path", { fillRule: "evenodd", d: "M8.75 1A2.75 2.75 0 0 0 6 3.75v.443c-.795.077-1.584.176-2.365.298a.75.75 0 1 0 .23 1.482l.149-.022.841 10.518A2.75 2.75 0 0 0 7.596 19h4.807a2.75 2.75 0 0 0 2.742-2.53l.841-10.52.149.023a.75.75 0 0 0 .23-1.482A41.03 41.03 0 0 0 14 4.193V3.75A2.75 2.75 0 0 0 11.25 1h-2.5ZM10 4c.84 0 1.673.025 2.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.325C8.327 4.025 9.16 4 10 4ZM8.58 7.72a.75.75 0 0 0-1.5.06l.3 7.5a.75.75 0 1 0 1.5-.06l-.3-7.5Zm4.34.06a.75.75 0 1 0-1.5-.06l-.3 7.5a.75.75 0 1 0 1.5.06l.3-7.5Z", clipRule: "evenodd" }) }), "Delete"] })] }), _jsx("div", { style: {
|
|
1099
|
+
display: 'flex',
|
|
1100
|
+
flexDirection: 'row',
|
|
1101
|
+
height: 'calc(100% - 66px)', // full height minus button container
|
|
1102
|
+
flexGrow: 1,
|
|
1103
|
+
}, children: _jsx("div", { style: {
|
|
1104
|
+
width: '100%',
|
|
1105
|
+
height: '100%',
|
|
1106
|
+
overflowX: 'hidden',
|
|
1107
|
+
overflowY: 'auto',
|
|
1108
|
+
}, children: state.activeEditItem && state.activeQuery ? (_jsx(QueryEditor, {})) : (_jsx(ChartEditor, { isOpen: isOpenChartBuilder, setIsOpen: setIsOpenChartBuilder, chartId: reportId, admin: true, organizationName: state.organizations.find((org) => {
|
|
1079
1109
|
return (org.id && String(org.id) === String(state.organizationId));
|
|
1080
|
-
})?.name, onDelete:
|
|
1110
|
+
})?.name, onDelete: deleteReport, horizontalView: true, Modal: FakeModal, Button: ButtonPrimitive })) }) })] }) }));
|
|
1081
1111
|
}
|
|
1082
|
-
|
|
1112
|
+
function QueryEditor() {
|
|
1113
|
+
const { state, dispatch } = useAdmin();
|
|
1114
|
+
return (_jsx(SQLEditor, { chartBuilderEnabled: true, showAccessControlOptions: true, showDateFieldOptions: true, showTableFormatOptions: true, chartBuilderHorizontalView: true, defaultQuery: state.activeQuery, isEditMode: false, addToDashboardButtonLabel: state.activeQuery ? 'Save changes' : 'Add to dashboard', chartBuilderTitle: state.activeQuery ? 'Save changes' : 'Add to dashboard', dashboardItem: state.activeQuery ? state.activeEditItem : undefined, onAddToDashboardComplete: () => {
|
|
1115
|
+
dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
|
|
1116
|
+
dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
|
|
1117
|
+
}, containerStyle: {
|
|
1118
|
+
height: '100%',
|
|
1119
|
+
width: '100%',
|
|
1120
|
+
}, organizationName: state.organizations.find((org) => {
|
|
1121
|
+
return org.id && String(org.id) === String(state.organizationId);
|
|
1122
|
+
})?.name, ModalComponent: FakeSQLEditorModal, ButtonComponent: ButtonPrimitive }));
|
|
1123
|
+
}
|
|
1124
|
+
export function ReportWrapper({ SecondaryButtonComponent, ButtonComponent, ModalComponent, SelectComponent, OrganizationSelectComponent, organizationId, queryEndpoint, queryHeaders, withCredentials, isOpen, setIsOpen, reloadDashboard, }) {
|
|
1083
1125
|
const { state, dispatch } = useAdmin();
|
|
1084
|
-
let [isOpen, setIsOpen] = useState(false);
|
|
1085
1126
|
const [isEditQueryOpen, setIsEditQueryOpen] = useState(false);
|
|
1086
1127
|
const updateQuery = async (dashboardItemId, query) => {
|
|
1087
1128
|
if (!state.client || !dashboardItemId || !query) {
|
|
@@ -1189,9 +1230,13 @@ export function ReportWrapper({ SecondaryButtonComponent, ButtonComponent, Modal
|
|
|
1189
1230
|
}
|
|
1190
1231
|
if (responseData) {
|
|
1191
1232
|
dispatch({ type: 'SET_ACTIVE_COMPONENT', payload: 'Dashboards' });
|
|
1233
|
+
reloadDashboard();
|
|
1192
1234
|
}
|
|
1193
1235
|
};
|
|
1194
|
-
|
|
1236
|
+
const handleSave = () => {
|
|
1237
|
+
reloadDashboard();
|
|
1238
|
+
};
|
|
1239
|
+
return (_jsx(QuillReport, { reportId: state.reportId, updateQuery: updateQuery, isOpen: isOpen, setIsOpen: setIsOpen, isEditQueryOpen: isEditQueryOpen, setIsEditQueryOpen: setIsEditQueryOpen, deleteReport: deleteReport, handleSave: handleSave, SecondaryButtonComponent: SecondaryButtonComponent, ButtonComponent: ButtonComponent, ModalComponent: ModalComponent, SelectComponent: SelectComponent, OrganizationSelectComponent: OrganizationSelectComponent }));
|
|
1195
1240
|
}
|
|
1196
1241
|
const measuringConfig = {
|
|
1197
1242
|
droppable: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminProvider.d.ts","sourceRoot":"","sources":["../../src/AdminProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAGZ,QAAQ,EAGR,SAAS,
|
|
1
|
+
{"version":3,"file":"AdminProvider.d.ts","sourceRoot":"","sources":["../../src/AdminProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useReducer, createContext, useEffect, useContext, } from 'react';
|
|
2
|
+
import { useReducer, createContext, useEffect, useContext, useState, } from 'react';
|
|
3
3
|
import { theme } from './Admin';
|
|
4
4
|
import { QuillProvider } from '@quillsql/react';
|
|
5
5
|
import { QUILL_SERVER } from './utils/constants';
|
|
@@ -7,8 +7,6 @@ import CreateEnvironment from './public_components/CreateEnvironment';
|
|
|
7
7
|
const AdminContext = createContext(undefined);
|
|
8
8
|
function reducer(state, action) {
|
|
9
9
|
switch (action.type) {
|
|
10
|
-
case 'SET_LOADING':
|
|
11
|
-
return { ...state, loading: action.payload };
|
|
12
10
|
case 'SET_QUERY_ENDPOINT':
|
|
13
11
|
return { ...state, queryEndpoint: action.payload };
|
|
14
12
|
case 'SET_QUERY_HEADERS':
|
|
@@ -69,6 +67,7 @@ const useAdmin = () => {
|
|
|
69
67
|
return context;
|
|
70
68
|
};
|
|
71
69
|
function AdminProvider({ children, publicKey, queryEndpoint, queryHeaders, withCredentials, customTheme, domainName, }) {
|
|
70
|
+
const [loading, setLoading] = useState(true);
|
|
72
71
|
const loadState = () => {
|
|
73
72
|
try {
|
|
74
73
|
const serializedState = sessionStorage.getItem('adminState');
|
|
@@ -93,7 +92,7 @@ function AdminProvider({ children, publicKey, queryEndpoint, queryHeaders, withC
|
|
|
93
92
|
};
|
|
94
93
|
const initialState = {
|
|
95
94
|
loading: true,
|
|
96
|
-
publicKey,
|
|
95
|
+
publicKey: publicKey || '',
|
|
97
96
|
queryEndpoint,
|
|
98
97
|
queryHeaders,
|
|
99
98
|
withCredentials,
|
|
@@ -222,7 +221,6 @@ function AdminProvider({ children, publicKey, queryEndpoint, queryHeaders, withC
|
|
|
222
221
|
};
|
|
223
222
|
try {
|
|
224
223
|
let response;
|
|
225
|
-
dispatch({ type: 'SET_LOADING', payload: true });
|
|
226
224
|
if (state.queryEndpoint) {
|
|
227
225
|
response = await fetch(state.queryEndpoint, {
|
|
228
226
|
method: 'POST',
|
|
@@ -243,12 +241,12 @@ function AdminProvider({ children, publicKey, queryEndpoint, queryHeaders, withC
|
|
|
243
241
|
else {
|
|
244
242
|
response = await fetch(`${QUILL_SERVER}/orgs/${state.client._id}/`, requestOptions);
|
|
245
243
|
if (!response.ok) {
|
|
244
|
+
setLoading(false);
|
|
246
245
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
247
246
|
}
|
|
248
247
|
}
|
|
249
248
|
const data = await response.json();
|
|
250
249
|
if (data.status === 'error') {
|
|
251
|
-
dispatch({ type: 'SET_LOADING', payload: false });
|
|
252
250
|
throw new Error(data.error);
|
|
253
251
|
}
|
|
254
252
|
if (data.queries.dbMismatched) {
|
|
@@ -259,7 +257,7 @@ function AdminProvider({ children, publicKey, queryEndpoint, queryHeaders, withC
|
|
|
259
257
|
backendDatabaseType: data.queries.backendDatbaseType, // TYPO NEED TO FIX IN NODE and Python SDK
|
|
260
258
|
},
|
|
261
259
|
});
|
|
262
|
-
|
|
260
|
+
setLoading(false);
|
|
263
261
|
return;
|
|
264
262
|
}
|
|
265
263
|
if (state.queryEndpoint) {
|
|
@@ -282,20 +280,22 @@ function AdminProvider({ children, publicKey, queryEndpoint, queryHeaders, withC
|
|
|
282
280
|
type: 'SET_ORGANIZATION_ID',
|
|
283
281
|
payload: state.organizationId || state.client.adminCustomerId,
|
|
284
282
|
});
|
|
285
|
-
|
|
283
|
+
setLoading(false);
|
|
286
284
|
}
|
|
287
285
|
catch (error) {
|
|
288
286
|
console.error('Error fetching data:', error);
|
|
289
|
-
dispatch({ type: 'SET_LOADING', payload: false });
|
|
290
287
|
}
|
|
291
288
|
}
|
|
292
289
|
if (isSubscribed && state.client) {
|
|
293
290
|
getCustomers();
|
|
294
291
|
}
|
|
292
|
+
if (!publicKey) {
|
|
293
|
+
setLoading(false);
|
|
294
|
+
}
|
|
295
295
|
return () => {
|
|
296
296
|
isSubscribed = false;
|
|
297
297
|
};
|
|
298
298
|
}, [state.environment, state.client, state.organizationId, publicKey]);
|
|
299
|
-
return (_jsxs(AdminContext.Provider, { value: { state, dispatch }, children: [!state.client && !
|
|
299
|
+
return (_jsxs(AdminContext.Provider, { value: { state, dispatch }, children: [!state.client && !loading && _jsx(CreateEnvironment, {}), state.client && (_jsx(QuillProvider, { organizationId: state.organizationId, queryEndpoint: state.queryEndpoint ?? '', withCredentials: state.withCredentials, queryHeaders: state.queryHeaders ?? {}, publicKey: state.client._id, environment: state.environment, theme: state.theme, children: children }))] }));
|
|
300
300
|
}
|
|
301
301
|
export { AdminProvider, useAdmin };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionClient.d.ts","sourceRoot":"","sources":["../../../src/api/ConnectionClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,gBAiBlB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,CAgB1C;AACD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAe/B;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAgBxB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,GAAG,CAAA;CAAE,EAAE,CAAC,CAkBtC;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC,CAgB3B;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,EAAE,CAAC,CA4B3B;AAED,wBAAsB,WAAW,CAC/B,YAAY,EAAE,GAAG,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,GAAG,CAAC,CAqBd;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"ConnectionClient.d.ts","sourceRoot":"","sources":["../../../src/api/ConnectionClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -208,6 +208,19 @@ export async function getSqlViewData(clientId, query, databaseType, queryEndpoin
|
|
|
208
208
|
if (results.status === 'error') {
|
|
209
209
|
return { ...results, success: false };
|
|
210
210
|
}
|
|
211
|
+
// SPECIAL CHECK FOR BIG QUERY DATE FIELDS
|
|
212
|
+
if (databaseType.toLowerCase() === 'bigquery') {
|
|
213
|
+
const dateFields = results.data.queryResults[0].fields.filter((field) => {
|
|
214
|
+
return (field.fieldType.toLowerCase() === 'date' ||
|
|
215
|
+
field.fieldType.toLowerCase() === 'datetime');
|
|
216
|
+
});
|
|
217
|
+
if (dateFields.length > 0) {
|
|
218
|
+
return {
|
|
219
|
+
error: `Error Invalid Column ${dateFields[0].name}. BigQuery DATE and DATETIME types not supported. Use TIMESTAMP(${dateFields[0].name}) to convert DATE and DATETIME fields to TIMESTAMP.`,
|
|
220
|
+
success: false,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
211
224
|
return queryEndpoint
|
|
212
225
|
? {
|
|
213
226
|
...results.data.queryResults[0],
|
|
@@ -101,13 +101,14 @@ export declare function MemoizedPopover({ onClose, parentRef, children, style, o
|
|
|
101
101
|
isOpen: any;
|
|
102
102
|
setIsOpen: any;
|
|
103
103
|
}): import("react/jsx-runtime").JSX.Element;
|
|
104
|
-
export declare function MemoizedModal({ isOpen, onClose, setIsOpen, title, children, theme, }: {
|
|
104
|
+
export declare function MemoizedModal({ isOpen, onClose, setIsOpen, title, children, theme, style, }: {
|
|
105
105
|
isOpen: any;
|
|
106
106
|
onClose: any;
|
|
107
107
|
setIsOpen: any;
|
|
108
108
|
title: any;
|
|
109
109
|
children: any;
|
|
110
110
|
theme: any;
|
|
111
|
+
style?: {} | undefined;
|
|
111
112
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
112
113
|
export declare const MemoizedDeleteButton: ({ onClick, style }: {
|
|
113
114
|
onClick: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -168,11 +168,11 @@ export function MemoizedPopover({ onClose, parentRef, children, style = {}, onCl
|
|
|
168
168
|
top: showTrigger ? 12 : 0,
|
|
169
169
|
borderRadius: 6,
|
|
170
170
|
padding: 20,
|
|
171
|
-
overflow: '
|
|
171
|
+
overflow: 'auto',
|
|
172
172
|
...style,
|
|
173
173
|
}, children: children }) }))] }));
|
|
174
174
|
}
|
|
175
|
-
export function MemoizedModal({ isOpen, onClose, setIsOpen, title, children, theme, }) {
|
|
175
|
+
export function MemoizedModal({ isOpen, onClose, setIsOpen, title, children, theme, style = {}, }) {
|
|
176
176
|
if (!isOpen) {
|
|
177
177
|
return null;
|
|
178
178
|
}
|
|
@@ -192,8 +192,8 @@ export function MemoizedModal({ isOpen, onClose, setIsOpen, title, children, the
|
|
|
192
192
|
top: '50%',
|
|
193
193
|
zIndex: '50',
|
|
194
194
|
// width: "100%",
|
|
195
|
-
maxWidth: 1024,
|
|
196
|
-
maxHeight: '90vh',
|
|
195
|
+
// maxWidth: 1024,
|
|
196
|
+
// maxHeight: '90vh',
|
|
197
197
|
display: 'flex',
|
|
198
198
|
justifyContent: 'center',
|
|
199
199
|
alignItems: 'center',
|
|
@@ -205,14 +205,16 @@ export function MemoizedModal({ isOpen, onClose, setIsOpen, title, children, the
|
|
|
205
205
|
borderColor: '#e7e7e7',
|
|
206
206
|
overflow: 'hidden',
|
|
207
207
|
// zIndex: 1000,
|
|
208
|
+
...style,
|
|
208
209
|
}, children: _jsxs("div", { style: {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
overflowY: '
|
|
210
|
+
width: '100%',
|
|
211
|
+
height: '100%',
|
|
212
|
+
overflowY: 'auto',
|
|
212
213
|
// maxWidth: "700px",
|
|
213
214
|
backgroundColor: '#ffffff',
|
|
214
215
|
// padding: "20px",
|
|
215
216
|
// borderRadius: "8px",
|
|
217
|
+
flexGrow: 1,
|
|
216
218
|
display: 'flex',
|
|
217
219
|
flexDirection: 'column',
|
|
218
220
|
alignItems: 'center',
|
|
@@ -4,7 +4,7 @@ import { ButtonPrimitive, ModalPrimitive, TextInputPrimitive, } from '../../prim
|
|
|
4
4
|
import { createSQLView, getQueryFromAiWithConnection, getSqlViewData, } from '../../api/ConnectionClient';
|
|
5
5
|
import SqlViewTile from '../../components/SqlViewTile';
|
|
6
6
|
import SqlTextEditor from '../../components/SqlTextEditor';
|
|
7
|
-
import {
|
|
7
|
+
import { Table } from '@quillsql/react';
|
|
8
8
|
export default function CreateSQLViews({ containerStyle, header1Style, header2Style, columnsByTable, environmentDetails, allSchemaInfo, domainName, completeOnboarding, clientId, state, }) {
|
|
9
9
|
const [selectedTable, setSelectedTable] = useState(undefined);
|
|
10
10
|
const [queryInfo, setQueryInfo] = useState({
|
|
@@ -110,7 +110,7 @@ export default function CreateSQLViews({ containerStyle, header1Style, header2St
|
|
|
110
110
|
paddingLeft: 16,
|
|
111
111
|
paddingRight: 16,
|
|
112
112
|
height: 'calc(100vh - 515px)',
|
|
113
|
-
}, children: [_jsx(
|
|
113
|
+
}, children: [_jsx(Table, { rows: tableData.rows, columns: tableData.fields, containerStyle: {
|
|
114
114
|
height: 'calc(100vh - 589px)',
|
|
115
115
|
width: '100%',
|
|
116
116
|
}, showDownloadCSVButton: true }), _jsxs("div", { style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateEditSqlView.d.ts","sourceRoot":"","sources":["../../../../src/forms/sql_views/CreateEditSqlView.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,oBAAoB,EAEpB,uBAAuB,EACvB,WAAW,
|
|
1
|
+
{"version":3,"file":"CreateEditSqlView.d.ts","sourceRoot":"","sources":["../../../../src/forms/sql_views/CreateEditSqlView.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,oBAAoB,EAEpB,uBAAuB,EACvB,WAAW,EAGZ,MAAM,iBAAiB,CAAC;AAwBzB,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI3D,UAAU,sBAAsB;IAC9B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,cAAc,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IACtD,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC5D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,EAAE,CAAC,EAAE,MAAM,KACR,IAAI,CAAC;IACV,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,cAAc,EACd,cAAc,EACd,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,gBAA2C,EAC3C,MAAuB,EACvB,SAA6B,EAC7B,MAAuB,EACvB,YAAY,EACZ,eAAe,GAChB,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAiTtC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { Table, SchemaListComponent, } from '@quillsql/react';
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
4
|
import { useAdmin } from '../../AdminProvider';
|
|
5
5
|
import { getQueryFromAiWithConnection, getSqlViewData, } from '../../api/ConnectionClient';
|
|
6
6
|
import SqlTextEditor from '../../components/SqlTextEditor';
|
|
7
7
|
import { LoadingSpinner, MemoizedButton, MemoizedHeader, MemoizedTextInput, } from '../../components/UiComponents';
|
|
8
|
-
import { SchemaListComponent } from '@quillsql/react';
|
|
9
8
|
import { ForeignKeyModal } from '../client_onboard/CreateSqlViews';
|
|
10
9
|
import DynamicBanner from '../../components/DynamicBanner';
|
|
11
10
|
export default function CreateEditSqlView({ containerStyle, initialSqlView, closeEditView, addEditView, SecondaryButtonComponent, LoadingComponent = () => _jsx(LoadingSpinner, {}), Button = MemoizedButton, TextInput = MemoizedTextInput, Header = MemoizedHeader, allTableData, schemaIsLoading, }) {
|
|
@@ -77,6 +76,15 @@ export default function CreateEditSqlView({ containerStyle, initialSqlView, clos
|
|
|
77
76
|
}
|
|
78
77
|
setRunQueryButtonLabel('Run query');
|
|
79
78
|
setErrorInfo({ show: false, message: '' });
|
|
79
|
+
// stringify all rows that are either jsonb or json
|
|
80
|
+
resp.rows = resp.rows.map((row) => {
|
|
81
|
+
for (const key in row) {
|
|
82
|
+
if (typeof row[key] === 'object') {
|
|
83
|
+
row[key] = JSON.stringify(row[key]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return row;
|
|
87
|
+
});
|
|
80
88
|
setTableData(resp);
|
|
81
89
|
setViewAddable(true);
|
|
82
90
|
setRanViewQuery(query);
|
|
@@ -111,7 +119,9 @@ export default function CreateEditSqlView({ containerStyle, initialSqlView, clos
|
|
|
111
119
|
}, children: [_jsx("div", { style: {
|
|
112
120
|
paddingLeft: '20px',
|
|
113
121
|
paddingRight: '30px',
|
|
114
|
-
}, children: _jsx(TextInput, { placeholder: "Search...",
|
|
122
|
+
}, children: _jsx(TextInput, { placeholder: "Search...",
|
|
123
|
+
// @ts-ignore
|
|
124
|
+
onChange: (e) => {
|
|
115
125
|
setTableSearchQuery(e);
|
|
116
126
|
setDisplayedTableData(allTableData.filter((table) => table.tableName
|
|
117
127
|
.toLowerCase()
|
|
@@ -131,10 +141,13 @@ export default function CreateEditSqlView({ containerStyle, initialSqlView, clos
|
|
|
131
141
|
justifyContent: 'space-between',
|
|
132
142
|
gap: 20,
|
|
133
143
|
width: '100%',
|
|
134
|
-
}, children: [_jsx(TextInput
|
|
144
|
+
}, children: [_jsx(TextInput
|
|
145
|
+
// @ts-ignore
|
|
146
|
+
, {
|
|
147
|
+
// @ts-ignore
|
|
148
|
+
onChange: (e) => {
|
|
135
149
|
setAIPrompt(e);
|
|
136
150
|
}, placeholder: 'Describe a query...', value: aiPrompt, id: 'ai-prompt', width: '95%' }), _jsx(Button, { label: askAIButton, onClick: handleRunSqlPrompt, width: "100px" })] }), _jsx(SqlTextEditor, { value: editViewQuery, setValue: (e) => {
|
|
137
|
-
setErrorInfo({ show: false, message: '' });
|
|
138
151
|
setEditViewQuery(e);
|
|
139
152
|
} }), _jsx("div", { style: { width: '200px' }, children: _jsx(Button, { label: runQueryButtonLabel, onClick: handleRunQuery }) }), errorInfo.show ? (_jsx("div", { style: {
|
|
140
153
|
fontSize: 15,
|
|
@@ -151,5 +164,5 @@ export default function CreateEditSqlView({ containerStyle, initialSqlView, clos
|
|
|
151
164
|
display: 'flex',
|
|
152
165
|
justifyContent: 'center',
|
|
153
166
|
alignItems: 'center',
|
|
154
|
-
}, children: _jsx(LoadingComponent, {}) })), tableData && (_jsx(
|
|
167
|
+
}, children: _jsx(LoadingComponent, {}) })), tableData && (_jsx(Table, { rows: tableData.rows, columns: tableData.fields, containerStyle: { height: '360px' } })), viewAddable && (_jsx("div", { style: { width: '200px' }, children: _jsx(Button, { label: `${initialSqlView ? 'Save changes' : 'Create view'}`, onClick: () => addEditSqlView(false) }) }))] })] }), _jsx(ForeignKeyModal, { isOpen: showFKModal, setIsOpen: setShowFKModal, override: addEditSqlView, foreignKey: state.client.customerFieldName, tableName: state.client.customerTableName })] }) }));
|
|
155
168
|
}
|
|
@@ -98,7 +98,7 @@ export function NewDashboardModal({ isOpen, client, setIsOpen, onSave, ModalComp
|
|
|
98
98
|
const body = {
|
|
99
99
|
newDashboardName: selectedDashboardName,
|
|
100
100
|
filters: updatedFilters,
|
|
101
|
-
dateFilter: {
|
|
101
|
+
dateFilter: showDateFilter && {
|
|
102
102
|
...newDateFilter,
|
|
103
103
|
comparison: isDateComparison,
|
|
104
104
|
primaryRange: initialRange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReorderDashboardModal.d.ts","sourceRoot":"","sources":["../../../src/modals/ReorderDashboardModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReorderDashboardModal.d.ts","sourceRoot":"","sources":["../../../src/modals/ReorderDashboardModal.tsx"],"names":[],"mappings":"AA0BA,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAC5C,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf;;;;;;;;;CAAA,2CAuKA"}
|