From 830297fc707dd88fdef37e68a4cb5e5449797ff7 Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 18 Mar 2024 13:23:55 +0100 Subject: [PATCH] Fix date/time validations on item cards [SCI-10458] --- .../repository_values/date_time_component.vue | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/javascript/vue/repository_item_sidebar/repository_values/date_time_component.vue b/app/javascript/vue/repository_item_sidebar/repository_values/date_time_component.vue index ce37eb686..d9b813d82 100644 --- a/app/javascript/vue/repository_item_sidebar/repository_values/date_time_component.vue +++ b/app/javascript/vue/repository_item_sidebar/repository_values/date_time_component.vue @@ -100,6 +100,8 @@ export default { return this.i18n.t('repositories.item_card.repository_time_value.placeholder'); case 'datetime': return this.i18n.t('repositories.item_card.repository_date_time_value.placeholder'); + default: + return ''; } }, viewPlaceholder() { @@ -119,6 +121,8 @@ export default { return this.i18n.t('repositories.item_card.repository_date_time_range_value.no_date_time_range'); } return this.i18n.t('repositories.item_card.repository_date_time_value.no_date_time'); + default: + return ''; } } }, @@ -132,17 +136,25 @@ export default { if (!(this.endDate instanceof Date)) this.update(); }, trimSecondsAndMilliseconds(date) { + if (!date) return null; + if (!(date instanceof Date)) return null; + + if (this.mode === 'time') { + return new Date().setHours(date.getHours(), date.getMinutes(), 0, 0); + } + return date.setSeconds(0, 0); }, validateValue() { this.error = null; + const oldStart = this.trimSecondsAndMilliseconds(this.defaultStartDate); + const oldEnd = this.trimSecondsAndMilliseconds(this.defaultEndDate); + const newStart = this.trimSecondsAndMilliseconds(this.startDate); + const newEnd = this.trimSecondsAndMilliseconds(this.endDate); // Date is not changed - if (this.defaultStartDate && this.defaultEndDate) { - if (this.trimSecondsAndMilliseconds(this.defaultStartDate) === this.trimSecondsAndMilliseconds(this.startDate) - && this.trimSecondsAndMilliseconds(this.defaultEndDate) === this.trimSecondsAndMilliseconds(this.endDate)) { - return false; - } - } + if (oldEnd) { + if (oldStart === newStart && oldEnd === newEnd) return false; + } else if (oldStart === newStart) return false; if (this.range) { // Both empty