From 24ab8574717448cc690ad8320d756e046e8230a5 Mon Sep 17 00:00:00 2001 From: balibabu Date: Mon, 27 Oct 2025 10:36:36 +0800 Subject: [PATCH] Feat: Adjust the style of the canvas node #10703 (#10795) ### What problem does this PR solve? Feat: Adjust the style of the canvas node #10703 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/package-lock.json | 8 +- web/package.json | 2 +- web/src/components/collapse.tsx | 19 +- web/src/components/llm-select/llm-label.tsx | 2 +- web/src/components/ui/button.tsx | 1 + web/src/components/ui/card.tsx | 2 +- web/src/components/ui/checkbox.tsx | 4 +- web/src/components/ui/ragflow-pagination.tsx | 6 +- web/src/components/ui/tooltip.tsx | 12 + web/src/components/xyflow/base-node.tsx | 1 - web/src/constants/agent.ts | 1 - web/src/hooks/logic-hooks/navigate-hooks.ts | 8 - web/src/locales/en.ts | 5 +- web/src/locales/zh.ts | 3 + web/src/pages/agent/canvas/edge/index.tsx | 6 +- web/src/pages/agent/canvas/index.tsx | 15 +- .../pages/agent/canvas/node/agent-node.tsx | 6 +- .../pages/agent/canvas/node/begin-node.tsx | 18 +- web/src/pages/agent/canvas/node/card.tsx | 19 +- .../agent/canvas/node/categorize-node.tsx | 6 +- .../node/dropdown/next-step-dropdown.tsx | 4 +- .../agent/canvas/node/extractor-node.tsx | 7 +- .../pages/agent/canvas/node/generate-node.tsx | 60 --- web/src/pages/agent/canvas/node/index.tsx | 8 +- .../pages/agent/canvas/node/keyword-node.tsx | 6 +- .../pages/agent/canvas/node/node-wrapper.tsx | 2 +- .../agent/canvas/node/retrieval-node.tsx | 1 - .../pages/agent/canvas/node/rewrite-node.tsx | 6 +- .../pages/agent/canvas/node/switch-node.tsx | 2 +- web/src/pages/agent/canvas/node/toolbar.tsx | 22 +- .../agent/form/agent-form/agent-tools.tsx | 11 +- web/src/pages/agent/setting-dialog/index.tsx | 9 +- .../agent/setting-dialog/setting-form.tsx | 58 +-- web/src/pages/agent/utils.ts | 5 +- .../pages/agents/hooks/use-create-agent.ts | 21 +- .../data-flow/canvas/context-menu/index.less | 18 - .../data-flow/canvas/context-menu/index.tsx | 107 ----- web/src/pages/data-flow/canvas/context.tsx | 56 --- web/src/pages/data-flow/canvas/edge/index.tsx | 110 ----- web/src/pages/data-flow/canvas/index.less | 11 - web/src/pages/data-flow/canvas/index.tsx | 330 ------------- .../data-flow/canvas/node/begin-node.tsx | 36 -- web/src/pages/data-flow/canvas/node/card.tsx | 12 - .../node/dropdown/next-step-dropdown.tsx | 294 ------------ .../data-flow/canvas/node/extractor-node.tsx | 18 - .../data-flow/canvas/node/handle-icon.tsx | 20 - .../pages/data-flow/canvas/node/handle.tsx | 72 --- .../pages/data-flow/canvas/node/index.less | 285 ----------- web/src/pages/data-flow/canvas/node/index.tsx | 56 --- .../data-flow/canvas/node/node-header.tsx | 36 -- .../data-flow/canvas/node/node-wrapper.tsx | 18 - .../data-flow/canvas/node/note-node/index.tsx | 17 - .../canvas/node/note-node/use-watch-change.ts | 30 -- .../data-flow/canvas/node/parser-node.tsx | 57 --- .../data-flow/canvas/node/resize-icon.tsx | 32 -- .../data-flow/canvas/node/splitter-node.tsx | 52 --- .../data-flow/canvas/node/tokenizer-node.tsx | 55 --- .../pages/data-flow/canvas/node/toolbar.tsx | 85 ---- web/src/pages/data-flow/constant.tsx | 324 ------------- web/src/pages/data-flow/context.ts | 39 -- web/src/pages/data-flow/flow-tooltip.tsx | 19 - .../data-flow/form-sheet/form-config-map.tsx | 30 -- web/src/pages/data-flow/form-sheet/next.tsx | 104 ----- .../form/components/form-wrapper.tsx | 16 - .../data-flow/form/components/index.less | 22 - .../data-flow/form/components/output.tsx | 35 -- .../data-flow/form/extractor-form/index.tsx | 107 ----- .../form/extractor-form/use-switch-prompt.ts | 69 --- .../form/hierarchical-merger-form/index.tsx | 188 -------- .../form/parser-form/common-form-fields.tsx | 106 ----- .../form/parser-form/email-form-fields.tsx | 30 -- .../form/parser-form/image-form-fields.tsx | 60 --- .../data-flow/form/parser-form/index.tsx | 226 --------- .../data-flow/form/parser-form/interface.ts | 3 - .../form/parser-form/pdf-form-fields.tsx | 44 -- .../parser-form/use-set-initial-language.ts | 29 -- .../pages/data-flow/form/parser-form/utils.ts | 3 - .../form/parser-form/video-form-fields.tsx | 22 - .../data-flow/form/splitter-form/index.tsx | 101 ---- .../data-flow/form/tokenizer-form/index.tsx | 91 ---- web/src/pages/data-flow/hooks.tsx | 144 ------ web/src/pages/data-flow/hooks/use-add-node.ts | 218 --------- .../data-flow/hooks/use-before-delete.tsx | 49 -- .../pages/data-flow/hooks/use-build-dsl.ts | 29 -- .../data-flow/hooks/use-build-options.tsx | 19 - .../data-flow/hooks/use-cache-chat-log.ts | 88 ---- .../data-flow/hooks/use-cancel-dataflow.ts | 21 - .../data-flow/hooks/use-change-node-name.ts | 116 ----- .../data-flow/hooks/use-download-output.ts | 38 -- .../pages/data-flow/hooks/use-export-json.ts | 17 - .../pages/data-flow/hooks/use-fetch-data.ts | 19 - .../pages/data-flow/hooks/use-fetch-log.ts | 56 --- .../pages/data-flow/hooks/use-form-values.ts | 20 - .../pages/data-flow/hooks/use-move-note.ts | 35 -- .../pages/data-flow/hooks/use-run-dataflow.ts | 59 --- .../pages/data-flow/hooks/use-save-graph.ts | 87 ---- .../pages/data-flow/hooks/use-set-graph.ts | 17 - .../pages/data-flow/hooks/use-show-drawer.tsx | 147 ------ .../data-flow/hooks/use-watch-form-change.ts | 15 - web/src/pages/data-flow/index.tsx | 232 --------- web/src/pages/data-flow/interface.ts | 43 -- .../data-flow/log-sheet/dataflow-timeline.tsx | 137 ------ web/src/pages/data-flow/log-sheet/index.tsx | 114 ----- web/src/pages/data-flow/operator-icon.tsx | 59 --- web/src/pages/data-flow/run-sheet/index.tsx | 31 -- .../pages/data-flow/run-sheet/uploader.tsx | 57 --- .../pages/data-flow/setting-dialog/index.tsx | 53 --- .../data-flow/setting-dialog/setting-form.tsx | 158 ------- web/src/pages/data-flow/store.ts | 442 ------------------ .../data-flow/use-agent-history-manager.ts | 163 ------- web/src/pages/data-flow/utils.ts | 424 ----------------- .../data-flow/utils/build-output-list.ts | 8 - web/src/pages/data-flow/utils/delete-node.ts | 34 -- .../utils/filter-downstream-nodes.ts | 63 --- .../pages/data-flow/version-dialog/index.tsx | 143 ------ web/src/pages/profile-setting/mcp/index.tsx | 78 +++- .../pages/profile-setting/mcp/mcp-card.tsx | 30 +- .../profile-setting/mcp/mcp-dropdown.tsx | 60 --- .../profile-setting/mcp/mcp-operation.tsx | 43 ++ .../mcp/use-bulk-operate-mcp.tsx | 19 +- web/src/pages/user-setting/index.tsx | 2 +- web/src/routes.ts | 18 - 122 files changed, 290 insertions(+), 7156 deletions(-) delete mode 100644 web/src/pages/agent/canvas/node/generate-node.tsx delete mode 100644 web/src/pages/data-flow/canvas/context-menu/index.less delete mode 100644 web/src/pages/data-flow/canvas/context-menu/index.tsx delete mode 100644 web/src/pages/data-flow/canvas/context.tsx delete mode 100644 web/src/pages/data-flow/canvas/edge/index.tsx delete mode 100644 web/src/pages/data-flow/canvas/index.less delete mode 100644 web/src/pages/data-flow/canvas/index.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/begin-node.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/card.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/dropdown/next-step-dropdown.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/extractor-node.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/handle-icon.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/handle.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/index.less delete mode 100644 web/src/pages/data-flow/canvas/node/index.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/node-header.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/node-wrapper.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/note-node/index.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/note-node/use-watch-change.ts delete mode 100644 web/src/pages/data-flow/canvas/node/parser-node.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/resize-icon.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/splitter-node.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/tokenizer-node.tsx delete mode 100644 web/src/pages/data-flow/canvas/node/toolbar.tsx delete mode 100644 web/src/pages/data-flow/constant.tsx delete mode 100644 web/src/pages/data-flow/context.ts delete mode 100644 web/src/pages/data-flow/flow-tooltip.tsx delete mode 100644 web/src/pages/data-flow/form-sheet/form-config-map.tsx delete mode 100644 web/src/pages/data-flow/form-sheet/next.tsx delete mode 100644 web/src/pages/data-flow/form/components/form-wrapper.tsx delete mode 100644 web/src/pages/data-flow/form/components/index.less delete mode 100644 web/src/pages/data-flow/form/components/output.tsx delete mode 100644 web/src/pages/data-flow/form/extractor-form/index.tsx delete mode 100644 web/src/pages/data-flow/form/extractor-form/use-switch-prompt.ts delete mode 100644 web/src/pages/data-flow/form/hierarchical-merger-form/index.tsx delete mode 100644 web/src/pages/data-flow/form/parser-form/common-form-fields.tsx delete mode 100644 web/src/pages/data-flow/form/parser-form/email-form-fields.tsx delete mode 100644 web/src/pages/data-flow/form/parser-form/image-form-fields.tsx delete mode 100644 web/src/pages/data-flow/form/parser-form/index.tsx delete mode 100644 web/src/pages/data-flow/form/parser-form/interface.ts delete mode 100644 web/src/pages/data-flow/form/parser-form/pdf-form-fields.tsx delete mode 100644 web/src/pages/data-flow/form/parser-form/use-set-initial-language.ts delete mode 100644 web/src/pages/data-flow/form/parser-form/utils.ts delete mode 100644 web/src/pages/data-flow/form/parser-form/video-form-fields.tsx delete mode 100644 web/src/pages/data-flow/form/splitter-form/index.tsx delete mode 100644 web/src/pages/data-flow/form/tokenizer-form/index.tsx delete mode 100644 web/src/pages/data-flow/hooks.tsx delete mode 100644 web/src/pages/data-flow/hooks/use-add-node.ts delete mode 100644 web/src/pages/data-flow/hooks/use-before-delete.tsx delete mode 100644 web/src/pages/data-flow/hooks/use-build-dsl.ts delete mode 100644 web/src/pages/data-flow/hooks/use-build-options.tsx delete mode 100644 web/src/pages/data-flow/hooks/use-cache-chat-log.ts delete mode 100644 web/src/pages/data-flow/hooks/use-cancel-dataflow.ts delete mode 100644 web/src/pages/data-flow/hooks/use-change-node-name.ts delete mode 100644 web/src/pages/data-flow/hooks/use-download-output.ts delete mode 100644 web/src/pages/data-flow/hooks/use-export-json.ts delete mode 100644 web/src/pages/data-flow/hooks/use-fetch-data.ts delete mode 100644 web/src/pages/data-flow/hooks/use-fetch-log.ts delete mode 100644 web/src/pages/data-flow/hooks/use-form-values.ts delete mode 100644 web/src/pages/data-flow/hooks/use-move-note.ts delete mode 100644 web/src/pages/data-flow/hooks/use-run-dataflow.ts delete mode 100644 web/src/pages/data-flow/hooks/use-save-graph.ts delete mode 100644 web/src/pages/data-flow/hooks/use-set-graph.ts delete mode 100644 web/src/pages/data-flow/hooks/use-show-drawer.tsx delete mode 100644 web/src/pages/data-flow/hooks/use-watch-form-change.ts delete mode 100644 web/src/pages/data-flow/index.tsx delete mode 100644 web/src/pages/data-flow/interface.ts delete mode 100644 web/src/pages/data-flow/log-sheet/dataflow-timeline.tsx delete mode 100644 web/src/pages/data-flow/log-sheet/index.tsx delete mode 100644 web/src/pages/data-flow/operator-icon.tsx delete mode 100644 web/src/pages/data-flow/run-sheet/index.tsx delete mode 100644 web/src/pages/data-flow/run-sheet/uploader.tsx delete mode 100644 web/src/pages/data-flow/setting-dialog/index.tsx delete mode 100644 web/src/pages/data-flow/setting-dialog/setting-form.tsx delete mode 100644 web/src/pages/data-flow/store.ts delete mode 100644 web/src/pages/data-flow/use-agent-history-manager.ts delete mode 100644 web/src/pages/data-flow/utils.ts delete mode 100644 web/src/pages/data-flow/utils/build-output-list.ts delete mode 100644 web/src/pages/data-flow/utils/delete-node.ts delete mode 100644 web/src/pages/data-flow/utils/filter-downstream-nodes.ts delete mode 100644 web/src/pages/data-flow/version-dialog/index.tsx delete mode 100644 web/src/pages/profile-setting/mcp/mcp-dropdown.tsx create mode 100644 web/src/pages/profile-setting/mcp/mcp-operation.tsx diff --git a/web/package-lock.json b/web/package-lock.json index 27034742e..e1b9d21a3 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -66,7 +66,7 @@ "jsencrypt": "^3.3.2", "lexical": "^0.23.1", "lodash": "^4.17.21", - "lucide-react": "^0.542.0", + "lucide-react": "^0.546.0", "mammoth": "^1.7.2", "next-themes": "^0.4.6", "openai-speech-stream-player": "^1.0.8", @@ -25175,9 +25175,9 @@ } }, "node_modules/lucide-react": { - "version": "0.542.0", - "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.542.0.tgz", - "integrity": "sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==", + "version": "0.546.0", + "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.546.0.tgz", + "integrity": "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ==", "license": "ISC", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" diff --git a/web/package.json b/web/package.json index c01465a13..d11824850 100644 --- a/web/package.json +++ b/web/package.json @@ -79,7 +79,7 @@ "jsencrypt": "^3.3.2", "lexical": "^0.23.1", "lodash": "^4.17.21", - "lucide-react": "^0.542.0", + "lucide-react": "^0.546.0", "mammoth": "^1.7.2", "next-themes": "^0.4.6", "openai-speech-stream-player": "^1.0.8", diff --git a/web/src/components/collapse.tsx b/web/src/components/collapse.tsx index e91269b0c..3482929cc 100644 --- a/web/src/components/collapse.tsx +++ b/web/src/components/collapse.tsx @@ -5,7 +5,12 @@ import { } from '@/components/ui/collapsible'; import { cn } from '@/lib/utils'; import { CollapsibleProps } from '@radix-ui/react-collapsible'; -import { ChevronDown, ChevronUp } from 'lucide-react'; +import { + ChevronDown, + ChevronUp, + ListChevronsDownUp, + ListChevronsUpDown, +} from 'lucide-react'; import * as React from 'react'; import { PropsWithChildren, @@ -14,7 +19,6 @@ import { useEffect, useState, } from 'react'; -import { IconFontFill } from './icon-font'; type CollapseProps = Omit & { title?: ReactNode; @@ -54,12 +58,11 @@ export function Collapse({
- + {currentOpen ? ( + + ) : ( + + )}
{ const { llmName, fId } = getLlmNameAndFIdByLlmId(value); return ( -
+
- + )); diff --git a/web/src/components/ui/ragflow-pagination.tsx b/web/src/components/ui/ragflow-pagination.tsx index 1426425d3..eeb1a0736 100644 --- a/web/src/components/ui/ragflow-pagination.tsx +++ b/web/src/components/ui/ragflow-pagination.tsx @@ -135,7 +135,9 @@ export function RAGFlowPagination({ return (
- {t('pagination.total', { total: total })} + + {t('pagination.total', { total: total })} + @@ -150,7 +152,7 @@ export function RAGFlowPagination({ ) : ( { ); }; +export function RAGFlowTooltip({ + children, + tooltip, +}: React.PropsWithChildren & { tooltip: React.ReactNode }) { + return ( + + {children} + {tooltip} + + ); +} + export interface AntToolTipProps { title: React.ReactNode; children: React.ReactNode; diff --git a/web/src/components/xyflow/base-node.tsx b/web/src/components/xyflow/base-node.tsx index accfb4b42..6e0de064a 100644 --- a/web/src/components/xyflow/base-node.tsx +++ b/web/src/components/xyflow/base-node.tsx @@ -12,7 +12,6 @@ export const BaseNode = forwardRef< 'relative rounded bg-card text-card-foreground', className, selected ? 'border-muted-foreground shadow-lg' : '', - 'hover:ring-1', )} tabIndex={0} {...props} diff --git a/web/src/constants/agent.ts b/web/src/constants/agent.ts index f6af4f57c..47e581e70 100644 --- a/web/src/constants/agent.ts +++ b/web/src/constants/agent.ts @@ -116,5 +116,4 @@ export enum Operator { Splitter = 'Splitter', HierarchicalMerger = 'HierarchicalMerger', Extractor = 'Extractor', - Generate = 'Generate', } diff --git a/web/src/hooks/logic-hooks/navigate-hooks.ts b/web/src/hooks/logic-hooks/navigate-hooks.ts index 92f573010..8b61d1559 100644 --- a/web/src/hooks/logic-hooks/navigate-hooks.ts +++ b/web/src/hooks/logic-hooks/navigate-hooks.ts @@ -77,13 +77,6 @@ export const useNavigatePage = () => { [navigate], ); - const navigateToDataflow = useCallback( - (id: string) => () => { - navigate(`${Routes.DataFlow}/${id}`); - }, - [navigate], - ); - const navigateToAgentLogs = useCallback( (id: string) => () => { navigate(`${Routes.AgentLogPage}/${id}`); @@ -185,7 +178,6 @@ export const useNavigatePage = () => { navigateToAgentList, navigateToOldProfile, navigateToDataflowResult, - navigateToDataflow, navigateToDataFile, }; }; diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 3d9ee54fe..8cd30196c 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -3,7 +3,7 @@ export default { common: { noResults: 'No results.', selectPlaceholder: 'select value', - selectAll: 'Select All', + selectAll: 'Select all', delete: 'Delete', deleteModalTitle: 'Are you sure to delete this item?', ok: 'Ok', @@ -1747,6 +1747,9 @@ Important structured information may include: names, dates, locations, events, k mcpServers: 'MCP Servers', customizeTheListOfMcpServers: 'Customize the list of MCP servers', cachedTools: 'cached tools', + bulkManage: 'Bulk manage', + exitBulkManage: 'Exit bulk manage', + selected: 'Selected', }, search: { searchApps: 'Search Apps', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index 537fc8f23..8605246d0 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -1634,6 +1634,9 @@ Tokenizer 会根据所选方式将内容存储为对应的数据结构。`, mcpServers: 'MCP 服务器', customizeTheListOfMcpServers: '自定义 MCP 服务器列表', cachedTools: '缓存工具', + selected: '已选择', + bulkManage: '批量管理', + exitBulkManage: '退出批量管理', }, search: { searchApps: '搜索', diff --git a/web/src/pages/agent/canvas/edge/index.tsx b/web/src/pages/agent/canvas/edge/index.tsx index 5b66e5be8..f1a714d5b 100644 --- a/web/src/pages/agent/canvas/edge/index.tsx +++ b/web/src/pages/agent/canvas/edge/index.tsx @@ -10,6 +10,7 @@ import useGraphStore from '../../store'; import { useFetchAgent } from '@/hooks/use-agent-request'; import { cn } from '@/lib/utils'; +import { isEmpty } from 'lodash'; import { useMemo } from 'react'; import { NodeHandleId, Operator } from '../../constant'; @@ -91,11 +92,14 @@ function InnerButtonEdge({ ); }, [data?.isHovered, isTargetPlaceholder, sourceHandleId, target]); + const activeMarkerEnd = + selected || !isEmpty(showHighlight) ? 'url(#selected-marker)' : markerEnd; + return ( <> + + +