fix: end node limit in next step (#4945)

This commit is contained in:
zxhlyh 2024-06-05 14:00:47 +08:00 committed by GitHub
parent 7749b71fff
commit a4041cb40b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 17 deletions

View File

@ -4,34 +4,33 @@ import {
} from 'react'
import { useTranslation } from 'react-i18next'
import {
useNodesExtraData,
useAvailableBlocks,
useNodesInteractions,
useNodesReadOnly,
} from '@/app/components/workflow/hooks'
import BlockSelector from '@/app/components/workflow/block-selector'
import { Plus } from '@/app/components/base/icons/src/vender/line/general'
import type {
BlockEnum,
CommonNodeType,
OnSelectBlock,
} from '@/app/components/workflow/types'
type AddProps = {
nodeId: string
nodeType: BlockEnum
nodeData: CommonNodeType
sourceHandle: string
branchName?: string
}
const Add = ({
nodeId,
nodeType,
nodeData,
sourceHandle,
branchName,
}: AddProps) => {
const { t } = useTranslation()
const { handleNodeAdd } = useNodesInteractions()
const nodesExtraData = useNodesExtraData()
const { nodesReadOnly } = useNodesReadOnly()
const availableNextNodes = nodesExtraData[nodeType].availableNextNodes
const { availableNextBlocks } = useAvailableBlocks(nodeData.type, nodeData.isInIteration)
const handleSelect = useCallback<OnSelectBlock>((type, toolDefaultValue) => {
handleNodeAdd(
@ -82,7 +81,7 @@ const Add = ({
offset={0}
trigger={renderTrigger}
popupClassName='!w-[328px]'
availableBlocksTypes={availableNextNodes}
availableBlocksTypes={availableNextBlocks}
/>
)
}

View File

@ -54,7 +54,7 @@ const NextStep = ({
!nodeWithBranches && !outgoers.length && (
<Add
nodeId={selectedNode!.id}
nodeType={selectedNode!.data.type}
nodeData={selectedNode!.data}
sourceHandle='source'
/>
)
@ -85,7 +85,7 @@ const NextStep = ({
<Add
key={branch.id}
nodeId={selectedNode!.id}
nodeType={selectedNode!.data.type}
nodeData={selectedNode!.data}
sourceHandle={branch.id}
branchName={branch.name}
/>

View File

@ -23,8 +23,8 @@ import {
} from '@/app/components/base/icons/src/vender/line/general'
import BlockIcon from '@/app/components/workflow/block-icon'
import {
useAvailableBlocks,
useNodeDataUpdate,
useNodesExtraData,
useNodesInteractions,
useNodesReadOnly,
useNodesSyncDraft,
@ -57,8 +57,7 @@ const BasePanel: FC<BasePanelProps> = ({
const { handleNodeSelect } = useNodesInteractions()
const { handleSyncWorkflowDraft } = useNodesSyncDraft()
const { nodesReadOnly } = useNodesReadOnly()
const nodesExtraData = useNodesExtraData()
const availableNextNodes = nodesExtraData[data.type].availableNextNodes
const { availableNextBlocks } = useAvailableBlocks(data.type, data.isInIteration)
const toolIcon = useToolIcon(data)
const handleResize = useCallback((width: number) => {
@ -157,7 +156,7 @@ const BasePanel: FC<BasePanelProps> = ({
{cloneElement(children, { id, data })}
</div>
{
!!availableNextNodes.length && (
!!availableNextBlocks.length && (
<div className='p-4 border-t-[0.5px] border-t-black/5'>
<div className='flex items-center mb-1 text-gray-700 text-[13px] font-semibold'>
{t('workflow.panel.nextStep').toLocaleUpperCase()}

View File

@ -11,7 +11,7 @@ import {
generateNewNode,
} from '../utils'
import {
useNodesExtraData,
useAvailableBlocks,
useNodesReadOnly,
usePanelInteractions,
} from '../hooks'
@ -38,11 +38,10 @@ const AddBlock = ({
const { t } = useTranslation()
const store = useStoreApi()
const workflowStore = useWorkflowStore()
const nodesExtraData = useNodesExtraData()
const { nodesReadOnly } = useNodesReadOnly()
const { handlePaneContextmenuCancel } = usePanelInteractions()
const [open, setOpen] = useState(false)
const availableNextNodes = nodesExtraData[BlockEnum.Start].availableNextNodes
const { availableNextBlocks } = useAvailableBlocks(BlockEnum.Start, false)
const handleOpenChange = useCallback((open: boolean) => {
setOpen(open)
@ -102,7 +101,7 @@ const AddBlock = ({
}}
trigger={renderTrigger || renderTriggerElement}
popupClassName='!min-w-[256px]'
availableBlocksTypes={availableNextNodes}
availableBlocksTypes={availableNextBlocks}
/>
)
}