fix(store): parsing overwriting __vf fields or not writing them at all

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
Braks
2021-11-25 15:21:36 +01:00
parent 5ceee98e9b
commit fd83a6d365
+12 -12
View File
@@ -340,10 +340,12 @@ export const parseElement = (element: Node | Edge, prevElements: FlowElements, n
if (isNode(element)) {
const storeNode = prevElements[index]
if (!isGraphNode(element)) parsed = parseNode(element, nodeExtent)
else parsed = element
if (storeNode) {
const updatedNode = {
...storeNode,
...element,
...parsed,
} as GraphNode
if (typeof element.type !== 'undefined' && element.type !== storeNode.type) {
@@ -353,38 +355,36 @@ export const parseElement = (element: Node | Edge, prevElements: FlowElements, n
}
parsed = updatedNode
} else {
parsed = parseNode(element, nodeExtent)
}
} else if (isEdge(element)) {
const storeEdge = prevElements[index]
if (!isGraphEdge(element)) parsed = parseEdge(element)
else parsed = element
if (storeEdge) {
parsed = {
...storeEdge,
...element,
...parsed,
} as GraphEdge
} else {
parsed = parseEdge(element)
}
}
return { parsed, index }
}
export const parseElements = (elements: Elements, prevElements: FlowElements, nodeExtent: NodeExtent) => {
const next: NextElements = {
const { nodes, edges }: NextElements = {
nodes: [],
edges: [],
}
for (const element of elements) {
const { parsed } = parseElement(element, prevElements, nodeExtent)
if (parsed) {
if (isEdge(parsed)) next.edges.push(parsed)
else next.nodes.push(parsed)
if (isEdge(parsed)) edges.push(parsed)
else nodes.push(parsed)
}
}
next.edges.forEach((edge, i, arr) => {
const { sourceNode, targetNode } = getSourceTargetNodes(edge, next.nodes)
edges.forEach((edge, i, arr) => {
const { sourceNode, targetNode } = getSourceTargetNodes(edge, nodes)
if (!sourceNode) console.warn(`couldn't create edge for source id: ${edge.source}; edge id: ${edge.id}`)
if (!targetNode) console.warn(`couldn't create edge for target id: ${edge.target}; edge id: ${edge.id}`)
@@ -394,5 +394,5 @@ export const parseElements = (elements: Elements, prevElements: FlowElements, no
targetNode,
}
})
return next
return { nodes, edges }
}