Skip to content

Commit b856ad8

Browse files
committed
fix for 3d scenes modifying axes range to linear
1 parent e982ca1 commit b856ad8

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/plot_api/plot_api.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -2461,6 +2461,15 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
24612461
var wasArray = Array.isArray(oldVal);
24622462
var nowArray = Array.isArray(newVal);
24632463

2464+
// hack for traces that modify the data in supplyDefaults, like
2465+
// converting 1D to 2D arrays, which will always create new objects
2466+
if(wasArray && nowArray) {
2467+
var inputKey = '_input_' + key;
2468+
var oldValIn = oldContainer[inputKey];
2469+
var newValIn = newContainer[inputKey];
2470+
if(Array.isArray(oldValIn) && oldValIn === newValIn) continue;
2471+
}
2472+
24642473
if(newVal === undefined) {
24652474
if(canBeDataArray && wasArray) flags.calc = true;
24662475
else changed();
@@ -2502,12 +2511,6 @@ function getDiffFlags(oldContainer, newContainer, outerparts, opts) {
25022511
}
25032512
else if(canBeDataArray) {
25042513
if(wasArray && nowArray) {
2505-
// hack for traces that modify the data in supplyDefaults, like
2506-
// converting 1D to 2D arrays, which will always create new objects
2507-
var inputKey = '_input_' + key;
2508-
var oldValIn = oldContainer[inputKey];
2509-
var newValIn = newContainer[inputKey];
2510-
if(Array.isArray(oldValIn) && oldValIn === newValIn) continue;
25112514

25122515
// don't try to diff two data arrays. If immutable we know the data changed,
25132516
// if not, assume it didn't and let `layout.datarevision` tell us if it did

src/plots/gl3d/layout/tick_marks.js

+2
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ function computeTickMarks(scene) {
5050
if(Math.abs(axes._length) === Infinity) {
5151
ticks[i] = [];
5252
} else {
53+
axes._input_range = axes.range.slice();
5354
axes.range[0] = (glRange[i].lo) / scene.dataScale[i];
5455
axes.range[1] = (glRange[i].hi) / scene.dataScale[i];
5556
axes._m = 1.0 / (scene.dataScale[i] * glRange[i].pixelsPerDataUnit);
@@ -77,6 +78,7 @@ function computeTickMarks(scene) {
7778

7879

7980
axes.tickmode = tickModeCached;
81+
// axes.range = rangeCached;
8082
}
8183
}
8284

0 commit comments

Comments
 (0)