From 89fc90ac80ec65337b37369f992f45fdc43a229b Mon Sep 17 00:00:00 2001 From: Joel Date: Fri, 8 Mar 2024 10:36:57 +0800 Subject: [PATCH] chore: code support debug --- .../(commonLayout)/workflow/nodes/page.tsx | 4 +- .../components/workflow/nodes/code/panel.tsx | 26 +++++++++++ .../workflow/nodes/code/use-config.ts | 43 +++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/web/app/(commonLayout)/workflow/nodes/page.tsx b/web/app/(commonLayout)/workflow/nodes/page.tsx index e742f63c68..d823f4145c 100644 --- a/web/app/(commonLayout)/workflow/nodes/page.tsx +++ b/web/app/(commonLayout)/workflow/nodes/page.tsx @@ -32,8 +32,8 @@ const allMockData = { [BlockEnum.End]: EndNodeMock, } const nodes = [ - BlockEnum.KnowledgeRetrieval/* 4 */, BlockEnum.Start/* 1 */, BlockEnum.DirectAnswer/* 2 */, BlockEnum.LLM/* 3 */, BlockEnum.QuestionClassifier/* 5 */, - BlockEnum.IfElse/* 6 */, BlockEnum.Code/* 7 */, BlockEnum.TemplateTransform/* 8 */, BlockEnum.HttpRequest/* 9 */, BlockEnum.Tool/* 10 */, + BlockEnum.Code/* 7 */, BlockEnum.KnowledgeRetrieval/* 4 */, BlockEnum.Start/* 1 */, BlockEnum.DirectAnswer/* 2 */, BlockEnum.LLM/* 3 */, BlockEnum.QuestionClassifier/* 5 */, + BlockEnum.IfElse/* 6 */, BlockEnum.TemplateTransform/* 8 */, BlockEnum.HttpRequest/* 9 */, BlockEnum.Tool/* 10 */, BlockEnum.VariableAssigner/* 11 */, BlockEnum.End/* 12 */, ].map((item, i) => { const payload = allMockData[item] diff --git a/web/app/components/workflow/nodes/code/panel.tsx b/web/app/components/workflow/nodes/code/panel.tsx index 132b20ab8c..c11c09c950 100644 --- a/web/app/components/workflow/nodes/code/panel.tsx +++ b/web/app/components/workflow/nodes/code/panel.tsx @@ -12,6 +12,7 @@ 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 { NodePanelProps } from '@/app/components/workflow/types' +import BeforeRunForm from '@/app/components/workflow/nodes/_base/components/before-run-form' const i18nPrefix = 'workflow.nodes.code' @@ -40,6 +41,15 @@ const Panel: FC> = ({ handleCodeLanguageChange, handleOutputVarListChange, handleAddOutputVariable, + // single run + isShowSingleRun, + hideSingleRun, + runningStatus, + handleRun, + handleStop, + varInputs, + inputVarValues, + setInputVarValues, } = useConfig(id, data) return (
@@ -86,6 +96,22 @@ const Panel: FC> = ({ />
+ {isShowSingleRun && ( + + )} ) } diff --git a/web/app/components/workflow/nodes/code/use-config.ts b/web/app/components/workflow/nodes/code/use-config.ts index d052bb28b3..69f607f26b 100644 --- a/web/app/components/workflow/nodes/code/use-config.ts +++ b/web/app/components/workflow/nodes/code/use-config.ts @@ -4,6 +4,7 @@ import useVarList from '../_base/hooks/use-var-list' import useOutputVarList from '../_base/hooks/use-output-var-list' import type { CodeLanguage, CodeNodeType } from './types' import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud' +import useOneStepRun from '@/app/components/workflow/nodes/_base/hooks/use-one-step-run' const useConfig = (id: string, payload: CodeNodeType) => { const { inputs, setInputs } = useNodeCrud(id, payload) @@ -31,6 +32,39 @@ const useConfig = (id: string, payload: CodeNodeType) => { setInputs, }) + // single run + const { + isShowSingleRun, + hideSingleRun, + toVarInputs, + runningStatus, + handleRun, + handleStop, + runInputData, + setRunInputData, + } = useOneStepRun({ + id, + data: inputs, + defaultRunInputData: { + name: 'Joel', + age: '18', + }, + }) + const varInputs = toVarInputs(inputs.variables) + + const inputVarValues = (() => { + const vars: Record = {} + Object.keys(runInputData) + .forEach((key) => { + vars[key] = runInputData[key] + }) + return vars + })() + + const setInputVarValues = useCallback((newPayload: Record) => { + setRunInputData(newPayload) + }, [runInputData, setRunInputData]) + return { inputs, handleVarListChange, @@ -39,6 +73,15 @@ const useConfig = (id: string, payload: CodeNodeType) => { handleCodeLanguageChange, handleOutputVarListChange, handleAddOutputVariable, + // single run + isShowSingleRun, + hideSingleRun, + runningStatus, + handleRun, + handleStop, + varInputs, + inputVarValues, + setInputVarValues, } }