From 0ea180aecd2156777b03fd6d0213785777da9404 Mon Sep 17 00:00:00 2001 From: Tobias Schweizer Date: Wed, 9 Jun 2021 16:49:48 +0200 Subject: [PATCH 1/2] feat(action): improve date pipe so it can handle calendar dates without era --- .../pipes/formatting/knoradate.pipe.spec.ts | 16 ++++++++++++++++ .../action/pipes/formatting/knoradate.pipe.ts | 12 +++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts b/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts index 509cc061f..ab4d7442a 100644 --- a/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts +++ b/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts @@ -54,6 +54,22 @@ describe('KnoradatePipe', () => { expect(dateWithDisplayOptions).toEqual('04.07.1776 AD GREGORIAN'); }); + it ('should return a string with the desired display options for a date without era', () => { + const date = new KnoraDate('ISLAMIC', 'noEra', 1441, 7, 4); + + let dateWithDisplayOptions = pipe.transform(date, 'dd.MM.YYYY', 'era'); + + expect(dateWithDisplayOptions).toEqual('04.07.1441'); + + dateWithDisplayOptions = pipe.transform(date, 'dd.MM.YYYY', 'calendar'); + + expect(dateWithDisplayOptions).toEqual('04.07.1441 ISLAMIC'); + + dateWithDisplayOptions = pipe.transform(date, 'dd.MM.YYYY', 'all'); + + expect(dateWithDisplayOptions).toEqual('04.07.1441 ISLAMIC'); + }); + it ('should return a string with only the month and the year', () => { const date = new KnoraDate('GREGORIAN', 'AD', 1776, 7); diff --git a/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.ts b/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.ts index 8b2f60cfc..ac751d81f 100644 --- a/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.ts +++ b/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.ts @@ -6,20 +6,18 @@ import { KnoraDate } from '@dasch-swiss/dsp-js'; }) export class KnoraDatePipe implements PipeTransform { - formattedString: string; - transform(date: KnoraDate, format?: string, displayOptions?: 'era' | 'calendar' | 'all'): string { if (!(date instanceof KnoraDate)) { console.error('Non-KnoraDate provided. Expected a valid KnoraDate'); return ''; } - this.formattedString = this.getFormattedString(date, format); + const formattedString = this.getFormattedString(date, format); if (displayOptions) { - return this.addDisplayOptions(date, this.formattedString, displayOptions); + return this.addDisplayOptions(date, formattedString, displayOptions); } else { - return this.formattedString; + return formattedString; } } @@ -36,11 +34,11 @@ export class KnoraDatePipe implements PipeTransform { addDisplayOptions(date: KnoraDate, value: string, options: string): string { switch (options) { case 'era': - return value + ' ' + date.era; + return value + (date.era !== 'noEra' ? ' ' + date.era : ''); case 'calendar': return value + ' ' + date.calendar; case 'all': - return value + ' ' + date.era + ' ' + date.calendar; + return value + (date.era !== 'noEra' ? ' ' + date.era : '') + ' ' + date.calendar; } } From a14da8aff0a10c1c44de0d9a951d0ba2f86a0817 Mon Sep 17 00:00:00 2001 From: Tobias Schweizer Date: Wed, 9 Jun 2021 16:53:45 +0200 Subject: [PATCH 2/2] test(action): clarify spec name --- .../src/lib/action/pipes/formatting/knoradate.pipe.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts b/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts index ab4d7442a..4fafa0eb7 100644 --- a/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts +++ b/projects/dsp-ui/src/lib/action/pipes/formatting/knoradate.pipe.spec.ts @@ -17,7 +17,7 @@ describe('KnoradatePipe', () => { expect(convertedDate).toEqual('10.10.1993'); }); - it('should return the correct format depending on the format provided', () => { + it('should return the correct format for a date with day precision depending on the format provided', () => { const date = new KnoraDate('GREGORIAN', 'AD', 1776, 7, 4); let convertedDate = pipe.transform(date, 'dd.MM.YYYY');