@bigfishtv/cockpit
Version:
94 lines (78 loc) • 3.54 kB
JavaScript
;
exports.__esModule = true;
exports.extractDateAndTime = extractDateAndTime;
exports.fromNow = fromNow;
exports.daysFromNow = daysFromNow;
exports.inTimeRange = inTimeRange;
exports.formatDate = formatDate;
exports.getTimeRange = getTimeRange;
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var cleanDateFormat = 'MMM Do, YYYY h:mm a'; /**
* Time Utilities
* @module Utilities/timeUtils
*/
function extractDateAndTime(dateTime) {
var splitDate = dateTimeRegex.exec(dateTime);
return [splitDate[1], splitDate[2]];
}
/**
* Takes datetime string and returns humanized time e.g. 7 days ago, 3 minutes ago
* @param {String} dateTime
* @return {string} - returns humanized time string
*/
function fromNow(dateTime) {
if (!(0, _moment2.default)(dateTime).isValid()) return '';
return (0, _moment2.default)(dateTime).fromNow();
}
/**
* Same as fromNow but limited to days
* @param {String} dateTime
* @return {String} - returns humanized time string
*/
function daysFromNow(dateTime) {
if (!(0, _moment2.default)(dateTime).isValid()) return '';
return (0, _moment2.default)().diff((0, _moment2.default)(dateTime), 'days');
}
/**
* Checks if time is in range
* @param {String|MomentType} startTime
* @param {String|MomentType} endTime
* @param {String|MomentType} currentTime
* @return {Boolean}
*/
function inTimeRange(startTime, endTime) {
var currentTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
if (!currentTime) currentTime = (0, _moment2.default)();else if (typeof currentTime == 'string') currentTime = (0, _moment2.default)(currentTime);
if (!startTime && !endTime) return true;
if (startTime && !endTime) return (0, _moment2.default)(startTime).isBefore(currentTime);
if (!startTime && endTime) return (0, _moment2.default)(endTime).isAfter(currentTime);
if (startTime && endTime) return (0, _moment2.default)(startTime).isBefore(currentTime) && (0, _moment2.default)(endTime).isAfter(currentTime);
}
/**
* Takes arbitrary dateTime string and returns it formatted a specific way
* @param {String} dateTime
* @param {String} momentFormat
* @return {string}
*/
function formatDate(dateTime) {
var momentFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : cleanDateFormat;
if (!(0, _moment2.default)(dateTime).isValid()) return dateTime;
return (0, _moment2.default)(dateTime).format(momentFormat);
}
/**
* Takes a start and end datetime string (and optional format string) and returns a formatted date range string
* @param {String} start datetime format start
* @param {String} end datetime format end
* @param {String} format format string (default = 'MMMM Do, h:mm a')
* @return {String}
*/
function getTimeRange(start, end) {
var momentFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : cleanDateFormat;
var startMoment = (0, _moment2.default)(start);
var endMoment = (0, _moment2.default)(end);
if (!startMoment.isValid() || !endMoment.isValid()) return null;
var sameDate = startMoment.format('MMMM Do YYYY') === endMoment.format('MMMM Do YYYY');
return startMoment.format(momentFormat) + ' - ' + (sameDate ? endMoment.format('h:mm a') : endMoment.format(momentFormat));
}