From 368322f906eee29a9ec2a746dc5fd6e3a6d74646 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Thu, 26 Sep 2024 00:46:42 +0800 Subject: [PATCH] initial display mode of the date time sheet in mobile version depends on the click content (#28) --- .../mobile/DateTimeSelectionSheet.vue | 11 ++-- src/views/mobile/transactions/EditPage.vue | 58 ++++++++++++++++--- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/src/components/mobile/DateTimeSelectionSheet.vue b/src/components/mobile/DateTimeSelectionSheet.vue index 9591463d..3bae9636 100644 --- a/src/components/mobile/DateTimeSelectionSheet.vue +++ b/src/components/mobile/DateTimeSelectionSheet.vue @@ -70,6 +70,7 @@ import { createInlinePicker } from '@/lib/ui.mobile.js'; export default { props: [ 'modelValue', + 'initMode', 'show' ], emits: [ @@ -93,7 +94,7 @@ export default { const datetime = getLocalDatetimeFromUnixTime(value); return { - mode: 'time', + mode: self.initMode || 'time', yearRange: [ 2000, getCurrentYear() + 1 @@ -136,7 +137,7 @@ export default { methods: { onSheetOpen() { const self = this; - self.mode = 'time'; + self.mode = self.initMode || 'time'; if (self.modelValue) { self.dateTime = getLocalDatetimeFromUnixTime(self.modelValue); @@ -148,8 +149,10 @@ export default { self.timePickerHolder = createInlinePicker('#time-picker-container', '#time-picker-input', self.getTimePickerColumns(), self.timeValues, { change(picker, values) { - self.timeValues = values; - self.dateTime = getCombinedDateAndTimeValues(self.dateTime, self.timeValues, self.is24Hour, self.isMeridiemIndicatorFirst); + if (self.mode === 'time') { + self.timeValues = values; + self.dateTime = getCombinedDateAndTimeValues(self.dateTime, self.timeValues, self.is24Hour, self.isMeridiemIndicatorFirst); + } } }); } else { diff --git a/src/views/mobile/transactions/EditPage.vue b/src/views/mobile/transactions/EditPage.vue index d700c466..c34797c1 100644 --- a/src/views/mobile/transactions/EditPage.vue +++ b/src/views/mobile/transactions/EditPage.vue @@ -230,15 +230,21 @@ - +
{{ $t('Transaction Time') }}
+ + +
@@ -486,6 +492,7 @@ export default { uploadingPicture: false, removingPictureId: null, isSupportGeoLocation: !!navigator.geolocation, + transactionDateTimeSheetMode: 'time', showTimeInDefaultTimezone: false, showGeoLocationActionSheet: false, showMoreActionSheet: false, @@ -665,12 +672,19 @@ export default { return this.$t('None'); } }, - transactionDisplayTime() { + transactionDisplayDate() { if (this.mode !== 'view' || !this.showTimeInDefaultTimezone) { - return this.$locale.formatUnixTimeToLongDateTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes())) + return this.$locale.formatUnixTimeToLongDate(this.userStore, getActualUnixTimeForStore(this.transaction.time, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes())); } - return `${this.$locale.formatUnixTimeToLongDateTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, this.transaction.utcOffset, getBrowserTimezoneOffsetMinutes()))} (UTC${getTimezoneOffset(this.settingsStore.appSettings.timeZone)})`; + return this.$locale.formatUnixTimeToLongDate(this.userStore, getActualUnixTimeForStore(this.transaction.time, this.transaction.utcOffset, getBrowserTimezoneOffsetMinutes())); + }, + transactionDisplayTime() { + if (this.mode !== 'view' || !this.showTimeInDefaultTimezone) { + return this.$locale.formatUnixTimeToLongTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, getTimezoneOffsetMinutes(), getBrowserTimezoneOffsetMinutes())); + } + + return `${this.$locale.formatUnixTimeToLongTime(this.userStore, getActualUnixTimeForStore(this.transaction.time, this.transaction.utcOffset, getBrowserTimezoneOffsetMinutes()))} (UTC${getTimezoneOffset(this.settingsStore.appSettings.timeZone)})`; }, transactionDisplayScheduledFrequency() { if (this.type !== 'template') { @@ -1222,6 +1236,14 @@ export default { this.transaction.destinationAmount = oldSourceAmount; } }, + showDateTimeDialog(sheetMode) { + if (this.mode === 'view') { + this.showTimeInDefaultTimezone = !this.showTimeInDefaultTimezone; + } else { + this.transactionDateTimeSheetMode = sheetMode; + this.showTransactionDateTimeSheet = true; + } + }, showOpenPictureDialog() { if (!this.canAddTransactionPicture || this.submitting) { return; @@ -1355,6 +1377,26 @@ export default { padding-top: calc(var(--f7-typography-padding) / 2); } +.transaction-edit-datetime .item-title { + width: 100%; +} + +.transaction-edit-datetime .item-title > .item-header > .transaction-edit-datetime-header { + display: block; + width: 100%; +} + +.transaction-edit-datetime .item-title > .transaction-edit-datetime-title { + display: flex; + width: 100%; +} + +.transaction-edit-datetime .item-title > .transaction-edit-datetime-title > .transaction-edit-datetime-time { + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; +} + .transaction-edit-timezone-name { padding-left: 4px; }