From f20bb0bd2ef19c4c155af3abb872c7a5de8a1bf0 Mon Sep 17 00:00:00 2001 From: Daniel Lazar Date: Thu, 29 Aug 2019 13:49:28 +0200 Subject: [PATCH] improved new links to have better experience --- .../src/link/RightAngleLinkWidget.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/react-diagrams-routing/src/link/RightAngleLinkWidget.tsx b/packages/react-diagrams-routing/src/link/RightAngleLinkWidget.tsx index e5cf927..4a90376 100644 --- a/packages/react-diagrams-routing/src/link/RightAngleLinkWidget.tsx +++ b/packages/react-diagrams-routing/src/link/RightAngleLinkWidget.tsx @@ -191,25 +191,30 @@ export class RightAngleLinkWidget extends React.Component pointRight.getX()) { pointLeft = points[points.length - 1]; pointRight = points[0]; + hadToSwitch = true; } let dy = Math.abs(points[0].getY() - points[points.length - 1].getY()); // When new link add one middle point to get everywhere 90° angle if (this.props.link.getTargetPort() === null && points.length === 2) { - this.props.link.addPoint( - new PointModel({ + [...Array(2)].forEach(item => { + this.props.link.addPoint(new PointModel({ link: this.props.link, position: new Point(pointLeft.getX(), pointRight.getY()) - }), - 1 + }), 1); + }); ); } // When new link is moving and not connected to target port move with middle point else if (this.props.link.getTargetPort() === null) { - points[1].setPosition(pointLeft.getX(), pointRight.getY()); + points[1].setPosition(pointRight.getX() + (pointLeft.getX() - pointRight.getX())/2, + !hadToSwitch ? pointLeft.getY() : pointRight.getY()); + points[2].setPosition(pointRight.getX() + (pointLeft.getX() - pointRight.getX())/2, + !hadToSwitch ? pointRight.getY() : pointLeft.getY()); } // Render was called but link is not moved but user. // Node is moved and in this case fix coordinates to get 90° angle.