fix(graph.ts): overlapping area calculation

This commit is contained in:
moklick
2019-10-23 13:49:41 +02:00
parent 66711f19fa
commit c76483a264
2 changed files with 13 additions and 2 deletions

View File

@@ -200,6 +200,14 @@ const storeModel: StoreModel = {
selection,
state.transform
);
if (!selectedNodes.length) {
state.nodesSelectionActive = false;
state.selectedElements = [];
return;
}
const selectedNodesBbox = getRectOfNodes(selectedNodes);
state.selection = selection;

View File

@@ -152,10 +152,13 @@ export const getNodesInside = (
width: rect.width / tScale,
height: rect.height / tScale,
});
return nodes.filter(({ __rg: { position, width, height } }) => {
const nBox = rectToBox({ ...position, width, height });
const overlappingArea =
(Math.max(rBox.x, nBox.x) - Math.min(rBox.x2, nBox.x2)) * (Math.max(rBox.y, nBox.y) - Math.min(rBox.y2, nBox.y2));
const xOverlap = Math.max(0, Math.min(rBox.x2, nBox.x2) - Math.max(rBox.x, nBox.x));
const yOverlap = Math.max(0, Math.min(rBox.y2, nBox.y2) - Math.max(rBox.y, nBox.y));
const overlappingArea = xOverlap * yOverlap;
if (partially) {
return overlappingArea >= 0;
}