fix bug on expand and ungroup that does not update connected edges with proxy
This commit is contained in:
parent
7d633d853d
commit
64dbdc0e9d
3 changed files with 19 additions and 17 deletions
|
|
@ -227,7 +227,7 @@ export default function ParameterComponent({
|
||||||
<Handle
|
<Handle
|
||||||
type={left ? "target" : "source"}
|
type={left ? "target" : "source"}
|
||||||
position={left ? Position.Left : Position.Right}
|
position={left ? Position.Left : Position.Right}
|
||||||
id={scapedJSONStringfy(id)}
|
id={proxy?scapedJSONStringfy({...id,proxy}):scapedJSONStringfy(id)}
|
||||||
isValidConnection={(connection) =>
|
isValidConnection={(connection) =>
|
||||||
isValidConnection(connection, reactFlowInstance!)
|
isValidConnection(connection, reactFlowInstance!)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,9 +71,7 @@ export default function GenericNode({
|
||||||
|
|
||||||
// New useEffect to watch for changes in sseData and update validation status
|
// New useEffect to watch for changes in sseData and update validation status
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const relevantData = data.node?.flow
|
const relevantData = sseData[data.id];
|
||||||
? getGroupStatus(data.node.flow, sseData)
|
|
||||||
: sseData[data.id];
|
|
||||||
if (relevantData) {
|
if (relevantData) {
|
||||||
// Extract validation information from relevantData and update the validationStatus state
|
// Extract validation information from relevantData and update the validationStatus state
|
||||||
setValidationStatus(relevantData);
|
setValidationStatus(relevantData);
|
||||||
|
|
@ -258,7 +256,7 @@ export default function GenericNode({
|
||||||
type: data.node!.template[templateField].type,
|
type: data.node!.template[templateField].type,
|
||||||
id: data.id,
|
id: data.id,
|
||||||
fieldName: templateField,
|
fieldName: templateField,
|
||||||
Proxy: data.node!.template[templateField].Proxy,
|
proxy: data.node!.template[templateField].proxy,
|
||||||
})}
|
})}
|
||||||
data={data}
|
data={data}
|
||||||
setData={setData}
|
setData={setData}
|
||||||
|
|
|
||||||
|
|
@ -662,7 +662,6 @@ export function generateNodeTemplate(Flow: FlowType) {
|
||||||
export function generateNodeFromFlow(flow: FlowType,getNodeId:(type:string)=>string): NodeType {
|
export function generateNodeFromFlow(flow: FlowType,getNodeId:(type:string)=>string): NodeType {
|
||||||
const { nodes } = flow.data!;
|
const { nodes } = flow.data!;
|
||||||
const outputNode = _.cloneDeep(findLastNode(flow.data!));
|
const outputNode = _.cloneDeep(findLastNode(flow.data!));
|
||||||
// console.log(flow)
|
|
||||||
const position = getMiddlePoint(nodes);
|
const position = getMiddlePoint(nodes);
|
||||||
let data = _.cloneDeep(flow);
|
let data = _.cloneDeep(flow);
|
||||||
const id = getNodeId(outputNode?.data.type!)
|
const id = getNodeId(outputNode?.data.type!)
|
||||||
|
|
@ -750,6 +749,7 @@ export function ungroupNode(
|
||||||
fieldName: field,
|
fieldName: field,
|
||||||
type,
|
type,
|
||||||
id: proxyId,
|
id: proxyId,
|
||||||
|
inputTypes: inputTypes
|
||||||
};
|
};
|
||||||
if (node.data.node?.flow) {
|
if (node.data.node?.flow) {
|
||||||
newTargetHandle.proxy = {
|
newTargetHandle.proxy = {
|
||||||
|
|
@ -757,9 +757,6 @@ export function ungroupNode(
|
||||||
id: node.data.node.template[field].proxy?.id!,
|
id: node.data.node.template[field].proxy?.id!,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (inputTypes) {
|
|
||||||
newTargetHandle.inputTypes = inputTypes;
|
|
||||||
}
|
|
||||||
newEdge.data.targetHandle = newTargetHandle;
|
newEdge.data.targetHandle = newTargetHandle;
|
||||||
newEdge.targetHandle = scapedJSONStringfy(newTargetHandle);
|
newEdge.targetHandle = scapedJSONStringfy(newTargetHandle);
|
||||||
}
|
}
|
||||||
|
|
@ -775,7 +772,7 @@ export function ungroupNode(
|
||||||
newEdge.data.sourceHandle = newSourceHandle;
|
newEdge.data.sourceHandle = newSourceHandle;
|
||||||
newEdge.sourceHandle = scapedJSONStringfy(newSourceHandle);
|
newEdge.sourceHandle = scapedJSONStringfy(newSourceHandle);
|
||||||
}
|
}
|
||||||
if (newEdge.target === groupNode.id || newEdge.source === groupNode.id) {
|
if (edge.target === groupNode.id || edge.source === groupNode.id) {
|
||||||
updatedEdges.push(newEdge);
|
updatedEdges.push(newEdge);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -819,9 +816,8 @@ export function expandGroupNode(
|
||||||
groupNode: NodeDataType,
|
groupNode: NodeDataType,
|
||||||
ReactFlowInstance: ReactFlowInstance
|
ReactFlowInstance: ReactFlowInstance
|
||||||
) {
|
) {
|
||||||
const { template } = _.cloneDeep(groupNode.node!);
|
const { template,flow } = _.cloneDeep(groupNode.node!);
|
||||||
const { flow } = groupNode.node!;
|
const gNodes: NodeType[] = flow?.data?.nodes!;
|
||||||
const gNodes: NodeType[] = _.cloneDeep(flow!.data!.nodes);
|
|
||||||
const gEdges = flow!.data!.edges;
|
const gEdges = flow!.data!.edges;
|
||||||
//redirect edges to correct proxy node
|
//redirect edges to correct proxy node
|
||||||
let updatedEdges: Edge[] = [];
|
let updatedEdges: Edge[] = [];
|
||||||
|
|
@ -841,6 +837,7 @@ export function expandGroupNode(
|
||||||
fieldName: field,
|
fieldName: field,
|
||||||
type,
|
type,
|
||||||
id: proxyId,
|
id: proxyId,
|
||||||
|
inputTypes: inputTypes
|
||||||
};
|
};
|
||||||
if (node.data.node?.flow) {
|
if (node.data.node?.flow) {
|
||||||
newTargetHandle.proxy = {
|
newTargetHandle.proxy = {
|
||||||
|
|
@ -848,9 +845,6 @@ export function expandGroupNode(
|
||||||
id: node.data.node.template[field].proxy?.id!,
|
id: node.data.node.template[field].proxy?.id!,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (inputTypes) {
|
|
||||||
newTargetHandle.inputTypes = inputTypes;
|
|
||||||
}
|
|
||||||
newEdge.data.targetHandle = newTargetHandle;
|
newEdge.data.targetHandle = newTargetHandle;
|
||||||
newEdge.targetHandle = scapedJSONStringfy(newTargetHandle);
|
newEdge.targetHandle = scapedJSONStringfy(newTargetHandle);
|
||||||
}
|
}
|
||||||
|
|
@ -866,7 +860,7 @@ export function expandGroupNode(
|
||||||
newEdge.data.sourceHandle = newSourceHandle;
|
newEdge.data.sourceHandle = newSourceHandle;
|
||||||
newEdge.sourceHandle = scapedJSONStringfy(newSourceHandle);
|
newEdge.sourceHandle = scapedJSONStringfy(newSourceHandle);
|
||||||
}
|
}
|
||||||
if (newEdge.target === groupNode.id || newEdge.source === groupNode.id) {
|
if (edge.target === groupNode.id || edge.source === groupNode.id) {
|
||||||
updatedEdges.push(newEdge);
|
updatedEdges.push(newEdge);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -875,6 +869,7 @@ export function expandGroupNode(
|
||||||
let { field, id } = template[key].proxy!;
|
let { field, id } = template[key].proxy!;
|
||||||
let nodeIndex = gNodes.findIndex((n) => n.id === id);
|
let nodeIndex = gNodes.findIndex((n) => n.id === id);
|
||||||
if (nodeIndex !== -1) {
|
if (nodeIndex !== -1) {
|
||||||
|
let proxy: { id: string; field: string } | undefined;
|
||||||
let display_name: string;
|
let display_name: string;
|
||||||
let show = gNodes[nodeIndex].data.node!.template[field].show;
|
let show = gNodes[nodeIndex].data.node!.template[field].show;
|
||||||
let advanced = gNodes[nodeIndex].data.node!.template[field].advanced;
|
let advanced = gNodes[nodeIndex].data.node!.template[field].advanced;
|
||||||
|
|
@ -884,11 +879,20 @@ export function expandGroupNode(
|
||||||
} else {
|
} else {
|
||||||
display_name = gNodes[nodeIndex].data.node!.template[field].name;
|
display_name = gNodes[nodeIndex].data.node!.template[field].name;
|
||||||
}
|
}
|
||||||
|
if(gNodes[nodeIndex].data.node!.template[field].proxy){
|
||||||
|
proxy = gNodes[nodeIndex].data.node!.template[field].proxy;
|
||||||
|
}
|
||||||
gNodes[nodeIndex].data.node!.template[field] = template[key];
|
gNodes[nodeIndex].data.node!.template[field] = template[key];
|
||||||
gNodes[nodeIndex].data.node!.template[field].show = show;
|
gNodes[nodeIndex].data.node!.template[field].show = show;
|
||||||
gNodes[nodeIndex].data.node!.template[field].advanced = advanced;
|
gNodes[nodeIndex].data.node!.template[field].advanced = advanced;
|
||||||
gNodes[nodeIndex].data.node!.template[field].display_name = display_name;
|
gNodes[nodeIndex].data.node!.template[field].display_name = display_name;
|
||||||
gNodes[nodeIndex].selected = false;
|
gNodes[nodeIndex].selected = false;
|
||||||
|
if(proxy){
|
||||||
|
gNodes[nodeIndex].data.node!.template[field].proxy = proxy;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
delete gNodes[nodeIndex].data.node!.template[field].proxy
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue