@lifeintelligencegroup/ngx-lig-ari
Version:
Life Intelligence Group Artificial Intelligence
107 lines • 11.2 kB
JavaScript
import { Pipe, } from '@angular/core';
import * as i0 from "@angular/core";
export class TimeAgoPipe {
constructor(changeDetectorRef, ngZone) {
this.changeDetectorRef = changeDetectorRef;
this.ngZone = ngZone;
}
transform(value) {
this.removeTimer();
let d = new Date(value);
let now = new Date();
let seconds = Math.round(Math.abs((now.getTime() - d.getTime()) / 1000));
let timeToUpdate = Number.isNaN(seconds)
? 1000
: this.getSecondsUntilUpdate(seconds) * 1000;
this.timer = this.ngZone.runOutsideAngular(() => {
if (typeof window !== 'undefined') {
return window.setTimeout(() => {
this.ngZone.run(() => this.changeDetectorRef.markForCheck());
}, timeToUpdate);
}
return null;
});
let minutes = Math.round(Math.abs(seconds / 60));
let hours = Math.round(Math.abs(minutes / 60));
let days = Math.round(Math.abs(hours / 24));
let months = Math.round(Math.abs(days / 30.416));
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';
}
}
ngOnDestroy() {
this.removeTimer();
}
removeTimer() {
if (this.timer) {
window.clearTimeout(this.timer);
this.timer = null;
}
}
getSecondsUntilUpdate(seconds) {
let min = 60;
let hr = min * 60;
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;
}
}
}
TimeAgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: TimeAgoPipe, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Pipe });
TimeAgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: TimeAgoPipe, name: "timeAgo", pure: false });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: TimeAgoPipe, decorators: [{
type: Pipe,
args: [{
name: 'timeAgo',
pure: false,
}]
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1hZ28ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWctYXJpL3NyYy9saWIvcGlwZXMvdGltZS1hZ28ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsSUFBSSxHQUtMLE1BQU0sZUFBZSxDQUFDOztBQUt2QixNQUFNLE9BQU8sV0FBVztJQUV0QixZQUNVLGlCQUFvQyxFQUNwQyxNQUFjO1FBRGQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ3JCLENBQUM7SUFDSixTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDOUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7Z0JBQ2pDLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxN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T0FBTyxFQUFFLENBQUM7U0FDWDthQUFNLElBQUksT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUN4Qix1Q0FBdUM7WUFDdkMsT0FBTyxHQUFHLENBQUM7U0FDWjthQUFNO1lBQ0wsb0JBQW9CO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOzt3R0FoRlUsV0FBVztzR0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSnZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSSxFQUFFLEtBQUs7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxuICBOZ1pvbmUsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuQFBpcGUoe1xuICBuYW1lOiAndGltZUFnbycsXG4gIHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lQWdvUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGltZXI6IG51bWJlcjtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW1vdmVUaW1lcigpO1xuICAgIGxldCBkID0gbmV3IERhdGUodmFsdWUpO1xuICAgIGxldCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBzZWNvbmRzID0gTWF0aC5yb3VuZChNYXRoLmFicygobm93LmdldFRpbWUoKSAtIGQuZ2V0VGltZSgpKSAvIDEwMDApKTtcbiAgICBsZXQgdGltZVRvVXBkYXRlID0gTnVtYmVyLmlzTmFOKHNlY29uZHMpXG4gICAgICA/IDEwMDBcbiAgICAgIDogdGhpcy5nZXRTZWNvbmRzVW50aWxVcGRhdGUoc2Vjb25kcykgKiAxMDAwO1xuICAgIHRoaXMudGltZXIgPSB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgICAgIH0sIHRpbWVUb1VwZGF0ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICBsZXQgbWludXRlcyA9IE1hdGgucm91bmQoTWF0aC5hYnMoc2Vjb25kcyAvIDYwKSk7XG4gICAgbGV0IGhvdXJzID0gTWF0aC5yb3VuZChNYXRoLmFicyhtaW51dGVzIC8gNjApKTtcbiAgICBsZXQgZGF5cyA9IE1hdGgucm91bmQoTWF0aC5hYnMoaG91cnMgLyAyNCkpO1xuICAgIGxldCBtb250aHMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKGRheXMgLyAzMC40MTYpKTtcbiAgICBsZXQgeWVhcnMgPSBNYXRoLnJvdW5kKE1hdGguYWJzKGRheXMgLyAzNjUpKTtcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHNlY29uZHMpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmIChzZWNvbmRzIDw9IDQ1KSB7XG4gICAgICByZXR1cm4gJ2EgZmV3IHNlY29uZHMgYWdvJztcbiAgICB9IGVsc2UgaWYgKHNlY29uZHMgPD0gOTApIHtcbiAgICAgIHJldHVybiAnYSBtaW51dGUgYWdvJztcbiAgICB9IGVsc2UgaWYgKG1pbnV0ZXMgPD0gNDUpIHtcbiAgICAgIHJldHVybiBtaW51dGVzICsgJyBtaW51dGVzIGFnbyc7XG4gICAgfSBlbHNlIGlmIChtaW51dGVzIDw9IDkwKSB7XG4gICAgICByZXR1cm4gJ2FuIGhvdXIgYWdvJztcbiAgICB9IGVsc2UgaWYgKGhvdXJzIDw9IDIyKSB7XG4gICAgICByZXR1cm4gaG91cnMgKyAnIGhvdXJzIGFnbyc7XG4gICAgfSBlbHNlIGlmIChob3VycyA8PSAzNikge1xuICAgICAgcmV0dXJuICdhIGRheSBhZ28nO1xuICAgIH0gZWxzZSBpZiAoZGF5cyA8PSAyNSkge1xuICAgICAgcmV0dXJuIGRheXMgKyAnIGRheXMgYWdvJztcbiAgICB9IGVsc2UgaWYgKGRheXMgPD0gNDUpIHtcbiAgICAgIHJldHVybiAnYSBtb250aCBhZ28nO1xuICAgIH0gZWxzZSBpZiAoZGF5cyA8PSAzNDUpIHtcbiAgICAgIHJldHVybiBtb250aHMgKyAnIG1vbnRocyBhZ28nO1xuICAgIH0gZWxzZSBpZiAoZGF5cyA8PSA1NDUpIHtcbiAgICAgIHJldHVybiAnYSB5ZWFyIGFnbyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIChkYXlzID4gNTQ1KVxuICAgICAgcmV0dXJuIHllYXJzICsgJyB5ZWFycyBhZ28nO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVRpbWVyKCk7XG4gIH1cbiAgcHJpdmF0ZSByZW1vdmVUaW1lcigpIHtcbiAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGdldFNlY29uZHNVbnRpbFVwZGF0ZShzZWNvbmRzOiBudW1iZXIpIHtcbiAgICBsZXQgbWluID0gNjA7XG4gICAgbGV0IGhyID0gbWluICogNjA7XG4gICAgbGV0IGRheSA9IGhyICogMjQ7XG4gICAgaWYgKHNlY29uZHMgPCBtaW4pIHtcbiAgICAgIC8vIGxlc3MgdGhhbiAxIG1pbiwgdXBkYXRlIGV2ZXJ5IDIgc2Vjc1xuICAgICAgcmV0dXJuIDI7XG4gICAgfSBlbHNlIGlmIChzZWNvbmRzIDwgaHIpIHtcbiAgICAgIC8vIGxlc3MgdGhhbiBhbiBob3VyLCB1cGRhdGUgZXZlcnkgMzAgc2Vjc1xuICAgICAgcmV0dXJuIDMwO1xuICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA8IGRheSkge1xuICAgICAgLy8gbGVzcyB0aGVuIGEgZGF5LCB1cGRhdGUgZXZlcnkgNSBtaW5zXG4gICAgICByZXR1cm4gMzAwO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGUgZXZlcnkgaG91clxuICAgICAgcmV0dXJuIDM2MDA7XG4gICAgfVxuICB9XG59XG4iXX0=