diff --git a/index.cds b/index.cds index 48f2a02..d55b10d 100644 --- a/index.cds +++ b/index.cds @@ -84,7 +84,8 @@ annotate ChangeView with @(UI: { RequestAtLeast: [ parentKey, serviceEntity, - serviceEntityPath + serviceEntityPath, + valueDataType ], SortOrder : [{ Property : createdAt, diff --git a/lib/localization.js b/lib/localization.js index 2eeee21..8d88b6d 100644 --- a/lib/localization.js +++ b/lib/localization.js @@ -101,6 +101,20 @@ const _getLabelI18nKeyOnEntity = function (entityName, /** optinal */ attribute) return def['@Common.Label'] || def['@title'] || def['@UI.HeaderInfo.TypeName']; }; +const dateFormatOptions = { + year: 'numeric', + month: 'short', + day: 'numeric', +} +const _localizeDates = (change, locale) => { + if (change.valueDataType === 'cds.Date') { + if (change.valueChangedFrom) + change.valueChangedFrom = new Date(change.valueChangedFrom).toLocaleDateString(locale.replaceAll('_', '-'), dateFormatOptions) //locale.replace because en_GB is unknown to function and it has to be en-GB + if (change.valueChangedTo) + change.valueChangedTo = new Date(change.valueChangedTo).toLocaleDateString(locale.replaceAll('_', '-'), dateFormatOptions) + } +} + const localizeLogFields = function (data, locale) { if (!locale) return for (const change of data) { @@ -108,6 +122,7 @@ const localizeLogFields = function (data, locale) { _localizeAttribute(change, locale); _localizeEntityType(change, locale); _localizeDefaultObjectID(change, locale); + _localizeDates(change, locale); } }; module.exports = { diff --git a/tests/integration/fiori-draft-enabled.test.js b/tests/integration/fiori-draft-enabled.test.js index c114449..f0e9a6a 100644 --- a/tests/integration/fiori-draft-enabled.test.js +++ b/tests/integration/fiori-draft-enabled.test.js @@ -1434,7 +1434,7 @@ describe("change log integration test", () => { expect(registryChange.objectID).to.equal("San Francisco-2"); expect(registryChange.entity).to.equal("Book Store Registry"); expect(registryChange.valueChangedFrom).to.equal(""); - expect(registryChange.valueChangedTo).to.equal("2022-01-01"); + expect(registryChange.valueChangedTo).to.equal("Jan 1, 2022"); expect(registryChange.parentKey).to.equal("01234567-89ab-cdef-0123-456789abcdef"); expect(registryChange.parentObjectID).to.equal("Murder on the Orient Express"); }); @@ -1465,8 +1465,8 @@ describe("change log integration test", () => { const registryChange = registryChanges[0]; expect(registryChange.attribute).to.equal("Valid On"); expect(registryChange.modification).to.equal("Update"); - expect(registryChange.valueChangedFrom).to.equal("2022-10-15"); - expect(registryChange.valueChangedTo).to.equal("2022-01-01"); + expect(registryChange.valueChangedFrom).to.equal("Oct 15, 2022"); + expect(registryChange.valueChangedTo).to.equal("Jan 1, 2022"); expect(registryChange.parentKey).to.equal("5ab2a87b-3a56-4d97-a697-7af72334a384"); expect(registryChange.parentObjectID).to.equal("The Strand"); }); @@ -1491,8 +1491,8 @@ describe("change log integration test", () => { const registryChange = registryChanges[0]; expect(registryChange.attribute).to.equal("Valid On"); expect(registryChange.modification).to.equal("Update"); - expect(registryChange.valueChangedFrom).to.equal("2018-09-01"); - expect(registryChange.valueChangedTo).to.equal("2022-01-01"); + expect(registryChange.valueChangedFrom).to.equal("Sep 1, 2018"); + expect(registryChange.valueChangedTo).to.equal("Jan 1, 2022"); expect(registryChange.parentKey).to.equal("8aaed432-8336-4b0d-be7e-3ef1ce7f13ea"); expect(registryChange.parentObjectID).to.equal("City Lights Books"); }); @@ -1513,7 +1513,7 @@ describe("change log integration test", () => { const registryChange = registryChanges[0]; expect(registryChange.attribute).to.equal("Valid On"); expect(registryChange.modification).to.equal("Delete"); - expect(registryChange.valueChangedFrom).to.equal("2018-09-01"); + expect(registryChange.valueChangedFrom).to.equal("Sep 1, 2018"); expect(registryChange.valueChangedTo).to.equal(""); expect(registryChange.parentKey).to.equal("8aaed432-8336-4b0d-be7e-3ef1ce7f13ea"); expect(registryChange.parentObjectID).to.equal("City Lights Books");