diff --git a/app/javascript/vue/repository_item_sidebar/mixins/date_time_range.js b/app/javascript/vue/repository_item_sidebar/mixins/date_time_range.js index c06c95e9a..ba6135234 100644 --- a/app/javascript/vue/repository_item_sidebar/mixins/date_time_range.js +++ b/app/javascript/vue/repository_item_sidebar/mixins/date_time_range.js @@ -11,61 +11,46 @@ export default { return 'border-sn-light-grey hover:border-sn-sleepy-grey'; }, isEditable() { - return this.isEditing && this.editingField === this.dateType; - }, + return this.isEditing && this.editingField === this.dateType + } }, methods: { enableEdit() { - this.isEditing = true; - this.$emit('setEditingField', this.dateType); + this.isEditing = true + this.$emit('setEditingField', this.dateType) }, saveChange() { - if ( - !this.isEditing - || this.isSaving - || !this.params - || (this.params && !Object.keys(this.params).includes(this.colId?.toString())) - ) { - Object.assign(this.$data, { - isEditing: false, - isSaving: false, - errorMessage: null, - }); + if (!this.isEditing || + this.isSaving || + !this.params || + (this.params && !Object.keys(this.params).includes(this.colId?.toString()))) { + Object.assign(this.$data, { isEditing: false, isSaving: false, errorMessage: null }); return; - } + }; // Don't submit unless values changed switch (true) { case ['date', 'dateTime', 'time'].includes(this.dateType): - if (this.equalDates(this.params[this.colId], this.initDate)) { + if(this.equalDates(this.params[this.colId], this.initDate)) { Object.assign(this.$data, { isEditing: false, isSaving: false }); return; } - if ( - this.dateType === 'time' - && this.equalTimes(this.params[this.colId], this.initDate) - ) { + if(this.dateType === 'time' && this.equalTimes(this.params[this.colId], this.initDate)) { Object.assign(this.$data, { isEditing: false, isSaving: false }); return; } - break; case ['dateRange', 'dateTimeRange', 'timeRange'].includes(this.dateType): - if ( - this.equalDates(this.timeFrom?.datetime, this.initStartDate) - && this.equalDates(this.timeTo?.datetime, this.initEndDate) - ) { + if (this.equalDates(this.timeFrom?.datetime, this.initStartDate) && + this.equalDates(this.timeTo?.datetime, this.initEndDate)) { Object.assign(this.$data, { isEditing: false, isSaving: false }); return; } - if ( - this.dateType === 'timeRange' - && this.equalTimes(this.timeFrom?.datetime, this.initStartDate) - && this.equalTimes(this.timeTo?.datetime, this.initEndDate) - ) { + if (this.dateType === 'timeRange' && + this.equalTimes(this.timeFrom?.datetime, this.initStartDate) && + this.equalTimes(this.timeTo?.datetime, this.initEndDate)) { Object.assign(this.$data, { isEditing: false, isSaving: false }); return; } - break; default: break; } @@ -80,34 +65,28 @@ export default { const cellValue = result?.value; switch (true) { case ['date', 'dateTime', 'time'].includes(this.dateType): - this.values = cellValue; - this.initDate = cellValue?.datetime; - break; + this.values = cellValue + this.initDate = cellValue?.datetime case ['dateRange', 'dateTimeRange', 'timeRange'].includes(this.dateType): this.initStartDate = cellValue?.start_time?.datetime; this.initEndDate = cellValue?.end_time?.datetime; - break; default: break; } - Object.assign($this.$data, { - isEditing: false, - isSaving: false, - values: result?.value, - }); + Object.assign($this.$data, { isEditing: false, isSaving: false, values: result?.value }); if ($('.dataTable')[0]) $('.dataTable').DataTable().ajax.reload(null, false); - }, + } }); }, setParams() { - const defaultParams = this.params ? this.params : { [this.colId]: {} }; + let defaultParams = this.params ? this.params : { [this.colId]: {} }; switch (true) { case ['date', 'dateTime', 'time'].includes(this.dateType): defaultParams[this.colId] = this.values?.datetime; break; case ['dateRange', 'dateTimeRange', 'timeRange'].includes(this.dateType): - defaultParams[this.colId].start_time = this.timeFrom?.datetime; - defaultParams[this.colId].end_time = this.timeTo?.datetime; + defaultParams[this.colId]['start_time'] = this.timeFrom?.datetime; + defaultParams[this.colId]['end_time'] = this.timeTo?.datetime; break; default: break; @@ -115,23 +94,21 @@ export default { this.params = defaultParams; }, formatDateTime(date, field = null) { - this.values = this.values ? this.values : { [this.colId]: {} }; - const params = this.params && this.params[this.colId] - ? this.params - : { [this.colId]: {} }; - const timeFrom = this.timeFrom || {}; - const timeTo = this.timeTo || {}; + this.values = this.values ? this.values : { [this.colId]: {} } + let params = this.params && this.params[this.colId] ? this.params : { [this.colId]: {} }; + let timeFrom = this.timeFrom || {}; + let timeTo = this.timeTo || {}; switch (true) { case ['date', 'dateTime', 'time'].includes(this.dateType): params[this.colId] = date; - this.values.datetime = date; + this.values['datetime'] = date; break; case ['dateRange', 'dateTimeRange', 'timeRange'].includes(this.dateType): if (field === 'start_time') { - timeFrom.datetime = date; + timeFrom['datetime'] = date; } - if (field === 'end_time') { - timeTo.datetime = date; + if (field === 'end_time'){ + timeTo['datetime'] = date; } params[this.colId][field] = date; break; @@ -144,30 +121,22 @@ export default { }, dateValue(date) { const typesThatCantBeEmpty = ['dateRange', 'dateTimeRange']; - if ( - date - && date.currentTarget === null - && typesThatCantBeEmpty.includes(this.dateType) - ) { + if (date && (date.currentTarget === null) && typesThatCantBeEmpty.includes(this.dateType)) { this.errorMessage = I18n.t('repositories.item_card.date_time.errors.select_valid_value'); - return null; + return; } - if (date) return new Date(date); - return null; + if(date) return new Date(date) + return new Date() }, - hasMonthText() { - $('body') - .data('datetime-picker-format') - ?.match(/MMM/); + hasMonthText(){ + $('body').data('datetime-picker-format')?.match(/MMM/) }, - equalDates(date1, date2) { + equalDates(date1, date2){ return new Date(date1).getTime() === new Date(date2).getTime(); }, - equalTimes(date1, date2) { - return ( - new Date(date1).getHours() === new Date(date2).getHours() - && new Date(date1).getMinutes() === new Date(date2).getMinutes() - ); + equalTimes(date1, date2){ + return new Date(date1).getHours() === new Date(date2).getHours() && + new Date(date1).getMinutes() == new Date(date2).getMinutes() }, validateAndSave() { this.errorMessage = null; @@ -176,38 +145,28 @@ export default { // To do break; case ['dateRange', 'dateTimeRange', 'timeRange'].includes(this.dateType): - if (!this.params?.[this.colId]) return; - - // start_time and end_time must be both present or both absent - if ( - !!this.params[this.colId]?.start_time?.getTime?.() - ^ !!this.params[this.colId]?.end_time?.getTime?.() - ) { - this.errorMessage = I18n.t('repositories.item_card.date_time.errors.not_valid_range'); - return; - } - - // start_time should always be lesser then end_time - if ( - this.params[this.colId]?.start_time?.getTime?.() - && this.params[this.colId].start_time.getTime() > this.params[this.colId].end_time.getTime() - ) { - this.errorMessage = I18n.t('repositories.item_card.date_time.errors.not_valid_range'); - return; - } - - // start_time and end_time both are absent - if ( - !this.params[this.colId]?.start_time - && !this.params[this.colId]?.end_time - ) { - this.params = { [this.colId]: null }; + if(this.params && this.params[this.colId]) { + if((!this.params[this.colId].start_time && this.params[this.colId].end_time) || + (this.params[this.colId].start_time && !this.params[this.colId].end_time)) { + this.errorMessage = I18n.t('repositories.item_card.date_time.errors.not_valid_range'); + return; + } + if (this.params[this.colId].start_time && this.params[this.colId].end_time && + this.params[this.colId].start_time.getTime() && this.params[this.colId].end_time.getTime()) { + if(this.params[this.colId].start_time.getTime() > this.params[this.colId].end_time.getTime()) { + this.errorMessage = I18n.t('repositories.item_card.date_time.errors.not_valid_range'); + return + } + } + if (!this.params[this.colId].start_time && !this.params[this.colId].end_time) { + this.params = { [this.colId]: null } + } } break; default: break; } this.saveChange(); - }, + } }, }; diff --git a/app/javascript/vue/repository_item_sidebar/repository_values/DateTimeRange.vue b/app/javascript/vue/repository_item_sidebar/repository_values/DateTimeRange.vue index 07edfb9dd..50b5284ca 100644 --- a/app/javascript/vue/repository_item_sidebar/repository_values/DateTimeRange.vue +++ b/app/javascript/vue/repository_item_sidebar/repository_values/DateTimeRange.vue @@ -1,385 +1,297 @@ diff --git a/app/javascript/vue/repository_item_sidebar/repository_values/ScrollSpy.vue b/app/javascript/vue/repository_item_sidebar/repository_values/ScrollSpy.vue index 480080f38..2db7a371f 100644 --- a/app/javascript/vue/repository_item_sidebar/repository_values/ScrollSpy.vue +++ b/app/javascript/vue/repository_item_sidebar/repository_values/ScrollSpy.vue @@ -42,6 +42,7 @@ export default { }, mounted() { + console.log('mounted'); window.addEventListener('resize', this.handleResize); this.initializeComponent(); this.$nextTick(() => { diff --git a/app/javascript/vue/shared/date_time_picker.vue b/app/javascript/vue/shared/date_time_picker.vue index 2abf27797..418d8b42d 100644 --- a/app/javascript/vue/shared/date_time_picker.vue +++ b/app/javascript/vue/shared/date_time_picker.vue @@ -18,10 +18,6 @@ week-start="0" :enable-time-picker="mode == 'datetime'" :time-picker="mode == 'time'" - :hide-input-icon="inputIconHidden" - :input-class-name="inputClassName" - @open="this.$emit('open')" - @close="this.$emit('close')" :placeholder="placeholder" >