diff --git a/src/locales/de.json b/src/locales/de.json
index af59ef40..d13109c1 100644
--- a/src/locales/de.json
+++ b/src/locales/de.json
@@ -1521,6 +1521,9 @@
"Swap Account": "Konto tauschen",
"Swap Amount": "Betrag tauschen",
"Swap Account and Amount": "Konto und Betrag tauschen",
+ "Duplicate (With Time)": "Duplicate (With Time)",
+ "Duplicate (With Geographic Location)": "Duplicate (With Geographic Location)",
+ "Duplicate (With Time and Geographic Location)": "Duplicate (With Time and Geographic Location)",
"Category": "Kategorie",
"Multiple Categories": "Mehrere Kategorien",
"Account": "Konto",
diff --git a/src/locales/en.json b/src/locales/en.json
index 15ebbadf..568661d4 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -1521,6 +1521,9 @@
"Swap Account": "Swap Account",
"Swap Amount": "Swap Amount",
"Swap Account and Amount": "Swap Account and Amount",
+ "Duplicate (With Time)": "Duplicate (With Time)",
+ "Duplicate (With Geographic Location)": "Duplicate (With Geographic Location)",
+ "Duplicate (With Time and Geographic Location)": "Duplicate (With Time and Geographic Location)",
"Category": "Category",
"Multiple Categories": "Multiple Categories",
"Account": "Account",
diff --git a/src/locales/es.json b/src/locales/es.json
index 40da4136..eabba553 100644
--- a/src/locales/es.json
+++ b/src/locales/es.json
@@ -1521,6 +1521,9 @@
"Swap Account": "Intercambiar cuenta",
"Swap Amount": "Intercambiar importe",
"Swap Account and Amount": "Intercambiar Cuenta e Importe",
+ "Duplicate (With Time)": "Duplicate (With Time)",
+ "Duplicate (With Geographic Location)": "Duplicate (With Geographic Location)",
+ "Duplicate (With Time and Geographic Location)": "Duplicate (With Time and Geographic Location)",
"Category": "Categoría",
"Multiple Categories": "Múltiples categorías",
"Account": "Cuenta",
diff --git a/src/locales/ru.json b/src/locales/ru.json
index f99af0bc..c35ab45d 100644
--- a/src/locales/ru.json
+++ b/src/locales/ru.json
@@ -1521,6 +1521,9 @@
"Swap Account": "Поменять счет",
"Swap Amount": "Поменять сумму",
"Swap Account and Amount": "Поменять счет и сумму",
+ "Duplicate (With Time)": "Duplicate (With Time)",
+ "Duplicate (With Geographic Location)": "Duplicate (With Geographic Location)",
+ "Duplicate (With Time and Geographic Location)": "Duplicate (With Time and Geographic Location)",
"Category": "Категория",
"Multiple Categories": "Несколько категорий",
"Account": "Счет",
diff --git a/src/locales/vi.json b/src/locales/vi.json
index 3ceaad43..66f1e274 100644
--- a/src/locales/vi.json
+++ b/src/locales/vi.json
@@ -1521,6 +1521,9 @@
"Swap Account": "Hoán đổi tài khoản",
"Swap Amount": "Hoán đổi số tiền",
"Swap Account and Amount": "Hoán đổi tài khoản và số tiền",
+ "Duplicate (With Time)": "Duplicate (With Time)",
+ "Duplicate (With Geographic Location)": "Duplicate (With Geographic Location)",
+ "Duplicate (With Time and Geographic Location)": "Duplicate (With Time and Geographic Location)",
"Category": "Danh mục",
"Multiple Categories": "Nhiều danh mục",
"Account": "Tài khoản",
diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json
index 8623b745..7edcb171 100644
--- a/src/locales/zh_Hans.json
+++ b/src/locales/zh_Hans.json
@@ -1521,6 +1521,9 @@
"Swap Account": "交换账户",
"Swap Amount": "交换金额",
"Swap Account and Amount": "交换账户和金额",
+ "Duplicate (With Time)": "复制 (含时间)",
+ "Duplicate (With Geographic Location)": "复制 (含地理位置)",
+ "Duplicate (With Time and Geographic Location)": "复制 (含时间和地理位置)",
"Category": "分类",
"Multiple Categories": "多个分类",
"Account": "账户",
diff --git a/src/views/desktop/transactions/list/dialogs/EditDialog.vue b/src/views/desktop/transactions/list/dialogs/EditDialog.vue
index a07816d7..858713b7 100644
--- a/src/views/desktop/transactions/list/dialogs/EditDialog.vue
+++ b/src/views/desktop/transactions/list/dialogs/EditDialog.vue
@@ -382,9 +382,26 @@
{{ tt(saveButtonTitle) }}
- {{ tt('Duplicate') }}
+
+ {{ tt('Duplicate') }}
+
+
+
+
+
+
+
+
+
+
+
{{ tt('Edit') }}
@@ -461,6 +478,7 @@ import {
mdiEyeOutline,
mdiSwapHorizontal,
mdiPound,
+ mdiMenuDown,
mdiImagePlusOutline,
mdiTrashCanOutline,
mdiFullscreen
@@ -863,7 +881,7 @@ function save(): void {
}
}
-function duplicate(): void {
+function duplicate(withTime?: boolean, withGeoLocation?: boolean): void {
if (props.type !== TransactionEditPageType.Transaction || mode.value !== TransactionEditPageMode.View) {
return;
}
@@ -872,10 +890,17 @@ function duplicate(): void {
duplicateFromId.value = transaction.value.id;
activeTab.value = 'basicInfo';
transaction.value.id = '';
- transaction.value.time = getCurrentUnixTime();
- transaction.value.timeZone = settingsStore.appSettings.timeZone;
- transaction.value.utcOffset = getTimezoneOffsetMinutes(transaction.value.timeZone);
- transaction.value.removeGeoLocation();
+
+ if (!withTime) {
+ transaction.value.time = getCurrentUnixTime();
+ transaction.value.timeZone = settingsStore.appSettings.timeZone;
+ transaction.value.utcOffset = getTimezoneOffsetMinutes(transaction.value.timeZone);
+ }
+
+ if (!withGeoLocation) {
+ transaction.value.removeGeoLocation();
+ }
+
transaction.value.clearPictures();
mode.value = TransactionEditPageMode.Add;
}
diff --git a/src/views/mobile/transactions/EditPage.vue b/src/views/mobile/transactions/EditPage.vue
index c632d377..538343b3 100644
--- a/src/views/mobile/transactions/EditPage.vue
+++ b/src/views/mobile/transactions/EditPage.vue
@@ -4,7 +4,7 @@
-
+
@@ -403,18 +403,24 @@
-
+
{{ tt('Swap Account') }}
{{ tt('Swap Amount') }}
{{ tt('Swap Account and Amount') }}
-
+
{{ tt('Show Amount') }}
{{ tt('Hide Amount') }}
{{ tt('Add Picture') }}
+
+ {{ tt('Duplicate') }}
+ {{ tt('Duplicate (With Time)') }}
+ {{ tt('Duplicate (With Geographic Location)') }}
+ {{ tt('Duplicate (With Time and Geographic Location)') }}
+
{{ tt('Cancel') }}
@@ -863,7 +869,17 @@ function init(): void {
pageTypeAndMode.type === TransactionEditPageType.Transaction && (mode.value === TransactionEditPageMode.Edit || mode.value === TransactionEditPageMode.View)
);
- if (pageTypeAndMode.type === TransactionEditPageType.Template && query['id'] && responses[4] instanceof TransactionTemplate) {
+ if (pageTypeAndMode.type === TransactionEditPageType.Transaction && query['id'] && responses[4] instanceof Transaction) {
+ if (fromTransaction && query['withTime'] && query['withTime'] === 'true') {
+ transaction.value.time = fromTransaction.time;
+ transaction.value.timeZone = fromTransaction.timeZone;
+ transaction.value.utcOffset = fromTransaction.utcOffset;
+ }
+
+ if (fromTransaction && query['withGeoLocation'] && query['withGeoLocation'] === 'true') {
+ transaction.value.setGeoLocation(fromTransaction.geoLocation);
+ }
+ } else if (pageTypeAndMode.type === TransactionEditPageType.Template && query['id'] && responses[4] instanceof TransactionTemplate) {
const template = responses[4];
transaction.value.id = template.id;
@@ -1117,6 +1133,10 @@ function viewOrRemovePicture(pictureInfo: TransactionPictureInfoBasicResponse):
});
}
+function duplicate(withTime?: boolean, withGeoLocation?: boolean): void {
+ props.f7router.navigate(`/transaction/add?id=${transaction.value.id}&type=${transaction.value.type}&withTime=${withTime ?? false}&withGeoLocation=${withGeoLocation ?? false}`);
+}
+
function onPageAfterIn(): void {
routeBackOnError(props.f7router, loadingError);