@@ -12,6 +12,7 @@ var isNumeric = require('fast-isnumeric');
12
12
var Lib = require ( '../../lib' ) ;
13
13
var ms2DateTime = Lib . ms2DateTime ;
14
14
var dateTime2ms = Lib . dateTime2ms ;
15
+ var incrementMonth = Lib . incrementMonth ;
15
16
var constants = require ( '../../constants/numerical' ) ;
16
17
var ONEDAY = constants . ONEDAY ;
17
18
var ONEAVGMONTH = constants . ONEAVGMONTH ;
@@ -24,13 +25,16 @@ module.exports = function alignPeriod(trace, ax, axLetter, vals) {
24
25
if ( ! alignment ) return vals ;
25
26
26
27
var period = trace [ axLetter + 'period' ] ;
28
+ var mPeriod ;
27
29
if ( isNumeric ( period ) ) {
28
30
period = + period ;
29
31
if ( period <= 0 ) return vals ;
30
32
} else if ( typeof period === 'string' && period . charAt ( 0 ) === 'M' ) {
31
33
var n = + ( period . substring ( 1 ) ) ;
32
- if ( n > 0 && Math . round ( n ) === n ) period = n * ONEAVGMONTH ;
33
- else return vals ;
34
+ if ( n > 0 && Math . round ( n ) === n ) {
35
+ mPeriod = n ;
36
+ period = n * ONEAVGMONTH ;
37
+ } else return vals ;
34
38
}
35
39
36
40
if ( period > 0 ) {
@@ -82,11 +86,7 @@ module.exports = function alignPeriod(trace, ax, axLetter, vals) {
82
86
endTime = ( new Date ( y1 , m1 , d1 ) ) . getTime ( ) ;
83
87
} else if ( nMonths ) {
84
88
startTime = ( new Date ( year , nYears ? month : roundMonth ( month , nMonths ) ) ) . getTime ( ) ;
85
- if ( m1 > 11 ) {
86
- m1 -= 12 ;
87
- y1 += 1 ;
88
- }
89
- endTime = ( new Date ( y1 , nYears ? m1 : roundMonth ( m1 , nMonths ) ) ) . getTime ( ) ;
89
+ endTime = incrementMonth ( startTime , mPeriod ? mPeriod : nMonths , calendar ) ;
90
90
} else {
91
91
startTime = ( new Date ( year , 0 ) ) . getTime ( ) ;
92
92
endTime = ( new Date ( y1 , 0 ) ) . getTime ( ) ;
0 commit comments