shell - save to server

This commit is contained in:
Jan Prochazka
2020-12-03 18:13:51 +01:00
parent f55049f212
commit 8d9cb51baa
3 changed files with 27 additions and 4 deletions

View File

@@ -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>
</> </>
); );
} }

View File

@@ -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} />
</> </>
); );
} }

View File

@@ -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>
); );
} }