From 8495036ff91cd48924ea2ee833be0aaa7f3e291f Mon Sep 17 00:00:00 2001 From: so95 Date: Mon, 17 Mar 2025 09:50:25 +0700 Subject: [PATCH] Feat: Limit view with more knowledge when list knowledge so many (#6093) ### What problem does this PR solve? Limit view with more knowledge when list knowledge so many. ### Type of change - [x] Refactoring --- .../pages/flow/canvas/node/retrieval-node.tsx | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/web/src/pages/flow/canvas/node/retrieval-node.tsx b/web/src/pages/flow/canvas/node/retrieval-node.tsx index 0fd2760ed..e9ffd669a 100644 --- a/web/src/pages/flow/canvas/node/retrieval-node.tsx +++ b/web/src/pages/flow/canvas/node/retrieval-node.tsx @@ -3,10 +3,10 @@ import { useFetchKnowledgeList } from '@/hooks/knowledge-hooks'; import { IRetrievalNode } from '@/interfaces/database/flow'; import { UserOutlined } from '@ant-design/icons'; import { Handle, NodeProps, Position } from '@xyflow/react'; -import { Avatar, Flex } from 'antd'; +import { Avatar, Button, Flex } from 'antd'; import classNames from 'classnames'; import { get } from 'lodash'; -import { useMemo } from 'react'; +import { useMemo, useState } from 'react'; import { LeftHandleStyle, RightHandleStyle } from './handle-icon'; import styles from './index.less'; import NodeHeader from './node-header'; @@ -20,6 +20,7 @@ export function RetrievalNode({ const knowledgeBaseIds: string[] = get(data, 'form.kb_ids', []); const { theme } = useTheme(); const { list: knowledgeList } = useFetchKnowledgeList(true); + const [showAllKnowledge, setShowAllKnowledge] = useState(false); const knowledgeBases = useMemo(() => { return knowledgeBaseIds.map((x) => { const item = knowledgeList.find((y) => x === y.id); @@ -31,6 +32,13 @@ export function RetrievalNode({ }); }, [knowledgeList, knowledgeBaseIds]); + const displayedKnowledgeBases = showAllKnowledge + ? knowledgeBases + : knowledgeBases.slice(0, 3); + function showAllItem(e: any) { + e.stopPropagation(); // Prevent event from bubbling to parent + setShowAllKnowledge(!showAllKnowledge); + } return (
- {knowledgeBases.map((knowledge) => { + {displayedKnowledgeBases.map((knowledge) => { return (
@@ -82,6 +90,25 @@ export function RetrievalNode({
); })} + {knowledgeBases.length > 3 && ( +
+ +
+ )}
);