@@ -87,9 +87,7 @@ const XFlow: FC<FlowProps> = memo(props => {
87
87
const { settingMap, globalConfig, readOnly } = useContext ( ConfigContext ) ;
88
88
const [ openPanel , setOpenPanel ] = useState < boolean > ( true ) ;
89
89
const [ openLogPanel , setOpenLogPanel ] = useState < boolean > ( true ) ;
90
-
91
90
const { onNodeClick, onEdgeClick, zoomOnScroll = true , panOnScroll = false , preventScrolling = true } = props ;
92
-
93
91
const nodeEditorRef = useRef ( null ) ;
94
92
95
93
useEffect ( ( ) => {
@@ -204,24 +202,37 @@ const XFlow: FC<FlowProps> = memo(props => {
204
202
setEdges ( newEdges ) ;
205
203
} ) ;
206
204
207
- const handleNodeValueChange = debounce ( ( data : any ) => {
208
- for ( let node of nodes ) {
209
- if ( node . id === data . id ) {
210
- node . data = {
211
- ...node ?. data ,
212
- ...data ?. values ,
213
- } ;
214
- break ;
215
- }
205
+ const handleNodeValueChange = debounce ( ( data : any , id : string ) => {
206
+ // for (let node of nodes) {
207
+ // if (node.id === data.id) {
208
+ // node.data = {
209
+ // ...node?.data,
210
+ // ...data?.values,
211
+ // };
212
+ // break;
213
+ // }
214
+ // }
215
+ // setNodes([...nodes], false);
216
+ // 同时更新 activeNode 状态,确保面板数据同步
217
+ if ( activeNode && activeNode . id === id ) {
218
+ setActiveNode ( {
219
+ ...activeNode ,
220
+ values : {
221
+ ...activeNode . values ,
222
+ ...data ,
223
+ } ,
224
+ } ) ;
216
225
}
217
- setNodes ( [ ...nodes ] , false ) ;
218
226
} , 200 ) ;
219
227
220
228
const nodeTypes = useMemo ( ( ) => {
221
229
return {
222
230
custom : ( props : any ) => {
223
231
const { data, id, ...rest } = props ;
224
232
const { _nodeType, _status, ...restData } = data || { } ;
233
+ const nodeSetting = settingMap [ _nodeType ] || { } ;
234
+ const showPanel = nodeSetting ?. nodePanel ?. showPanel ?? true ;
235
+
225
236
return (
226
237
< CustomNode
227
238
{ ...rest }
@@ -244,7 +255,11 @@ const XFlow: FC<FlowProps> = memo(props => {
244
255
values : { ...restData } ,
245
256
_status,
246
257
} ) ;
247
- setOpenPanel ( true ) ;
258
+ if ( ! showPanel ) {
259
+ setOpenPanel ( false ) ;
260
+ } else {
261
+ setOpenPanel ( true ) ;
262
+ }
248
263
setOpenLogPanel ( true ) ;
249
264
} }
250
265
/>
@@ -261,16 +276,16 @@ const XFlow: FC<FlowProps> = memo(props => {
261
276
onChange = { handleNodeValueChange }
262
277
nodeType = { activeNode ?. _nodeType }
263
278
id = { activeNode ?. id }
264
-
265
279
/>
266
280
) ;
281
+ // JSON.stringify(activeNode)
267
282
} , [ activeNode ?. id ] ) ;
268
283
269
284
const NodeLogWrap = useMemo ( ( ) => {
270
285
return (
271
286
< NodeLogPanel
272
287
data = { activeNode ?. values }
273
- onChange = { handleNodeValueChange }
288
+ // onChange={handleNodeValueChange}
274
289
nodeType = { activeNode ?. _nodeType }
275
290
id = { activeNode ?. id }
276
291
node = { activeNode }
@@ -287,19 +302,6 @@ const XFlow: FC<FlowProps> = memo(props => {
287
302
const deletable = globalConfig ?. edge ?. deletable ?? true ;
288
303
const panelonClose = globalConfig ?. nodePanel ?. onClose ;
289
304
290
- const getNodesJ = nodes => {
291
- const result = nodes . map ( item => {
292
- const { data, ...rest } = item ;
293
- const { _nodeType, ...restData } = data ;
294
- return {
295
- ...rest ,
296
- data : restData ,
297
- type : _nodeType ,
298
- } ;
299
- } ) ;
300
- return result ;
301
- } ;
302
-
303
305
return (
304
306
< div id = "xflow-container" ref = { workflowContainerRef } >
305
307
< ReactFlow
@@ -310,9 +312,8 @@ const XFlow: FC<FlowProps> = memo(props => {
310
312
edges = { edges }
311
313
minZoom = { 0.3 }
312
314
zoomOnScroll = { zoomOnScroll }
313
- panOnScroll = { panOnScroll } // 禁用滚动平移
314
- preventScrolling = { preventScrolling } // 允许页面滚动
315
-
315
+ panOnScroll = { panOnScroll } // 禁用滚动平移
316
+ preventScrolling = { preventScrolling } // 允许页面滚动
316
317
defaultEdgeOptions = { {
317
318
type : 'buttonedge' ,
318
319
style : {
@@ -321,7 +322,7 @@ const XFlow: FC<FlowProps> = memo(props => {
321
322
markerEnd : {
322
323
type : MarkerType . ArrowClosed , // 箭头
323
324
width : 18 ,
324
- height :18
325
+ height : 18 ,
325
326
} ,
326
327
deletable : deletable , //默认连线属性受此项控制
327
328
} }
0 commit comments