@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
95 lines • 10.7 kB
JavaScript
export function epoch() {
return new Date('01/01/1970');
}
export function addDays(date, days) {
date = new Date(date.valueOf());
date.setDate(date.getDate() + days);
return date;
}
/** Gets current value of unix timestamp */
export function timestamp() {
return new Date().getTime() / 1000;
}
/**
* Gets unix timestamp value of `date`
* @param date the date.
*/
export function toTimestamp(date) {
return date.getTime() / 1000;
}
/**
* Converts an unix timestamp to a Date object
* @param time an unix timestamp
*/
export function dateFromTimestamp(time) {
return new Date(time * 1000);
}
/**
* Converts an unix timestamp to a date in the format 'day month hours mins'
* @param time an unix timestamp.
* @param locale target language locale tag.
* @returns string representation of the date.
*/
export function fullDate(time, locale) {
const format = {
month: 'short',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
};
return convertDate(time, format, locale);
}
/**
* Converts an unix timestamp to a date in the format 'day month'
* @param time an unix timestamp.
* @param locale target language locale tag.
* @returns string representation of the date.
*/
export function shortDate(time, locale) {
return convertDate(time, { month: 'short', day: 'numeric' }, locale);
}
/**
* Converts an unix timestamp to a date in the format 'hours mins'
* @param time an unix timestamp.
* @returns string representation of the date.
*/
export function hours(time) {
const date = dateFromTimestamp(time);
const minutes = date.getMinutes();
const minutesFormat = minutes >= 10 ? minutes : `0${minutes}`;
return `${date.getHours()}:${minutesFormat}`;
}
/**
* Gets a value indicating whether the timestamp is today.
* @param time an unix timestamp.
*/
export function isToday(time) {
return new Date().toLocaleDateString() === dateFromTimestamp(time).toLocaleDateString();
}
/**
* Gets a value indicating whether the given dates representes the same year, month and day.
* @param d1 the first date.
* @param d2 the second date.
*/
export function compareDays(d1, d2) {
return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();
}
export function convertDate(time, format, locale) {
const date = dateFromTimestamp(time);
return date.toLocaleDateString(locale, format);
}
export function weeksDiff(d1, d2) {
let diff = (d2.getTime() - d1.getTime()) / 1000;
diff /= 60 * 60 * 24 * 7;
return Math.abs(Math.round(diff));
}
export function dateRangeOverlaps(a_start, a_end, b_start, b_end) {
if (a_start < b_start && b_start < a_end)
return true; // b starts in a
if (a_start < b_end && b_end < a_end)
return true; // b ends in a
if (b_start < a_start && a_end < b_end)
return true; // a in b
return false;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvdXRpbHMvc3JjL2RhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxLQUFLO0lBQ25CLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBVSxFQUFFLElBQVk7SUFDOUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQ25DLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELDJDQUEyQztBQUMzQyxNQUFNLFVBQVUsU0FBUztJQUN2QixPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFBO0FBQ3BDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVU7SUFDcEMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFBO0FBQzlCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQTtBQUM5QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQVksRUFBRSxNQUFlO0lBQ3BELE1BQU0sTUFBTSxHQUErQjtRQUN6QyxLQUFLLEVBQUUsT0FBTztRQUNkLEdBQUcsRUFBRSxTQUFTO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFBO0lBQ0QsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUMxQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVksRUFBRSxNQUFlO0lBQ3JELE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0FBQ3RFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxJQUFZO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUNqQyxNQUFNLGFBQWEsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUE7SUFDN0QsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxhQUFhLEVBQUUsQ0FBQTtBQUM5QyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxJQUFZO0lBQ2xDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUE7QUFDekYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEVBQVEsRUFBRSxFQUFRO0lBQzVDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDbEgsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQWtDLEVBQUUsTUFBZTtJQUMzRixNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsRUFBUSxFQUFFLEVBQVE7SUFDMUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFBO0lBQy9DLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLE9BQWEsRUFBRSxLQUFXLEVBQUUsT0FBYSxFQUFFLEtBQVc7SUFDdEYsSUFBSSxPQUFPLEdBQUcsT0FBTyxJQUFJLE9BQU8sR0FBRyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUEsQ0FBQyxnQkFBZ0I7SUFDdEUsSUFBSSxPQUFPLEdBQUcsS0FBSyxJQUFJLEtBQUssR0FBRyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUEsQ0FBQyxjQUFjO0lBQ2hFLElBQUksT0FBTyxHQUFHLE9BQU8sSUFBSSxLQUFLLEdBQUcsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFBLENBQUMsU0FBUztJQUM3RCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZXBvY2goKTogRGF0ZSB7XG4gIHJldHVybiBuZXcgRGF0ZSgnMDEvMDEvMTk3MCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGU6IERhdGUsIGRheXM6IG51bWJlcikge1xuICBkYXRlID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpXG4gIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIGRheXMpXG4gIHJldHVybiBkYXRlXG59XG5cbi8qKiBHZXRzIGN1cnJlbnQgdmFsdWUgb2YgdW5peCB0aW1lc3RhbXAgKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lc3RhbXAoKTogbnVtYmVyIHtcbiAgcmV0dXJuIG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMFxufVxuXG4vKipcbiAqIEdldHMgdW5peCB0aW1lc3RhbXAgdmFsdWUgb2YgYGRhdGVgXG4gKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvVGltZXN0YW1wKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgLyAxMDAwXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5peCB0aW1lc3RhbXAgdG8gYSBEYXRlIG9iamVjdFxuICogQHBhcmFtIHRpbWUgYW4gdW5peCB0aW1lc3RhbXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVGcm9tVGltZXN0YW1wKHRpbWU6IG51bWJlcik6IERhdGUge1xuICByZXR1cm4gbmV3IERhdGUodGltZSAqIDEwMDApXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5peCB0aW1lc3RhbXAgdG8gYSBkYXRlIGluIHRoZSBmb3JtYXQgJ2RheSBtb250aCBob3VycyBtaW5zJ1xuICogQHBhcmFtIHRpbWUgYW4gdW5peCB0aW1lc3RhbXAuXG4gKiBAcGFyYW0gbG9jYWxlIHRhcmdldCBsYW5ndWFnZSBsb2NhbGUgdGFnLlxuICogQHJldHVybnMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnVsbERhdGUodGltZTogbnVtYmVyLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBmb3JtYXQ6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge1xuICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgIGRheTogJ251bWVyaWMnLFxuICAgIGhvdXI6ICdudW1lcmljJyxcbiAgICBtaW51dGU6ICdudW1lcmljJyxcbiAgfVxuICByZXR1cm4gY29udmVydERhdGUodGltZSwgZm9ybWF0LCBsb2NhbGUpXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5peCB0aW1lc3RhbXAgdG8gYSBkYXRlIGluIHRoZSBmb3JtYXQgJ2RheSBtb250aCdcbiAqIEBwYXJhbSB0aW1lIGFuIHVuaXggdGltZXN0YW1wLlxuICogQHBhcmFtIGxvY2FsZSB0YXJnZXQgbGFuZ3VhZ2UgbG9jYWxlIHRhZy5cbiAqIEByZXR1cm5zIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3J0RGF0ZSh0aW1lOiBudW1iZXIsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb252ZXJ0RGF0ZSh0aW1lLCB7IG1vbnRoOiAnc2hvcnQnLCBkYXk6ICdudW1lcmljJyB9LCBsb2NhbGUpXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gdW5peCB0aW1lc3RhbXAgdG8gYSBkYXRlIGluIHRoZSBmb3JtYXQgJ2hvdXJzIG1pbnMnXG4gKiBAcGFyYW0gdGltZSBhbiB1bml4IHRpbWVzdGFtcC5cbiAqIEByZXR1cm5zIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvdXJzKHRpbWU6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGUgPSBkYXRlRnJvbVRpbWVzdGFtcCh0aW1lKVxuICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKClcbiAgY29uc3QgbWludXRlc0Zvcm1hdCA9IG1pbnV0ZXMgPj0gMTAgPyBtaW51dGVzIDogYDAke21pbnV0ZXN9YFxuICByZXR1cm4gYCR7ZGF0ZS5nZXRIb3VycygpfToke21pbnV0ZXNGb3JtYXR9YFxufVxuXG4vKipcbiAqIEdldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHRpbWVzdGFtcCBpcyB0b2RheS5cbiAqIEBwYXJhbSB0aW1lIGFuIHVuaXggdGltZXN0YW1wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUb2RheSh0aW1lOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCkgPT09IGRhdGVGcm9tVGltZXN0YW1wKHRpbWUpLnRvTG9jYWxlRGF0ZVN0cmluZygpXG59XG5cbi8qKlxuICogR2V0cyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZ2l2ZW4gZGF0ZXMgcmVwcmVzZW50ZXMgdGhlIHNhbWUgeWVhciwgbW9udGggYW5kIGRheS5cbiAqIEBwYXJhbSBkMSB0aGUgZmlyc3QgZGF0ZS5cbiAqIEBwYXJhbSBkMiB0aGUgc2Vjb25kIGRhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlRGF5cyhkMTogRGF0ZSwgZDI6IERhdGUpIHtcbiAgcmV0dXJuIGQxLmdldEZ1bGxZZWFyKCkgPT09IGQyLmdldEZ1bGxZZWFyKCkgJiYgZDEuZ2V0TW9udGgoKSA9PT0gZDIuZ2V0TW9udGgoKSAmJiBkMS5nZXREYXRlKCkgPT09IGQyLmdldERhdGUoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydERhdGUodGltZTogbnVtYmVyLCBmb3JtYXQ6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRlID0gZGF0ZUZyb21UaW1lc3RhbXAodGltZSlcbiAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgZm9ybWF0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla3NEaWZmKGQxOiBEYXRlLCBkMjogRGF0ZSkge1xuICBsZXQgZGlmZiA9IChkMi5nZXRUaW1lKCkgLSBkMS5nZXRUaW1lKCkpIC8gMTAwMFxuICBkaWZmIC89IDYwICogNjAgKiAyNCAqIDdcbiAgcmV0dXJuIE1hdGguYWJzKE1hdGgucm91bmQoZGlmZikpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VPdmVybGFwcyhhX3N0YXJ0OiBEYXRlLCBhX2VuZDogRGF0ZSwgYl9zdGFydDogRGF0ZSwgYl9lbmQ6IERhdGUpOiBib29sZWFuIHtcbiAgaWYgKGFfc3RhcnQgPCBiX3N0YXJ0ICYmIGJfc3RhcnQgPCBhX2VuZCkgcmV0dXJuIHRydWUgLy8gYiBzdGFydHMgaW4gYVxuICBpZiAoYV9zdGFydCA8IGJfZW5kICYmIGJfZW5kIDwgYV9lbmQpIHJldHVybiB0cnVlIC8vIGIgZW5kcyBpbiBhXG4gIGlmIChiX3N0YXJ0IDwgYV9zdGFydCAmJiBhX2VuZCA8IGJfZW5kKSByZXR1cm4gdHJ1ZSAvLyBhIGluIGJcbiAgcmV0dXJuIGZhbHNlXG59XG4iXX0=