From ede0bb53960b6c1bf9e2dfb46cc7a35216c2a5da Mon Sep 17 00:00:00 2001 From: StyleZhang Date: Tue, 5 Mar 2024 15:26:11 +0800 Subject: [PATCH] control run --- web/app/components/workflow/nodes/_base/panel.tsx | 9 +++++++-- web/app/components/workflow/nodes/code/panel.tsx | 4 ++-- .../components/workflow/nodes/direct-answer/panel.tsx | 4 ++-- web/app/components/workflow/nodes/end/panel.tsx | 4 ++-- web/app/components/workflow/nodes/http/panel.tsx | 4 ++-- web/app/components/workflow/nodes/if-else/panel.tsx | 4 ++-- .../workflow/nodes/knowledge-retrieval/panel.tsx | 4 ++-- web/app/components/workflow/nodes/llm/panel.tsx | 4 ++-- .../workflow/nodes/question-classifier/panel.tsx | 4 ++-- web/app/components/workflow/nodes/start/panel.tsx | 4 ++-- .../workflow/nodes/template-transform/panel.tsx | 4 ++-- web/app/components/workflow/nodes/tool/panel.tsx | 4 ++-- .../workflow/nodes/variable-assigner/panel.tsx | 4 ++-- web/app/components/workflow/types.ts | 6 ++++++ 14 files changed, 37 insertions(+), 26 deletions(-) diff --git a/web/app/components/workflow/nodes/_base/panel.tsx b/web/app/components/workflow/nodes/_base/panel.tsx index 173c353aca..1fb250ab3a 100644 --- a/web/app/components/workflow/nodes/_base/panel.tsx +++ b/web/app/components/workflow/nodes/_base/panel.tsx @@ -6,6 +6,7 @@ import { cloneElement, memo, useCallback, + useState, } from 'react' import { type Node } from '../../types' import { BlockEnum } from '../../types' @@ -38,6 +39,7 @@ const BasePanel: FC = ({ handleNodeSelect, handleNodeDataUpdate, } = useWorkflow() + const [controlSingleRun, setControlSingleRun] = useState(0) const handleTitleChange = useCallback((title: string) => { handleNodeDataUpdate({ id, data: { ...data, title } }) }, [handleNodeDataUpdate, id, data]) @@ -64,7 +66,10 @@ const BasePanel: FC = ({ -
+
!controlSingleRun && setControlSingleRun(Date.now())} + >
@@ -88,7 +93,7 @@ const BasePanel: FC = ({
- {cloneElement(children, { id, data })} + {cloneElement(children, { id, data, controlSingleRun, setControlSingleRun })}
{ data.type !== BlockEnum.End && ( diff --git a/web/app/components/workflow/nodes/code/panel.tsx b/web/app/components/workflow/nodes/code/panel.tsx index b9fc987d16..aebdbaec7a 100644 --- a/web/app/components/workflow/nodes/code/panel.tsx +++ b/web/app/components/workflow/nodes/code/panel.tsx @@ -11,7 +11,7 @@ import Field from '@/app/components/workflow/nodes/_base/components/field' import Split from '@/app/components/workflow/nodes/_base/components/split' import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' import TypeSelector from '@/app/components/workflow/nodes/_base/components/selector' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.code' @@ -25,7 +25,7 @@ const codeLanguages = [ value: CodeLanguage.javascript, }, ] -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/direct-answer/panel.tsx b/web/app/components/workflow/nodes/direct-answer/panel.tsx index e4dbdf55ad..6ebabde074 100644 --- a/web/app/components/workflow/nodes/direct-answer/panel.tsx +++ b/web/app/components/workflow/nodes/direct-answer/panel.tsx @@ -8,11 +8,11 @@ import Field from '@/app/components/workflow/nodes/_base/components/field' import AddButton from '@/app/components/base/button/add-button' import Split from '@/app/components/workflow/nodes/_base/components/split' import Editor from '@/app/components/workflow/nodes/_base/components/prompt/editor' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.directAnswer' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/end/panel.tsx b/web/app/components/workflow/nodes/end/panel.tsx index f30d1a4c38..4f109f8fe9 100644 --- a/web/app/components/workflow/nodes/end/panel.tsx +++ b/web/app/components/workflow/nodes/end/panel.tsx @@ -9,7 +9,7 @@ import { EndVarType } from './types' import VarList from '@/app/components/workflow/nodes/_base/components/variable/var-list' import Field from '@/app/components/workflow/nodes/_base/components/field' import AddButton from '@/app/components/base/button/add-button' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.end' @@ -36,7 +36,7 @@ const TypeItem = ({ type, current, onClick }: { type: EndVarType; current: EndVa const allTypes = [EndVarType.plainText, EndVarType.structured, EndVarType.none] -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/http/panel.tsx b/web/app/components/workflow/nodes/http/panel.tsx index 7afb383956..5bd28d9e7d 100644 --- a/web/app/components/workflow/nodes/http/panel.tsx +++ b/web/app/components/workflow/nodes/http/panel.tsx @@ -13,10 +13,10 @@ import AddButton from '@/app/components/base/button/add-button' import Split from '@/app/components/workflow/nodes/_base/components/split' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.http' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/if-else/panel.tsx b/web/app/components/workflow/nodes/if-else/panel.tsx index a9f00bd298..912da2b9b7 100644 --- a/web/app/components/workflow/nodes/if-else/panel.tsx +++ b/web/app/components/workflow/nodes/if-else/panel.tsx @@ -7,10 +7,10 @@ import useConfig from './use-config' import ConditionList from './components/condition-list' import type { IfElseNodeType } from './types' import Field from '@/app/components/workflow/nodes/_base/components/field' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.ifElse' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx b/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx index 618dd5d09e..46230209eb 100644 --- a/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx +++ b/web/app/components/workflow/nodes/knowledge-retrieval/panel.tsx @@ -10,11 +10,11 @@ import type { KnowledgeRetrievalNodeType } from './types' import Field from '@/app/components/workflow/nodes/_base/components/field' import Split from '@/app/components/workflow/nodes/_base/components/split' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.knowledgeRetrieval' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/llm/panel.tsx b/web/app/components/workflow/nodes/llm/panel.tsx index b1546ed5ec..447d8b480e 100644 --- a/web/app/components/workflow/nodes/llm/panel.tsx +++ b/web/app/components/workflow/nodes/llm/panel.tsx @@ -12,12 +12,12 @@ import AddButton from '@/app/components/base/button/add-button' import Split from '@/app/components/workflow/nodes/_base/components/split' import ModelParameterModal from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' -import type { NodeProps } from '@/app/components/workflow/types' import { Resolution } from '@/types/app' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.llm' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/question-classifier/panel.tsx b/web/app/components/workflow/nodes/question-classifier/panel.tsx index 063ab1d374..62db8a7c84 100644 --- a/web/app/components/workflow/nodes/question-classifier/panel.tsx +++ b/web/app/components/workflow/nodes/question-classifier/panel.tsx @@ -8,11 +8,11 @@ import AdvancedSetting from './components/advanced-setting' import type { QuestionClassifierNodeType } from './types' import Field from '@/app/components/workflow/nodes/_base/components/field' import ModelParameterModal from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.questionClassifiers' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/start/panel.tsx b/web/app/components/workflow/nodes/start/panel.tsx index 2243c1e467..9f19df66a4 100644 --- a/web/app/components/workflow/nodes/start/panel.tsx +++ b/web/app/components/workflow/nodes/start/panel.tsx @@ -9,11 +9,11 @@ import Field from '@/app/components/workflow/nodes/_base/components/field' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import AddButton from '@/app/components/base/button/add-button' import ConfigVarModal from '@/app/components/app/configuration/config-var/config-modal' -import type { InputVar, NodeProps } from '@/app/components/workflow/types' +import type { InputVar, NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.start' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/template-transform/panel.tsx b/web/app/components/workflow/nodes/template-transform/panel.tsx index d84ed4d683..ec46f16637 100644 --- a/web/app/components/workflow/nodes/template-transform/panel.tsx +++ b/web/app/components/workflow/nodes/template-transform/panel.tsx @@ -10,11 +10,11 @@ import Split from '@/app/components/workflow/nodes/_base/components/split' import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' import OutputVars, { VarItem } from '@/app/components/workflow/nodes/_base/components/output-vars' import { HelpCircle } from '@/app/components/base/icons/src/vender/line/general' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.templateTransform' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/tool/panel.tsx b/web/app/components/workflow/nodes/tool/panel.tsx index 963872213b..8f213c44fb 100644 --- a/web/app/components/workflow/nodes/tool/panel.tsx +++ b/web/app/components/workflow/nodes/tool/panel.tsx @@ -5,11 +5,11 @@ import Split from '../_base/components/split' import type { ToolNodeType } from './types' import Button from '@/app/components/base/button' import Field from '@/app/components/workflow/nodes/_base/components/field' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.tool' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/nodes/variable-assigner/panel.tsx b/web/app/components/workflow/nodes/variable-assigner/panel.tsx index 6421a62669..d7b3378786 100644 --- a/web/app/components/workflow/nodes/variable-assigner/panel.tsx +++ b/web/app/components/workflow/nodes/variable-assigner/panel.tsx @@ -8,10 +8,10 @@ import Field from '@/app/components/workflow/nodes/_base/components/field' import Selector from '@/app/components/workflow/nodes/_base/components/selector' import AddButton from '@/app/components/base/button/add-button' import { ChevronDown } from '@/app/components/base/icons/src/vender/line/arrows' -import type { NodeProps } from '@/app/components/workflow/types' +import type { NodePanelProps } from '@/app/components/workflow/types' const i18nPrefix = 'workflow.nodes.variableAssigner' -const Panel: FC> = ({ +const Panel: FC> = ({ id, data, }) => { diff --git a/web/app/components/workflow/types.ts b/web/app/components/workflow/types.ts index 4e25e76ec5..9b0dcbcefd 100644 --- a/web/app/components/workflow/types.ts +++ b/web/app/components/workflow/types.ts @@ -40,6 +40,12 @@ export type CommonEdgeType = { export type Node = ReactFlowNode export type SelectedNode = Pick export type NodeProps = { id: string; data: CommonNodeType } +export type NodePanelProps = { + id: string + data: CommonNodeType + controlSingleRun: boolean + setControlSingleRun: (value: boolean) => void +} export type Edge = ReactFlowEdge export type ValueSelector = string[] // [nodeId, key | obj key path]