Skip to content

Commit 0fb92d4

Browse files
committed
attempt improving ticks on rangebreaks
1 parent a0d4d0d commit 0fb92d4

7 files changed

+26
-10
lines changed

src/plots/cartesian/axes.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,10 @@ axes.calcTicks = function calcTicks(ax) {
638638
if(ax.maskBreaks(tickVal.value) === BADNUM) {
639639
tickVal.value = moveOutsideBreak(tickVal.value, ax);
640640

641-
if(ax._rl && tickVal.value === ax._rl[1]) continue;
641+
if(ax._rl && (
642+
ax._rl[0] === tickVal.value ||
643+
ax._rl[1] === tickVal.value
644+
)) continue;
642645
}
643646

644647
var pos = ax.c2p(tickVal.value);
@@ -992,8 +995,11 @@ axes.tickFirst = function(ax) {
992995
var dtick = ax.dtick;
993996
var tick0 = r2l(ax.tick0);
994997

995-
if(ax.tickmode === 'auto' && ax.rangebreaks && ax.maskBreaks(tick0) === BADNUM) {
996-
tick0 = moveOutsideBreak(tick0, ax);
998+
if(ax._dayHours && ax.tickmode === 'auto') {
999+
var tick0Hour = Math.floor(tick0 / ONEHOUR) % 24;
1000+
if(tick0Hour === 0 && tick0Hour < ax._startHour) {
1001+
tick0 += ONEHOUR * ax._startHour;
1002+
}
9971003
}
9981004

9991005
if(isNumeric(dtick)) {

src/plots/cartesian/axis_defaults.js

+17-7
Original file line numberDiff line numberDiff line change
@@ -135,22 +135,32 @@ module.exports = function handleAxisDefaults(containerIn, containerOut, coerce,
135135
if(!containerOut.rangebreaks.length) {
136136
delete containerOut.rangebreaks;
137137
} else {
138-
var n = 0;
139138
for(var k = 0; k < containerOut.rangebreaks.length; k++) {
140139
var brk = containerOut.rangebreaks[k];
141140
if(brk.pattern === DAY_OF_WEEK) {
142141
containerOut._hasDayOfWeekBreaks = true;
143-
n++;
144142
}
145143

146144
if(brk.pattern === HOUR) {
147145
containerOut._hasHourBreaks = true;
148-
containerOut._dayHours = Math.round((brk.bounds[1] - brk.bounds[0] + 24) % 24);
149-
n++;
150-
}
151146

152-
// break when found all types
153-
if(n === 2) break;
147+
var startHour = Math.max((brk.bounds[0] % 24), (brk.bounds[1] % 24));
148+
if(containerOut._startHour === undefined) {
149+
containerOut._startHour = startHour;
150+
} else {
151+
containerOut._startHour = Math.max(containerOut._startHour, startHour);
152+
}
153+
154+
var dayHours = (brk.bounds[1] - brk.bounds[0] + 24) % 24;
155+
if(containerOut._dayHours === undefined) {
156+
containerOut._dayHours = dayHours;
157+
} else {
158+
containerOut._dayHours += dayHours;
159+
}
160+
}
161+
}
162+
if(containerOut._dayHours !== undefined) {
163+
containerOut._dayHours = Math.ceil(containerOut._dayHours);
154164
}
155165

156166
setConvert(containerOut, layoutOut);
-11 Bytes
Loading
-1.05 KB
Loading
Loading
230 Bytes
Loading
Loading

0 commit comments

Comments
 (0)