@@ -723,72 +723,66 @@ module.exports = function setConvert(ax, fullLayout) {
723723
724724 if ( brk . enabled ) {
725725 if ( brk . bounds ) {
726+ bnds = Lib . simpleMap ( brk . bounds , brk . pattern ? cleanNumber : ax . r2l ) ;
727+ b0 = bnds [ 0 ] ;
728+ b1 = bnds [ 1 ] ;
729+
730+ // r0 value as date
731+ var r0Date = new Date ( r0 ) ;
732+ // r0 value for break pattern
733+ var bndDelta ;
734+ // step in ms between rangebreaks
735+ var step ;
736+
737+ var t0 = r0 ;
738+ var t1 = r1 ;
739+
740+ switch ( brk . pattern ) {
741+ case WEEKDAY_PATTERN :
742+ step = 7 * ONEDAY ;
743+
744+ bndDelta = (
745+ ( b1 < b0 ? 7 : 0 ) +
746+ ( b1 - b0 )
747+ ) * ONEDAY ;
748+
749+ t0 += b0 * ONEDAY - (
750+ r0Date . getUTCDay ( ) * ONEDAY +
751+ r0Date . getUTCHours ( ) * ONEHOUR +
752+ r0Date . getUTCMinutes ( ) * ONEMIN +
753+ r0Date . getUTCSeconds ( ) * ONESEC +
754+ r0Date . getUTCMilliseconds ( )
755+ ) ;
756+ break ;
757+ case HOUR_PATTERN :
758+ step = ONEDAY ;
759+
760+ bndDelta = (
761+ ( b1 < b0 ? 24 : 0 ) +
762+ ( b1 - b0 )
763+ ) * ONEHOUR ;
764+
765+ t0 += b0 * ONEHOUR - (
766+ r0Date . getUTCHours ( ) * ONEHOUR +
767+ r0Date . getUTCMinutes ( ) * ONEMIN +
768+ r0Date . getUTCSeconds ( ) * ONESEC +
769+ r0Date . getUTCMilliseconds ( )
770+ ) ;
771+ break ;
772+ default :
773+ t0 = Math . min ( bnds [ 0 ] , bnds [ 1 ] ) ;
774+ t1 = Math . max ( bnds [ 0 ] , bnds [ 1 ] ) ;
775+ step = t1 - t0 ;
776+ bndDelta = step ;
777+ }
778+
726779 if ( brk . pattern ) {
727- bnds = Lib . simpleMap ( brk . bounds , cleanNumber ) ;
728- b0 = bnds [ 0 ] ;
729- b1 = bnds [ 1 ] ;
730-
731- // r0 value as date
732- var r0Date = new Date ( r0 ) ;
733- // r0 value for break pattern
734- var bndDelta ;
735- // step in ms between rangebreaks
736- var step ;
737-
738- var t0 = r0 ;
739- var t1 = r1 ;
740-
741- switch ( brk . pattern ) {
742- case WEEKDAY_PATTERN :
743- step = 7 * ONEDAY ;
744-
745- bndDelta = (
746- ( b1 < b0 ? 7 : 0 ) +
747- ( b1 - b0 )
748- ) * ONEDAY ;
749-
750- t0 += b0 * ONEDAY - (
751- r0Date . getUTCDay ( ) * ONEDAY +
752- r0Date . getUTCHours ( ) * ONEHOUR +
753- r0Date . getUTCMinutes ( ) * ONEMIN +
754- r0Date . getUTCSeconds ( ) * ONESEC +
755- r0Date . getUTCMilliseconds ( )
756- ) ;
757- break ;
758- case HOUR_PATTERN :
759- step = ONEDAY ;
760-
761- bndDelta = (
762- ( b1 < b0 ? 24 : 0 ) +
763- ( b1 - b0 )
764- ) * ONEHOUR ;
765-
766- t0 += b0 * ONEHOUR - (
767- r0Date . getUTCHours ( ) * ONEHOUR +
768- r0Date . getUTCMinutes ( ) * ONEMIN +
769- r0Date . getUTCSeconds ( ) * ONESEC +
770- r0Date . getUTCMilliseconds ( )
771- ) ;
772- break ;
773- }
780+ // to remove decimal (most often found in auto ranges)
781+ t0 = Math . floor ( t0 ) ;
782+ }
774783
775- for ( var t = t0 ; t <= t1 ; t += step ) {
776- // TODO we need to remove decimal (most often found
777- // in auto ranges) for this to work correctly,
778- // should this be Math.floor, Math.ceil or
779- // Math.round ??
780- addBreak ( Math . floor ( t ) , Math . floor ( t + bndDelta ) ) ;
781- }
782- } else {
783- bnds = Lib . simpleMap ( brk . bounds , ax . r2l ) ;
784- if ( bnds [ 0 ] <= bnds [ 1 ] ) {
785- b0 = bnds [ 0 ] ;
786- b1 = bnds [ 1 ] ;
787- } else {
788- b0 = bnds [ 1 ] ;
789- b1 = bnds [ 0 ] ;
790- }
791- addBreak ( b0 , b1 ) ;
784+ for ( var t = t0 ; t < t1 ; t += step ) {
785+ addBreak ( t , t + bndDelta ) ;
792786 }
793787 } else {
794788 var vals = Lib . simpleMap ( brk . values , ax . d2c ) ;
0 commit comments