@@ -8,7 +8,10 @@ import { DateRange, ISODate } from "../types";
88 */
99export const getDateRangeSeries = (
1010 dateRange : DateRange ,
11- unit : "day" | "week" | "hour" | "minute" | "second" | "calendarMonth"
11+ unit : "day" | "week" | "hour" | "minute" | "second" | "calendarMonth" ,
12+ options : {
13+ step ?: number ;
14+ } = { }
1215) : ISODate [ ] => {
1316 const { startDate, endDate } = dateRange ;
1417
@@ -22,6 +25,8 @@ export const getDateRangeSeries = (
2225 const series : string [ ] = [ ] ;
2326 const current = new Date ( start . getTime ( ) ) ; // Clone the startDate to avoid mutating it
2427
28+ const step = options ?. step ?? 1 ;
29+
2530 // eslint-disable-next-line no-unmodified-loop-condition
2631 while ( current < end ) {
2732 series . push ( current . toISOString ( ) ) ;
@@ -35,29 +40,29 @@ export const getDateRangeSeries = (
3540 }
3641 {
3742 const currentMonth = current . getUTCMonth ( ) ;
38- current . setUTCMonth ( currentMonth + 1 ) ;
43+ current . setUTCMonth ( currentMonth + step ) ;
3944 }
4045
4146 break ;
4247
4348 case "day" :
44- current . setUTCDate ( current . getUTCDate ( ) + 1 ) ;
49+ current . setUTCDate ( current . getUTCDate ( ) + step ) ;
4550 break ;
4651
4752 case "week" :
48- current . setUTCDate ( current . getUTCDate ( ) + 7 ) ;
53+ current . setUTCDate ( current . getUTCDate ( ) + step * 7 ) ;
4954 break ;
5055
5156 case "hour" :
52- current . setUTCHours ( current . getUTCHours ( ) + 1 ) ;
57+ current . setUTCHours ( current . getUTCHours ( ) + step ) ;
5358 break ;
5459
5560 case "minute" :
56- current . setUTCMinutes ( current . getUTCMinutes ( ) + 1 ) ;
61+ current . setUTCMinutes ( current . getUTCMinutes ( ) + step ) ;
5762 break ;
5863
5964 case "second" :
60- current . setUTCSeconds ( current . getUTCSeconds ( ) + 1 ) ;
65+ current . setUTCSeconds ( current . getUTCSeconds ( ) + step ) ;
6166 break ;
6267
6368 default :
0 commit comments