ng-devui
Version:
DevUI components based on Angular
1 lines • 9.5 kB
Source Map (JSON)
{"version":3,"file":"ng-devui-relative-time.mjs","sources":["../../devui/relative-time/relative-time.pipe.ts","../../devui/relative-time/relative-time.module.ts","../../devui/relative-time/ng-devui-relative-time.ts"],"sourcesContent":["import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\r\nimport { I18nService } from 'ng-devui/i18n';\r\nimport * as datefns from 'date-fns';\r\nimport { Observable, Subject, of } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\n\r\n@Pipe({\r\n name: 'dRelativeTime',\r\n})\r\nexport class RelativeTimePipe implements PipeTransform, OnDestroy {\r\n private _destroyed$ = new Subject<void>();\r\n constructor(private i18n: I18nService) {}\r\n\r\n transform(\r\n value: string | number | Date,\r\n limit: number,\r\n compareDate?: string | number | Date,\r\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 6 | 5 = 1\r\n ): Observable<string | number | Date> {\r\n if (!value) {\r\n return of('');\r\n }\r\n const threshold = {\r\n month: 3, // at least 3 months using year.\r\n week: 4, // at least 4 weeks using month.\r\n day: 6, // at least 6 days using weeks.\r\n hour: 6, // at least 6 hours using day.\r\n minute: 59, // at least 59 minutes using hour.\r\n second: 59, // at least 59 seconds using minute.\r\n };\r\n\r\n if (!datefns.isDate(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n const now = compareDate ? new Date(compareDate) : Date.now();\r\n\r\n const startOfYearForTarget = datefns.startOfYear(<Date>value);\r\n const startOfYearForToday = datefns.startOfYear(now);\r\n const diffYears = datefns.differenceInYears(startOfYearForToday, startOfYearForTarget);\r\n const absDiffYears = Math.abs(diffYears);\r\n\r\n const startOfMonthForTarget = datefns.startOfMonth(<Date>value);\r\n const startOfMonthForToday = datefns.startOfMonth(now);\r\n const diffMonths = datefns.differenceInMonths(startOfMonthForToday, startOfMonthForTarget);\r\n const absDiffMonths = Math.abs(diffMonths);\r\n\r\n const startOfWeekForTarget = datefns.startOfWeek(<Date>value, { weekStartsOn });\r\n const startOfWeekForToday = datefns.startOfWeek(now, { weekStartsOn });\r\n const diffWeeks = datefns.differenceInWeeks(startOfWeekForToday, startOfWeekForTarget);\r\n const absDiffWeeks = Math.abs(diffWeeks);\r\n\r\n const startOfDayForTarget = datefns.startOfDay(<Date>value);\r\n const startOfDayForToday = datefns.startOfDay(now);\r\n const diffDays = datefns.differenceInDays(startOfDayForToday, startOfDayForTarget);\r\n const absDiffDays = Math.abs(diffDays);\r\n\r\n const diffHours = datefns.differenceInHours(now, <Date>value);\r\n const absDiffHours = Math.abs(diffHours);\r\n\r\n const diffMinutes = datefns.differenceInMinutes(now, <Date>value);\r\n const absDiffMinutes = Math.abs(diffMinutes);\r\n\r\n const diffSeconds = datefns.differenceInSeconds(now, <Date>value);\r\n const absDiffSeconds = Math.abs(diffSeconds);\r\n\r\n return this.i18n.langChange().pipe(\r\n map((data) => {\r\n if (absDiffSeconds > limit) {\r\n return new Date(value);\r\n }\r\n const i18nCommonText = data.relativeTime;\r\n if (absDiffYears > 0 && absDiffMonths > threshold.month) {\r\n return diffYears > 0 ? i18nCommonText.yearsAgo(absDiffYears) : i18nCommonText.yearsLater(absDiffYears);\r\n } else if (absDiffMonths > 0 && absDiffWeeks >= threshold.week) {\r\n return diffMonths > 0 ? i18nCommonText.monthsAgo(absDiffMonths) : i18nCommonText.monthsLater(absDiffMonths);\r\n } else if (absDiffWeeks > 0 && absDiffDays > threshold.day) {\r\n return diffWeeks > 0 ? i18nCommonText.weeksAgo(absDiffWeeks) : i18nCommonText.weeksLater(absDiffWeeks);\r\n } else if (absDiffDays > 0 && absDiffHours > threshold.hour) {\r\n return diffDays > 0 ? i18nCommonText.daysAgo(absDiffDays) : i18nCommonText.daysLater(absDiffDays);\r\n } else if (absDiffHours > 0 && absDiffMinutes > threshold.minute) {\r\n return diffHours > 0 ? i18nCommonText.hoursAgo(absDiffHours) : i18nCommonText.hoursLater(absDiffHours);\r\n } else if (absDiffMinutes > 0 && absDiffSeconds > threshold.second) {\r\n return diffMinutes > 0 ? i18nCommonText.minutesAgo(absDiffMinutes) : i18nCommonText.minutesLater(absDiffMinutes);\r\n } else if (diffSeconds || diffSeconds === 0) {\r\n return diffSeconds >= 0 ? i18nCommonText.justnow : i18nCommonText.later;\r\n } else {\r\n return '';\r\n }\r\n }),\r\n takeUntil(this._destroyed$)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._destroyed$.next();\r\n this._destroyed$.complete();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { RelativeTimePipe } from './relative-time.pipe';\n\n@NgModule({\n declarations: [\n RelativeTimePipe\n ],\n exports: [\n RelativeTimePipe\n ]\n})\nexport class RelativeTimeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}