diff --git a/client/src/app/shared/components/sort-filter-bar/sort-filter-bar.component.html b/client/src/app/shared/components/sort-filter-bar/sort-filter-bar.component.html index 476ff4b5a..6f3e0c178 100644 --- a/client/src/app/shared/components/sort-filter-bar/sort-filter-bar.component.html +++ b/client/src/app/shared/components/sort-filter-bar/sort-filter-bar.component.html @@ -23,8 +23,8 @@
diff --git a/client/src/app/shared/pipes/localized-date.pipe.spec.ts b/client/src/app/shared/pipes/localized-date.pipe.spec.ts new file mode 100644 index 000000000..f408bfbfd --- /dev/null +++ b/client/src/app/shared/pipes/localized-date.pipe.spec.ts @@ -0,0 +1,20 @@ +import { inject, TestBed } from '@angular/core/testing'; + +import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import { LocalizedDatePipe } from './localized-date.pipe'; + +describe('LocalizedDatePipe', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [TranslateModule.forRoot()], + declarations: [LocalizedDatePipe] + }); + TestBed.compileComponents(); + }); + + it('create an instance', inject([TranslateService], (translate: TranslateService) => { + const pipe = new LocalizedDatePipe(translate); + expect(pipe).toBeTruthy(); + })); +}); diff --git a/client/src/app/shared/pipes/localized-date.pipe.ts b/client/src/app/shared/pipes/localized-date.pipe.ts new file mode 100644 index 000000000..61606961e --- /dev/null +++ b/client/src/app/shared/pipes/localized-date.pipe.ts @@ -0,0 +1,25 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +import { TranslateService } from '@ngx-translate/core'; +import * as moment from 'moment'; + +/** + * pipe to convert and translate dates + */ +@Pipe({ + name: 'localizedDate', + pure: false +}) +export class LocalizedDatePipe implements PipeTransform { + public constructor(private translate: TranslateService) {} + + public transform(value: any, dateFormat: string = 'lll'): any { + const lang = this.translate.currentLang ? this.translate.currentLang : this.translate.defaultLang; + if (!value) { + return ''; + } + moment.locale(lang); + const dateLocale = moment.unix(value).local(); + return dateLocale.format(dateFormat); + } +} diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts index 4d0d5930d..ab33cbef2 100644 --- a/client/src/app/shared/shared.module.ts +++ b/client/src/app/shared/shared.module.ts @@ -108,6 +108,7 @@ import { PdfViewerModule } from 'ng2-pdf-viewer'; import { GlobalSpinnerComponent } from 'app/site/common/components/global-spinner/global-spinner.component'; import { HeightResizingDirective } from './directives/height-resizing.directive'; import { TrustPipe } from './pipes/trust.pipe'; +import { LocalizedDatePipe } from './pipes/localized-date.pipe'; /** * Share Module for all "dumb" components and pipes. @@ -256,7 +257,8 @@ import { TrustPipe } from './pipes/trust.pipe'; OverlayComponent, PreviewComponent, NgxMaterialTimepickerModule, - TrustPipe + TrustPipe, + LocalizedDatePipe ], declarations: [ PermsDirective, @@ -302,7 +304,8 @@ import { TrustPipe } from './pipes/trust.pipe'; OverlayComponent, PreviewComponent, HeightResizingDirective, - TrustPipe + TrustPipe, + LocalizedDatePipe ], providers: [ { @@ -317,7 +320,8 @@ import { TrustPipe } from './pipes/trust.pipe'; SortBottomSheetComponent, DecimalPipe, ProgressSnackBarComponent, - TrustPipe + TrustPipe, + LocalizedDatePipe ], entryComponents: [ SortBottomSheetComponent,