From 24ca3c0f526a4f39e3810c13800e192d4020e8f7 Mon Sep 17 00:00:00 2001 From: BoykoAlex Date: Wed, 4 Dec 2019 11:46:02 -0500 Subject: [PATCH] Support relative positioning for link tools group --- src/lib/shared/shapes.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/lib/shared/shapes.ts b/src/lib/shared/shapes.ts index b72abd2..c16ec89 100644 --- a/src/lib/shared/shapes.ts +++ b/src/lib/shared/shapes.ts @@ -199,8 +199,25 @@ joint.shapes.flo.Link = joint.dia.Link.extend({ joint.shapes.flo.LinkView = joint.dia.LinkView.extend({ options: joint.util.deepSupplement({ + linkToolsOffset: 0.5, + shortLinkLength: 40 }, joint.dia.LinkView.prototype.options), + updateToolsPosition: function() { + // Overriden to support relative offset for tools placement. + // If offset is between 0 and 1 then percentage of the connection length will be used to offset the tools group + if (this.options.linkToolsOffset < 1 && this.options.linkToolsOffset > 0) { + let connectionLength = this.getConnectionLength(); + const relativeOffset = this.options.linkToolsOffset + this.options.linkToolsOffset = connectionLength * relativeOffset; + const returnValue = joint.dia.LinkView.prototype.updateToolsPosition.apply(this, arguments); + this.options.linkToolsOffset = relativeOffset; + return returnValue; + } else { + return joint.dia.LinkView.prototype.updateToolsPosition.apply(this, arguments); + } + }, + _beforeArrowheadMove: function() { if (this.model.get('source').id) { this._oldSource = this.model.get('source');