UNPKG

cf-common-lib

Version:

Object Validators and Utilities

164 lines 12.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Pipe, NgZone, ChangeDetectorRef } from '@angular/core'; // export class TimeagoPipe { /** * @param {?} changeDetectorRef * @param {?} ngZone */ constructor(changeDetectorRef, ngZone) { this.changeDetectorRef = changeDetectorRef; this.ngZone = ngZone; } /** * @return {?} */ ngOnDestroy() { this.removeTimer(); } /** * @return {?} */ removeTimer() { if (typeof timer !== 'undefined') { window.clearTimeout(timer); timer = null; } } /** * @param {?} seconds * @return {?} */ getSecondsUntilUpdate(seconds) { /** @type {?} */ let min = 60; /** @type {?} */ let hr = min * 60; /** @type {?} */ let day = hr * 24; if (seconds < min) { // less than 1 min, update every 2 secs return 2; } else if (seconds < hr) { // less than an hour, update every 30 secs return 30; } else if (seconds < day) { // less then a day, update every 5 mins return 300; } else { // update every hour return 3600; } } /** * @param {?} value * @param {?=} args * @return {?} */ transform(value, args) { this.removeTimer(); /** @type {?} */ let d = new Date(value); /** @type {?} */ let timer = ""; /** @type {?} */ let now = new Date(); /** @type {?} */ let seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000)); /** @type {?} */ let timeToUpdate = (Number.isNaN(seconds)) ? 1000 : this.getSecondsUntilUpdate(seconds) * 1000; timer = this.ngZone.runOutsideAngular((/** * @return {?} */ () => { if (typeof window !== 'undefined') { return window.setTimeout((/** * @return {?} */ () => { this.ngZone.run((/** * @return {?} */ () => this.changeDetectorRef.markForCheck())); }), timeToUpdate); } return null; })); /** @type {?} */ let minutes = Math.round(Math.abs(seconds / 60)); /** @type {?} */ let hours = Math.round(Math.abs(minutes / 60)); /** @type {?} */ let days = Math.round(Math.abs(hours / 24)); /** @type {?} */ let months = Math.round(Math.abs(days / 30.416)); /** @type {?} */ let years = Math.round(Math.abs(days / 365)); if (Number.isNaN(seconds)) { return ''; } else if (seconds <= 45) { return 'a few seconds ago'; } else if (seconds <= 90) { return 'a minute ago'; } else if (minutes <= 45) { return minutes + ' minutes ago'; } else if (minutes <= 90) { return 'an hour ago'; } else if (hours <= 22) { return hours + ' hours ago'; } else if (hours <= 36) { return 'a day ago'; } else if (days <= 25) { return days + ' days ago'; } else if (days <= 45) { return 'a month ago'; } else if (days <= 345) { return months + ' months ago'; } else if (days <= 545) { return 'a year ago'; } else { // (days > 545) return years + ' years ago'; } } } TimeagoPipe.decorators = [ { type: Pipe, args: [{ name: 'timeago' },] } ]; /** @nocollapse */ TimeagoPipe.ctorParameters = () => [ { type: ChangeDetectorRef }, { type: NgZone } ]; if (false) { /** * @type {?} * @private */ TimeagoPipe.prototype.changeDetectorRef; /** * @type {?} * @private */ TimeagoPipe.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWFnby5waXBlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY2YtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9waXBlcy90aW1lYWdvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRyxNQUFNLGVBQWUsQ0FBQzs7QUFPaEYsTUFBTSxPQUFPLFdBQVc7Ozs7O0lBR3JCLFlBQW9CLGlCQUFxQyxFQUFXLE1BQWU7UUFBL0Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVM7SUFBSyxDQUFDOzs7O0lBRXhGLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7OztJQUdELFdBQVc7UUFDUCxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUM5QixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDaEI7SUFDTCxDQUFDOzs7OztJQUVBLHFCQUFxQixDQUFDLE9BQU87O1lBQ3RCLEdBQUcsR0FBRyxFQUFFOztZQUNSLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRTs7WUFDYixHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDakIsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2YsdUNBQXVDO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7YUFDSSxJQUFJLE9BQU8sR0FBRyxFQUFFLEVBQUU7WUFDbkIsMENBQTBDO1lBQzFDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7YUFDSSxJQUFJLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDcEIsdUNBQXVDO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7YUFDSTtZQUNELG9CQUFvQjtZQUNwQixPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQzs7Ozs7O0lBRUYsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFVO1FBQzlCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7WUFDWCxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDOztZQUNuQixLQUFLLEdBQU8sRUFBRTs7WUFDZCxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUU7O1lBQ2hCLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7O1lBQ3JFLFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSTtRQUM5RixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUI7OztRQUFDLEdBQUcsRUFBRTtZQUN2QyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtnQkFDL0IsT0FBTyxNQUFNLENBQUMsVUFBVTs7O2dCQUFDLEdBQUcsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHOzs7b0JBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxFQUFDLENBQUM7Z0JBQ2pFLENBQUMsR0FBRSxZQUFZLENBQUMsQ0FBQzthQUNwQjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsRUFBQyxDQUFDOztZQUNDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDOztZQUMzQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQzs7WUFDMUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7O1lBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDOztZQUM1QyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxFQUFFLENBQUM7U0FDYjthQUNJLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRTtZQUNwQixPQUFPLG1CQUFtQixDQUFDO1NBQzlCO2FBQ0ksSUFBSSxPQUFPLElBQUksRUFBRSxFQUFFO1lBQ3BCLE9BQU8sY0FBYyxDQUFDO1NBQ3pCO2FBQ0ksSUFBSSxPQUFPLElBQUksRUFBRSxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxHQUFHLGNBQWMsQ0FBQztTQUNuQzthQUNJLElBQUksT0FBTyxJQUFJLEVBQUUsRUFBRTtZQUNwQixPQUFPLGFBQWEsQ0FBQztTQUN4QjthQUNJLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRTtZQUNsQixPQUFPLEtBQUssR0FBRyxZQUFZLENBQUM7U0FDL0I7YUFDSSxJQUFJLEtBQUssSUFBSSxFQUFFLEVBQUU7WUFDbEIsT0FBTyxXQUFXLENBQUM7U0FDdEI7YUFDSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUU7WUFDakIsT0FBTyxJQUFJLEdBQUcsV0FBVyxDQUFDO1NBQzdCO2FBQ0ksSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFO1lBQ2pCLE9BQU8sYUFBYSxDQUFDO1NBQ3hCO2FBQ0ksSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1lBQ2xCLE9BQU8sTUFBTSxHQUFHLGFBQWEsQ0FBQztTQUNqQzthQUNJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtZQUNsQixPQUFPLFlBQVksQ0FBQztTQUN2QjthQUNJO1lBQ0QsZUFBZTtZQUNmLE9BQU8sS0FBSyxHQUFHLFlBQVksQ0FBQztTQUMvQjtJQUNQLENBQUM7OztZQW5HRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFNBQVM7YUFDaEI7Ozs7WUFOcUMsaUJBQWlCO1lBQXpCLE1BQU07Ozs7Ozs7SUFVckIsd0NBQTZDOzs7OztJQUFHLDZCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0b3JSZWYgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgbGV0IHRpbWVyIDogYW55IDtcbi8vIFxuQFBpcGUoe1xuICBuYW1lOiAndGltZWFnbydcbn0pXG5leHBvcnQgY2xhc3MgVGltZWFnb1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmIDogQ2hhbmdlRGV0ZWN0b3JSZWYgLCBwcml2YXRlIG5nWm9uZSA6IE5nWm9uZSkgeyAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlVGltZXIoKTtcbiAgICB9IFxuXG5cbiAgICByZW1vdmVUaW1lcigpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aW1lciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgIGdldFNlY29uZHNVbnRpbFVwZGF0ZShzZWNvbmRzKSB7XG4gICAgICAgIGxldCBtaW4gPSA2MDtcbiAgICAgICAgbGV0IGhyID0gbWluICogNjA7XG4gICAgICAgIGxldCBkYXkgPSBociAqIDI0O1xuICAgICAgICBpZiAoc2Vjb25kcyA8IG1pbikge1xuICAgICAgICAgICAgLy8gbGVzcyB0aGFuIDEgbWluLCB1cGRhdGUgZXZlcnkgMiBzZWNzXG4gICAgICAgICAgICByZXR1cm4gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWNvbmRzIDwgaHIpIHtcbiAgICAgICAgICAgIC8vIGxlc3MgdGhhbiBhbiBob3VyLCB1cGRhdGUgZXZlcnkgMzAgc2Vjc1xuICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPCBkYXkpIHtcbiAgICAgICAgICAgIC8vIGxlc3MgdGhlbiBhIGRheSwgdXBkYXRlIGV2ZXJ5IDUgbWluc1xuICAgICAgICAgICAgcmV0dXJuIDMwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBldmVyeSBob3VyXG4gICAgICAgICAgICByZXR1cm4gMzYwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICBcdHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcbiAgICBcdHRoaXMucmVtb3ZlVGltZXIoKTtcbiAgICAgICAgbGV0ICBkID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBsZXQgIHRpbWVyIDphbnk9IFwiXCI7XG4gICAgICAgIGxldCAgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgbGV0ICBzZWNvbmRzID0gTWF0aC5yb3VuZChNYXRoLmFicygobm93LmdldFRpbWUoKSAtIGQuZ2V0VGltZSgpKSAvIDEwMDApKTtcbiAgICAgICAgbGV0IHRpbWVUb1VwZGF0ZSA9IChOdW1iZXIuaXNOYU4oc2Vjb25kcykpID8gMTAwMCA6IHRoaXMuZ2V0U2Vjb25kc1VudGlsVXBkYXRlKHNlY29uZHMpICogMTAwMDtcbiAgICAgICAgdGltZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgICAgICAgICAgICAgfSwgdGltZVRvVXBkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKHNlY29uZHMgLyA2MCkpO1xuICAgICAgICBsZXQgIGhvdXJzID0gTWF0aC5yb3VuZChNYXRoLmFicyhtaW51dGVzIC8gNjApKTtcbiAgICAgICAgbGV0ICBkYXlzID0gTWF0aC5yb3VuZChNYXRoLmFicyhob3VycyAvIDI0KSk7XG4gICAgICAgIGxldCAgbW9udGhzID0gTWF0aC5yb3VuZChNYXRoLmFicyhkYXlzIC8gMzAuNDE2KSk7XG4gICAgICAgIGxldCAgeWVhcnMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKGRheXMgLyAzNjUpKTtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihzZWNvbmRzKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPD0gNDUpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBmZXcgc2Vjb25kcyBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPD0gOTApIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBtaW51dGUgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtaW51dGVzIDw9IDQ1KSB7XG4gICAgICAgICAgICByZXR1cm4gbWludXRlcyArICcgbWludXRlcyBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pbnV0ZXMgPD0gOTApIHtcbiAgICAgICAgICAgIHJldHVybiAnYW4gaG91ciBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXJzIDw9IDIyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnMgKyAnIGhvdXJzIGFnbyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaG91cnMgPD0gMzYpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBkYXkgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkYXlzIDw9IDI1KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF5cyArICcgZGF5cyBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRheXMgPD0gNDUpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBtb250aCBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRheXMgPD0gMzQ1KSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhzICsgJyBtb250aHMgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkYXlzIDw9IDU0NSkge1xuICAgICAgICAgICAgcmV0dXJuICdhIHllYXIgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIChkYXlzID4gNTQ1KVxuICAgICAgICAgICAgcmV0dXJuIHllYXJzICsgJyB5ZWFycyBhZ28nO1xuICAgICAgICB9XG4gIH1cblxufVxuIl19