From 290b7a2fd7cab3528bc2f9427d2d83c6072bbdfa Mon Sep 17 00:00:00 2001 From: icinggslits <93433084+icinggslits@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:06:34 +0800 Subject: [PATCH] feat: Add search button to the knowledge base, and adjusted the display for drag-and-drop uploads (#2365) * feat: Add search button to the knowledge base, and adjusted the display for drag-and-drop uploads * feat: Add search button to the knowledge base, and adjusted the display for drag-and-drop uploads --- .../src/pages/knowledge/KnowledgeContent.tsx | 36 +++++++++-------- .../src/pages/knowledge/KnowledgePage.tsx | 39 ++++++++++++++++++- 2 files changed, 56 insertions(+), 19 deletions(-) diff --git a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx index f575d42dda..91736cfdd8 100644 --- a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx @@ -90,17 +90,19 @@ const KnowledgeContent: FC = ({ selectedBase }) => { } if (files) { - const _files: FileType[] = files.map((file) => ({ - id: file.name, - name: file.name, - path: file.path, - size: file.size, - ext: `.${file.name.split('.').pop()}`, - count: 1, - origin_name: file.name, - type: file.type as FileTypes, - created_at: new Date() - })) + const _files: FileType[] = files + .map((file) => ({ + id: file.name, + name: file.name, + path: file.path, + size: file.size, + ext: `.${file.name.split('.').pop()}`, + count: 1, + origin_name: file.name, + type: file.type as FileTypes, + created_at: new Date() + })) + .filter(({ ext }) => fileTypes.includes(ext)) console.debug('[KnowledgeContent] Uploading files:', _files, files) const uploadedFiles = await FileManager.uploadFiles(_files) addFiles(uploadedFiles) @@ -241,7 +243,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { handleDrop([file as File])} + onDrop={({ dataTransfer }) => handleDrop([...dataTransfer.files])} multiple={true} accept={fileTypes.join(',')} style={{ marginTop: 10, background: 'transparent' }}> @@ -253,7 +255,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { - {fileItems.map((item) => { + {fileItems.reverse().map((item) => { const file = item.content as FileType return ( @@ -287,7 +289,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { - {directoryItems.map((item) => ( + {directoryItems.reverse().map((item) => ( @@ -325,7 +327,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { - {urlItems.map((item) => ( + {urlItems.reverse().map((item) => ( @@ -379,7 +381,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { - {sitemapItems.map((item) => ( + {sitemapItems.reverse().map((item) => ( @@ -416,7 +418,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { - {noteItems.map((note) => ( + {noteItems.reverse().map((note) => ( handleEditNote(note)} style={{ cursor: 'pointer' }}> diff --git a/src/renderer/src/pages/knowledge/KnowledgePage.tsx b/src/renderer/src/pages/knowledge/KnowledgePage.tsx index 98b6acef2e..6f61ccd05e 100644 --- a/src/renderer/src/pages/knowledge/KnowledgePage.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgePage.tsx @@ -1,10 +1,21 @@ -import { DeleteOutlined, EditOutlined, FileTextOutlined, PlusOutlined, SettingOutlined } from '@ant-design/icons' -import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' +import { + DeleteOutlined, + EditOutlined, + FileTextOutlined, + PlusOutlined, + SearchOutlined, + SettingOutlined +} from '@ant-design/icons' +import { Navbar, NavbarCenter, NavbarRight as NavbarRightFromComponents } from '@renderer/components/app/Navbar' import DragableList from '@renderer/components/DragableList' +import { HStack } from '@renderer/components/Layout' import ListItem from '@renderer/components/ListItem' import PromptPopup from '@renderer/components/Popups/PromptPopup' import Scrollbar from '@renderer/components/Scrollbar' import { useKnowledgeBases } from '@renderer/hooks/useKnowledge' +import { useShortcut } from '@renderer/hooks/useShortcuts' +import { NavbarIcon } from '@renderer/pages/home/Navbar' +import KnowledgeSearchPopup from '@renderer/pages/knowledge/components/KnowledgeSearchPopup' import { KnowledgeBase } from '@renderer/types' import { Dropdown, Empty, MenuProps } from 'antd' import { FC, useCallback, useEffect, useState } from 'react' @@ -81,10 +92,23 @@ const KnowledgePage: FC = () => { [deleteKnowledgeBase, renameKnowledgeBase, t] ) + useShortcut('search_message', () => { + if (selectedBase) { + KnowledgeSearchPopup.show({ base: selectedBase }).then() + } + }) + return ( {t('knowledge.title')} + + + selectedBase && KnowledgeSearchPopup.show({ base: selectedBase })}> + + + + @@ -221,4 +245,15 @@ const AddKnowledgeName = styled.div` font-size: 13px; ` +const NarrowIcon = styled(NavbarIcon)` + @media (max-width: 1000px) { + display: none; + } +` + +const NavbarRight = styled(NavbarRightFromComponents)` + min-width: auto; + padding-right: 140px; +` + export default KnowledgePage