refactor(edgerenderer): cleanup edge utils

This commit is contained in:
Christopher Möller
2021-10-21 14:33:34 +02:00
parent b15d3012e0
commit 64239fbb51
3 changed files with 16 additions and 24 deletions
+1
View File
@@ -249,6 +249,7 @@ const EdgeRenderer = (props: EdgeRendererProps) => {
<MarkerDefinitions defaultColor={defaultMarkerColor} /> <MarkerDefinitions defaultColor={defaultMarkerColor} />
<g transform={`translate(${transform[0]},${transform[1]}) scale(${transform[2]})`}> <g transform={`translate(${transform[0]},${transform[1]}) scale(${transform[2]})`}>
{edges.map((edge: Edge) => { {edges.map((edge: Edge) => {
// @todo: getSourceTargetNodes is called many times during dragging/creating edges
const { sourceNode, targetNode } = getSourceTargetNodes(edge, nodes); const { sourceNode, targetNode } = getSourceTargetNodes(edge, nodes);
return ( return (
<Edge <Edge
+14 -22
View File
@@ -172,26 +172,18 @@ type SourceTargetNode = {
}; };
export const getSourceTargetNodes = (edge: Edge, nodes: Node[]): SourceTargetNode => { export const getSourceTargetNodes = (edge: Edge, nodes: Node[]): SourceTargetNode => {
const sourceNode = nodeHelper(nodes).find((n) => n.id === edge.source) || null; return nodeHelper(nodes)
const targetNode = nodeHelper(nodes).find((n) => n.id === edge.target) || null; .flatten()
.reduce(
return { (res, node) => {
sourceNode, if (node.id === edge.source) {
targetNode, res.sourceNode = node;
}; }
if (node.id === edge.target) {
// return nodeHelper(nodes) res.targetNode = node;
// .flatten() }
// .reduce( return res;
// (res, node) => { },
// if (node.id === edge.source) { { sourceNode: null, targetNode: null } as SourceTargetNode
// res.sourceNode = node; );
// }
// if (node.id === edge.target) {
// res.targetNode = node;
// }
// return res;
// },
// { sourceNode: null, targetNode: null } as SourceTargetNode
// );
}; };
+1 -2
View File
@@ -2,10 +2,9 @@ import { Node } from '../types';
function flat(arr: Node[], target: Node[]) { function flat(arr: Node[], target: Node[]) {
arr.forEach(function (el) { arr.forEach(function (el) {
target.push(el);
if (el.childNodes) { if (el.childNodes) {
flat(el.childNodes, target); flat(el.childNodes, target);
} else {
target.push(el);
} }
}); });
} }