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

refactoring date/date-pipe

parent 7bd41efa
No related branches found
No related tags found
No related merge requests found
Showing
with 100 additions and 29 deletions
import { registerLocaleData } from '@angular/common';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import localeDe from '@angular/common/locales/de';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { ApiRootResource, ApiRootService } from '@goofy-client/api-root-shared'; import { ApiRootResource, ApiRootService } from '@goofy-client/api-root-shared';
...@@ -13,6 +15,8 @@ import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; ...@@ -13,6 +15,8 @@ import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
import { BehaviorSubject, of } from 'rxjs'; import { BehaviorSubject, of } from 'rxjs';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
registerLocaleData(localeDe);
describe('AppComponent', () => { describe('AppComponent', () => {
let component: AppComponent; let component: AppComponent;
let fixture: ComponentFixture<AppComponent>; let fixture: ComponentFixture<AppComponent>;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
class="plain-text"> class="plain-text">
<goofy-client-user-profile-in-kommentar-container [kommentar]="kommentar" data-test-id="kommentar-list-item-user-profile"></goofy-client-user-profile-in-kommentar-container> <goofy-client-user-profile-in-kommentar-container [kommentar]="kommentar" data-test-id="kommentar-list-item-user-profile"></goofy-client-user-profile-in-kommentar-container>
<span data-test-id="kommentar-created-at">{{ kommentar.createdAt | date: 'dd.MM.yy HH:mm' }}</span> <span data-test-id="kommentar-created-at">{{ kommentar.createdAt | formatDateWithTimePipe: false }}</span>
<p>{{ kommentar.text }}</p> <p>{{ kommentar.text }}</p>
</button> </button>
......
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ConvertForDataTestPipe } from '@goofy-client/tech-shared'; import { ConvertForDataTestPipe, FormatDateWithTimePipe } from '@goofy-client/tech-shared';
import { UserProfileInKommentarContainerComponent } from '@goofy-client/user-profile'; import { UserProfileInKommentarContainerComponent } from '@goofy-client/user-profile';
import { createKommentarResource } from 'libs/kommentar-shared/test/kommentar'; import { createKommentarResource } from 'libs/kommentar-shared/test/kommentar';
import { MockComponent } from 'ng-mocks'; import { MockComponent } from 'ng-mocks';
import { KommentarFormComponent } from '../../kommentar-form/kommentar-form.component'; import { KommentarFormComponent } from '../../kommentar-form/kommentar-form.component';
import { KommentarListItemInVorgangComponent } from './kommentar-list-item-in-vorgang.component'; import { KommentarListItemInVorgangComponent } from './kommentar-list-item-in-vorgang.component';
registerLocaleData(localeDe);
describe('KommentarListItemInVorgangComponent', () => { describe('KommentarListItemInVorgangComponent', () => {
let component: KommentarListItemInVorgangComponent; let component: KommentarListItemInVorgangComponent;
let fixture: ComponentFixture<KommentarListItemInVorgangComponent>; let fixture: ComponentFixture<KommentarListItemInVorgangComponent>;
...@@ -15,6 +19,7 @@ describe('KommentarListItemInVorgangComponent', () => { ...@@ -15,6 +19,7 @@ describe('KommentarListItemInVorgangComponent', () => {
declarations: [ declarations: [
KommentarListItemInVorgangComponent, KommentarListItemInVorgangComponent,
ConvertForDataTestPipe, ConvertForDataTestPipe,
FormatDateWithTimePipe,
MockComponent(KommentarFormComponent), MockComponent(KommentarFormComponent),
MockComponent(UserProfileInKommentarContainerComponent) MockComponent(UserProfileInKommentarContainerComponent)
] ]
......
<p>Version: {{ apiRoot.version }} | BuildTime: {{ apiRoot.buildTime | date: "dd.MM.yy HH:mm:ss" }}</p> <p>Version: {{ apiRoot.version }} | BuildTime: {{ apiRoot.buildTime | formatDateWithTimePipe }}</p>
\ No newline at end of file \ No newline at end of file
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { FormatDateWithTimePipe } from '@goofy-client/tech-shared';
import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
import { BuildInfoComponent } from './build-info.component'; import { BuildInfoComponent } from './build-info.component';
registerLocaleData(localeDe);
describe('BuildInfoComponent', () => { describe('BuildInfoComponent', () => {
let component: BuildInfoComponent; let component: BuildInfoComponent;
let fixture: ComponentFixture<BuildInfoComponent>; let fixture: ComponentFixture<BuildInfoComponent>;
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [BuildInfoComponent] declarations: [
BuildInfoComponent,
FormatDateWithTimePipe
]
}).compileComponents(); }).compileComponents();
}); });
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(BuildInfoComponent); fixture = TestBed.createComponent(BuildInfoComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
component.apiRoot = { version: '1', buildTime: '2', javaVersion: '3', _links: null }; component.apiRoot = createApiRootResource();
fixture.detectChanges(); fixture.detectChanges();
}); });
......
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
<span class="overflow">{{ postfachMail.subject }}</span> <span class="overflow">{{ postfachMail.subject }}</span>
</div> </div>
<div class="date" data-test-id="mail-created-at">{{ postfachMail.createdAt | date: "dd.MM.yy HH:mm" }}</div> <div class="date" data-test-id="mail-created-at">{{ postfachMail.createdAt | formatDateWithTimePipe: false }}</div>
<div class="message overflow" data-test-id="mail-text">{{ postfachMail.mailBody }}</div> <div class="message overflow" data-test-id="mail-text">{{ postfachMail.mailBody }}</div>
\ No newline at end of file
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MatIcon } from '@angular/material/icon'; import { MatIcon } from '@angular/material/icon';
import { FormatDateWithTimePipe } from '@goofy-client/tech-shared';
import { createPostfachMailResource } from '../../../../../../../postfach-shared/test/postfach'; import { createPostfachMailResource } from '../../../../../../../postfach-shared/test/postfach';
import { IncommingMailComponent } from './incomming-mail.component'; import { IncommingMailComponent } from './incomming-mail.component';
registerLocaleData(localeDe);
describe('IncommingMailComponent', () => { describe('IncommingMailComponent', () => {
let component: IncommingMailComponent; let component: IncommingMailComponent;
let fixture: ComponentFixture<IncommingMailComponent>; let fixture: ComponentFixture<IncommingMailComponent>;
...@@ -11,10 +16,10 @@ describe('IncommingMailComponent', () => { ...@@ -11,10 +16,10 @@ describe('IncommingMailComponent', () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ declarations: [
IncommingMailComponent, IncommingMailComponent,
MatIcon MatIcon,
FormatDateWithTimePipe
] ]
}) }).compileComponents();
.compileComponents();
}); });
beforeEach(() => { beforeEach(() => {
......
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
</goofy-client-user-profile-in-postfach-mail-container> </goofy-client-user-profile-in-postfach-mail-container>
<span class="overflow subject" data-test-id="mail-subject">{{ postfachMail.subject }}</span> <span class="overflow subject" data-test-id="mail-subject">{{ postfachMail.subject }}</span>
<div class="date" data-test-id="mail-created-at">{{ postfachMail.createdAt | date: "dd.MM.yy HH:mm" }}</div> <div class="date" data-test-id="mail-created-at">{{ postfachMail.createdAt | formatDateWithTimePipe: false }}</div>
<div class="message overflow" data-test-id="mail-text">{{ postfachMail.mailBody }}</div> <div class="message overflow" data-test-id="mail-text">{{ postfachMail.mailBody }}</div>
\ No newline at end of file
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HasLinkPipe } from '@goofy-client/tech-shared'; import { FormatDateWithTimePipe, HasLinkPipe } from '@goofy-client/tech-shared';
import { UserProfileInPostfachMailContainerComponent } from '@goofy-client/user-profile'; import { UserProfileInPostfachMailContainerComponent } from '@goofy-client/user-profile';
import { MockComponent } from 'ng-mocks'; import { MockComponent } from 'ng-mocks';
import { createPostfachMailResource } from '../../../../../../../postfach-shared/test/postfach'; import { createPostfachMailResource } from '../../../../../../../postfach-shared/test/postfach';
import { OutgoingMailComponent } from './outgoing-mail.component'; import { OutgoingMailComponent } from './outgoing-mail.component';
registerLocaleData(localeDe);
describe('OutgoingMailComponent', () => { describe('OutgoingMailComponent', () => {
let component: OutgoingMailComponent; let component: OutgoingMailComponent;
let fixture: ComponentFixture<OutgoingMailComponent>; let fixture: ComponentFixture<OutgoingMailComponent>;
...@@ -14,6 +18,7 @@ describe('OutgoingMailComponent', () => { ...@@ -14,6 +18,7 @@ describe('OutgoingMailComponent', () => {
declarations: [ declarations: [
OutgoingMailComponent, OutgoingMailComponent,
HasLinkPipe, HasLinkPipe,
FormatDateWithTimePipe,
MockComponent(UserProfileInPostfachMailContainerComponent) MockComponent(UserProfileInPostfachMailContainerComponent)
] ]
}) })
......
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import { formatFullDate, formatFullDateWithTimeAndDay, formatFullDateWithTimeWithoutSeconds, formatWithoutYear } from './date.util';
registerLocaleData(localeDe);
describe('Date Util', () => {
const dateToFormat: Date = new Date('1010-01-01:01:01:01');
it('formatFullDateWithTimeWithoutSeconds', () => {
const formattedDate: string = formatFullDateWithTimeWithoutSeconds(dateToFormat);
expect(formattedDate).toEqual('01.01.10 01:01');
})
it('formatFullDateWithTimeAndDay', () => {
const formattedDate: string = formatFullDateWithTimeAndDay(dateToFormat);
expect(formattedDate).toEqual('Montag, 01.01.1010, 01:01:01');
})
it('formatFullDate', () => {
const formattedDate: string = formatFullDate(dateToFormat);
expect(formattedDate).toEqual('01.01.1010');
})
it('formatWithoutYear', () => {
const formattedDate: string = formatWithoutYear(dateToFormat);
expect(formattedDate).toEqual('1.Jan.');
})
})
\ No newline at end of file
...@@ -2,7 +2,7 @@ import { formatDate } from '@angular/common'; ...@@ -2,7 +2,7 @@ import { formatDate } from '@angular/common';
import { isNil } from 'lodash-es'; import { isNil } from 'lodash-es';
import * as moment from 'moment'; import * as moment from 'moment';
export function format(date: Date | moment.Moment): string { export function formatForDatabase(date: Date | moment.Moment): string {
const dateFormat: string = 'YYYY-MM-DD'; const dateFormat: string = 'YYYY-MM-DD';
if (isNil(date)) { if (isNil(date)) {
...@@ -15,22 +15,26 @@ export function format(date: Date | moment.Moment): string { ...@@ -15,22 +15,26 @@ export function format(date: Date | moment.Moment): string {
} }
} }
export function formatWithTimeAndDay(date: Date): string {
return formatDate(date, 'EEEE, dd.MM.y, H:mm:ss', 'de');
}
export function formatWithTime(date: Date): string {
return formatDate(date, 'dd.MM.y, H:mm:ss', 'de'); export function formatFullDateWithTimeWithoutSeconds(date: Date): string {
return formatDate(date, 'dd.MM.yy HH:mm', 'de');
} }
export function formatForThisYear(date: Date): string { export function formatFullDateWithTimeAndDay(date: Date): string {
return formatDate(date, 'd.MMM', 'de'); return formatDate(date, 'EEEE, dd.MM.yyyy, HH:mm:ss', 'de');
} }
export function formatDMYDate(date: Date): string { export function formatFullDate(date: Date): string {
return formatDate(date, 'dd.MM.yyyy', 'de'); return formatDate(date, 'dd.MM.yyyy', 'de');
} }
export function formatWithoutYear(date: Date): string {
return formatDate(date, 'd.MMM', 'de');
}
export function isToday(date: Date): boolean { export function isToday(date: Date): boolean {
return moment().isSame(date, 'day'); return moment().isSame(date, 'day');
} }
...@@ -59,6 +63,8 @@ export function isThisYear(date: Date): boolean { ...@@ -59,6 +63,8 @@ export function isThisYear(date: Date): boolean {
return moment().isSame(date, 'year') return moment().isSame(date, 'year')
} }
export function createFutureDate(todayPlusDays: number): Date { export function createFutureDate(todayPlusDays: number): Date {
const date = new Date(); const date = new Date();
date.setDate(date.getDate() + todayPlusDays); date.setDate(date.getDate() + todayPlusDays);
......
import { Pipe, PipeTransform } from '@angular/core'; import { Pipe, PipeTransform } from '@angular/core';
import { isNil } from 'lodash-es'; import { isNil } from 'lodash-es';
import { formatWithTimeAndDay } from '../date.util'; import { formatFullDateWithTimeAndDay, formatFullDateWithTimeWithoutSeconds } from '../date.util';
@Pipe({ name: 'formatDateWithTimePipe' }) @Pipe({ name: 'formatDateWithTimePipe' })
export class FormatDateWithTimePipe implements PipeTransform { export class FormatDateWithTimePipe implements PipeTransform {
transform(date: Date): string { transform(date: Date, withSeconds: boolean = true): string {
if (isNil(date)) return undefined; if (isNil(date)) return undefined;
return formatWithTimeAndDay(date); return withSeconds
? formatFullDateWithTimeAndDay(date)
: formatFullDateWithTimeWithoutSeconds(date);
} }
} }
\ No newline at end of file
import { Pipe, PipeTransform } from '@angular/core'; import { Pipe, PipeTransform } from '@angular/core';
import { formatDMYDate, formatForThisYear, isDayAfterTomorrow, isDayBeforeYesterday, isThisYear, isToday, isTomorrow, isYesterday } from '../date.util'; import { formatFullDate, formatWithoutYear, isDayAfterTomorrow, isDayBeforeYesterday, isThisYear, isToday, isTomorrow, isYesterday } from '../date.util';
//TODO: rename
@Pipe({ name: 'formatListDate' }) @Pipe({ name: 'formatListDate' })
export class FormatListDatePipe implements PipeTransform { export class FormatListDatePipe implements PipeTransform {
transform(date: Date) { transform(date: Date): string {
if (isToday(date)) return 'Heute'; if (isToday(date)) return 'Heute';
if (isYesterday(date)) return 'Gestern'; if (isYesterday(date)) return 'Gestern';
if (isDayBeforeYesterday(date)) return 'Vorgestern'; if (isDayBeforeYesterday(date)) return 'Vorgestern';
...@@ -11,9 +12,9 @@ export class FormatListDatePipe implements PipeTransform { ...@@ -11,9 +12,9 @@ export class FormatListDatePipe implements PipeTransform {
if (isDayAfterTomorrow(date)) return 'Übermorgen'; if (isDayAfterTomorrow(date)) return 'Übermorgen';
if (isThisYear(date)) { if (isThisYear(date)) {
return formatForThisYear(date) return formatWithoutYear(date)
} }
return formatDMYDate(date); return formatFullDate(date);
} }
} }
\ No newline at end of file
import { Injectable, OnDestroy } from '@angular/core'; import { Injectable, OnDestroy } from '@angular/core';
import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { FormBuilder, FormControl, FormGroup } from '@angular/forms';
import { OzgFileListLinkRel, OzgFileListResource, OzgFileResource } from '@goofy-client/ozg-file-shared'; import { OzgFileListLinkRel, OzgFileListResource, OzgFileResource } from '@goofy-client/ozg-file-shared';
import { AbstractFormService, createFutureDate, createStateResource, format, StateResource } from '@goofy-client/tech-shared'; import { AbstractFormService, createFutureDate, createStateResource, formatForDatabase, StateResource } from '@goofy-client/tech-shared';
import { Wiedervorlage, WiedervorlageLinkRel, WiedervorlageResource, WiedervorlageService } from '@goofy-client/wiedervorlage-shared'; import { Wiedervorlage, WiedervorlageLinkRel, WiedervorlageResource, WiedervorlageService } from '@goofy-client/wiedervorlage-shared';
import { getEmbeddedResource, getUrl, hasLink } from '@ngxp/rest'; import { getEmbeddedResource, getUrl, hasLink } from '@ngxp/rest';
import { isNil, isNull } from 'lodash-es'; import { isNil, isNull } from 'lodash-es';
...@@ -75,7 +75,7 @@ export class WiedervorlageFormService extends AbstractFormService implements OnD ...@@ -75,7 +75,7 @@ export class WiedervorlageFormService extends AbstractFormService implements OnD
getValue(): Wiedervorlage { getValue(): Wiedervorlage {
const formValue = super.getFormValue(); const formValue = super.getFormValue();
return { ...formValue, frist: format(formValue.frist), attachments: this.attachments.value.resource.map(ozgFile => getUrl(ozgFile)) }; return { ...formValue, frist: formatForDatabase(formValue.frist), attachments: this.attachments.value.resource.map(ozgFile => getUrl(ozgFile)) };
} }
public getAttachments(): Observable<StateResource<OzgFileResource[]>> { public getAttachments(): Observable<StateResource<OzgFileResource[]>> {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment