Commit 90c8d9d2 authored by StyleZhang's avatar StyleZhang

service

parent a30b6acc
import { useTranslation } from 'react-i18next'
import { BLOCKS } from './constants'
export const useBlocks = () => {
const { t } = useTranslation()
return BLOCKS.map((block) => {
return {
...block,
title: t(`workflow.blocks.${block.type}`),
}
})
}
......@@ -3,13 +3,14 @@ import {
memo,
useState,
} from 'react'
import { groupBy } from 'lodash-es'
import BlockIcon from '../block-icon'
import type { BlockEnum } from '../types'
import {
BLOCK_CLASSIFICATIONS,
BLOCK_GROUP_BY_CLASSIFICATION,
TABS,
} from './constants'
import { useBlocks } from './hooks'
export type TabsProps = {
onSelect: (type: BlockEnum) => void
......@@ -18,6 +19,7 @@ const Tabs: FC<TabsProps> = ({
onSelect,
}) => {
const [activeTab, setActiveTab] = useState(TABS[0].key)
const blocks = useBlocks()
return (
<div>
......@@ -52,7 +54,7 @@ const Tabs: FC<TabsProps> = ({
)
}
{
BLOCK_GROUP_BY_CLASSIFICATION[classification].map(block => (
groupBy(blocks, 'classification')[classification].map(block => (
<div
key={block.type}
className='flex items-center px-3 h-8 rounded-lg hover:bg-gray-50 cursor-pointer'
......
import type { FC } from 'react'
import {
memo,
useMemo,
} from 'react'
import { useParams } from 'next/navigation'
import useSWR from 'swr'
......@@ -112,21 +113,42 @@ const WorkflowWrap: FC<WorkflowProps> = ({
edges,
}) => {
const appId = useParams().appId
const { isLoading, error } = useSWR(`/apps/${appId}/workflows/draft`, fetchWorkflowDraft)
const { data, isLoading, error } = useSWR(`/apps/${appId}/workflows/draft`, fetchWorkflowDraft)
const startNode = {
id: `${Date.now()}`,
data: NodeInitialData.start,
position: {
x: 100,
y: 100,
},
}
const nodesData = useMemo(() => {
if (nodes)
return nodes
if (data)
return data.graph.nodes
return [startNode]
}, [data, nodes])
const edgesData = useMemo(() => {
if (edges)
return edges
if (data)
return data.graph.edges
return []
}, [data, nodes])
if (error) {
syncWorkflowDraft({
url: `/apps/${appId}/workflows/draft`,
params: {
graph: {
nodes: [{
id: `${Date.now()}`,
data: NodeInitialData.start,
position: {
x: 100,
y: 100,
},
}],
nodes: [startNode],
edges: [],
},
features: {},
......@@ -144,8 +166,8 @@ const WorkflowWrap: FC<WorkflowProps> = ({
<ReactFlowProvider>
<FeaturesProvider>
<Workflow
nodes={nodes}
edges={edges}
nodes={nodesData}
edges={edgesData}
/>
</FeaturesProvider>
</ReactFlowProvider>
......
const translation = {
blocks: {
'start': 'Start',
'end': 'End',
'direct-answer': 'Direct Answer',
'llm': 'LLM',
'knowledge-retrieval': 'Knowledge Retrieval',
'question-classifier': 'Question Classifier',
'if-else': 'IF/ELSE',
'code': 'Code',
'template-transform': 'Templating Transform',
'http-request': 'HTTP Request',
'variable-assigner': 'Variable Assigner',
},
nodes: {
common: {
outputVars: 'Output Variables',
......
const translation = {
blocks: {
'start': '开始',
'end': '结束',
'direct-answer': '直接回答',
'llm': 'LLM',
'knowledge-retrieval': '知识检索',
'question-classifier': '问题分类器',
'if-else': '条件分支',
'code': '代码',
'template-transform': '模板转换',
'http-request': 'HTTP 请求',
'variable-assigner': '变量赋值',
},
nodes: {
common: {
outputVars: '输出变量',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment