mirror of
https://github.com/labring/FastGPT.git
synced 2026-02-27 01:02:22 +08:00
perf: pan move canvas (#6242)
* perf: pan move canvas * Update packages/web/i18n/en/workflow.json Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/index.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -119,6 +119,7 @@ description: FastGPT 文档目录
|
||||
- [/docs/upgrading/4-14/4143](/docs/upgrading/4-14/4143)
|
||||
- [/docs/upgrading/4-14/4144](/docs/upgrading/4-14/4144)
|
||||
- [/docs/upgrading/4-14/4145](/docs/upgrading/4-14/4145)
|
||||
- [/docs/upgrading/4-14/4146](/docs/upgrading/4-14/4146)
|
||||
- [/docs/upgrading/4-8/40](/docs/upgrading/4-8/40)
|
||||
- [/docs/upgrading/4-8/41](/docs/upgrading/4-8/41)
|
||||
- [/docs/upgrading/4-8/42](/docs/upgrading/4-8/42)
|
||||
|
||||
@@ -41,6 +41,7 @@ STORAGE_S3_ENDPOINT=http://fastgpt-minio:9000 # 协议://域名(IP):端口
|
||||
- mcp_server 无需更新
|
||||
- Sandbox 无需更新
|
||||
- AIProxy 无需更新
|
||||
- mongo 5.x 版本修改成 5.0.32 版本,解决 CVE-2025-14847 漏洞。直接修改镜像 tag 成 `5.0.32`。
|
||||
|
||||
## 🚀 新增内容
|
||||
|
||||
|
||||
16
document/content/docs/upgrading/4-14/4146.mdx
Normal file
16
document/content/docs/upgrading/4-14/4146.mdx
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: 'V4.14.6(进行中)'
|
||||
description: 'FastGPT V4.14.6 更新说明'
|
||||
---
|
||||
|
||||
|
||||
## 🚀 新增内容
|
||||
|
||||
|
||||
## ⚙️ 优化
|
||||
|
||||
1. 工作流触摸板移动时,遇到输入框后会被强制阻拦。
|
||||
|
||||
## 🐛 修复
|
||||
|
||||
## 插件
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"title": "4.14.x",
|
||||
"description": "",
|
||||
"pages": ["4145", "4144", "4143", "4142", "4141", "4140"]
|
||||
"pages": ["4146", "4145", "4144", "4143", "4142", "4141", "4140"]
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"document/content/docs/introduction/development/custom-models/xinference.mdx": "2025-08-05T23:20:39+08:00",
|
||||
"document/content/docs/introduction/development/design/dataset.mdx": "2025-07-23T21:35:03+08:00",
|
||||
"document/content/docs/introduction/development/design/design_plugin.mdx": "2025-11-06T14:47:55+08:00",
|
||||
"document/content/docs/introduction/development/docker.mdx": "2026-01-09T17:45:33+08:00",
|
||||
"document/content/docs/introduction/development/docker.mdx": "2026-01-09T18:25:02+08:00",
|
||||
"document/content/docs/introduction/development/faq.mdx": "2025-08-12T22:22:18+08:00",
|
||||
"document/content/docs/introduction/development/intro.mdx": "2025-09-29T11:34:11+08:00",
|
||||
"document/content/docs/introduction/development/migration/docker_db.mdx": "2025-07-23T21:35:03+08:00",
|
||||
@@ -30,7 +30,7 @@
|
||||
"document/content/docs/introduction/development/modelConfig/one-api.mdx": "2025-07-23T21:35:03+08:00",
|
||||
"document/content/docs/introduction/development/modelConfig/ppio.mdx": "2025-09-29T11:52:39+08:00",
|
||||
"document/content/docs/introduction/development/modelConfig/siliconCloud.mdx": "2025-08-05T23:20:39+08:00",
|
||||
"document/content/docs/introduction/development/object-storage.mdx": "2026-01-06T18:19:42+08:00",
|
||||
"document/content/docs/introduction/development/object-storage.mdx": "2026-01-09T18:25:02+08:00",
|
||||
"document/content/docs/introduction/development/openapi/app.mdx": "2025-09-26T13:18:51+08:00",
|
||||
"document/content/docs/introduction/development/openapi/chat.mdx": "2025-12-18T13:49:45+08:00",
|
||||
"document/content/docs/introduction/development/openapi/dataset.mdx": "2025-09-29T11:34:11+08:00",
|
||||
@@ -104,7 +104,7 @@
|
||||
"document/content/docs/protocol/terms.en.mdx": "2025-12-15T23:36:54+08:00",
|
||||
"document/content/docs/protocol/terms.mdx": "2025-12-15T23:36:54+08:00",
|
||||
"document/content/docs/toc.en.mdx": "2025-08-04T13:42:36+08:00",
|
||||
"document/content/docs/toc.mdx": "2026-01-06T18:19:42+08:00",
|
||||
"document/content/docs/toc.mdx": "2026-01-09T18:25:02+08:00",
|
||||
"document/content/docs/upgrading/4-10/4100.mdx": "2025-08-02T19:38:37+08:00",
|
||||
"document/content/docs/upgrading/4-10/4101.mdx": "2025-09-08T20:07:20+08:00",
|
||||
"document/content/docs/upgrading/4-11/4110.mdx": "2025-08-05T23:20:39+08:00",
|
||||
@@ -122,7 +122,7 @@
|
||||
"document/content/docs/upgrading/4-14/4142.mdx": "2025-11-18T19:27:14+08:00",
|
||||
"document/content/docs/upgrading/4-14/4143.mdx": "2025-11-26T20:52:05+08:00",
|
||||
"document/content/docs/upgrading/4-14/4144.mdx": "2025-12-16T14:56:04+08:00",
|
||||
"document/content/docs/upgrading/4-14/4145.mdx": "2026-01-09T17:15:54+08:00",
|
||||
"document/content/docs/upgrading/4-14/4145.mdx": "2026-01-11T00:59:49+08:00",
|
||||
"document/content/docs/upgrading/4-8/40.mdx": "2025-08-02T19:38:37+08:00",
|
||||
"document/content/docs/upgrading/4-8/41.mdx": "2025-08-02T19:38:37+08:00",
|
||||
"document/content/docs/upgrading/4-8/42.mdx": "2025-08-02T19:38:37+08:00",
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
"only_the_reference_type_is_supported": "Only reference type is supported",
|
||||
"optional_value_type": "Optional Value Type",
|
||||
"optional_value_type_tip": "You can specify one or more data types. When dynamically adding fields, users can only select the configured types.",
|
||||
"pan_priority": "Touchpad first\n- Single finger drag to select nodes\n- Two fingers swipe to move canvas",
|
||||
"pan_priority": "Touchpad first\n- Drag and drop with one finger to select nodes\n- Swipe with two fingers to move the canvas\n- Use three fingers to move nodes quickly",
|
||||
"pass_returned_object_as_output_to_next_nodes": "Pass the object returned in the code as output to the next nodes. The variable name needs to correspond to the return key.",
|
||||
"please_enter_node_name": "Enter the node name",
|
||||
"plugin.Instruction_Tip": "You can configure an instruction to explain the purpose of the plugin. This instruction will be displayed each time the plugin is used. Supports standard Markdown syntax.",
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
"only_the_reference_type_is_supported": "仅支持引用类型",
|
||||
"optional_value_type": "可选的数据类型",
|
||||
"optional_value_type_tip": "可以指定 1 个或多个数据类型,用户在动态添加字段时,仅可选择配置的类型",
|
||||
"pan_priority": "触摸板优先\n- 单指拖拽框选节点\n- 双指滑动移动画布",
|
||||
"pan_priority": "触摸板优先\n- 单指拖拽框选节点\n- 双指滑动移动画布\n- 三指可快速移动节点",
|
||||
"pass_returned_object_as_output_to_next_nodes": "将代码中 return 的对象作为输出,传递给后续的节点。变量名需要对应 return 的 key",
|
||||
"please_enter_node_name": "请输入节点名称",
|
||||
"plugin.Instruction_Tip": "可以配置一段说明,以解释该插件的用途。每次使用插件前,会显示该段说明。支持标准 Markdown 语法。",
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
"only_the_reference_type_is_supported": "僅支援引用類型",
|
||||
"optional_value_type": "可選的資料類型",
|
||||
"optional_value_type_tip": "可以指定一或多個資料類型,使用者在動態新增欄位時,只能選擇已設定的類型",
|
||||
"pan_priority": "觸控板優先\n- 單指拖曳框選節點\n- 雙指滑動移動畫布",
|
||||
"pan_priority": "觸摸板優先\n- 單指拖拽框選節點\n- 雙指滑動移動畫布\n- 三指可快速移動節點",
|
||||
"pass_returned_object_as_output_to_next_nodes": "將程式碼中 return 的物件作為輸出,傳遞給後續的節點。變數名稱需要對應 return 的鍵值",
|
||||
"please_enter_node_name": "請輸入節點名稱",
|
||||
"plugin.Instruction_Tip": "您可以設定一段說明來解釋這個外掛程式的用途。每次使用外掛程式前,都會顯示這段說明。支援標準 Markdown 語法。",
|
||||
|
||||
@@ -220,10 +220,11 @@ const FlowController = React.memo(function FlowController() {
|
||||
canUndo,
|
||||
redo,
|
||||
canRedo,
|
||||
setWorkflowControlMode,
|
||||
presentationMode,
|
||||
fitView,
|
||||
getNodes
|
||||
setWorkflowControlMode,
|
||||
setPresentationMode,
|
||||
getNodes,
|
||||
fitView
|
||||
]);
|
||||
|
||||
return Render;
|
||||
|
||||
@@ -18,7 +18,7 @@ import { EDGE_TYPE, FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/
|
||||
import type { NodeProps } from 'reactflow';
|
||||
import ReactFlow, { SelectionMode } from 'reactflow';
|
||||
import { Box, IconButton, useDisclosure } from '@chakra-ui/react';
|
||||
import React from 'react';
|
||||
import React, { useState } from 'react';
|
||||
import { WorkflowUIContext } from '../context/workflowUIContext';
|
||||
|
||||
const NodeSimple = dynamic(() => import('./nodes/NodeSimple'));
|
||||
@@ -98,6 +98,8 @@ const Workflow = () => {
|
||||
onClose: onCloseTemplate
|
||||
} = useDisclosure();
|
||||
|
||||
const [movingCanvas, setMovingCanvas] = useState(false);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Box
|
||||
@@ -172,6 +174,15 @@ const Workflow = () => {
|
||||
}
|
||||
: {})}
|
||||
onNodeDragStop={onNodeDragStop}
|
||||
noWheelClassName={
|
||||
!movingCanvas || workflowControlMode === 'drag' ? 'nowheel' : 'nowheel-moving'
|
||||
}
|
||||
onMoveStart={() => {
|
||||
setMovingCanvas(true);
|
||||
}}
|
||||
onMoveEnd={() => {
|
||||
setMovingCanvas(false);
|
||||
}}
|
||||
>
|
||||
{!!menu && <ContextMenu />}
|
||||
<FlowController />
|
||||
|
||||
Reference in New Issue
Block a user