fix category name not show in transaction edit dialog when category is hidden

This commit is contained in:
MaysWind
2024-07-26 00:50:58 +08:00
parent e22f512f22
commit 2b63e50837
2 changed files with 26 additions and 9 deletions
+10 -7
View File
@@ -11,15 +11,17 @@
> >
<template #selection> <template #selection>
<div class="d-flex align-center text-truncate cursor-pointer"> <div class="d-flex align-center text-truncate cursor-pointer">
<span class="text-truncate" v-if="selectionText">{{ selectionText }}</span> <span class="text-truncate" v-if="customSelectionPrimaryText">{{ customSelectionPrimaryText }}</span>
<span class="text-truncate" v-if="!selectionText && !selectedPrimaryItem && !selectedSecondaryItem">{{ noSelectionText }}</span> <v-icon class="disabled" :icon="icons.chevronRight" size="23" v-if="customSelectionPrimaryText && customSelectionSecondaryText" />
<span class="text-truncate" v-if="!selectionText && showSelectionPrimaryText && selectedPrimaryItem">{{ selectionPrimaryItemText }}</span> <span class="text-truncate" v-if="customSelectionPrimaryText && customSelectionSecondaryText">{{ customSelectionSecondaryText }}</span>
<v-icon class="disabled" :icon="icons.chevronRight" size="23" v-if="!selectionText && showSelectionPrimaryText && selectedPrimaryItem && selectedSecondaryItem" /> <span class="text-truncate" v-if="!customSelectionPrimaryText && !selectedPrimaryItem && !selectedSecondaryItem">{{ noSelectionText }}</span>
<span class="text-truncate" v-if="!customSelectionPrimaryText && showSelectionPrimaryText && selectedPrimaryItem">{{ selectionPrimaryItemText }}</span>
<v-icon class="disabled" :icon="icons.chevronRight" size="23" v-if="!customSelectionPrimaryText && showSelectionPrimaryText && selectedPrimaryItem && selectedSecondaryItem" />
<ItemIcon class="mr-2" icon-type="account" size="21.5px" <ItemIcon class="mr-2" icon-type="account" size="21.5px"
:icon-id="selectedSecondaryItem ? selectedSecondaryItem[secondaryIconField] : null" :icon-id="selectedSecondaryItem ? selectedSecondaryItem[secondaryIconField] : null"
:color="selectedSecondaryItem ? selectedSecondaryItem[secondaryColorField] : null" :color="selectedSecondaryItem ? selectedSecondaryItem[secondaryColorField] : null"
v-if="!selectionText && selectedSecondaryItem && showSelectionSecondaryIcon" /> v-if="!customSelectionPrimaryText && selectedSecondaryItem && showSelectionSecondaryIcon" />
<span class="text-truncate" v-if="!selectionText && selectedSecondaryItem">{{ selectionSecondaryItemText }}</span> <span class="text-truncate" v-if="!customSelectionPrimaryText && selectedSecondaryItem">{{ selectionSecondaryItemText }}</span>
</div> </div>
</template> </template>
@@ -88,9 +90,10 @@ export default {
'disabled', 'disabled',
'readonly', 'readonly',
'label', 'label',
'selectionText',
'showSelectionPrimaryText', 'showSelectionPrimaryText',
'showSelectionSecondaryIcon', 'showSelectionSecondaryIcon',
'customSelectionPrimaryText',
'customSelectionSecondaryText',
'primaryKeyField', 'primaryKeyField',
'primaryValueField', 'primaryValueField',
'primaryTitleField', 'primaryTitleField',
@@ -100,6 +100,8 @@
:readonly="mode === 'view'" :readonly="mode === 'view'"
:disabled="loading || submitting || !hasAvailableExpenseCategories" :disabled="loading || submitting || !hasAvailableExpenseCategories"
:show-selection-primary-text="true" :show-selection-primary-text="true"
:custom-selection-primary-text="getPrimaryCategoryName(transaction.expenseCategory, allCategories[allCategoryTypes.Expense])"
:custom-selection-secondary-text="getSecondaryCategoryName(transaction.expenseCategory, allCategories[allCategoryTypes.Expense])"
:label="$t('Category')" :placeholder="$t('Category')" :label="$t('Category')" :placeholder="$t('Category')"
:items="allCategories[allCategoryTypes.Expense]" :items="allCategories[allCategoryTypes.Expense]"
v-model="transaction.expenseCategory"> v-model="transaction.expenseCategory">
@@ -115,6 +117,8 @@
:readonly="mode === 'view'" :readonly="mode === 'view'"
:disabled="loading || submitting || !hasAvailableIncomeCategories" :disabled="loading || submitting || !hasAvailableIncomeCategories"
:show-selection-primary-text="true" :show-selection-primary-text="true"
:custom-selection-primary-text="getPrimaryCategoryName(transaction.incomeCategory, allCategories[allCategoryTypes.Income])"
:custom-selection-secondary-text="getSecondaryCategoryName(transaction.incomeCategory, allCategories[allCategoryTypes.Income])"
:label="$t('Category')" :placeholder="$t('Category')" :label="$t('Category')" :placeholder="$t('Category')"
:items="allCategories[allCategoryTypes.Income]" :items="allCategories[allCategoryTypes.Income]"
v-model="transaction.incomeCategory"> v-model="transaction.incomeCategory">
@@ -130,6 +134,8 @@
:readonly="mode === 'view'" :readonly="mode === 'view'"
:disabled="loading || submitting || !hasAvailableTransferCategories" :disabled="loading || submitting || !hasAvailableTransferCategories"
:show-selection-primary-text="true" :show-selection-primary-text="true"
:custom-selection-primary-text="getPrimaryCategoryName(transaction.transferCategory, allCategories[allCategoryTypes.Transfer])"
:custom-selection-secondary-text="getSecondaryCategoryName(transaction.transferCategory, allCategories[allCategoryTypes.Transfer])"
:label="$t('Category')" :placeholder="$t('Category')" :label="$t('Category')" :placeholder="$t('Category')"
:items="allCategories[allCategoryTypes.Transfer]" :items="allCategories[allCategoryTypes.Transfer]"
v-model="transaction.transferCategory"> v-model="transaction.transferCategory">
@@ -146,7 +152,7 @@
secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color" secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color"
:readonly="mode === 'view'" :readonly="mode === 'view'"
:disabled="loading || submitting || !allVisibleAccounts.length" :disabled="loading || submitting || !allVisibleAccounts.length"
:selection-text="sourceAccountName" :custom-selection-primary-text="sourceAccountName"
:label="$t(sourceAccountTitle)" :label="$t(sourceAccountTitle)"
:placeholder="$t(sourceAccountTitle)" :placeholder="$t(sourceAccountTitle)"
:items="categorizedAccounts" :items="categorizedAccounts"
@@ -164,7 +170,7 @@
secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color" secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color"
:readonly="mode === 'view'" :readonly="mode === 'view'"
:disabled="loading || submitting || !allVisibleAccounts.length" :disabled="loading || submitting || !allVisibleAccounts.length"
:selection-text="destinationAccountName" :custom-selection-primary-text="destinationAccountName"
:label="$t('Destination Account')" :label="$t('Destination Account')"
:placeholder="$t('Destination Account')" :placeholder="$t('Destination Account')"
:items="categorizedAccounts" :items="categorizedAccounts"
@@ -343,6 +349,8 @@ import {
} from '@/lib/datetime.js'; } from '@/lib/datetime.js';
import { generateRandomUUID } from '@/lib/misc.js'; import { generateRandomUUID } from '@/lib/misc.js';
import { import {
getTransactionPrimaryCategoryName,
getTransactionSecondaryCategoryName,
getFirstAvailableCategoryId getFirstAvailableCategoryId
} from '@/lib/category.js'; } from '@/lib/category.js';
import { setTransactionModelByTransaction } from '@/lib/transaction.js'; import { setTransactionModelByTransaction } from '@/lib/transaction.js';
@@ -845,6 +853,12 @@ export default {
this.transaction.destinationAmount = oldSourceAmount; this.transaction.destinationAmount = oldSourceAmount;
} }
}, },
getPrimaryCategoryName(categoryId, allCategories) {
return getTransactionPrimaryCategoryName(categoryId, allCategories);
},
getSecondaryCategoryName(categoryId, allCategories) {
return getTransactionSecondaryCategoryName(categoryId, allCategories);
},
setTransaction(transaction, options, setContextData, convertContextTime) { setTransaction(transaction, options, setContextData, convertContextTime) {
setTransactionModelByTransaction( setTransactionModelByTransaction(
this.transaction, this.transaction,