From b134e9f77e306463704e8bd0d784f217372a2491 Mon Sep 17 00:00:00 2001 From: Rene Enriquez Date: Mon, 11 May 2020 13:59:09 -0500 Subject: [PATCH] fix: #223 date diff pipe --- src/app/app.module.ts | 2 ++ .../substract-date.pipe.spec.ts | 17 ++++++++++++++ .../substract-date/substract-date.pipe.ts | 22 +++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/app/modules/shared/pipes/substract-date/substract-date.pipe.spec.ts create mode 100644 src/app/modules/shared/pipes/substract-date/substract-date.pipe.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 66f1389d9..0d17e184f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -56,6 +56,7 @@ import { CreateProjectTypeComponent } from './modules/customer-management/compon import { CustomerEffects } from './modules/customer-management/store/customer-management.effects'; import { EntryEffects } from './modules/time-clock/store/entry.effects'; import { InjectTokenInterceptor } from './modules/shared/interceptors/inject.token.interceptor'; +import { SubstractDatePipe } from './modules/shared/pipes/substract-date/substract-date.pipe'; @NgModule({ declarations: [ @@ -90,6 +91,7 @@ import { InjectTokenInterceptor } from './modules/shared/interceptors/inject.tok ProjectTypeListComponent, CreateProjectTypeComponent, EntryFieldsComponent, + SubstractDatePipe, ], imports: [ CommonModule, diff --git a/src/app/modules/shared/pipes/substract-date/substract-date.pipe.spec.ts b/src/app/modules/shared/pipes/substract-date/substract-date.pipe.spec.ts new file mode 100644 index 000000000..43c25f0ad --- /dev/null +++ b/src/app/modules/shared/pipes/substract-date/substract-date.pipe.spec.ts @@ -0,0 +1,17 @@ +import { SubstractDatePipe } from './substract-date.pipe'; + +describe('SubstractDatePipe', () => { + it('create an instance', () => { + const pipe = new SubstractDatePipe(); + expect(pipe).toBeTruthy(); + }); + + it('returns the date diff', () => { + const fromDate = new Date('2011-04-11T10:20:30Z'); + const substractDate = new Date('2011-04-11T08:00:30Z'); + + const diff = new SubstractDatePipe().transform(fromDate, substractDate); + + expect(diff).toBe('02:20'); + }); +}); diff --git a/src/app/modules/shared/pipes/substract-date/substract-date.pipe.ts b/src/app/modules/shared/pipes/substract-date/substract-date.pipe.ts new file mode 100644 index 000000000..a30eb26d3 --- /dev/null +++ b/src/app/modules/shared/pipes/substract-date/substract-date.pipe.ts @@ -0,0 +1,22 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'substractDate' +}) +export class SubstractDatePipe implements PipeTransform { + + transform(fromDate: Date, substractDate: Date): string { + const difference = fromDate.valueOf() - substractDate.valueOf(); + + const minutes = Math.floor((difference / (1000 * 60)) % 60); + const hours = Math.floor(difference / (1000 * 60 * 60) % 24); + + return `${this.formatTime(hours)}:${this.formatTime(minutes)}`; + } + + formatTime(time: number): string { + const formattedTime = (time < 10) ? '0' + time : time.toString(); + return formattedTime; + } + +}