Node Graph: Emphasize hovered or connected nodes (#51925)

* Node Graph: Emphasize hovered or connected nodes

* Add tests and refactor into util functions
This commit is contained in:
Connor Lindsey
2022-07-12 06:14:45 -06:00
committed by GitHub
parent 4155dc8eca
commit db9c9b5354
5 changed files with 107 additions and 21 deletions

View File

@ -404,3 +404,30 @@ export const applyOptionsToFrames = (frames: DataFrame[], options: NodeGraphOpti
return frame;
});
};
// Returns an array of node ids which are connected to a given edge
export const findConnectedNodesForEdge = (nodes: NodeDatum[], edges: EdgeDatum[], edgeId: string): string[] => {
const edge = edges.find((edge) => edge.id === edgeId);
if (edge) {
return [
...new Set(nodes.filter((node) => edge.source === node.id || edge.target === node.id).map((node) => node.id)),
];
}
return [];
};
// Returns an array of node ids which are connected to a given node
export const findConnectedNodesForNode = (nodes: NodeDatum[], edges: EdgeDatum[], nodeId: string): string[] => {
const node = nodes.find((node) => node.id === nodeId);
if (node) {
const linkedEdges = edges.filter((edge) => edge.source === node.id || edge.target === node.id);
return [
...new Set(
linkedEdges.flatMap((edge) =>
nodes.filter((n) => edge.source === n.id || edge.target === n.id).map((n) => n.id)
)
),
];
}
return [];
};