sharepulse/frontend/src/app/relative-time.pipe.ts
Max dbb53ca9da Added live refresh to admin UI
- Added lastLogin UI
- Added operational time
2024-05-30 20:40:58 +02:00

46 lines
1.4 KiB
TypeScript

import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'relativeTime',
standalone: true,
pure: false
})
export class RelativeTimePipe implements PipeTransform {
transform(value: string): string {
if (!value) {
return '';
}
const now = new Date();
const past = new Date(value);
const elapsed = now.getTime() - past.getTime();
const msPerSecond = 1000;
const msPerMinute = msPerSecond * 60;
const msPerHour = msPerMinute * 60;
const msPerDay = msPerHour * 24;
const msPerWeek = msPerDay * 7;
const msPerMonth = msPerDay * 30;
const msPerYear = msPerDay * 365;
if (elapsed < msPerSecond) {
return 'just now';
} else if (elapsed < msPerMinute) {
return `${Math.round(elapsed / msPerSecond)} seconds ago`;
} else if (elapsed < msPerHour) {
return `${Math.round(elapsed / msPerMinute)} minutes ago`;
} else if (elapsed < msPerDay) {
return `${Math.round(elapsed / msPerHour)} hours ago`;
} else if (elapsed < msPerWeek) {
return `${Math.round(elapsed / msPerDay)} days ago`;
} else if (elapsed < msPerMonth) {
return `${Math.round(elapsed / msPerWeek)} weeks ago`;
} else if (elapsed < msPerYear) {
return `${Math.round(elapsed / msPerMonth)} months ago`;
} else {
return `${Math.round(elapsed / msPerYear)} years ago`;
}
}
}