/ aggregation.js
aggregation.js
1 const MILLISECONDS_PER_MINUTE = 1000 * 60 2 const MILLISECONDS_PER_HOUR = MILLISECONDS_PER_MINUTE * 60 3 const MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24 4 5 function lastNByPeriod(n, period) { 6 const now = new Date().getTime() 7 return [...Array(n).keys()].map(i => new moment(now - i * period)) 8 } 9 10 function lastNDays(n) { 11 return lastNByPeriod(n, MILLISECONDS_PER_DAY).map(day => [day.clone().startOf('day'), day.clone().endOf('day')]) 12 } 13 14 function lastNHours(n) { 15 return lastNByPeriod(n, MILLISECONDS_PER_HOUR).map(hour => [hour.clone().startOf('hour'), hour.clone().endOf('hour')]) 16 } 17 18 function lastNMinutes(n) { 19 return lastNByPeriod(n, MILLISECONDS_PER_MINUTE).map(min => [min.clone().startOf('hour'), min.clone().endOf('hour')]) 20 }