mirror of https://github.com/langgenius/dify.git
datasource template
This commit is contained in:
parent
5401299e6e
commit
16603952a0
|
|
@ -10,7 +10,6 @@ import {
|
|||
import { API_PREFIX } from '@/config'
|
||||
import { syncWorkflowDraft } from '@/service/workflow'
|
||||
import { usePipelineRefreshDraft } from '.'
|
||||
import { CUSTOM_DATA_SOURCE_EMPTY_NODE } from '@/app/components/workflow/nodes/data-source-empty/constants'
|
||||
|
||||
export const useNodesSyncDraft = () => {
|
||||
const store = useStoreApi()
|
||||
|
|
@ -25,7 +24,7 @@ export const useNodesSyncDraft = () => {
|
|||
transform,
|
||||
} = store.getState()
|
||||
const nodesOriginal = getNodes()
|
||||
const nodes = nodesOriginal.filter(node => node.type !== CUSTOM_DATA_SOURCE_EMPTY_NODE)
|
||||
const nodes = nodesOriginal.filter(node => !node.data._isTempNode)
|
||||
const [x, y, zoom] = transform
|
||||
const {
|
||||
pipelineId,
|
||||
|
|
|
|||
|
|
@ -9,11 +9,8 @@ import { CUSTOM_NODE } from '@/app/components/workflow/constants'
|
|||
|
||||
export const processNodesWithoutDataSource = (nodes: Node[]) => {
|
||||
let leftNode
|
||||
let hasNoteBySystem
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
const node = nodes[i]
|
||||
if (node.type === CUSTOM_NOTE_NODE && node.data.noteBySystem)
|
||||
hasNoteBySystem = true
|
||||
|
||||
if (node.data.type === BlockEnum.DataSource)
|
||||
return nodes
|
||||
|
|
@ -34,38 +31,36 @@ export const processNodesWithoutDataSource = (nodes: Node[]) => {
|
|||
desc: '',
|
||||
type: BlockEnum.DataSourceEmpty,
|
||||
width: 240,
|
||||
_isTempNode: true,
|
||||
},
|
||||
position: {
|
||||
x: leftNode.position.x - 500,
|
||||
y: leftNode.position.y,
|
||||
},
|
||||
})
|
||||
let newNoteNode
|
||||
if (!hasNoteBySystem) {
|
||||
newNoteNode = generateNewNode({
|
||||
id: 'note',
|
||||
type: CUSTOM_NOTE_NODE,
|
||||
data: {
|
||||
title: '',
|
||||
desc: '',
|
||||
type: '' as any,
|
||||
text: '{"root":{"children":[{"children":[{"detail":0,"format":1,"mode":"normal","style":"font-size: 14px;","text":"Get started with a blank pipeline","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":1,"textStyle":"font-size: 14px;"},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":1,"textStyle":""},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"A Knowledge Pipeline starts with Data Source as the starting node and ends with the knowledge base node. The general steps are: import documents from the data source → use extractor to extract document content → split and clean content into structured chunks → store in the knowledge base.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0,"textStyle":""},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0,"textStyle":""},{"children":[{"children":[{"detail":0,"format":2,"mode":"normal","style":"","text":"Link to documentation","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"textFormat":2,"rel":"noreferrer","target":null,"title":null,"url":"https://dify.ai"}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":2,"textStyle":""},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0,"textStyle":""}],"direction":"ltr","format":"","indent":0,"type":"root","version":1,"textFormat":1,"textStyle":"font-size: 14px;"}}',
|
||||
theme: NoteTheme.blue,
|
||||
author: '',
|
||||
showAuthor: true,
|
||||
width: 240,
|
||||
height: 300,
|
||||
noteBySystem: true,
|
||||
} as NoteNodeType,
|
||||
position: {
|
||||
x: leftNode.position.x - 500,
|
||||
y: leftNode.position.y + 100,
|
||||
},
|
||||
}).newNode
|
||||
}
|
||||
const newNoteNode = generateNewNode({
|
||||
id: 'note',
|
||||
type: CUSTOM_NOTE_NODE,
|
||||
data: {
|
||||
title: '',
|
||||
desc: '',
|
||||
type: '' as any,
|
||||
text: '{"root":{"children":[{"children":[{"detail":0,"format":1,"mode":"normal","style":"font-size: 14px;","text":"Get started with a blank pipeline","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":1,"textStyle":"font-size: 14px;"},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":1,"textStyle":""},{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"A Knowledge Pipeline starts with Data Source as the starting node and ends with the knowledge base node. The general steps are: import documents from the data source → use extractor to extract document content → split and clean content into structured chunks → store in the knowledge base.","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0,"textStyle":""},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0,"textStyle":""},{"children":[{"children":[{"detail":0,"format":2,"mode":"normal","style":"","text":"Link to documentation","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"link","version":1,"textFormat":2,"rel":"noreferrer","target":"_blank","title":null,"url":"https://dify.ai"}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":2,"textStyle":""},{"children":[],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1,"textFormat":0,"textStyle":""}],"direction":"ltr","format":"","indent":0,"type":"root","version":1,"textFormat":1,"textStyle":"font-size: 14px;"}}',
|
||||
theme: NoteTheme.blue,
|
||||
author: '',
|
||||
showAuthor: true,
|
||||
width: 240,
|
||||
height: 300,
|
||||
_isTempNode: true,
|
||||
} as NoteNodeType,
|
||||
position: {
|
||||
x: leftNode.position.x - 500,
|
||||
y: leftNode.position.y + 100,
|
||||
},
|
||||
}).newNode
|
||||
return [
|
||||
newNode,
|
||||
...(newNoteNode ? [newNoteNode] : []),
|
||||
newNoteNode,
|
||||
...nodes,
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,10 @@ export const useReplaceDataSourceNode = (id: string) => {
|
|||
const newNodes = produce(nodes, (draft) => {
|
||||
draft[emptyNodeIndex] = newNode
|
||||
})
|
||||
setNodes(newNodes)
|
||||
const newNodesWithoutTempNodes = produce(newNodes, (draft) => {
|
||||
return draft.filter(node => !node.data._isTempNode)
|
||||
})
|
||||
setNodes(newNodesWithoutTempNodes)
|
||||
}, [])
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -77,22 +77,27 @@ const NoteNode = ({
|
|||
<NoteEditorContextProvider
|
||||
key={controlPromptEditorRerenderKey}
|
||||
value={data.text}
|
||||
editable={!data._isTempNode}
|
||||
>
|
||||
<>
|
||||
<NodeResizer
|
||||
nodeId={id}
|
||||
nodeData={data}
|
||||
icon={<Icon />}
|
||||
minWidth={240}
|
||||
minHeight={88}
|
||||
/>
|
||||
{
|
||||
!data._isTempNode && (
|
||||
<NodeResizer
|
||||
nodeId={id}
|
||||
nodeData={data}
|
||||
icon={<Icon />}
|
||||
minWidth={240}
|
||||
minHeight={88}
|
||||
/>
|
||||
)
|
||||
}
|
||||
<div
|
||||
className={cn(
|
||||
'h-2 shrink-0 rounded-t-md opacity-50',
|
||||
THEME_MAP[theme].title,
|
||||
)}></div>
|
||||
{
|
||||
data.selected && (
|
||||
data.selected && !data._isTempNode && (
|
||||
<div className='absolute left-1/2 top-[-41px] -translate-x-1/2'>
|
||||
<NoteEditorToolbar
|
||||
theme={theme}
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ export type CommonNodeType<T = {}> = {
|
|||
_waitingRun?: boolean
|
||||
_retryIndex?: number
|
||||
_dataSourceStartToAdd?: boolean
|
||||
noteBySystem?: boolean
|
||||
_isTempNode?: boolean
|
||||
isInIteration?: boolean
|
||||
iteration_id?: string
|
||||
selected?: boolean
|
||||
|
|
|
|||
Loading…
Reference in New Issue