From 973cec2c6a7d9506bad4df5574c8d0d424fe35b7 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Wed, 4 Mar 2026 00:36:09 +0800 Subject: [PATCH] automatically apply known transaction types when setting the transaction type column mapping --- .../tabs/ImportTransactionDefineColumnTab.vue | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue b/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue index 7711b3d8..d2ce3203 100644 --- a/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue +++ b/src/views/desktop/transactions/import/tabs/ImportTransactionDefineColumnTab.vue @@ -27,7 +27,7 @@ + @click="toggleDataMappingColumn(parseInt(column.key), columnType.type)"> {{ columnType.displayName }} @@ -228,7 +228,7 @@ import { ref, computed, useTemplateRef, watch } from 'vue'; import { useI18n } from '@/locales/helpers.ts'; -import { type NameValue, type NameNumeralValue, type TypeAndDisplayName, itemAndIndex, entries } from '@/core/base.ts'; +import { type NameValue, type NameNumeralValue, type TypeAndDisplayName, itemAndIndex, keys, entries } from '@/core/base.ts'; import { type NumeralSystem, KnownAmountFormat } from '@/core/numeral.ts'; import { type DateFormatOrder, KnownDateTimeFormat } from '@/core/datetime.ts'; import { KnownDateTimezoneFormat } from '@/core/timezone.ts'; @@ -492,6 +492,26 @@ function getParseDataMappedColumnDisplayName(columnIndex: number): string { return tt('Unspecified'); } +function toggleDataMappingColumn(columnIndex: number, columnType: number): void { + parsedFileDataColumnMapping.value.toggleDataMappingColumn(columnIndex, columnType); + + if (columnType === ImportTransactionColumnType.TransactionType.type) { + if (!parsedFileDataColumnMapping.value.isColumnMappingSet(ImportTransactionColumnType.TransactionType)) { + parsedFileDataColumnMapping.value.transactionTypeMapping = {}; + } else { + const allTransactionTypes = parsedFileAllTransactionTypes.value; + + for (const transactionTypeName of keys(parsedFileDataColumnMapping.value.transactionTypeMapping)) { + if (!allTransactionTypes.includes(transactionTypeName)) { + delete parsedFileDataColumnMapping.value.transactionTypeMapping[transactionTypeName]; + } + } + } + + autoSetTransactionTypeMapping(); + } +} + function autoSetColumnMapping(): void { if (!props.parsedFileData) { return;