mirror of
https://github.com/langgenius/dify.git
synced 2026-04-28 03:36:36 +08:00
multiple edge
This commit is contained in:
parent
4837ae4958
commit
2094a554f6
@ -33,13 +33,13 @@ const initialNodes = [
|
|||||||
id: '3',
|
id: '3',
|
||||||
type: 'custom',
|
type: 'custom',
|
||||||
position: { x: 738, y: 130 },
|
position: { x: 738, y: 130 },
|
||||||
data: { type: 'llm', sortIndexInBranches: 0 },
|
data: { type: 'question-classifier', sortIndexInBranches: 0 },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: '4',
|
id: '4',
|
||||||
type: 'custom',
|
type: 'custom',
|
||||||
position: { x: 738, y: 330 },
|
position: { x: 738, y: 330 },
|
||||||
data: { type: 'llm', sortIndexInBranches: 1 },
|
data: { type: 'variable-assigner', sortIndexInBranches: 1 },
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// id: '5',
|
// id: '5',
|
||||||
|
|||||||
@ -106,6 +106,7 @@ export const useWorkflow = () => {
|
|||||||
|
|
||||||
filtered.push({
|
filtered.push({
|
||||||
id: `${source}-${target}`,
|
id: `${source}-${target}`,
|
||||||
|
type: 'custom',
|
||||||
source: source!,
|
source: source!,
|
||||||
target: target!,
|
target: target!,
|
||||||
sourceHandle,
|
sourceHandle,
|
||||||
|
|||||||
@ -32,7 +32,7 @@ const CustomNode = memo((props: NodeProps) => {
|
|||||||
<NodeComponent />
|
<NodeComponent />
|
||||||
</BaseNode>
|
</BaseNode>
|
||||||
{
|
{
|
||||||
nodeData.type !== BlockEnum.IfElse && (
|
nodeData.type !== BlockEnum.IfElse && nodeData.type !== BlockEnum.QuestionClassifier && (
|
||||||
<NodeSourceHandle
|
<NodeSourceHandle
|
||||||
{ ...props }
|
{ ...props }
|
||||||
handleClassName='!top-[17px] !-right-2'
|
handleClassName='!top-[17px] !-right-2'
|
||||||
|
|||||||
@ -1,13 +1,15 @@
|
|||||||
import type { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
|
import type { NodeProps } from 'reactflow'
|
||||||
import InfoPanel from '../_base/components/info-panel'
|
import InfoPanel from '../_base/components/info-panel'
|
||||||
|
import { NodeSourceHandle } from '../_base/components/node-handle'
|
||||||
import { mockData } from './mock'
|
import { mockData } from './mock'
|
||||||
import {
|
import {
|
||||||
useTextGenerationCurrentProviderAndModelAndModelList,
|
useTextGenerationCurrentProviderAndModelAndModelList,
|
||||||
} from '@/app/components/header/account-setting/model-provider-page/hooks'
|
} from '@/app/components/header/account-setting/model-provider-page/hooks'
|
||||||
import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector'
|
import ModelSelector from '@/app/components/header/account-setting/model-provider-page/model-selector'
|
||||||
|
|
||||||
const Node: FC = () => {
|
const Node: FC<Pick<NodeProps, 'id' | 'data'>> = (props) => {
|
||||||
const { provider, name: modelId } = mockData.model
|
const { provider, name: modelId } = mockData.model
|
||||||
const tempTopics = mockData.topics
|
const tempTopics = mockData.topics
|
||||||
const [topics, setTopics] = useState(tempTopics)
|
const [topics, setTopics] = useState(tempTopics)
|
||||||
@ -23,11 +25,20 @@ const Node: FC = () => {
|
|||||||
/>
|
/>
|
||||||
<div className='mt-2 space-y-0.5'>
|
<div className='mt-2 space-y-0.5'>
|
||||||
{topics.map(topic => (
|
{topics.map(topic => (
|
||||||
<InfoPanel
|
<div
|
||||||
key={topic.id}
|
key={topic.id}
|
||||||
title={topic.name}
|
className='relative'
|
||||||
content={topic.topic}
|
>
|
||||||
/>
|
<InfoPanel
|
||||||
|
title={topic.name}
|
||||||
|
content={topic.topic}
|
||||||
|
/>
|
||||||
|
<NodeSourceHandle
|
||||||
|
{...props}
|
||||||
|
handleId={topic.name}
|
||||||
|
handleClassName='!top-[11px] !-right-[21px]'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
))}
|
))}
|
||||||
{/* For test */}
|
{/* For test */}
|
||||||
<div
|
<div
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
import type { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
|
import type { NodeProps } from 'reactflow'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import { NodeTargetHandle } from '../_base/components/node-handle'
|
||||||
import { mockData } from './mock'
|
import { mockData } from './mock'
|
||||||
import { getNodeInfoById } from '@/app/components/workflow/nodes/_base/components/variable/var-reference-picker'
|
import { getNodeInfoById } from '@/app/components/workflow/nodes/_base/components/variable/var-reference-picker'
|
||||||
import { VarBlockIcon } from '@/app/components/workflow/block-icon'
|
import { VarBlockIcon } from '@/app/components/workflow/block-icon'
|
||||||
@ -8,7 +10,7 @@ import { Line3 } from '@/app/components/base/icons/src/public/common'
|
|||||||
import { Variable02 } from '@/app/components/base/icons/src/vender/solid/development'
|
import { Variable02 } from '@/app/components/base/icons/src/vender/solid/development'
|
||||||
const i18nPrefix = 'workflow.nodes.variableAssigner'
|
const i18nPrefix = 'workflow.nodes.variableAssigner'
|
||||||
|
|
||||||
const Node: FC = () => {
|
const Node: FC<Pick<NodeProps, 'id' | 'data'>> = (props) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { variables: tempVar, output_type } = mockData
|
const { variables: tempVar, output_type } = mockData
|
||||||
const [variables, setVariables] = useState(tempVar)
|
const [variables, setVariables] = useState(tempVar)
|
||||||
@ -35,7 +37,12 @@ const Node: FC = () => {
|
|||||||
const node = getNodeInfoById(item[0])
|
const node = getNodeInfoById(item[0])
|
||||||
const varName = item[item.length - 1]
|
const varName = item[item.length - 1]
|
||||||
return (
|
return (
|
||||||
<div key={index} className='flex items-center h-6 bg-gray-100 rounded-md px-1 text-xs font-normal text-gray-700' >
|
<div key={index} className='relative flex items-center h-6 bg-gray-100 rounded-md px-1 text-xs font-normal text-gray-700' >
|
||||||
|
<NodeTargetHandle
|
||||||
|
{...props}
|
||||||
|
handleId={varName}
|
||||||
|
handleClassName='!top-1 !-left-[21px]'
|
||||||
|
/>
|
||||||
<div className='flex items-center'>
|
<div className='flex items-center'>
|
||||||
<div className='p-[1px]'>
|
<div className='p-[1px]'>
|
||||||
<VarBlockIcon
|
<VarBlockIcon
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user