From 4f1f9cf0308478fc5c4c90d678303ca8d42c0a13 Mon Sep 17 00:00:00 2001 From: archmoj Date: Fri, 27 Mar 2020 19:53:22 -0400 Subject: [PATCH] reuse the loop to add breaks for cases without pattern --- src/plots/cartesian/set_convert.js | 122 ++++++++++++++--------------- 1 file changed, 58 insertions(+), 64 deletions(-) diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index 94ac1c0ed8e..017bd76d47a 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -723,72 +723,66 @@ module.exports = function setConvert(ax, fullLayout) { if(brk.enabled) { if(brk.bounds) { + bnds = Lib.simpleMap(brk.bounds, brk.pattern ? cleanNumber : ax.r2l); + b0 = bnds[0]; + b1 = bnds[1]; + + // r0 value as date + var r0Date = new Date(r0); + // r0 value for break pattern + var bndDelta; + // step in ms between rangebreaks + var step; + + var t0 = r0; + var t1 = r1; + + switch(brk.pattern) { + case WEEKDAY_PATTERN: + step = 7 * ONEDAY; + + bndDelta = ( + (b1 < b0 ? 7 : 0) + + (b1 - b0) + ) * ONEDAY; + + t0 += b0 * ONEDAY - ( + r0Date.getUTCDay() * ONEDAY + + r0Date.getUTCHours() * ONEHOUR + + r0Date.getUTCMinutes() * ONEMIN + + r0Date.getUTCSeconds() * ONESEC + + r0Date.getUTCMilliseconds() + ); + break; + case HOUR_PATTERN: + step = ONEDAY; + + bndDelta = ( + (b1 < b0 ? 24 : 0) + + (b1 - b0) + ) * ONEHOUR; + + t0 += b0 * ONEHOUR - ( + r0Date.getUTCHours() * ONEHOUR + + r0Date.getUTCMinutes() * ONEMIN + + r0Date.getUTCSeconds() * ONESEC + + r0Date.getUTCMilliseconds() + ); + break; + default: + t0 = Math.min(bnds[0], bnds[1]); + t1 = Math.max(bnds[0], bnds[1]); + step = t1 - t0; + bndDelta = step; + } + if(brk.pattern) { - bnds = Lib.simpleMap(brk.bounds, cleanNumber); - b0 = bnds[0]; - b1 = bnds[1]; - - // r0 value as date - var r0Date = new Date(r0); - // r0 value for break pattern - var bndDelta; - // step in ms between rangebreaks - var step; - - var t0 = r0; - var t1 = r1; - - switch(brk.pattern) { - case WEEKDAY_PATTERN: - step = 7 * ONEDAY; - - bndDelta = ( - (b1 < b0 ? 7 : 0) + - (b1 - b0) - ) * ONEDAY; - - t0 += b0 * ONEDAY - ( - r0Date.getUTCDay() * ONEDAY + - r0Date.getUTCHours() * ONEHOUR + - r0Date.getUTCMinutes() * ONEMIN + - r0Date.getUTCSeconds() * ONESEC + - r0Date.getUTCMilliseconds() - ); - break; - case HOUR_PATTERN: - step = ONEDAY; - - bndDelta = ( - (b1 < b0 ? 24 : 0) + - (b1 - b0) - ) * ONEHOUR; - - t0 += b0 * ONEHOUR - ( - r0Date.getUTCHours() * ONEHOUR + - r0Date.getUTCMinutes() * ONEMIN + - r0Date.getUTCSeconds() * ONESEC + - r0Date.getUTCMilliseconds() - ); - break; - } + // to remove decimal (most often found in auto ranges) + t0 = Math.floor(t0); + } - for(var t = t0; t <= t1; t += step) { - // TODO we need to remove decimal (most often found - // in auto ranges) for this to work correctly, - // should this be Math.floor, Math.ceil or - // Math.round ?? - addBreak(Math.floor(t), Math.floor(t + bndDelta)); - } - } else { - bnds = Lib.simpleMap(brk.bounds, ax.r2l); - if(bnds[0] <= bnds[1]) { - b0 = bnds[0]; - b1 = bnds[1]; - } else { - b0 = bnds[1]; - b1 = bnds[0]; - } - addBreak(b0, b1); + for(var t = t0; t < t1; t += step) { + addBreak(t, t + bndDelta); } } else { var vals = Lib.simpleMap(brk.values, ax.d2c);