paperless-ngx/src-ui/src/app/pipes/custom-date.pipe.ts

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
)
}
}
}