Skip to content
Snippets Groups Projects
Commit cd34706c authored by OZGCloud's avatar OZGCloud
Browse files

OZG-130 tooltip datePipe

parent a7563d72
No related branches found
No related tags found
No related merge requests found
import { FormatListDatePipe } from './format-list-date.pipe'; import { FormatListDatePipe } from './format-list-date.pipe';
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import localeDeExtra from '@angular/common/locales/extra/de';
registerLocaleData(localeDe, 'de', localeDeExtra);
describe('FormatListDatePipe', () => { describe('FormatListDatePipe', () => {
it('create an instance', () => { let pipe: FormatListDatePipe = new FormatListDatePipe();
const pipe = new FormatListDatePipe();
it('should create', () => {
expect(pipe).toBeTruthy(); expect(pipe).toBeTruthy();
}); });
it('should return "Heute"', () => {
const date: Date = new Date();
const result: string = pipe.transform(date);
expect(result).toBe('Heute');
})
describe('format date in the past', () => {
it('should return "Gestern"', () => {
const date: Date = new Date();
date.setDate(date.getDate() - 1);
const result: string = pipe.transform(date);
expect(result).toBe('Gestern');
})
it('should return "Vorgestern"', () => {
const date: Date = new Date();
date.setDate(date.getDate() - 2);
const result: string = pipe.transform(date);
expect(result).toBe('Vorgestern');
})
})
describe('format date in the future', () => {
it('should return "Morgen"', () => {
const date: Date = new Date();
date.setDate(date.getDate() + 1);
const result: string = pipe.transform(date);
expect(result).toBe('Morgen');
})
it('should return "Übermorgen"', () => {
const date: Date = new Date();
date.setDate(date.getDate() + 2);
const result: string = pipe.transform(date);
expect(result).toBe('Übermorgen');
})
})
it('should return formatted for this year', () => {
const date: Date = new Date();
date.setFullYear(date.getFullYear(), 4, 10);
const result: string = pipe.transform(date);
expect(result).toBe('10.Mai');
})
it('should format in "dd.MM.yyyy"', () => {
const date: Date = new Date();
date.setFullYear(2050, 4, 10);
const result: string = pipe.transform(date);
expect(result).toBe('10.05.2050');
})
}); });
\ No newline at end of file
...@@ -4,31 +4,43 @@ import * as moment from 'moment'; ...@@ -4,31 +4,43 @@ import * as moment from 'moment';
@Pipe({ name: 'formatListDate' }) @Pipe({ name: 'formatListDate' })
export class FormatListDatePipe implements PipeTransform { export class FormatListDatePipe implements PipeTransform {
dateFormat: string = 'dd.MM.yyyy'; readonly dateFormat: string = 'dd.MM.yyyy';
transform(date: Date) { transform(date: Date) {
const isToday = moment().isSame(date, 'day') if (this.isToday(date)) return 'Heute';
const isYesterday = moment().subtract(1,'days').isSame(date, 'day') if (this.isYesterday(date)) return 'Gestern';
const isDayBeforeYesterday = moment().subtract(2,'days').isSame(date, 'day') if (this.isDayBeforeYesterday(date)) return 'Vorgestern';
const isTomorrow = moment().add(1,'days').isSame(date, 'day') if (this.isTomorrow(date)) return 'Morgen';
const isDayAfterTomorrow = moment().add(2,'days').isSame(date, 'day') if (this.isDayAfterTomorrow(date)) return 'Übermorgen';
const isThisYear = moment().isSame(date, 'year')
if (this.isThisYear(date)) {
if (isToday) { return formatDate(date, 'd.MMM', 'de');
return 'Heute'; }
} else if (isYesterday) {
return 'Gestern' return formatDate(date, this.dateFormat, 'de');
} else if (isDayBeforeYesterday) { }
return 'Vorgestern'
} else if (isTomorrow) { private isToday(date: Date): boolean {
return 'Morgen' return moment().isSame(date, 'day');
} else if (isDayAfterTomorrow) { }
return 'Übermorgen'
} else if (isThisYear) { private isYesterday(date: Date): boolean {
this.dateFormat = 'd. MMM'; return moment().subtract(1,'days').isSame(date, 'day')
}
return formatDate(<Date>date, this.dateFormat, 'de');
} }
private isDayBeforeYesterday(date: Date): boolean {
return moment().subtract(2,'days').isSame(date, 'day')
}
private isTomorrow(date: Date): boolean {
return moment().add(1,'days').isSame(date, 'day')
}
private isDayAfterTomorrow(date: Date): boolean {
return moment().add(2,'days').isSame(date, 'day')
}
private isThisYear(date: Date): boolean {
return moment().isSame(date, 'year')
}
} }
import { FormatTooltipListDatePipe } from './format-tooltip-list-date';
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import localeDeExtra from '@angular/common/locales/extra/de';
registerLocaleData(localeDe, 'de', localeDeExtra);
describe('FormatTooltipListDate', () => {
let pipe: FormatTooltipListDatePipe = new FormatTooltipListDatePipe();
it('should create', () => {
expect(pipe).toBeTruthy();
});
it('should return in date in format', () => {
const date: Date = new Date('01.01.2021');
const result: string = pipe.transform(date);
expect(result).toBe('Freitag, 01.01.2021, 0:00:00');
})
})
\ No newline at end of file
import { formatDate } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'formatTooltipListDate' })
export class FormatTooltipListDatePipe implements PipeTransform {
dateFormat: string = 'EEEE, dd.MM.y, H:mm:ss';
transform(date: Date) {
return formatDate(date, this.dateFormat, 'de');
}
}
...@@ -3,18 +3,21 @@ import { CommonModule } from '@angular/common'; ...@@ -3,18 +3,21 @@ import { CommonModule } from '@angular/common';
import { ObserveIntersectionDirective } from './directives/observe-intersection.directive'; import { ObserveIntersectionDirective } from './directives/observe-intersection.directive';
import { FormatListDatePipe } from './pipes/format-list-date.pipe'; import { FormatListDatePipe } from './pipes/format-list-date.pipe';
import { EnumToLabelPipe } from './pipes/enum-to-label'; import { EnumToLabelPipe } from './pipes/enum-to-label';
import { FormatTooltipListDatePipe } from './pipes/format-tooltip-list-date';
@NgModule({ @NgModule({
imports: [CommonModule], imports: [CommonModule],
declarations: [ declarations: [
ObserveIntersectionDirective, ObserveIntersectionDirective,
FormatListDatePipe, FormatListDatePipe,
EnumToLabelPipe EnumToLabelPipe,
FormatTooltipListDatePipe
], ],
exports: [ exports: [
ObserveIntersectionDirective, ObserveIntersectionDirective,
FormatListDatePipe, FormatListDatePipe,
EnumToLabelPipe EnumToLabelPipe,
FormatTooltipListDatePipe
] ]
}) })
export class TechSharedModule {} export class TechSharedModule {}
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
</div> </div>
<div class="dates column"> <div class="dates column">
<div class="row date" matTooltip="Eingang: {{vorgang.initialDate | date: 'EEEE, dd.MM.y, H:mm:ss'}}"> <div class="row date" matTooltip="Eingang: {{vorgang.initialDate | formatTooltipListDate }}">
<mat-icon svgIcon="incoming"></mat-icon> <mat-icon svgIcon="incoming"></mat-icon>
<span>{{ vorgang.initialDate | formatListDate }}</span> <span>{{ vorgang.initialDate | formatListDate }}</span>
</div> </div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment