This commit is contained in:
StyleZhang 2024-03-18 19:50:55 +08:00
parent 81cbf2e713
commit 249f013ca3
3 changed files with 24 additions and 15 deletions

View File

@ -18,6 +18,7 @@ import type {
Edge, Edge,
Node, Node,
} from './types' } from './types'
import { WorkflowRunningStatus } from './types'
import { WorkflowContextProvider } from './context' import { WorkflowContextProvider } from './context'
import { import {
useEdgesInteractions, useEdgesInteractions,
@ -93,7 +94,9 @@ const Workflow: FC<WorkflowProps> = memo(({
const { isValidConnection } = useWorkflow() const { isValidConnection } = useWorkflow()
useOnViewportChange({ useOnViewportChange({
onEnd: () => handleSyncWorkflowDraft(), onEnd: () => {
handleSyncWorkflowDraft()
},
}) })
useKeyPress('Backspace', handleEdgeDelete) useKeyPress('Backspace', handleEdgeDelete)
@ -103,7 +106,7 @@ const Workflow: FC<WorkflowProps> = memo(({
id='workflow-container' id='workflow-container'
className={` className={`
relative w-full min-w-[960px] h-full bg-[#F0F2F7] relative w-full min-w-[960px] h-full bg-[#F0F2F7]
${runningStatus && 'workflow-panel-animation'} ${runningStatus === WorkflowRunningStatus.Running && 'workflow-panel-animation'}
${nodeAnimation && 'workflow-node-animation'} ${nodeAnimation && 'workflow-node-animation'}
`} `}
> >
@ -135,14 +138,14 @@ const Workflow: FC<WorkflowProps> = memo(({
defaultViewport={viewport} defaultViewport={viewport}
multiSelectionKeyCode={null} multiSelectionKeyCode={null}
deleteKeyCode={null} deleteKeyCode={null}
panOnDrag={!runningStatus}
nodesDraggable={!runningStatus} nodesDraggable={!runningStatus}
nodesConnectable={!runningStatus} nodesConnectable={!runningStatus}
nodesFocusable={!runningStatus} nodesFocusable={!runningStatus}
edgesFocusable={!runningStatus} edgesFocusable={!runningStatus}
zoomOnPinch={!runningStatus} panOnDrag={runningStatus !== WorkflowRunningStatus.Running}
zoomOnScroll={!runningStatus} zoomOnPinch={runningStatus !== WorkflowRunningStatus.Running}
zoomOnDoubleClick={!runningStatus} zoomOnScroll={runningStatus !== WorkflowRunningStatus.Running}
zoomOnDoubleClick={runningStatus !== WorkflowRunningStatus.Running}
isValidConnection={isValidConnection} isValidConnection={isValidConnection}
> >
<Background <Background

View File

@ -12,6 +12,7 @@ import {
} from 'reactflow' } from 'reactflow'
import { useNodesSyncDraft } from '../hooks' import { useNodesSyncDraft } from '../hooks'
import { useStore } from '../store' import { useStore } from '../store'
import { WorkflowRunningStatus } from '../types'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,
@ -63,7 +64,7 @@ const ZoomInOut: FC = () => {
] ]
const handleZoom = (type: string) => { const handleZoom = (type: string) => {
if (runningStatus) if (runningStatus === WorkflowRunningStatus.Running)
return return
if (type === 'in') if (type === 'in')
zoomIn() zoomIn()
@ -84,7 +85,7 @@ const ZoomInOut: FC = () => {
} }
const handleTrigger = useCallback(() => { const handleTrigger = useCallback(() => {
if (runningStatus) if (runningStatus === WorkflowRunningStatus.Running)
return return
setOpen(v => !v) setOpen(v => !v)
}, [runningStatus]) }, [runningStatus])
@ -103,7 +104,7 @@ const ZoomInOut: FC = () => {
<div className={` <div className={`
flex items-center px-2 h-8 cursor-pointer text-[13px] hover:bg-gray-50 rounded-lg flex items-center px-2 h-8 cursor-pointer text-[13px] hover:bg-gray-50 rounded-lg
${open && 'bg-gray-50'} ${open && 'bg-gray-50'}
${runningStatus && '!cursor-not-allowed opacity-50'} ${runningStatus === WorkflowRunningStatus.Running && '!cursor-not-allowed opacity-50'}
`}> `}>
<SearchLg className='mr-1 w-4 h-4' /> <SearchLg className='mr-1 w-4 h-4' />
<div className='w-[34px]'>{parseFloat(`${zoom * 100}`).toFixed(0)}%</div> <div className='w-[34px]'>{parseFloat(`${zoom * 100}`).toFixed(0)}%</div>

View File

@ -6,6 +6,7 @@ import { WorkflowRunningStatus } from '../types'
import { import {
useIsChatMode, useIsChatMode,
useWorkflow, useWorkflow,
useWorkflowRun,
} from '../hooks' } from '../hooks'
import { CheckCircle, XClose } from '@/app/components/base/icons/src/vender/line/general' import { CheckCircle, XClose } from '@/app/components/base/icons/src/vender/line/general'
import { AlertCircle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' import { AlertCircle } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback'
@ -22,6 +23,7 @@ const RunHistory = () => {
const isChatMode = useIsChatMode() const isChatMode = useIsChatMode()
const { appDetail, setCurrentLogItem, setShowMessageLogModal } = useAppStore() const { appDetail, setCurrentLogItem, setShowMessageLogModal } = useAppStore()
const { formatTimeFromNow } = useWorkflow() const { formatTimeFromNow } = useWorkflow()
const { handleBackupDraft } = useWorkflowRun()
const workflowStore = useWorkflowStore() const workflowStore = useWorkflowStore()
const workflowRunId = useRunHistoryStore(state => state.workflowRunId) const workflowRunId = useRunHistoryStore(state => state.workflowRunId)
const { data: runList, isLoading: runListLoading } = useSWR((appDetail && !isChatMode) ? `/apps/${appDetail.id}/workflow-runs` : null, fetchWorkflowRunHistory) const { data: runList, isLoading: runListLoading } = useSWR((appDetail && !isChatMode) ? `/apps/${appDetail.id}/workflow-runs` : null, fetchWorkflowRunHistory)
@ -69,12 +71,15 @@ const RunHistory = () => {
'flex mb-0.5 px-2 py-[7px] rounded-lg hover:bg-primary-50 cursor-pointer', 'flex mb-0.5 px-2 py-[7px] rounded-lg hover:bg-primary-50 cursor-pointer',
item.id === workflowRunId && 'bg-primary-50', item.id === workflowRunId && 'bg-primary-50',
)} )}
onClick={() => workflowStore.setState({ onClick={() => {
currentSequenceNumber: item.sequence_number, workflowStore.setState({
workflowRunId: item.id, currentSequenceNumber: item.sequence_number,
currentConversationID: item.conversation_id, workflowRunId: item.id,
runningStatus: item.status as WorkflowRunningStatus, currentConversationID: item.conversation_id,
})} runningStatus: item.status as WorkflowRunningStatus,
})
handleBackupDraft()
}}
> >
{ {
!isChatMode && item.status === WorkflowRunningStatus.Failed && ( !isChatMode && item.status === WorkflowRunningStatus.Failed && (