remember last selected file type in import transaction dialog (#412)

This commit is contained in:
MaysWind
2026-01-05 00:48:47 +08:00
parent c64b4502cb
commit 9a037ace5a
26 changed files with 201 additions and 4 deletions
+3
View File
@@ -29,6 +29,9 @@ var ALL_ALLOWED_CLOUD_SYNC_APP_SETTING_KEY_TYPES = map[string]UserApplicationClo
"autoSaveTransactionDraft": USER_APPLICATION_CLOUD_SETTING_TYPE_STRING, "autoSaveTransactionDraft": USER_APPLICATION_CLOUD_SETTING_TYPE_STRING,
"autoGetCurrentGeoLocation": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN, "autoGetCurrentGeoLocation": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN,
"alwaysShowTransactionPicturesInMobileTransactionEditPage": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN, "alwaysShowTransactionPicturesInMobileTransactionEditPage": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN,
// Import Transaction Dialog
"rememberLastSelectedFileTypeInImportTransactionDialog": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN,
"lastSelectedFileTypeInImportTransactionDialog": USER_APPLICATION_CLOUD_SETTING_TYPE_STRING,
// Insights Explorer Page // Insights Explorer Page
"insightsExplorerDefaultDateRangeType": USER_APPLICATION_CLOUD_SETTING_TYPE_NUMBER, "insightsExplorerDefaultDateRangeType": USER_APPLICATION_CLOUD_SETTING_TYPE_NUMBER,
"showTagInInsightsExplorerPage": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN, "showTagInInsightsExplorerPage": USER_APPLICATION_CLOUD_SETTING_TYPE_BOOLEAN,
+9
View File
@@ -50,6 +50,9 @@ export interface ApplicationSettings extends BaseApplicationSetting {
autoSaveTransactionDraft: string; autoSaveTransactionDraft: string;
autoGetCurrentGeoLocation: boolean; autoGetCurrentGeoLocation: boolean;
alwaysShowTransactionPicturesInMobileTransactionEditPage: boolean; alwaysShowTransactionPicturesInMobileTransactionEditPage: boolean;
// Import Transaction Dialog
rememberLastSelectedFileTypeInImportTransactionDialog: boolean;
lastSelectedFileTypeInImportTransactionDialog: string;
// Insights Explorer Page // Insights Explorer Page
insightsExplorerDefaultDateRangeType: number; insightsExplorerDefaultDateRangeType: number;
showTagInInsightsExplorerPage: boolean; showTagInInsightsExplorerPage: boolean;
@@ -117,6 +120,9 @@ export const ALL_ALLOWED_CLOUD_SYNC_APP_SETTING_KEY_TYPES: Record<string, UserAp
'autoSaveTransactionDraft': UserApplicationCloudSettingType.String, 'autoSaveTransactionDraft': UserApplicationCloudSettingType.String,
'autoGetCurrentGeoLocation': UserApplicationCloudSettingType.Boolean, 'autoGetCurrentGeoLocation': UserApplicationCloudSettingType.Boolean,
'alwaysShowTransactionPicturesInMobileTransactionEditPage': UserApplicationCloudSettingType.Boolean, 'alwaysShowTransactionPicturesInMobileTransactionEditPage': UserApplicationCloudSettingType.Boolean,
// Import Transaction Dialog
'rememberLastSelectedFileTypeInImportTransactionDialog': UserApplicationCloudSettingType.Boolean,
'lastSelectedFileTypeInImportTransactionDialog': UserApplicationCloudSettingType.String,
// Insights Explorer Page // Insights Explorer Page
'insightsExplorerDefaultDateRangeType': UserApplicationCloudSettingType.Number, 'insightsExplorerDefaultDateRangeType': UserApplicationCloudSettingType.Number,
'showTagInInsightsExplorerPage': UserApplicationCloudSettingType.Boolean, 'showTagInInsightsExplorerPage': UserApplicationCloudSettingType.Boolean,
@@ -169,6 +175,9 @@ export const DEFAULT_APPLICATION_SETTINGS: ApplicationSettings = {
autoSaveTransactionDraft: 'disabled', autoSaveTransactionDraft: 'disabled',
autoGetCurrentGeoLocation: false, autoGetCurrentGeoLocation: false,
alwaysShowTransactionPicturesInMobileTransactionEditPage: false, alwaysShowTransactionPicturesInMobileTransactionEditPage: false,
// Import Transaction Dialog
rememberLastSelectedFileTypeInImportTransactionDialog: true,
lastSelectedFileTypeInImportTransactionDialog: '',
// Insights Explorer Page // Insights Explorer Page
insightsExplorerDefaultDateRangeType: DEFAULT_TRANSACTION_EXPLORER_DATE_RANGE.type, insightsExplorerDefaultDateRangeType: DEFAULT_TRANSACTION_EXPLORER_DATE_RANGE.type,
showTagInInsightsExplorerPage: true, showTagInInsightsExplorerPage: true,
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Bestätigung jedes mal anzeigen", "Show Confirmation Every Time": "Bestätigung jedes mal anzeigen",
"Automatically Add Geolocation": "Geolocation automatisch hinzufügen", "Automatically Add Geolocation": "Geolocation automatisch hinzufügen",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Show Confirmation Every Time", "Show Confirmation Every Time": "Show Confirmation Every Time",
"Automatically Add Geolocation": "Automatically Add Geolocation", "Automatically Add Geolocation": "Automatically Add Geolocation",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Mostrar Confirmación Cada Vez", "Show Confirmation Every Time": "Mostrar Confirmación Cada Vez",
"Automatically Add Geolocation": "Agregar Geolocalización Automáticamente", "Automatically Add Geolocation": "Agregar Geolocalización Automáticamente",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Página de Cuentas", "Account List Page": "Página de Cuentas",
"Accounts Included in Total": "Cuentas Incluidas en el Total", "Accounts Included in Total": "Cuentas Incluidas en el Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Afficher la confirmation à chaque fois", "Show Confirmation Every Time": "Afficher la confirmation à chaque fois",
"Automatically Add Geolocation": "Ajouter automatiquement la géolocalisation", "Automatically Add Geolocation": "Ajouter automatiquement la géolocalisation",
"Always Show Transaction Pictures": "Toujours afficher les images de transaction", "Always Show Transaction Pictures": "Toujours afficher les images de transaction",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Page de liste des comptes", "Account List Page": "Page de liste des comptes",
"Accounts Included in Total": "Comptes inclus dans le total", "Accounts Included in Total": "Comptes inclus dans le total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Mostra conferma ogni volta", "Show Confirmation Every Time": "Mostra conferma ogni volta",
"Automatically Add Geolocation": "Aggiungi automaticamente geolocalizzazione", "Automatically Add Geolocation": "Aggiungi automaticamente geolocalizzazione",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "確認を毎回表示", "Show Confirmation Every Time": "確認を毎回表示",
"Automatically Add Geolocation": "座標を自動的に追加", "Automatically Add Geolocation": "座標を自動的に追加",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "ಪ್ರತಿ ಬಾರಿ ದೃಢೀಕರಣ ತೋರಿಸಿ", "Show Confirmation Every Time": "ಪ್ರತಿ ಬಾರಿ ದೃಢೀಕರಣ ತೋರಿಸಿ",
"Automatically Add Geolocation": "ಭೌಗೋಳಿಕ ಸ್ಥಾನವನ್ನು ಸ್ವಯಂ ಸೇರಿಸಿ", "Automatically Add Geolocation": "ಭೌಗೋಳಿಕ ಸ್ಥಾನವನ್ನು ಸ್ವಯಂ ಸೇರಿಸಿ",
"Always Show Transaction Pictures": "ವಹಿವಾಟು ಚಿತ್ರಗಳನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಿ", "Always Show Transaction Pictures": "ವಹಿವಾಟು ಚಿತ್ರಗಳನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಿ",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "ಖಾತೆ ಪಟ್ಟಿ ಪುಟ", "Account List Page": "ಖಾತೆ ಪಟ್ಟಿ ಪುಟ",
"Accounts Included in Total": "ಒಟ್ಟು ಮೊತ್ತದಲ್ಲಿ ಒಳಗೊಂಡ ಖಾತೆಗಳು", "Accounts Included in Total": "ಒಟ್ಟು ಮೊತ್ತದಲ್ಲಿ ಒಳಗೊಂಡ ಖಾತೆಗಳು",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "매번 확인 표시", "Show Confirmation Every Time": "매번 확인 표시",
"Automatically Add Geolocation": "지리적 위치 자동 추가", "Automatically Add Geolocation": "지리적 위치 자동 추가",
"Always Show Transaction Pictures": "거래 사진 항상 표시", "Always Show Transaction Pictures": "거래 사진 항상 표시",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "계좌 목록 페이지", "Account List Page": "계좌 목록 페이지",
"Accounts Included in Total": "총계에 포함된 계좌", "Accounts Included in Total": "총계에 포함된 계좌",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Elke keer bevestiging tonen", "Show Confirmation Every Time": "Elke keer bevestiging tonen",
"Automatically Add Geolocation": "Geolocatie automatisch toevoegen", "Automatically Add Geolocation": "Geolocatie automatisch toevoegen",
"Always Show Transaction Pictures": "Transactie-afbeeldingen altijd tonen", "Always Show Transaction Pictures": "Transactie-afbeeldingen altijd tonen",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Rekeningenpagina", "Account List Page": "Rekeningenpagina",
"Accounts Included in Total": "Rekeningen opgenomen in totaal", "Accounts Included in Total": "Rekeningen opgenomen in totaal",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Mostrar Confirmação Toda Vez", "Show Confirmation Every Time": "Mostrar Confirmação Toda Vez",
"Automatically Add Geolocation": "Adicionar Geolocalização Automaticamente", "Automatically Add Geolocation": "Adicionar Geolocalização Automaticamente",
"Always Show Transaction Pictures": "Sempre Mostrar Imagens de Transações", "Always Show Transaction Pictures": "Sempre Mostrar Imagens de Transações",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Показывать подтверждение каждый раз", "Show Confirmation Every Time": "Показывать подтверждение каждый раз",
"Automatically Add Geolocation": "Автоматически добавлять геолокацию", "Automatically Add Geolocation": "Автоматически добавлять геолокацию",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Vsakič prikaži potrditev", "Show Confirmation Every Time": "Vsakič prikaži potrditev",
"Automatically Add Geolocation": "Samodejno dodaj geolokacijo", "Automatically Add Geolocation": "Samodejno dodaj geolokacijo",
"Always Show Transaction Pictures": "Vedno prikaži slike transakcij", "Always Show Transaction Pictures": "Vedno prikaži slike transakcij",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Stran za vpoglede in raziskovanje", "Insights Explorer Page": "Stran za vpoglede in raziskovanje",
"Account List Page": "Stran s seznamom računov", "Account List Page": "Stran s seznamom računov",
"Accounts Included in Total": "Računi vključeni v skupno vsoto", "Accounts Included in Total": "Računi vključeni v skupno vsoto",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "แสดงการยืนยันทุกครั้ง", "Show Confirmation Every Time": "แสดงการยืนยันทุกครั้ง",
"Automatically Add Geolocation": "เพิ่มตำแหน่งทางภูมิศาสตร์อัตโนมัติ", "Automatically Add Geolocation": "เพิ่มตำแหน่งทางภูมิศาสตร์อัตโนมัติ",
"Always Show Transaction Pictures": "แสดงรูปภาพรายการเสมอ", "Always Show Transaction Pictures": "แสดงรูปภาพรายการเสมอ",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "หน้าบัญชี", "Account List Page": "หน้าบัญชี",
"Accounts Included in Total": "บัญชีที่รวมในผลรวม", "Accounts Included in Total": "บัญชีที่รวมในผลรวม",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Her Seferinde Onay Göster", "Show Confirmation Every Time": "Her Seferinde Onay Göster",
"Automatically Add Geolocation": "Otomatik Olarak Konum Ekle", "Automatically Add Geolocation": "Otomatik Olarak Konum Ekle",
"Always Show Transaction Pictures": "İşlem Resimlerini Her Zaman Göster", "Always Show Transaction Pictures": "İşlem Resimlerini Her Zaman Göster",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Hesap Listesi Sayfası", "Account List Page": "Hesap Listesi Sayfası",
"Accounts Included in Total": "Toplama Dahil Edilen Hesaplar", "Accounts Included in Total": "Toplama Dahil Edilen Hesaplar",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Показувати підтвердження щоразу", "Show Confirmation Every Time": "Показувати підтвердження щоразу",
"Automatically Add Geolocation": "Автоматично додавати геолокацію", "Automatically Add Geolocation": "Автоматично додавати геолокацію",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "Hiển thị xác nhận mỗi lần", "Show Confirmation Every Time": "Hiển thị xác nhận mỗi lần",
"Automatically Add Geolocation": "Tự động thêm vị trí địa lý", "Automatically Add Geolocation": "Tự động thêm vị trí địa lý",
"Always Show Transaction Pictures": "Always Show Transaction Pictures", "Always Show Transaction Pictures": "Always Show Transaction Pictures",
"Import Transaction Dialog": "Import Transaction Dialog",
"Remember Last Selected File Type": "Remember Last Selected File Type",
"Insights Explorer Page": "Insights Explorer Page", "Insights Explorer Page": "Insights Explorer Page",
"Account List Page": "Account List Page", "Account List Page": "Account List Page",
"Accounts Included in Total": "Accounts Included in Total", "Accounts Included in Total": "Accounts Included in Total",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "每次提示确认", "Show Confirmation Every Time": "每次提示确认",
"Automatically Add Geolocation": "自动添加地理位置", "Automatically Add Geolocation": "自动添加地理位置",
"Always Show Transaction Pictures": "总是显示交易图片", "Always Show Transaction Pictures": "总是显示交易图片",
"Import Transaction Dialog": "导入交易对话框",
"Remember Last Selected File Type": "记住上次选择的文件类型",
"Insights Explorer Page": "洞察探索页面", "Insights Explorer Page": "洞察探索页面",
"Account List Page": "账户列表页面", "Account List Page": "账户列表页面",
"Accounts Included in Total": "计入总金额的账户", "Accounts Included in Total": "计入总金额的账户",
+2
View File
@@ -2188,6 +2188,8 @@
"Show Confirmation Every Time": "每次提示確認", "Show Confirmation Every Time": "每次提示確認",
"Automatically Add Geolocation": "自動新增地理位置", "Automatically Add Geolocation": "自動新增地理位置",
"Always Show Transaction Pictures": "總是顯示交易圖片", "Always Show Transaction Pictures": "總是顯示交易圖片",
"Import Transaction Dialog": "匯入交易對話框",
"Remember Last Selected File Type": "記住上次選擇的檔案類型",
"Insights Explorer Page": "洞察探索頁面", "Insights Explorer Page": "洞察探索頁面",
"Account List Page": "帳戶清單頁面", "Account List Page": "帳戶清單頁面",
"Accounts Included in Total": "計入總金額的帳戶", "Accounts Included in Total": "計入總金額的帳戶",
+24
View File
@@ -250,6 +250,27 @@ export const useSettingsStore = defineStore('settings', () => {
updateUserApplicationCloudSettingValue('alwaysShowTransactionPicturesInMobileTransactionEditPage', value); updateUserApplicationCloudSettingValue('alwaysShowTransactionPicturesInMobileTransactionEditPage', value);
} }
// Import Transaction Dialog
function setRememberLastSelectedFileTypeInImportTransactionDialog(value: boolean): void {
updateApplicationSettingsValue('rememberLastSelectedFileTypeInImportTransactionDialog', value);
appSettings.value.rememberLastSelectedFileTypeInImportTransactionDialog = value;
updateUserApplicationCloudSettingValue('rememberLastSelectedFileTypeInImportTransactionDialog', value);
if (!value) {
setLastSelectedFileTypeInImportTransactionDialog('');
}
}
function setLastSelectedFileTypeInImportTransactionDialog(value: string): void {
if (!appSettings.value.rememberLastSelectedFileTypeInImportTransactionDialog) {
value = '';
}
updateApplicationSettingsValue('lastSelectedFileTypeInImportTransactionDialog', value);
appSettings.value.lastSelectedFileTypeInImportTransactionDialog = value;
updateUserApplicationCloudSettingValue('lastSelectedFileTypeInImportTransactionDialog', value);
}
// Insights Explorer Page // Insights Explorer Page
function setInsightsExplorerDefaultDateRangeType(value: number): void { function setInsightsExplorerDefaultDateRangeType(value: number): void {
updateApplicationSettingsValue('insightsExplorerDefaultDateRangeType', value); updateApplicationSettingsValue('insightsExplorerDefaultDateRangeType', value);
@@ -498,6 +519,9 @@ export const useSettingsStore = defineStore('settings', () => {
setAutoSaveTransactionDraft, setAutoSaveTransactionDraft,
setAutoGetCurrentGeoLocation, setAutoGetCurrentGeoLocation,
setAlwaysShowTransactionPicturesInMobileTransactionEditPage, setAlwaysShowTransactionPicturesInMobileTransactionEditPage,
// -- Import Transaction Dialog
setRememberLastSelectedFileTypeInImportTransactionDialog,
setLastSelectedFileTypeInImportTransactionDialog,
// -- Insights Explorer Page // -- Insights Explorer Page
setInsightsExplorerDefaultDateRangeType, setInsightsExplorerDefaultDateRangeType,
setShowTagInInsightsExplorerPage, setShowTagInInsightsExplorerPage,
@@ -13,6 +13,7 @@ export interface CategorizedApplicationCloudSettingItems {
export interface ApplicationCloudSettingItem { export interface ApplicationCloudSettingItem {
readonly settingKey: string; readonly settingKey: string;
readonly relatedSettingKeys?: string[];
readonly settingName: string; readonly settingName: string;
readonly mobile: boolean; readonly mobile: boolean;
readonly desktop: boolean; readonly desktop: boolean;
@@ -50,6 +51,12 @@ export const ALL_APPLICATION_CLOUD_SETTINGS: CategorizedApplicationCloudSettingI
{ settingKey: 'alwaysShowTransactionPicturesInMobileTransactionEditPage', settingName: 'Always Show Transaction Pictures', mobile: true, desktop: false } { settingKey: 'alwaysShowTransactionPicturesInMobileTransactionEditPage', settingName: 'Always Show Transaction Pictures', mobile: true, desktop: false }
] ]
}, },
{
categoryName: 'Import Transaction Dialog',
items: [
{ settingKey: 'rememberLastSelectedFileTypeInImportTransactionDialog', relatedSettingKeys: ['lastSelectedFileTypeInImportTransactionDialog'], settingName: 'Remember Last Selected File Type', mobile: false, desktop: true }
]
},
{ {
categoryName: 'Insights Explorer Page', categoryName: 'Insights Explorer Page',
items: [ items: [
@@ -161,6 +168,22 @@ export function useAppCloudSyncBase() {
function updateSettingsSelected(categorizedItems: CategorizedApplicationCloudSettingItems, value: boolean): void { function updateSettingsSelected(categorizedItems: CategorizedApplicationCloudSettingItems, value: boolean): void {
for (const item of categorizedItems.items) { for (const item of categorizedItems.items) {
enabledApplicationCloudSettings.value[item.settingKey] = value; enabledApplicationCloudSettings.value[item.settingKey] = value;
if (item.relatedSettingKeys) {
for (const relatedKey of item.relatedSettingKeys) {
enabledApplicationCloudSettings.value[relatedKey] = value;
}
}
}
}
function updateSettingSelected(settingItem: ApplicationCloudSettingItem, value: boolean): void {
enabledApplicationCloudSettings.value[settingItem.settingKey] = value;
if (settingItem.relatedSettingKeys) {
for (const relatedKey of settingItem.relatedSettingKeys) {
enabledApplicationCloudSettings.value[relatedKey] = value;
}
} }
} }
@@ -168,6 +191,12 @@ export function useAppCloudSyncBase() {
for (const categorizedItems of ALL_APPLICATION_CLOUD_SETTINGS) { for (const categorizedItems of ALL_APPLICATION_CLOUD_SETTINGS) {
for (const item of categorizedItems.items) { for (const item of categorizedItems.items) {
enabledApplicationCloudSettings.value[item.settingKey] = true; enabledApplicationCloudSettings.value[item.settingKey] = true;
if (item.relatedSettingKeys) {
for (const relatedKey of item.relatedSettingKeys) {
enabledApplicationCloudSettings.value[relatedKey] = true;
}
}
} }
} }
} }
@@ -176,6 +205,12 @@ export function useAppCloudSyncBase() {
for (const categorizedItems of ALL_APPLICATION_CLOUD_SETTINGS) { for (const categorizedItems of ALL_APPLICATION_CLOUD_SETTINGS) {
for (const item of categorizedItems.items) { for (const item of categorizedItems.items) {
enabledApplicationCloudSettings.value[item.settingKey] = false; enabledApplicationCloudSettings.value[item.settingKey] = false;
if (item.relatedSettingKeys) {
for (const relatedKey of item.relatedSettingKeys) {
enabledApplicationCloudSettings.value[relatedKey] = false;
}
}
} }
} }
} }
@@ -183,7 +218,14 @@ export function useAppCloudSyncBase() {
function selectInvertSettings(): void { function selectInvertSettings(): void {
for (const categorizedItems of ALL_APPLICATION_CLOUD_SETTINGS) { for (const categorizedItems of ALL_APPLICATION_CLOUD_SETTINGS) {
for (const item of categorizedItems.items) { for (const item of categorizedItems.items) {
enabledApplicationCloudSettings.value[item.settingKey] = !enabledApplicationCloudSettings.value[item.settingKey]; const newValue = !enabledApplicationCloudSettings.value[item.settingKey];
enabledApplicationCloudSettings.value[item.settingKey] = newValue;
if (item.relatedSettingKeys) {
for (const relatedKey of item.relatedSettingKeys) {
enabledApplicationCloudSettings.value[relatedKey] = newValue;
}
}
} }
} }
} }
@@ -219,6 +261,7 @@ export function useAppCloudSyncBase() {
isAllSettingsSelected, isAllSettingsSelected,
hasSettingSelectedButNotAllChecked, hasSettingSelectedButNotAllChecked,
updateSettingsSelected, updateSettingsSelected,
updateSettingSelected,
selectAllSettings, selectAllSettings,
selectNoneSettings, selectNoneSettings,
selectInvertSettings, selectInvertSettings,
@@ -224,6 +224,28 @@
</v-card> </v-card>
</v-col> </v-col>
<v-col cols="12">
<v-card :title="tt('Import Transaction Dialog')">
<v-form>
<v-card-text>
<v-row>
<v-col cols="12" md="6">
<v-select
item-title="displayName"
item-value="value"
persistent-placeholder
:label="tt('Remember Last Selected File Type')"
:placeholder="tt('Remember Last Selected File Type')"
:items="enableDisableOptions"
v-model="rememberLastSelectedFileTypeInImportTransactionDialog"
/>
</v-col>
</v-row>
</v-card-text>
</v-form>
</v-card>
</v-col>
<v-col cols="12"> <v-col cols="12">
<v-card :title="tt('Insights Explorer Page')"> <v-card :title="tt('Insights Explorer Page')">
<v-form> <v-form>
@@ -441,6 +463,11 @@ const showAddTransactionButtonInDesktopNavbar = computed<boolean>({
set: (value) => settingsStore.setShowAddTransactionButtonInDesktopNavbar(value) set: (value) => settingsStore.setShowAddTransactionButtonInDesktopNavbar(value)
}); });
const rememberLastSelectedFileTypeInImportTransactionDialog = computed<boolean>({
get: () => settingsStore.appSettings.rememberLastSelectedFileTypeInImportTransactionDialog,
set: (value) => settingsStore.setRememberLastSelectedFileTypeInImportTransactionDialog(value)
});
const insightsExplorerDefaultDateRangeType = computed<number>({ const insightsExplorerDefaultDateRangeType = computed<number>({
get: () => settingsStore.appSettings.insightsExplorerDefaultDateRangeType, get: () => settingsStore.appSettings.insightsExplorerDefaultDateRangeType,
set: (value) => settingsStore.setInsightsExplorerDefaultDateRangeType(value) set: (value) => settingsStore.setInsightsExplorerDefaultDateRangeType(value)
@@ -82,7 +82,7 @@
<template #prepend> <template #prepend>
<v-checkbox :disabled="loading || enabling || disabling" <v-checkbox :disabled="loading || enabling || disabling"
:model-value="enabledApplicationCloudSettings[settingItem.settingKey]" :model-value="enabledApplicationCloudSettings[settingItem.settingKey]"
@update:model-value="enabledApplicationCloudSettings[settingItem.settingKey] = !!$event"> @update:model-value="updateSettingSelected(settingItem, !!$event)">
<template #label> <template #label>
<span>{{ tt(settingItem.settingName) }}</span> <span>{{ tt(settingItem.settingName) }}</span>
<v-icon class="ms-2 me-0" start size="16" :icon="mdiCellphone" v-if="settingItem.mobile"/> <v-icon class="ms-2 me-0" start size="16" :icon="mdiCellphone" v-if="settingItem.mobile"/>
@@ -159,6 +159,7 @@ const {
isAllSettingsSelected, isAllSettingsSelected,
hasSettingSelectedButNotAllChecked, hasSettingSelectedButNotAllChecked,
updateSettingsSelected, updateSettingsSelected,
updateSettingSelected,
selectAllSettings, selectAllSettings,
selectNoneSettings, selectNoneSettings,
selectInvertSettings, selectInvertSettings,
@@ -278,6 +278,7 @@ import { ref, computed, useTemplateRef, watch } from 'vue';
import { useI18n } from '@/locales/helpers.ts'; import { useI18n } from '@/locales/helpers.ts';
import { useSettingsStore } from '@/stores/setting.ts';
import { useAccountsStore } from '@/stores/account.ts'; import { useAccountsStore } from '@/stores/account.ts';
import { useTransactionCategoriesStore } from '@/stores/transactionCategory.ts'; import { useTransactionCategoriesStore } from '@/stores/transactionCategory.ts';
import { useTransactionTagsStore } from '@/stores/transactionTag.ts'; import { useTransactionTagsStore } from '@/stores/transactionTag.ts';
@@ -339,6 +340,7 @@ const {
getLocalizedFileEncodingName getLocalizedFileEncodingName
} = useI18n(); } = useI18n();
const settingsStore = useSettingsStore();
const accountsStore = useAccountsStore(); const accountsStore = useAccountsStore();
const transactionCategoriesStore = useTransactionCategoriesStore(); const transactionCategoriesStore = useTransactionCategoriesStore();
const transactionTagsStore = useTransactionTagsStore(); const transactionTagsStore = useTransactionTagsStore();
@@ -545,9 +547,52 @@ function getDisplayCount(count: number): string {
return numeralSystem.value.formatNumber(count); return numeralSystem.value.formatNumber(count);
} }
function loadInitFileTypeFromSettings(): void {
if (!settingsStore.appSettings.lastSelectedFileTypeInImportTransactionDialog) {
return;
}
const lastSelectedFileTypes = settingsStore.appSettings.lastSelectedFileTypeInImportTransactionDialog.split('|');
const lastSelectedFileType = lastSelectedFileTypes[0];
if (!lastSelectedFileType || !allSupportedImportFileTypesMap.value[lastSelectedFileType]) {
return;
}
fileType.value = lastSelectedFileType;
const fileSubTypes = allSupportedImportFileTypesMap.value[lastSelectedFileType].subTypes;
if (!fileSubTypes || fileSubTypes.length < 1) {
return;
}
const lastSelectedFileSubType = lastSelectedFileTypes[1];
if (lastSelectedFileSubType) {
for (const subType of fileSubTypes) {
if (subType.type === lastSelectedFileSubType) {
fileSubType.value = lastSelectedFileSubType;
return;
}
}
}
const firstFileSubType = fileSubTypes[0];
if (firstFileSubType) {
fileSubType.value = firstFileSubType.type;
}
}
function open(): Promise<void> { function open(): Promise<void> {
fileType.value = 'ezbookkeeping'; fileType.value = 'ezbookkeeping';
fileSubType.value = 'ezbookkeeping_csv'; fileSubType.value = 'ezbookkeeping_csv';
if (settingsStore.appSettings.rememberLastSelectedFileTypeInImportTransactionDialog && settingsStore.appSettings.lastSelectedFileTypeInImportTransactionDialog) {
loadInitFileTypeFromSettings();
}
fileEncoding.value = 'auto'; fileEncoding.value = 'auto';
detectingFileEncoding.value = false; detectingFileEncoding.value = false;
autoDetectedFileEncoding.value = undefined; autoDetectedFileEncoding.value = undefined;
@@ -912,9 +957,13 @@ function close(completed: boolean): void {
showState.value = false; showState.value = false;
} }
watch(fileType, () => { watch(fileType, (newValue) => {
if (allFileSubTypes.value && allFileSubTypes.value.length) { if (allFileSubTypes.value && allFileSubTypes.value.length) {
fileSubType.value = allFileSubTypes.value[0]!.type; fileSubType.value = allFileSubTypes.value[0]!.type;
} else {
if (settingsStore.appSettings.rememberLastSelectedFileTypeInImportTransactionDialog) {
settingsStore.setLastSelectedFileTypeInImportTransactionDialog(`${newValue}|`);
}
} }
importFile.value = null; importFile.value = null;
@@ -924,6 +973,10 @@ watch(fileType, () => {
}); });
watch(fileSubType, (newValue) => { watch(fileSubType, (newValue) => {
if (settingsStore.appSettings.rememberLastSelectedFileTypeInImportTransactionDialog) {
settingsStore.setLastSelectedFileTypeInImportTransactionDialog(`${fileType.value}|${newValue}`);
}
let supportedExtensions: string | undefined = findExtensionByType(allFileSubTypes.value, newValue); let supportedExtensions: string | undefined = findExtensionByType(allFileSubTypes.value, newValue);
if (!supportedExtensions) { if (!supportedExtensions) {
@@ -38,7 +38,7 @@
:checked="enabledApplicationCloudSettings[settingItem.settingKey]" :checked="enabledApplicationCloudSettings[settingItem.settingKey]"
:key="settingItem.settingKey" :key="settingItem.settingKey"
v-for="settingItem in categorizedItems.items" v-for="settingItem in categorizedItems.items"
@change="enabledApplicationCloudSettings[settingItem.settingKey] = $event.target.checked"> @change="updateSettingSelected(settingItem, $event.target.checked)">
<template #after> <template #after>
<f7-icon class="synchronized-settings-device-icon" f7="device_phone_portrait" v-if="settingItem.mobile"></f7-icon> <f7-icon class="synchronized-settings-device-icon" f7="device_phone_portrait" v-if="settingItem.mobile"></f7-icon>
<f7-icon class="synchronized-settings-device-icon" f7="device_desktop" v-if="settingItem.desktop"></f7-icon> <f7-icon class="synchronized-settings-device-icon" f7="device_desktop" v-if="settingItem.desktop"></f7-icon>
@@ -115,6 +115,7 @@ const {
isAllSettingsSelected, isAllSettingsSelected,
hasSettingSelectedButNotAllChecked, hasSettingSelectedButNotAllChecked,
updateSettingsSelected, updateSettingsSelected,
updateSettingSelected,
selectAllSettings, selectAllSettings,
selectNoneSettings, selectNoneSettings,
selectInvertSettings, selectInvertSettings,