From 95ad484098a05e5ecc670c459445de583feb3935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 25 Apr 2016 17:46:02 -0400 Subject: [PATCH 1/2] use '?axis.range[i]` relayout signature to update axis internally - so that rangeslider properly updates after mode bar and double click interactions. - rangeslider should be able to response to `?axis.range` too, invertigate later. --- src/components/modebar/buttons.js | 19 ++++++++++++------- src/plots/cartesian/dragbox.js | 12 +++++++++--- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index e3e2a6c03c7..c4fdbb3c078 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -218,10 +218,11 @@ function handleCartesian(gd, ev) { r1 = (1 - mag) / 2, axList = Plotly.Axes.list(gd, null, true); - var ax, axName, initialRange; + var ax, axName; for(var i = 0; i < axList.length; i++) { ax = axList[i]; + if(!ax.fixedrange) { axName = ax._name; if(val === 'auto') aobj[axName + '.autorange'] = true; @@ -229,14 +230,16 @@ function handleCartesian(gd, ev) { if(ax._rangeInitial === undefined) { aobj[axName + '.autorange'] = true; } - else aobj[axName + '.range'] = ax._rangeInitial.slice(); + else { + var rangeInitial = ax._rangeInitial.slice(); + aobj[axName + '.range[0]'] = rangeInitial[0]; + aobj[axName + '.range[1]'] = rangeInitial[1]; + } } else { - initialRange = ax.range; - aobj[axName + '.range'] = [ - r0 * initialRange[0] + r1 * initialRange[1], - r0 * initialRange[1] + r1 * initialRange[0] - ]; + var rangeNow = ax.range; + aobj[axName + '.range[0]'] = r0 * rangeNow[0] + r1 * rangeNow[1]; + aobj[axName + '.range[1]'] = r0 * rangeNow[1] + r1 * rangeNow[0]; } } } @@ -251,6 +254,8 @@ function handleCartesian(gd, ev) { aobj[astr] = val; } + console.log(aobj); + Plotly.relayout(gd, aobj).then(function() { if(astr === 'dragmode') { if(fullLayout._hasCartesian) { diff --git a/src/plots/cartesian/dragbox.js b/src/plots/cartesian/dragbox.js index a086e58aaba..76e5976aabd 100644 --- a/src/plots/cartesian/dragbox.js +++ b/src/plots/cartesian/dragbox.js @@ -522,7 +522,7 @@ module.exports = function dragBox(gd, plotinfo, x, y, w, h, ns, ew) { axList = (xActive ? xa : []).concat(yActive ? ya : []), attrs = {}; - var ax, i; + var ax, i, rangeInitial; if(doubleClickConfig === 'autosize') { for(i = 0; i < axList.length; i++) { @@ -538,7 +538,9 @@ module.exports = function dragBox(gd, plotinfo, x, y, w, h, ns, ew) { attrs[ax._name + '.autorange'] = true; } else { - attrs[ax._name + '.range'] = ax._rangeInitial.slice(); + rangeInitial = ax._rangeInitial.slice(); + attrs[ax._name + '.range[0]'] = rangeInitial[0]; + attrs[ax._name + '.range[1]'] = rangeInitial[1]; } } } @@ -553,7 +555,11 @@ module.exports = function dragBox(gd, plotinfo, x, y, w, h, ns, ew) { ) { attrs[ax._name + '.autorange'] = true; } - else attrs[ax._name + '.range'] = ax._rangeInitial.slice(); + else { + rangeInitial = ax._rangeInitial.slice(); + attrs[ax._name + '.range[0]'] = rangeInitial[0]; + attrs[ax._name + '.range[1]'] = rangeInitial[1]; + } } } From f9094672a54c2c92889f5f7f581e4a8c0b0eb293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Mon, 25 Apr 2016 18:07:50 -0400 Subject: [PATCH 2/2] :cow2: rm log --- src/components/modebar/buttons.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/modebar/buttons.js b/src/components/modebar/buttons.js index c4fdbb3c078..b545faff14b 100644 --- a/src/components/modebar/buttons.js +++ b/src/components/modebar/buttons.js @@ -254,8 +254,6 @@ function handleCartesian(gd, ev) { aobj[astr] = val; } - console.log(aobj); - Plotly.relayout(gd, aobj).then(function() { if(astr === 'dragmode') { if(fullLayout._hasCartesian) {