chore: node and panel single run stop not work

pull/21369/head
Joel 12 months ago
parent f3a5d93d10
commit a3795c81db

@ -13,7 +13,7 @@ import {
useNodesInteractions, useNodesInteractions,
useNodesSyncDraft, useNodesSyncDraft,
} from '../../../hooks' } from '../../../hooks'
import type { Node } from '../../../types' import { type Node, NodeRunningStatus } from '../../../types'
import { canRunBySingle } from '../../../utils' import { canRunBySingle } from '../../../utils'
import PanelOperator from './panel-operator' import PanelOperator from './panel-operator'
import { import {
@ -31,7 +31,7 @@ const NodeControl: FC<NodeControlProps> = ({
const { handleNodeDataUpdate } = useNodeDataUpdate() const { handleNodeDataUpdate } = useNodeDataUpdate()
const { handleNodeSelect } = useNodesInteractions() const { handleNodeSelect } = useNodesInteractions()
const { handleSyncWorkflowDraft } = useNodesSyncDraft() const { handleSyncWorkflowDraft } = useNodesSyncDraft()
const isSingleRunning = data._singleRunningStatus === NodeRunningStatus.Running
const handleOpenChange = useCallback((newOpen: boolean) => { const handleOpenChange = useCallback((newOpen: boolean) => {
setOpen(newOpen) setOpen(newOpen)
}, []) }, [])
@ -53,11 +53,15 @@ const NodeControl: FC<NodeControlProps> = ({
<div <div
className='flex h-5 w-5 cursor-pointer items-center justify-center rounded-md hover:bg-state-base-hover' className='flex h-5 w-5 cursor-pointer items-center justify-center rounded-md hover:bg-state-base-hover'
onClick={() => { onClick={() => {
const nextData: Record<string, any> = {
_isSingleRun: !isSingleRunning,
}
if(isSingleRunning)
nextData._singleRunningStatus = undefined
handleNodeDataUpdate({ handleNodeDataUpdate({
id, id,
data: { data: nextData,
_isSingleRun: !data._isSingleRun,
},
}) })
handleNodeSelect(id) handleNodeSelect(id)
if (!data._isSingleRun) if (!data._isSingleRun)
@ -65,7 +69,7 @@ const NodeControl: FC<NodeControlProps> = ({
}} }}
> >
{ {
data._isSingleRun isSingleRunning
? <Stop className='h-3 w-3' /> ? <Stop className='h-3 w-3' />
: ( : (
<Tooltip <Tooltip

@ -44,7 +44,7 @@ import {
hasRetryNode, hasRetryNode,
} from '@/app/components/workflow/utils' } from '@/app/components/workflow/utils'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'
import { BlockEnum, type Node } from '@/app/components/workflow/types' import { BlockEnum, type Node, NodeRunningStatus } from '@/app/components/workflow/types'
import { useStore as useAppStore } from '@/app/components/app/store' import { useStore as useAppStore } from '@/app/components/app/store'
import { useStore } from '@/app/components/workflow/store' import { useStore } from '@/app/components/workflow/store'
import Tab, { TabType } from './tab' import Tab, { TabType } from './tab'
@ -56,6 +56,7 @@ import { NODES_EXTRA_DATA } from '@/app/components/workflow/constants'
import { useLogs } from '@/app/components/workflow/run/hooks' import { useLogs } from '@/app/components/workflow/run/hooks'
import PanelWrap from '../before-run-form/panel-wrap' import PanelWrap from '../before-run-form/panel-wrap'
import SpecialResultPanel from '@/app/components/workflow/run/special-result-panel' import SpecialResultPanel from '@/app/components/workflow/run/special-result-panel'
import { Stop } from '@/app/components/base/icons/src/vender/line/mediaAndDevices'
type BasePanelProps = { type BasePanelProps = {
children: ReactNode children: ReactNode
@ -73,6 +74,8 @@ const BasePanel: FC<BasePanelProps> = ({
const { showMessageLogModal } = useAppStore(useShallow(state => ({ const { showMessageLogModal } = useAppStore(useShallow(state => ({
showMessageLogModal: state.showMessageLogModal, showMessageLogModal: state.showMessageLogModal,
}))) })))
const isSingleRunning = data._singleRunningStatus === NodeRunningStatus.Running
const showSingleRunPanel = useStore(s => s.showSingleRunPanel) const showSingleRunPanel = useStore(s => s.showSingleRunPanel)
const workflowCanvasWidth = useStore(s => s.workflowCanvasWidth) const workflowCanvasWidth = useStore(s => s.workflowCanvasWidth)
const nodePanelWidth = useStore(s => s.nodePanelWidth) const nodePanelWidth = useStore(s => s.nodePanelWidth)
@ -126,6 +129,7 @@ const BasePanel: FC<BasePanelProps> = ({
const { saveStateToHistory } = useWorkflowHistory() const { saveStateToHistory } = useWorkflowHistory()
const { const {
handleNodeDataUpdate,
handleNodeDataUpdateWithSyncDraft, handleNodeDataUpdateWithSyncDraft,
} = useNodeDataUpdate() } = useNodeDataUpdate()
@ -265,12 +269,29 @@ const BasePanel: FC<BasePanelProps> = ({
<Tooltip <Tooltip
popupContent={t('workflow.panel.runThisStep')} popupContent={t('workflow.panel.runThisStep')}
popupClassName='mr-1' popupClassName='mr-1'
disabled={isSingleRunning}
> >
<div <div
className='mr-1 flex h-6 w-6 cursor-pointer items-center justify-center rounded-md hover:bg-state-base-hover' className='mr-1 flex h-6 w-6 cursor-pointer items-center justify-center rounded-md hover:bg-state-base-hover'
onClick={handleSingleRun} onClick={() => {
if(isSingleRunning) {
handleNodeDataUpdate({
id,
data: {
_isSingleRun: false,
_singleRunningStatus: undefined,
},
})
}
else {
handleSingleRun()
}
}}
> >
<RiPlayLargeLine className='h-4 w-4 text-text-tertiary' /> {
isSingleRunning ? <Stop className='h-4 w-4 text-text-tertiary' />
: <RiPlayLargeLine className='h-4 w-4 text-text-tertiary' />
}
</div> </div>
</Tooltip> </Tooltip>
) )

Loading…
Cancel
Save