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