import type { TFunction } from 'i18next' import type { ReactElement } from 'react' import type { IterationNodeType } from '@/app/components/workflow/nodes/iteration/types' import type { NodeProps } from '@/app/components/workflow/types' import { Tooltip, TooltipContent, TooltipTrigger } from '@/app/components/base/ui/tooltip' import { BlockEnum, NodeRunningStatus } from '@/app/components/workflow/types' type HeaderMetaProps = { data: NodeProps['data'] hasVarValue: boolean isLoading: boolean loopIndex: ReactElement | null t: TFunction } export const NodeHeaderMeta = ({ data, hasVarValue, isLoading, loopIndex, t, }: HeaderMetaProps) => { return ( <> {data.type === BlockEnum.Iteration && (data as IterationNodeType).is_parallel && (
{t('nodes.iteration.parallelModeUpper', { ns: 'workflow' })}
{t('nodes.iteration.parallelModeEnableTitle', { ns: 'workflow' })}
{t('nodes.iteration.parallelModeEnableDesc', { ns: 'workflow' })}
)} {!!(data._iterationLength && data._iterationIndex && data._runningStatus === NodeRunningStatus.Running) && (
{data._iterationIndex > data._iterationLength ? data._iterationLength : data._iterationIndex} / {data._iterationLength}
)} {!!(data.type === BlockEnum.Loop && data._loopIndex) && loopIndex} {isLoading && } {!isLoading && data._runningStatus === NodeRunningStatus.Failed && ( )} {!isLoading && data._runningStatus === NodeRunningStatus.Exception && ( )} {!isLoading && (data._runningStatus === NodeRunningStatus.Succeeded || (!data._runningStatus && hasVarValue)) && ( )} {!isLoading && data._runningStatus === NodeRunningStatus.Paused && ( )} ) } type NodeBodyProps = { data: NodeProps['data'] child: ReactElement } export const NodeBody = ({ data, child, }: NodeBodyProps) => { if (data.type === BlockEnum.Iteration || data.type === BlockEnum.Loop) { return (
{child}
) } return child } export const NodeDescription = ({ data }: { data: NodeProps['data'] }) => { if (!data.desc || data.type === BlockEnum.Iteration || data.type === BlockEnum.Loop) return null return (
{data.desc}
) }