feat: workflow interaction (#4214)

This commit is contained in:
zxhlyh
2024-05-09 17:18:51 +08:00
committed by GitHub
parent 487ce7c82a
commit 9b24f12bf5
54 changed files with 1955 additions and 431 deletions

View File

@@ -6,6 +6,7 @@ import {
cloneElement,
memo,
useMemo,
useRef,
} from 'react'
import type { NodeProps } from '../../types'
import {
@@ -37,27 +38,30 @@ const BaseNode: FC<BaseNodeProps> = ({
data,
children,
}) => {
const nodeRef = useRef<HTMLDivElement>(null)
const { nodesReadOnly } = useNodesReadOnly()
const toolIcon = useToolIcon(data)
const showSelectedBorder = data.selected || data._isBundled
const {
showRunningBorder,
showSuccessBorder,
showFailedBorder,
} = useMemo(() => {
return {
showRunningBorder: data._runningStatus === NodeRunningStatus.Running && !data.selected,
showSuccessBorder: data._runningStatus === NodeRunningStatus.Succeeded && !data.selected,
showFailedBorder: data._runningStatus === NodeRunningStatus.Failed && !data.selected,
showRunningBorder: data._runningStatus === NodeRunningStatus.Running && !showSelectedBorder,
showSuccessBorder: data._runningStatus === NodeRunningStatus.Succeeded && !showSelectedBorder,
showFailedBorder: data._runningStatus === NodeRunningStatus.Failed && !showSelectedBorder,
}
}, [data._runningStatus, data.selected])
}, [data._runningStatus, showSelectedBorder])
return (
<div
className={`
flex border-[2px] rounded-2xl
${(data.selected && !data._isInvalidConnection) ? 'border-primary-600' : 'border-transparent'}
${(showSelectedBorder && !data._isInvalidConnection) ? 'border-primary-600' : 'border-transparent'}
`}
ref={nodeRef}
>
<div
className={`
@@ -68,10 +72,11 @@ const BaseNode: FC<BaseNodeProps> = ({
${showSuccessBorder && '!border-[#12B76A]'}
${showFailedBorder && '!border-[#F04438]'}
${data._isInvalidConnection && '!border-[#F04438]'}
${data._isBundled && '!shadow-lg'}
`}
>
{
data.type !== BlockEnum.VariableAssigner && (
data.type !== BlockEnum.VariableAssigner && !data._isCandidate && (
<NodeTargetHandle
id={id}
data={data}
@@ -81,7 +86,7 @@ const BaseNode: FC<BaseNodeProps> = ({
)
}
{
data.type !== BlockEnum.IfElse && data.type !== BlockEnum.QuestionClassifier && (
data.type !== BlockEnum.IfElse && data.type !== BlockEnum.QuestionClassifier && !data._isCandidate && (
<NodeSourceHandle
id={id}
data={data}
@@ -91,7 +96,7 @@ const BaseNode: FC<BaseNodeProps> = ({
)
}
{
!data._runningStatus && !nodesReadOnly && (
!data._runningStatus && !nodesReadOnly && !data._isCandidate && (
<NodeControl
id={id}
data={data}