(dx, dy)
| 693 | } |
| 694 | |
| 695 | function plotDrag(dx, dy) { |
| 696 | var dxScaled = dx / _this.xaxis._m; |
| 697 | var dyScaled = dy / _this.yaxis._m; |
| 698 | mins = { |
| 699 | a: mins0.a - dyScaled, |
| 700 | b: mins0.b + (dxScaled + dyScaled) / 2, |
| 701 | c: mins0.c - (dxScaled - dyScaled) / 2 |
| 702 | }; |
| 703 | var minsorted = [mins.a, mins.b, mins.c].sort(Lib.sorterAsc); |
| 704 | var minindices = { |
| 705 | a: minsorted.indexOf(mins.a), |
| 706 | b: minsorted.indexOf(mins.b), |
| 707 | c: minsorted.indexOf(mins.c) |
| 708 | }; |
| 709 | if(minsorted[0] < 0) { |
| 710 | if(minsorted[1] + minsorted[0] / 2 < 0) { |
| 711 | minsorted[2] += minsorted[0] + minsorted[1]; |
| 712 | minsorted[0] = minsorted[1] = 0; |
| 713 | } else { |
| 714 | minsorted[2] += minsorted[0] / 2; |
| 715 | minsorted[1] += minsorted[0] / 2; |
| 716 | minsorted[0] = 0; |
| 717 | } |
| 718 | mins = { |
| 719 | a: minsorted[minindices.a], |
| 720 | b: minsorted[minindices.b], |
| 721 | c: minsorted[minindices.c] |
| 722 | }; |
| 723 | dy = (mins0.a - mins.a) * _this.yaxis._m; |
| 724 | dx = (mins0.c - mins.c - mins0.b + mins.b) * _this.xaxis._m; |
| 725 | } |
| 726 | |
| 727 | // move the data (translate, don't redraw) |
| 728 | var plotTransform = strTranslate(_this.x0 + dx, _this.y0 + dy); |
| 729 | _this.plotContainer.selectAll('.scatterlayer,.maplayer') |
| 730 | .attr('transform', plotTransform); |
| 731 | |
| 732 | var plotTransform2 = strTranslate(-dx, -dy); |
| 733 | _this.clipDefRelative.select('path').attr('transform', plotTransform2); |
| 734 | |
| 735 | // move the ticks |
| 736 | _this.aaxis.range = [mins.a, _this.sum - mins.b - mins.c]; |
| 737 | _this.baxis.range = [_this.sum - mins.a - mins.c, mins.b]; |
| 738 | _this.caxis.range = [_this.sum - mins.a - mins.b, mins.c]; |
| 739 | |
| 740 | _this.drawAxes(false); |
| 741 | |
| 742 | if(_this._hasClipOnAxisFalse) { |
| 743 | _this.plotContainer |
| 744 | .select('.scatterlayer').selectAll('.trace') |
| 745 | .call(Drawing.hideOutsideRangePoints, _this); |
| 746 | } |
| 747 | |
| 748 | gd.emit('plotly_relayouting', makeUpdate(mins)); |
| 749 | } |
| 750 | |
| 751 | function dragDone() { |
| 752 | Registry.call('_guiRelayout', gd, makeUpdate(mins)); |
nothing calls this directly
no test coverage detected
searching dependent graphs…