95 lines
2.6 KiB
JavaScript
95 lines
2.6 KiB
JavaScript
import origMoment from 'moment';
|
|
import { extendMoment } from 'moment-range';
|
|
|
|
export const moment = extendMoment(origMoment);
|
|
|
|
export const CUSTOM_RANGE = 'CUSTOM_RANGE';
|
|
|
|
const DATE_RANGE_LABELS = {
|
|
LAST_30_MINUTES: '30 Minutes',
|
|
TODAY: 'Today',
|
|
YESTERDAY: 'Yesterday',
|
|
LAST_7_DAYS: 'Past 7 Days',
|
|
LAST_30_DAYS: 'Past 30 Days',
|
|
//THIS_MONTH: 'This Month',
|
|
//LAST_MONTH: 'Previous Month',
|
|
//THIS_YEAR: 'This Year',
|
|
[ CUSTOM_RANGE ]: 'Custom Range',
|
|
};
|
|
|
|
const DATE_RANGE_VALUES = {};
|
|
Object.keys(DATE_RANGE_LABELS).forEach((key) => { DATE_RANGE_VALUES[ key ] = key; });
|
|
|
|
export { DATE_RANGE_VALUES };
|
|
export const dateRangeValues = Object.keys(DATE_RANGE_VALUES);
|
|
|
|
export function getDateRangeFromTs(start, end) {
|
|
return moment.range(
|
|
moment(start),
|
|
moment(end),
|
|
);
|
|
}
|
|
|
|
export function getDateRangeLabel(value) {
|
|
return DATE_RANGE_LABELS[ value ];
|
|
}
|
|
|
|
export function getDateRangeFromValue(value) {
|
|
switch (value) {
|
|
case DATE_RANGE_VALUES.LAST_30_MINUTES:
|
|
return moment.range(
|
|
moment().startOf('hour').subtract(30, 'minutes'),
|
|
moment().startOf('hour'),
|
|
);
|
|
case DATE_RANGE_VALUES.TODAY:
|
|
return moment.range(
|
|
moment().startOf('day'),
|
|
moment().endOf('day'),
|
|
);
|
|
case DATE_RANGE_VALUES.YESTERDAY:
|
|
return moment.range(
|
|
moment().subtract(1, 'days').startOf('day'),
|
|
moment().subtract(1, 'days').endOf('day'),
|
|
);
|
|
case DATE_RANGE_VALUES.LAST_7_DAYS:
|
|
return moment.range(
|
|
moment().subtract(7, 'days').startOf('day'),
|
|
moment().endOf('day'),
|
|
);
|
|
case DATE_RANGE_VALUES.LAST_30_DAYS:
|
|
return moment.range(
|
|
moment().subtract(30, 'days').startOf('day'),
|
|
moment().endOf('day'),
|
|
);
|
|
case DATE_RANGE_VALUES.THIS_MONTH:
|
|
return moment().range('month');
|
|
case DATE_RANGE_VALUES.LAST_MONTH:
|
|
return moment().subtract(1, 'months').range('month');
|
|
case DATE_RANGE_VALUES.THIS_YEAR:
|
|
return moment().range('year');
|
|
case DATE_RANGE_VALUES.CUSTOM_RANGE:
|
|
return moment.range(
|
|
moment(),
|
|
moment(),
|
|
);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Check if the given date is today/yesterday else return in specified format.
|
|
* @param {Date} date Date to be cheked.
|
|
* @param {String} format Returning date format.
|
|
* @return {String} Formated date string.
|
|
*/
|
|
export const checkForRecent = (date, format) => {
|
|
const d = new Date();
|
|
// Today
|
|
if (date.hasSame(d, 'day')) return 'Today';
|
|
|
|
// Yesterday
|
|
if (date.hasSame(d.setDate(d.getDate() - 1), 'day')) return 'Yesterday';
|
|
|
|
// Formatted
|
|
return date.toFormat(format);
|
|
};
|