mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 05:36:00 +00:00
75 lines
2.0 KiB
Svelte
75 lines
2.0 KiB
Svelte
<script lang="ts" context="module">
|
|
function extractUrlName(url, values) {
|
|
const match = url.match(/\/([^/\?]+)($|\?)/);
|
|
if (match) {
|
|
const res = match[1];
|
|
if (res.includes('.')) {
|
|
return res.slice(0, res.indexOf('.'));
|
|
}
|
|
return res;
|
|
}
|
|
return `url${values && values.sourceList ? values.sourceList.length + 1 : '1'}`;
|
|
}
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
import FormStyledButton from '../buttons/FormStyledButton.svelte';
|
|
import { getFormContext } from '../forms/FormProviderCore.svelte';
|
|
import ChangeDownloadUrlModal from '../modals/ChangeDownloadUrlModal.svelte';
|
|
import { showModal } from '../modals/modalTools';
|
|
import { extensions } from '../stores';
|
|
|
|
import getElectron from '../utility/getElectron';
|
|
import ElectronFilesInput from './ElectronFilesInput.svelte';
|
|
import { addFilesToSourceList } from './ImportExportConfigurator.svelte';
|
|
import UploadButton from '../buttons/UploadButton.svelte';
|
|
import { _t } from '../translations';
|
|
|
|
export let setPreviewSource = undefined;
|
|
|
|
const electron = getElectron();
|
|
const { values } = getFormContext();
|
|
|
|
const doAddUrl = url => {
|
|
addFilesToSourceList(
|
|
$extensions,
|
|
[
|
|
{
|
|
fileName: url,
|
|
shortName: extractUrlName(url, $values),
|
|
isDownload: true,
|
|
},
|
|
],
|
|
$values,
|
|
values,
|
|
null,
|
|
setPreviewSource
|
|
);
|
|
};
|
|
const handleAddUrl = () => showModal(ChangeDownloadUrlModal, { onConfirm: doAddUrl });
|
|
</script>
|
|
|
|
<div class="main">
|
|
<div class="flex">
|
|
{#if electron}
|
|
<ElectronFilesInput />
|
|
{:else}
|
|
<UploadButton />
|
|
{/if}
|
|
<FormStyledButton value={_t('importExport.addWebUrl', { defaultMessage: "Add web URL" })} on:click={handleAddUrl} />
|
|
</div>
|
|
|
|
<div class="wrapper">{_t('importExport.dragDropImportedFilesHere', { defaultMessage: "Drag & drop imported files here" })}</div>
|
|
</div>
|
|
|
|
<style>
|
|
.wrapper {
|
|
padding: 10px;
|
|
background: var(--theme-bg-2);
|
|
}
|
|
|
|
.main {
|
|
margin: var(--dim-large-form-margin);
|
|
}
|
|
</style>
|