cf-common-lib
Version:
Object Validators and Utilities
164 lines • 12.3 kB
JavaScript
/**
* @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWFnby5waXBlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY2YtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9waXBlcy90aW1lYWdvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRyxNQUFNLGVBQWUsQ0FBQzs7QUFPaEYsTUFBTSxPQUFPLFdBQVc7Ozs7O0lBR3JCLFlBQW9CLGlCQUFxQyxFQUFXLE1BQWU7UUFBL0Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUFXLFdBQU0sR0FBTixNQUFNLENBQVM7SUFBSyxDQUFDOzs7O0lBRXhGLFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7OztJQUdELFdBQVc7UUFDUCxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUM5QixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDaEI7SUFDTCxDQUFDOzs7OztJQUVBLHFCQUFxQixDQUFDLE9BQU87O1lBQ3RCLEdBQUcsR0FBRyxFQUFFOztZQUNSLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRTs7WUFDYixHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUU7UUFDakIsSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2YsdUNBQXVDO1lBQ3ZDLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7YUFDSSxJQUFJLE9BQU8sR0FBRyxFQUFFLEVBQUU7WUFDbkIsMENBQTBDO1lBQzFDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7YUFDSSxJQUFJLE9BQU8sR0FBRyxHQUFHLEVBQUU7WUFDcEIsdUNBQXVDO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7YUFDSTtZQUNELG9CQUFvQjtZQUNwQixPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQzs7Ozs7O0lBRUYsU0FBUyxDQUFD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LFlBQVksQ0FBQztTQUN2QjthQUNJO1lBQ0QsZUFBZTtZQUNmLE9BQU8sS0FBSyxHQUFHLFlBQVksQ0FBQztTQUMvQjtJQUNQLENBQUM7OztZQW5HRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFNBQVM7YUFDaEI7Ozs7WUFOcUMsaUJBQWlCO1lBQXpCLE1BQU07Ozs7Ozs7SUFVckIsd0NBQTZDOzs7OztJQUFHLDZCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0b3JSZWYgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmRlY2xhcmUgbGV0IHRpbWVyIDogYW55IDtcbi8vIFxuQFBpcGUoe1xuICBuYW1lOiAndGltZWFnbydcbn0pXG5leHBvcnQgY2xhc3MgVGltZWFnb1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuXG4gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmIDogQ2hhbmdlRGV0ZWN0b3JSZWYgLCBwcml2YXRlIG5nWm9uZSA6IE5nWm9uZSkgeyAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlVGltZXIoKTtcbiAgICB9IFxuXG5cbiAgICByZW1vdmVUaW1lcigpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aW1lciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgdGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgIGdldFNlY29uZHNVbnRpbFVwZGF0ZShzZWNvbmRzKSB7XG4gICAgICAgIGxldCBtaW4gPSA2MDtcbiAgICAgICAgbGV0IGhyID0gbWluICogNjA7XG4gICAgICAgIGxldCBkYXkgPSBociAqIDI0O1xuICAgICAgICBpZiAoc2Vjb25kcyA8IG1pbikge1xuICAgICAgICAgICAgLy8gbGVzcyB0aGFuIDEgbWluLCB1cGRhdGUgZXZlcnkgMiBzZWNzXG4gICAgICAgICAgICByZXR1cm4gMjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWNvbmRzIDwgaHIpIHtcbiAgICAgICAgICAgIC8vIGxlc3MgdGhhbiBhbiBob3VyLCB1cGRhdGUgZXZlcnkgMzAgc2Vjc1xuICAgICAgICAgICAgcmV0dXJuIDMwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPCBkYXkpIHtcbiAgICAgICAgICAgIC8vIGxlc3MgdGhlbiBhIGRheSwgdXBkYXRlIGV2ZXJ5IDUgbWluc1xuICAgICAgICAgICAgcmV0dXJuIDMwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBldmVyeSBob3VyXG4gICAgICAgICAgICByZXR1cm4gMzYwMDtcbiAgICAgICAgfVxuICAgIH1cblxuICBcdHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcbiAgICBcdHRoaXMucmVtb3ZlVGltZXIoKTtcbiAgICAgICAgbGV0ICBkID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBsZXQgIHRpbWVyIDphbnk9IFwiXCI7XG4gICAgICAgIGxldCAgbm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgbGV0ICBzZWNvbmRzID0gTWF0aC5yb3VuZChNYXRoLmFicygobm93LmdldFRpbWUoKSAtIGQuZ2V0VGltZSgpKSAvIDEwMDApKTtcbiAgICAgICAgbGV0IHRpbWVUb1VwZGF0ZSA9IChOdW1iZXIuaXNOYU4oc2Vjb25kcykpID8gMTAwMCA6IHRoaXMuZ2V0U2Vjb25kc1VudGlsVXBkYXRlKHNlY29uZHMpICogMTAwMDtcbiAgICAgICAgdGltZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgICAgICAgICAgICAgfSwgdGltZVRvVXBkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKHNlY29uZHMgLyA2MCkpO1xuICAgICAgICBsZXQgIGhvdXJzID0gTWF0aC5yb3VuZChNYXRoLmFicyhtaW51dGVzIC8gNjApKTtcbiAgICAgICAgbGV0ICBkYXlzID0gTWF0aC5yb3VuZChNYXRoLmFicyhob3VycyAvIDI0KSk7XG4gICAgICAgIGxldCAgbW9udGhzID0gTWF0aC5yb3VuZChNYXRoLmFicyhkYXlzIC8gMzAuNDE2KSk7XG4gICAgICAgIGxldCAgeWVhcnMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKGRheXMgLyAzNjUpKTtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihzZWNvbmRzKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPD0gNDUpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBmZXcgc2Vjb25kcyBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNlY29uZHMgPD0gOTApIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBtaW51dGUgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtaW51dGVzIDw9IDQ1KSB7XG4gICAgICAgICAgICByZXR1cm4gbWludXRlcyArICcgbWludXRlcyBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1pbnV0ZXMgPD0gOTApIHtcbiAgICAgICAgICAgIHJldHVybiAnYW4gaG91ciBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXJzIDw9IDIyKSB7XG4gICAgICAgICAgICByZXR1cm4gaG91cnMgKyAnIGhvdXJzIGFnbyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaG91cnMgPD0gMzYpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBkYXkgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkYXlzIDw9IDI1KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF5cyArICcgZGF5cyBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRheXMgPD0gNDUpIHtcbiAgICAgICAgICAgIHJldHVybiAnYSBtb250aCBhZ28nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRheXMgPD0gMzQ1KSB7XG4gICAgICAgICAgICByZXR1cm4gbW9udGhzICsgJyBtb250aHMgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkYXlzIDw9IDU0NSkge1xuICAgICAgICAgICAgcmV0dXJuICdhIHllYXIgYWdvJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIChkYXlzID4gNTQ1KVxuICAgICAgICAgICAgcmV0dXJuIHllYXJzICsgJyB5ZWFycyBhZ28nO1xuICAgICAgICB9XG4gIH1cblxufVxuIl19