mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import { DatePipe } from '@angular/common'
|
|
import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core'
|
|
import { SETTINGS_KEYS } from '../data/paperless-uisettings'
|
|
import { SettingsService } from '../services/settings.service'
|
|
import { normalizeDateStr } from '../utils/date'
|
|
|
|
const FORMAT_TO_ISO_FORMAT = {
|
|
longDate: 'y-MM-dd',
|
|
mediumDate: 'y-MM-dd',
|
|
shortDate: 'y-MM-dd',
|
|
}
|
|
|
|
@Pipe({
|
|
name: 'customDate',
|
|
})
|
|
export class CustomDatePipe implements PipeTransform {
|
|
private defaultLocale: string
|
|
|
|
constructor(
|
|
@Inject(LOCALE_ID) locale: string,
|
|
private datePipe: DatePipe,
|
|
private settings: SettingsService
|
|
) {
|
|
this.defaultLocale = locale
|
|
}
|
|
|
|
transform(
|
|
value: any,
|
|
format?: string,
|
|
timezone?: string,
|
|
locale?: string
|
|
): string | null {
|
|
let l =
|
|
locale ||
|
|
this.settings.get(SETTINGS_KEYS.DATE_LOCALE) ||
|
|
this.defaultLocale
|
|
let f = format || this.settings.get(SETTINGS_KEYS.DATE_FORMAT)
|
|
if (l == 'iso-8601') {
|
|
return this.datePipe.transform(value, FORMAT_TO_ISO_FORMAT[f], timezone)
|
|
} else {
|
|
return this.datePipe.transform(
|
|
value,
|
|
format || this.settings.get(SETTINGS_KEYS.DATE_FORMAT),
|
|
timezone,
|
|
l
|
|
)
|
|
}
|
|
}
|
|
}
|