diff --git a/web/app/components/workflow/nodes/_base/components/node-control.tsx b/web/app/components/workflow/nodes/_base/components/node-control.tsx index a85c41741b..86cfb9bc1a 100644 --- a/web/app/components/workflow/nodes/_base/components/node-control.tsx +++ b/web/app/components/workflow/nodes/_base/components/node-control.tsx @@ -13,7 +13,7 @@ import { useNodesInteractions, useNodesSyncDraft, } from '../../../hooks' -import type { Node } from '../../../types' +import { type Node, NodeRunningStatus } from '../../../types' import { canRunBySingle } from '../../../utils' import PanelOperator from './panel-operator' import { @@ -31,7 +31,7 @@ const NodeControl: FC = ({ const { handleNodeDataUpdate } = useNodeDataUpdate() const { handleNodeSelect } = useNodesInteractions() const { handleSyncWorkflowDraft } = useNodesSyncDraft() - + const isSingleRunning = data._singleRunningStatus === NodeRunningStatus.Running const handleOpenChange = useCallback((newOpen: boolean) => { setOpen(newOpen) }, []) @@ -53,11 +53,15 @@ const NodeControl: FC = ({
{ + const nextData: Record = { + _isSingleRun: !isSingleRunning, + } + if(isSingleRunning) + nextData._singleRunningStatus = undefined + handleNodeDataUpdate({ id, - data: { - _isSingleRun: !data._isSingleRun, - }, + data: nextData, }) handleNodeSelect(id) if (!data._isSingleRun) @@ -65,7 +69,7 @@ const NodeControl: FC = ({ }} > { - data._isSingleRun + isSingleRunning ? : ( = ({ const { showMessageLogModal } = useAppStore(useShallow(state => ({ showMessageLogModal: state.showMessageLogModal, }))) + const isSingleRunning = data._singleRunningStatus === NodeRunningStatus.Running + const showSingleRunPanel = useStore(s => s.showSingleRunPanel) const workflowCanvasWidth = useStore(s => s.workflowCanvasWidth) const nodePanelWidth = useStore(s => s.nodePanelWidth) @@ -126,6 +129,7 @@ const BasePanel: FC = ({ const { saveStateToHistory } = useWorkflowHistory() const { + handleNodeDataUpdate, handleNodeDataUpdateWithSyncDraft, } = useNodeDataUpdate() @@ -265,12 +269,29 @@ const BasePanel: FC = ({
{ + if(isSingleRunning) { + handleNodeDataUpdate({ + id, + data: { + _isSingleRun: false, + _singleRunningStatus: undefined, + }, + }) + } + else { + handleSingleRun() + } + }} > - + { + isSingleRunning ? + : + }
)