diff --git a/packages/web/src/designer/QueryDesignToolbar.js b/packages/web/src/designer/QueryDesignToolbar.js index 69962401e..22c2fa3c4 100644 --- a/packages/web/src/designer/QueryDesignToolbar.js +++ b/packages/web/src/designer/QueryDesignToolbar.js @@ -2,13 +2,25 @@ import React from 'react'; import useHasPermission from '../utility/useHasPermission'; import ToolbarButton from '../widgets/ToolbarButton'; -export default function QueryDesignToolbar({ execute, isDatabaseDefined, busy, save, modelState, dispatchModel }) { +export default function QueryDesignToolbar({ + execute, + isDatabaseDefined, + busy, + save, + modelState, + dispatchModel, + isConnected, + kill, +}) { const hasPermission = useHasPermission(); return ( <> Execute + + Kill + {hasPermission('files/query/write') && ( Save diff --git a/packages/web/src/tabs/QueryDesignTab.js b/packages/web/src/tabs/QueryDesignTab.js index db4f2c9ee..8e87f5626 100644 --- a/packages/web/src/tabs/QueryDesignTab.js +++ b/packages/web/src/tabs/QueryDesignTab.js @@ -28,6 +28,7 @@ import useUndoReducer from '../utility/useUndoReducer'; export default function QueryDesignTab({ tabid, conid, database, tabVisible, toolbarPortalRef, ...other }) { const [sessionId, setSessionId] = React.useState(null); + const [visibleResultTabs, setVisibleResultTabs] = React.useState(false); const [executeNumber, setExecuteNumber] = React.useState(0); const setOpenedTabs = useSetOpenedTabs(); const socket = useSocket(); @@ -101,6 +102,7 @@ export default function QueryDesignTab({ tabid, conid, database, tabVisible, too const handleExecute = React.useCallback(async () => { if (busy) return; setExecuteNumber((num) => num + 1); + setVisibleResultTabs(true); let sesid = sessionId; if (!sesid) { @@ -118,14 +120,8 @@ export default function QueryDesignTab({ tabid, conid, database, tabVisible, too }); }, [busy, conid, sessionId, database, sqlPreview]); - const handleCancel = () => { - axios.post('sessions/cancel', { - sesid: sessionId, - }); - }; - - const handleKill = () => { - axios.post('sessions/kill', { + const handleKill = async () => { + await axios.post('sessions/kill', { sesid: sessionId, }); setSessionId(null); @@ -176,7 +172,7 @@ export default function QueryDesignTab({ tabid, conid, database, tabVisible, too - {sessionId && ( + {visibleResultTabs && ( , toolbarPortalRef.current )}