Skip to content

Commit 6f00ec7

Browse files
authored
Merge pull request #1261 from plotly/rangeslider-no-fixedrange
Honor `fixedrange: false` in y-axes anchored to xaxis with range slider
2 parents cebdb15 + 32f98a6 commit 6f00ec7

File tree

5 files changed

+129
-129
lines changed

5 files changed

+129
-129
lines changed

src/components/rangeslider/defaults.js

+1-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var Lib = require('../../lib');
1212
var attributes = require('./attributes');
1313

1414

15-
module.exports = function handleDefaults(layoutIn, layoutOut, axName, counterAxes) {
15+
module.exports = function handleDefaults(layoutIn, layoutOut, axName) {
1616
if(!layoutIn[axName].rangeslider) return;
1717

1818
// not super proud of this (maybe store _ in axis object instead
@@ -47,14 +47,6 @@ module.exports = function handleDefaults(layoutIn, layoutOut, axName, counterAxe
4747
axOut._needsExpand = true;
4848
}
4949

50-
if(containerOut.visible) {
51-
counterAxes.forEach(function(ax) {
52-
var opposing = layoutOut[ax] || {};
53-
opposing.fixedrange = true;
54-
layoutOut[ax] = opposing;
55-
});
56-
}
57-
5850
// to map back range slider (auto) range
5951
containerOut._input = containerIn;
6052
};

src/plots/cartesian/axis_defaults.js

-2
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,6 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce,
105105
coerce('range');
106106
containerOut.cleanRange();
107107

108-
coerce('fixedrange');
109-
110108
handleTickValueDefaults(containerIn, containerOut, coerce, axType);
111109
handleTickLabelDefaults(containerIn, containerOut, coerce, axType, options);
112110
handleTickMarkDefaults(containerIn, containerOut, coerce, options);

src/plots/cartesian/layout_defaults.js

+59-33
Original file line numberDiff line numberDiff line change
@@ -115,33 +115,39 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
115115

116116
var bgColor = Color.combine(plot_bgcolor, layoutOut.paper_bgcolor);
117117

118+
var axLayoutIn, axLayoutOut;
119+
120+
function coerce(attr, dflt) {
121+
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
122+
}
123+
118124
axesList.forEach(function(axName) {
119-
var axLetter = axName.charAt(0),
120-
axLayoutIn = layoutIn[axName] || {},
121-
axLayoutOut = {},
122-
defaultOptions = {
123-
letter: axLetter,
124-
font: layoutOut.font,
125-
outerTicks: outerTicks[axName],
126-
showGrid: !noGrids[axName],
127-
name: axName,
128-
data: fullData,
129-
bgColor: bgColor,
130-
calendar: layoutOut.calendar
131-
},
132-
positioningOptions = {
133-
letter: axLetter,
134-
counterAxes: {x: yaList, y: xaList}[axLetter].map(axisIds.name2id),
135-
overlayableAxes: {x: xaList, y: yaList}[axLetter].filter(function(axName2) {
136-
return axName2 !== axName && !(layoutIn[axName2] || {}).overlaying;
137-
}).map(axisIds.name2id)
138-
};
139-
140-
function coerce(attr, dflt) {
141-
return Lib.coerce(axLayoutIn, axLayoutOut, layoutAttributes, attr, dflt);
142-
}
125+
var axLetter = axName.charAt(0);
126+
127+
axLayoutIn = layoutIn[axName] || {};
128+
axLayoutOut = {};
129+
130+
var defaultOptions = {
131+
letter: axLetter,
132+
font: layoutOut.font,
133+
outerTicks: outerTicks[axName],
134+
showGrid: !noGrids[axName],
135+
name: axName,
136+
data: fullData,
137+
bgColor: bgColor,
138+
calendar: layoutOut.calendar
139+
};
143140

144141
handleAxisDefaults(axLayoutIn, axLayoutOut, coerce, defaultOptions, layoutOut);
142+
143+
var positioningOptions = {
144+
letter: axLetter,
145+
counterAxes: {x: yaList, y: xaList}[axLetter].map(axisIds.name2id),
146+
overlayableAxes: {x: xaList, y: yaList}[axLetter].filter(function(axName2) {
147+
return axName2 !== axName && !(layoutIn[axName2] || {}).overlaying;
148+
}).map(axisIds.name2id)
149+
};
150+
145151
handlePositionDefaults(axLayoutIn, axLayoutOut, coerce, positioningOptions);
146152

147153
layoutOut[axName] = axLayoutOut;
@@ -158,17 +164,37 @@ module.exports = function supplyLayoutDefaults(layoutIn, layoutOut, fullData) {
158164
var rangeSliderDefaults = Registry.getComponentMethod('rangeslider', 'handleDefaults'),
159165
rangeSelectorDefaults = Registry.getComponentMethod('rangeselector', 'handleDefaults');
160166

161-
axesList.forEach(function(axName) {
162-
var axLetter = axName.charAt(0),
163-
axLayoutIn = layoutIn[axName],
164-
axLayoutOut = layoutOut[axName],
165-
counterAxes = {x: yaList, y: xaList}[axLetter];
167+
xaList.forEach(function(axName) {
168+
axLayoutIn = layoutIn[axName];
169+
axLayoutOut = layoutOut[axName];
166170

167-
rangeSliderDefaults(layoutIn, layoutOut, axName, counterAxes);
171+
rangeSliderDefaults(layoutIn, layoutOut, axName);
168172

169-
if(axLetter === 'x' && axLayoutOut.type === 'date') {
170-
rangeSelectorDefaults(axLayoutIn, axLayoutOut, layoutOut, counterAxes,
171-
axLayoutOut.calendar);
173+
if(axLayoutOut.type === 'date') {
174+
rangeSelectorDefaults(
175+
axLayoutIn,
176+
axLayoutOut,
177+
layoutOut,
178+
yaList,
179+
axLayoutOut.calendar
180+
);
172181
}
182+
183+
coerce('fixedrange');
184+
});
185+
186+
yaList.forEach(function(axName) {
187+
axLayoutIn = layoutIn[axName];
188+
axLayoutOut = layoutOut[axName];
189+
190+
var anchoredAxis = layoutOut[axisIds.id2name(axLayoutOut.anchor)];
191+
192+
var fixedRangeDflt = (
193+
anchoredAxis &&
194+
anchoredAxis.rangeslider &&
195+
anchoredAxis.rangeslider.visible
196+
);
197+
198+
coerce('fixedrange', fixedRangeDflt);
173199
});
174200
};

src/plots/gl3d/layout/axis_attributes.js

-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ module.exports = {
7676
autorange: axesAttrs.autorange,
7777
rangemode: axesAttrs.rangemode,
7878
range: axesAttrs.range,
79-
fixedrange: axesAttrs.fixedrange,
8079
// ticks
8180
tickmode: axesAttrs.tickmode,
8281
nticks: axesAttrs.nticks,

0 commit comments

Comments
 (0)