mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-25 10:56:00 +00:00
shell - save to server
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import ToolbarButton from '../widgets/ToolbarButton';
|
import ToolbarButton from '../widgets/ToolbarButton';
|
||||||
|
|
||||||
export default function ShellToolbar({ execute, cancel, busy, edit, editAvailable }) {
|
export default function ShellToolbar({ execute, cancel, busy, edit, save, editAvailable }) {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ToolbarButton disabled={busy} onClick={execute} icon="icon run">
|
<ToolbarButton disabled={busy} onClick={execute} icon="icon run">
|
||||||
@@ -13,6 +13,9 @@ export default function ShellToolbar({ execute, cancel, busy, edit, editAvailabl
|
|||||||
<ToolbarButton disabled={!editAvailable} onClick={edit} icon="icon show-wizard">
|
<ToolbarButton disabled={!editAvailable} onClick={edit} icon="icon show-wizard">
|
||||||
Show wizard
|
Show wizard
|
||||||
</ToolbarButton>
|
</ToolbarButton>
|
||||||
|
<ToolbarButton onClick={save} icon="icon save">
|
||||||
|
Save
|
||||||
|
</ToolbarButton>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import RunnerOutputPane from '../query/RunnerOutputPane';
|
|||||||
import useShowModal from '../modals/showModal';
|
import useShowModal from '../modals/showModal';
|
||||||
import ImportExportModal from '../modals/ImportExportModal';
|
import ImportExportModal from '../modals/ImportExportModal';
|
||||||
import useEditorData from '../utility/useEditorData';
|
import useEditorData from '../utility/useEditorData';
|
||||||
|
import SaveTabModal from '../modals/SaveTabModal';
|
||||||
|
import useModalState from '../modals/useModalState';
|
||||||
|
|
||||||
const configRegex = /\s*\/\/\s*@ImportExportConfigurator\s*\n\s*\/\/\s*(\{[^\n]+\})\n/;
|
const configRegex = /\s*\/\/\s*@ImportExportConfigurator\s*\n\s*\/\/\s*(\{[^\n]+\})\n/;
|
||||||
const requireRegex = /\s*(\/\/\s*@require\s+[^\n]+)\n/g;
|
const requireRegex = /\s*(\/\/\s*@require\s+[^\n]+)\n/g;
|
||||||
@@ -21,6 +23,7 @@ export default function ShellTab({ tabid, tabVisible, toolbarPortalRef, ...other
|
|||||||
const [busy, setBusy] = React.useState(false);
|
const [busy, setBusy] = React.useState(false);
|
||||||
const showModal = useShowModal();
|
const showModal = useShowModal();
|
||||||
const { editorData, setEditorData } = useEditorData({ tabid });
|
const { editorData, setEditorData } = useEditorData({ tabid });
|
||||||
|
const saveFileModalState = useModalState();
|
||||||
|
|
||||||
const setOpenedTabs = useSetOpenedTabs();
|
const setOpenedTabs = useSetOpenedTabs();
|
||||||
|
|
||||||
@@ -108,9 +111,11 @@ export default function ShellTab({ tabid, tabVisible, toolbarPortalRef, ...other
|
|||||||
cancel={handleCancel}
|
cancel={handleCancel}
|
||||||
edit={handleEdit}
|
edit={handleEdit}
|
||||||
editAvailable={configRegex.test(editorData || '')}
|
editAvailable={configRegex.test(editorData || '')}
|
||||||
|
save={saveFileModalState.open}
|
||||||
/>,
|
/>,
|
||||||
toolbarPortalRef.current
|
toolbarPortalRef.current
|
||||||
)}
|
)}
|
||||||
|
<SaveTabModal modalState={saveFileModalState} data={editorData} format="text" folder="shell" tabid={tabid} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { AppObjectList } from '../appobj/AppObjectList';
|
|||||||
import { useOpenedTabs } from '../utility/globalState';
|
import { useOpenedTabs } from '../utility/globalState';
|
||||||
import ClosedTabAppObject from '../appobj/ClosedTabAppObject';
|
import ClosedTabAppObject from '../appobj/ClosedTabAppObject';
|
||||||
import { WidgetsInnerContainer } from './WidgetStyles';
|
import { WidgetsInnerContainer } from './WidgetStyles';
|
||||||
import { SavedSqlFileAppObject } from '../appobj/SavedFileAppObject';
|
import { SavedSqlFileAppObject, SavedShellFileAppObject } from '../appobj/SavedFileAppObject';
|
||||||
import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar';
|
import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar';
|
||||||
import { useFiles } from '../utility/metadataLoaders';
|
import { useFiles } from '../utility/metadataLoaders';
|
||||||
|
|
||||||
@@ -39,15 +39,30 @@ function SavedSqlFilesList() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SavedShellFilesList() {
|
||||||
|
const files = useFiles({ folder: 'shell' });
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<WidgetsInnerContainer>
|
||||||
|
<AppObjectList list={files} AppObjectComponent={SavedShellFileAppObject} />
|
||||||
|
</WidgetsInnerContainer>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export default function FilesWidget() {
|
export default function FilesWidget() {
|
||||||
return (
|
return (
|
||||||
<WidgetColumnBar>
|
<WidgetColumnBar>
|
||||||
<WidgetColumnBarItem title="Recently closed tabs" name="closedTabs" height="50%">
|
<WidgetColumnBarItem title="Recently closed tabs" name="closedTabs" height="40%">
|
||||||
<ClosedTabsList />
|
<ClosedTabsList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
<WidgetColumnBarItem title="Saved SQL files" name="sqlFiles">
|
<WidgetColumnBarItem title="Saved SQL files" name="sqlFiles" height="30%">
|
||||||
<SavedSqlFilesList />
|
<SavedSqlFilesList />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
<WidgetColumnBarItem title="Saved shell files" name="shellFiles" height="30%">
|
||||||
|
<SavedShellFilesList />
|
||||||
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user