Skip to content

Commit f78b46e

Browse files
committed
fix matches + rangebreaks, with a mock
1 parent 1de111d commit f78b46e

File tree

3 files changed

+98
-13
lines changed

3 files changed

+98
-13
lines changed

src/plots/cartesian/constraints.js

+27-13
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
'use strict';
1010

1111
var Lib = require('../../lib');
12-
var axisIds = require('./axis_ids');
13-
var id2name = axisIds.id2name;
12+
13+
var autorange = require('./autorange');
14+
var id2name = require('./axis_ids').id2name;
1415
var layoutAttributes = require('./layout_attributes');
1516
var scaleZoom = require('./scale_zoom');
16-
var autorange = require('./autorange');
17-
var makePadFn = autorange.makePadFn;
18-
var concatExtremes = autorange.concatExtremes;
17+
var setConvert = require('./set_convert');
1918

2019
var ALMOST_EQUAL = require('../../constants/numerical').ALMOST_EQUAL;
2120
var FROM_BL = require('../../constants/alignment').FROM_BL;
@@ -30,7 +29,7 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
3029
// similar to _axisConstraintGroups, but only matching axes
3130
var matchGroups = layoutOut._axisMatchGroups = [];
3231

33-
var i, group, axId, axName, axIn, axOut;
32+
var i, group, axId, axName, axIn, axOut, attr, val;
3433

3534
for(i = 0; i < axIds.length; i++) {
3635
axName = id2name(axIds[i]);
@@ -113,13 +112,22 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
113112
'categoryarray'
114113
];
115114
var hasRange = false;
115+
var hasDayOfWeekBreaks = false;
116+
117+
function setAttrVal() {
118+
val = axOut[attr];
119+
if(attr === 'rangebreaks') {
120+
hasDayOfWeekBreaks = axOut._hasDayOfWeekBreaks;
121+
}
122+
}
123+
116124
for(i = 0; i < matchGroups.length; i++) {
117125
group = matchGroups[i];
118126

119127
// find 'matching' range attrs
120128
for(var j = 0; j < matchAttrs.length; j++) {
121-
var attr = matchAttrs[j];
122-
var val = null;
129+
attr = matchAttrs[j];
130+
val = null;
123131
var baseAx;
124132
for(axId in group) {
125133
axName = id2name(axId);
@@ -132,13 +140,13 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
132140
baseAx = axOut;
133141
// top priority: explicit value in base axis
134142
if(attr in axIn) {
135-
val = axOut[attr];
143+
setAttrVal();
136144
break;
137145
}
138146
}
139147
if(val === null && attr in axIn) {
140148
// second priority: first explicit value in another axis
141-
val = axOut[attr];
149+
setAttrVal();
142150
}
143151
}
144152

@@ -159,8 +167,14 @@ exports.handleDefaults = function(layoutIn, layoutOut, opts) {
159167
// but we still might not have a value, which is fine.
160168
if(val !== null) {
161169
for(axId in group) {
170+
axOut = layoutOut[id2name(axId)];
162171
// TODO: do we also need to (deep) copy rangebreaks?
163-
layoutOut[id2name(axId)][attr] = attr === 'range' ? val.slice() : val;
172+
axOut[attr] = attr === 'range' ? val.slice() : val;
173+
174+
if(attr === 'rangebreaks') {
175+
axOut._hasDayOfWeekBreaks = hasDayOfWeekBreaks;
176+
setConvert(axOut, layoutOut);
177+
}
164178
}
165179
}
166180
}
@@ -552,11 +566,11 @@ exports.enforce = function enforce(gd) {
552566
// *are* expanding to the full domain
553567
var outerMin = rangeCenter - halfRange * factor * 1.0001;
554568
var outerMax = rangeCenter + halfRange * factor * 1.0001;
555-
var getPad = makePadFn(ax);
569+
var getPad = autorange.makePadFn(ax);
556570

557571
updateDomain(ax, factor);
558572
var m = Math.abs(ax._m);
559-
var extremes = concatExtremes(gd, ax);
573+
var extremes = autorange.concatExtremes(gd, ax);
560574
var minArray = extremes.min;
561575
var maxArray = extremes.max;
562576
var newVal;
21.7 KB
Loading
+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"data": [
3+
{
4+
"mode": "lines+markers",
5+
"x": [
6+
"2020-05-09",
7+
"2020-05-10",
8+
"2020-05-11",
9+
"2020-05-12",
10+
"2020-05-13",
11+
"2020-05-14",
12+
"2020-05-15",
13+
"2020-05-16",
14+
"2020-05-17",
15+
"2020-05-18",
16+
"2020-05-19",
17+
"2020-05-20",
18+
"2020-05-21",
19+
"2020-05-22",
20+
"2020-05-23",
21+
"2020-05-24",
22+
"2020-05-25",
23+
"2020-05-26",
24+
"2020-05-27",
25+
"2020-05-28"
26+
]
27+
},
28+
{
29+
"mode": "lines+markers",
30+
"xaxis": "x2",
31+
"yaxis": "y2",
32+
"x": [
33+
"2020-05-09",
34+
"2020-05-10",
35+
"2020-05-11",
36+
"2020-05-12",
37+
"2020-05-13",
38+
"2020-05-14",
39+
"2020-05-15",
40+
"2020-05-16",
41+
"2020-05-17",
42+
"2020-05-18",
43+
"2020-05-19",
44+
"2020-05-20",
45+
"2020-05-21",
46+
"2020-05-22",
47+
"2020-05-23",
48+
"2020-05-24",
49+
"2020-05-25",
50+
"2020-05-26",
51+
"2020-05-27",
52+
"2020-05-28"
53+
],
54+
"y0": 10
55+
}
56+
],
57+
"layout": {
58+
"showlegend": false,
59+
"width": 600,
60+
"height": 400,
61+
"xaxis": {"domain": [0, 0.45]},
62+
"xaxis2": {
63+
"rangebreaks": [{"bounds": ["sat", "mon"]}],
64+
"matches": "x",
65+
"anchor": "y2",
66+
"domain": [0.55, 1]
67+
},
68+
"yaxis2": {"anchor": "x2"},
69+
"title": {"text": "matches + rangebreaks"}
70+
}
71+
}

0 commit comments

Comments
 (0)