diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js index fe30587039..15c5463e32 100644 --- a/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js +++ b/web/gui/src/main/webapp/app/view/topo2/topo2Layout.js @@ -169,14 +169,11 @@ t2zs.panAndZoom([x, y], scale, 1000); }, + setLinkPosition: function (link) { + link.setPosition.bind(link)(); + }, tick: function () { - this.link - .attr("x1", function (d) { return d.get('source').x; }) - .attr("y1", function (d) { return d.get('source').y; }) - .attr("x2", function (d) { return d.get('target').x; }) - .attr("y2", function (d) { return d.get('target').y; }); - this.node .attr({ transform: function (d) { @@ -185,6 +182,13 @@ return sus.translate(dx, dy); } }); + + this.link + .each(this.setLinkPosition) + .attr("x1", function (d) { return d.get('position').x1; }) + .attr("y1", function (d) { return d.get('position').y1; }) + .attr("x2", function (d) { return d.get('position').x2; }) + .attr("y2", function (d) { return d.get('position').y2; }); }, start: function () { diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Link.js b/web/gui/src/main/webapp/app/view/topo2/topo2Link.js index 4897052775..d3f449cb6a 100644 --- a/web/gui/src/main/webapp/app/view/topo2/topo2Link.js +++ b/web/gui/src/main/webapp/app/view/topo2/topo2Link.js @@ -211,6 +211,28 @@ this.set('enhanced', false); d3.select('.topo2-portLabels').selectAll('.portLabel').remove(); }, + setPosition: function () { + this.set({ + position: { + x1: this.get('source').x, + y1: this.get('source').y, + x2: this.get('target').x, + y2: this.get('target').y + } + }); + + if (this.get('enhanced')) { + this.updatePortPosition(); + } + }, + updatePortPosition: function () { + var sourcePos = this.locatePortLabel(1), + targetPos = this.locatePortLabel(); + d3.select('#topo2-port-src') + .attr('transform', sus.translate(sourcePos.x, sourcePos.y)); + d3.select('#topo2-port-tgt') + .attr('transform', sus.translate(targetPos.x, targetPos.y)); + }, getSelected: function () { return this.collection.filter(function (m) { return m.get('selected');