mirror of
https://github.com/open-webui/open-webui
synced 2025-06-23 02:16:52 +00:00
enh: disable drag event listener if parent dragged
This commit is contained in:
parent
9df9f4a990
commit
7b97d7a718
@ -256,7 +256,7 @@ class ChatTable:
|
|||||||
limit: int = 50,
|
limit: int = 50,
|
||||||
) -> list[ChatModel]:
|
) -> list[ChatModel]:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
query = db.query(Chat).filter_by(user_id=user_id)
|
query = db.query(Chat).filter_by(user_id=user_id).filter_by(parent_id=None)
|
||||||
if not include_archived:
|
if not include_archived:
|
||||||
query = query.filter_by(archived=False)
|
query = query.filter_by(archived=False)
|
||||||
|
|
||||||
|
@ -77,16 +77,27 @@
|
|||||||
|
|
||||||
folders = {};
|
folders = {};
|
||||||
|
|
||||||
|
// First pass: Initialize all folder entries
|
||||||
for (const folder of folderList) {
|
for (const folder of folderList) {
|
||||||
folders[folder.id] = { ...(folders[folder.id] ? folders[folder.id] : {}), ...folder };
|
// Ensure folder is added to folders with its data
|
||||||
|
folders[folder.id] = { ...(folders[folder.id] || {}), ...folder };
|
||||||
|
}
|
||||||
|
|
||||||
if (folders[folder.id].parent_id) {
|
// Second pass: Tie child folders to their parents
|
||||||
folders[folders[folder.id].parent_id].childrenIds = folders[folders[folder.id].parent_id]
|
for (const folder of folderList) {
|
||||||
.childrenIds
|
if (folder.parent_id) {
|
||||||
? [...folders[folders[folder.id].parent_id].childrenIds, folder.id]
|
// Ensure the parent folder is initialized if it doesn't exist
|
||||||
|
if (!folders[folder.parent_id]) {
|
||||||
|
folders[folder.parent_id] = {}; // Create a placeholder if not already present
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize childrenIds array if it doesn't exist and add the current folder id
|
||||||
|
folders[folder.parent_id].childrenIds = folders[folder.parent_id].childrenIds
|
||||||
|
? [...folders[folder.parent_id].childrenIds, folder.id]
|
||||||
: [folder.id];
|
: [folder.id];
|
||||||
|
|
||||||
folders[folders[folder.id].parent_id].childrenIds.sort((a, b) => {
|
// Sort the children by updated_at field
|
||||||
|
folders[folder.parent_id].childrenIds.sort((a, b) => {
|
||||||
return folders[b].updated_at - folders[a].updated_at;
|
return folders[b].updated_at - folders[a].updated_at;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
export let className = '';
|
export let className = '';
|
||||||
|
|
||||||
|
export let parentDragged = false;
|
||||||
|
|
||||||
let folderElement;
|
let folderElement;
|
||||||
|
|
||||||
let edit = false;
|
let edit = false;
|
||||||
@ -31,12 +33,18 @@
|
|||||||
const onDragOver = (e) => {
|
const onDragOver = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
if (dragged || parentDragged) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
draggedOver = true;
|
draggedOver = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
const onDrop = (e) => {
|
const onDrop = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
if (dragged || parentDragged) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (folderElement.contains(e.target)) {
|
if (folderElement.contains(e.target)) {
|
||||||
console.log('Dropped on the Button');
|
console.log('Dropped on the Button');
|
||||||
@ -57,6 +65,10 @@
|
|||||||
|
|
||||||
const onDragLeave = (e) => {
|
const onDragLeave = (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
if (dragged || parentDragged) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
draggedOver = false;
|
draggedOver = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -221,7 +233,7 @@
|
|||||||
>
|
>
|
||||||
{#if folders[folderId]?.childrenIds}
|
{#if folders[folderId]?.childrenIds}
|
||||||
{#each folders[folderId]?.childrenIds as childId (`${folderId}-${childId}`)}
|
{#each folders[folderId]?.childrenIds as childId (`${folderId}-${childId}`)}
|
||||||
<svelte:self {folders} folderId={childId} />
|
<svelte:self {folders} folderId={childId} parentDragged={dragged} />
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user