diff --git a/packages/web/public/global.css b/packages/web/public/global.css index 715923110..0cb25a624 100644 --- a/packages/web/public/global.css +++ b/packages/web/public/global.css @@ -31,6 +31,9 @@ body { .icon-invisible { visibility: hidden; } +.space-between { + justify-content: space-between; +} .flex { display: flex; } diff --git a/packages/web/src/impexp/ImportExportConfigurator.svelte b/packages/web/src/impexp/ImportExportConfigurator.svelte index fa9dbac82..a45c3b5c0 100644 --- a/packages/web/src/impexp/ImportExportConfigurator.svelte +++ b/packages/web/src/impexp/ImportExportConfigurator.svelte @@ -1,7 +1,24 @@ + +{#if supportsPreview} + { + if (e.target.checked) $previewSource = name; + else $previewSource = null; + }} + /> +{/if} diff --git a/packages/web/src/impexp/SourceAction.svelte b/packages/web/src/impexp/SourceAction.svelte new file mode 100644 index 000000000..bfd9c0e85 --- /dev/null +++ b/packages/web/src/impexp/SourceAction.svelte @@ -0,0 +1,20 @@ + + + setFieldValue(`actionType_${name}`, e.detail)} +/> diff --git a/packages/web/src/impexp/SourceName.svelte b/packages/web/src/impexp/SourceName.svelte new file mode 100644 index 000000000..39d1dd61a --- /dev/null +++ b/packages/web/src/impexp/SourceName.svelte @@ -0,0 +1,49 @@ + + +
+
{name}
+
+ {#if obj && !!obj.isDownload} +
+ +
+ {/if} +
+ +
+
+
+ + diff --git a/packages/web/src/impexp/TargetName.svelte b/packages/web/src/impexp/TargetName.svelte new file mode 100644 index 000000000..9391b136e --- /dev/null +++ b/packages/web/src/impexp/TargetName.svelte @@ -0,0 +1,16 @@ + + + setFieldValue(`targetName_${name}`, e.target.value)} +/> diff --git a/packages/web/src/modals/ChangeDownloadUrlModal.svelte b/packages/web/src/modals/ChangeDownloadUrlModal.svelte new file mode 100644 index 000000000..fe4b2946b --- /dev/null +++ b/packages/web/src/modals/ChangeDownloadUrlModal.svelte @@ -0,0 +1,29 @@ + + + + + Download imported file from web + + + + + + + + + diff --git a/packages/web/src/modals/ImportExportModal.svelte b/packages/web/src/modals/ImportExportModal.svelte index 826fc1896..de0088506 100644 --- a/packages/web/src/modals/ImportExportModal.svelte +++ b/packages/web/src/modals/ImportExportModal.svelte @@ -8,11 +8,16 @@ import FormTextField from '../forms/FormTextField.svelte'; import LargeFormButton from '../forms/LargeFormButton.svelte'; import FontIcon from '../icons/FontIcon.svelte'; + import createImpExpScript from '../impexp/createImpExpScript'; import ImportExportConfigurator from '../impexp/ImportExportConfigurator.svelte'; import { getDefaultFileFormat } from '../plugins/fileformats'; import RunnerOutputFiles from '../query/RunnerOutputFiles'; import SocketMessageView from '../query/SocketMessageView.svelte'; - import { currentArchive, extensions } from '../stores'; + import { currentArchive, extensions, selectedWidget } from '../stores'; + import axiosInstance from '../utility/axiosInstance'; + import openNewTab from '../utility/openNewTab'; + import socket from '../utility/socket'; + import useEffect from '../utility/useEffect'; import WidgetColumnBar from '../widgets/WidgetColumnBar.svelte'; import WidgetColumnBarItem from '../widgets/WidgetColumnBarItem.svelte'; import ModalBase from './ModalBase.svelte'; @@ -28,41 +33,70 @@ export let openedFile = undefined; export let importToArchive = false; + const refreshArchiveFolderRef = { current: null }; + $: targetArchiveFolder = importToArchive ? `import-${moment().format('YYYY-MM-DD-hh-mm-ss')}` : $currentArchive; - const handleGenerateScript = async () => { - // const code = await createImpExpScript(extensions, values); - // openNewTab( - // { - // title: 'Shell #', - // icon: 'img shell', - // tabComponent: 'ShellTab', - // }, - // { editor: code } - // ); - // modalState.close(); + $: effect = useEffect(() => registerRunnerDone(runnerId)); + + function registerRunnerDone(rid) { + if (rid) { + socket.on(`runner-done-${rid}`, handleRunnerDone); + return () => { + socket.off(`runner-done-${rid}`, handleRunnerDone); + }; + } else { + return () => {}; + } + } + + $: $effect; + + const handleRunnerDone = () => { + busy = false; + if (refreshArchiveFolderRef.current) { + axiosInstance.post('archive/refresh-folders', {}); + axiosInstance.post('archive/refresh-files', { folder: refreshArchiveFolderRef.current }); + $currentArchive = refreshArchiveFolderRef.current; + $selectedWidget = 'archive'; + } }; - const handleExecute = async values => { - // if (busy) return; - // setBusy(true); - // const script = await createImpExpScript(extensions, values); - // setExecuteNumber(num => num + 1); - // let runid = runnerId; - // const resp = await axios.post('runners/start', { script }); - // runid = resp.data.runid; - // setRunnerId(runid); - // if (values.targetStorageType == 'archive') { - // refreshArchiveFolderRef.current = values.targetArchiveFolder; - // } else { - // refreshArchiveFolderRef.current = null; - // } + const handleGenerateScript = async e => { + closeCurrentModal(); + const code = await createImpExpScript($extensions, e.detail); + openNewTab( + { + title: 'Shell #', + icon: 'img shell', + tabComponent: 'ShellTab', + }, + { editor: code } + ); + }; + + const handleExecute = async e => { + if (busy) return; + const values = e.detail; + busy = true; + const script = await createImpExpScript($extensions, values); + executeNumber += 1; + let runid = runnerId; + const resp = await axiosInstance.post('runners/start', { script }); + runid = resp.data.runid; + runnerId = runid; + + if (values.targetStorageType == 'archive') { + refreshArchiveFolderRef.current = values.targetArchiveFolder; + } else { + refreshArchiveFolderRef.current = null; + } }; const handleCancel = () => { - // axios.post('runners/cancel', { - // runid: runnerId, - // }); + axiosInstance.post('runners/cancel', { + runid: runnerId, + }); }; @@ -85,9 +119,9 @@
- +
- +
@@ -145,4 +179,13 @@ border-top: 1px solid var(--theme-border); background-color: var(--theme-bg-modalheader); } + + .content { + border-top: 1px solid var(--theme-border); + flex: 1; + display: flex; + flex-direction: column; + overflow-y: auto; + overflow-x: hidden; + } diff --git a/packages/web/src/query/RunnerOutputFiles/RunnerOutputFiles.svelte b/packages/web/src/query/RunnerOutputFiles/RunnerOutputFiles.svelte index 17677e98f..f88d68218 100644 --- a/packages/web/src/query/RunnerOutputFiles/RunnerOutputFiles.svelte +++ b/packages/web/src/query/RunnerOutputFiles/RunnerOutputFiles.svelte @@ -58,7 +58,7 @@ runnerId, }), }, - !electron && { + electron && { fieldName: 'copy', header: 'Copy', component: CopyLink, @@ -67,7 +67,7 @@ runnerId, }), }, - !electron && { + electron && { fieldName: 'show', header: 'Show', component: ShowLink, diff --git a/packages/web/src/tabs/MarkdownEditorTab.svelte b/packages/web/src/tabs/MarkdownEditorTab.svelte index 7286def25..bdbdcc05e 100644 --- a/packages/web/src/tabs/MarkdownEditorTab.svelte +++ b/packages/web/src/tabs/MarkdownEditorTab.svelte @@ -1,7 +1,7 @@ diff --git a/packages/web/src/tabs/ShellTab.svelte b/packages/web/src/tabs/ShellTab.svelte index 7ae7e6968..1f5bb7923 100644 --- a/packages/web/src/tabs/ShellTab.svelte +++ b/packages/web/src/tabs/ShellTab.svelte @@ -1,7 +1,7 @@