mirror of
https://github.com/open-webui/open-webui
synced 2025-05-21 05:35:18 +00:00
feat: single model export
This commit is contained in:
parent
2e24c2d4d3
commit
0a9f41a044
19
src/lib/components/icons/ArrowDownTray.svelte
Normal file
19
src/lib/components/icons/ArrowDownTray.svelte
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export let className = 'size-4';
|
||||||
|
export let strokeWidth = '1.5';
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
stroke-width={strokeWidth}
|
||||||
|
stroke="currentColor"
|
||||||
|
class={className}
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
d="M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"
|
||||||
|
/>
|
||||||
|
</svg>
|
@ -126,6 +126,13 @@
|
|||||||
saveAs(blob, `models-export-${Date.now()}.json`);
|
saveAs(blob, `models-export-${Date.now()}.json`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const exportModelHandler = async (model) => {
|
||||||
|
let blob = new Blob([JSON.stringify([model])], {
|
||||||
|
type: 'application/json'
|
||||||
|
});
|
||||||
|
saveAs(blob, `${model.id}-${Date.now()}.json`);
|
||||||
|
};
|
||||||
|
|
||||||
const positionChangeHanlder = async () => {
|
const positionChangeHanlder = async () => {
|
||||||
// Get the new order of the models
|
// Get the new order of the models
|
||||||
const modelIds = Array.from(document.getElementById('model-list').children).map((child) =>
|
const modelIds = Array.from(document.getElementById('model-list').children).map((child) =>
|
||||||
@ -322,6 +329,9 @@
|
|||||||
cloneHandler={() => {
|
cloneHandler={() => {
|
||||||
cloneModelHandler(model);
|
cloneModelHandler(model);
|
||||||
}}
|
}}
|
||||||
|
exportHandler={() => {
|
||||||
|
exportModelHandler(model);
|
||||||
|
}}
|
||||||
hideHandler={() => {
|
hideHandler={() => {
|
||||||
hideModelHandler(model);
|
hideModelHandler(model);
|
||||||
}}
|
}}
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
import Share from '$lib/components/icons/Share.svelte';
|
import Share from '$lib/components/icons/Share.svelte';
|
||||||
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
|
import ArchiveBox from '$lib/components/icons/ArchiveBox.svelte';
|
||||||
import DocumentDuplicate from '$lib/components/icons/DocumentDuplicate.svelte';
|
import DocumentDuplicate from '$lib/components/icons/DocumentDuplicate.svelte';
|
||||||
|
import ArrowDownTray from '$lib/components/icons/ArrowDownTray.svelte';
|
||||||
|
|
||||||
const i18n = getContext('i18n');
|
const i18n = getContext('i18n');
|
||||||
|
|
||||||
@ -18,6 +19,8 @@
|
|||||||
|
|
||||||
export let shareHandler: Function;
|
export let shareHandler: Function;
|
||||||
export let cloneHandler: Function;
|
export let cloneHandler: Function;
|
||||||
|
export let exportHandler: Function;
|
||||||
|
|
||||||
export let hideHandler: Function;
|
export let hideHandler: Function;
|
||||||
export let deleteHandler: Function;
|
export let deleteHandler: Function;
|
||||||
export let onClose: Function;
|
export let onClose: Function;
|
||||||
@ -66,6 +69,17 @@
|
|||||||
<div class="flex items-center">{$i18n.t('Clone')}</div>
|
<div class="flex items-center">{$i18n.t('Clone')}</div>
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
|
|
||||||
|
<DropdownMenu.Item
|
||||||
|
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
|
||||||
|
on:click={() => {
|
||||||
|
exportHandler();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<ArrowDownTray />
|
||||||
|
|
||||||
|
<div class="flex items-center">{$i18n.t('Export')}</div>
|
||||||
|
</DropdownMenu.Item>
|
||||||
|
|
||||||
<DropdownMenu.Item
|
<DropdownMenu.Item
|
||||||
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
|
class="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-md"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user