show the reason why the category / account select is disabled in desktop version

This commit is contained in:
MaysWind
2025-08-06 00:05:35 +08:00
parent aafcfeda84
commit 04996d784f
12 changed files with 145 additions and 82 deletions
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Sekundäre Transaktionskategorien",
"All Categories": "Alle Kategorien",
"No available category": "Keine verfügbare Kategorie",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Kategorie finden",
"Add Default Categories": "Standardkategorien hinzufügen",
"Default Categories": "Standardkategorien",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Transaction Secondary Categories",
"All Categories": "All Categories",
"No available category": "No available category",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Find category",
"Add Default Categories": "Add Default Categories",
"Default Categories": "Default Categories",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Categorías secundarias de transacciones",
"All Categories": "Todas las categorías",
"No available category": "Ninguna categoría disponible",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Find category",
"Add Default Categories": "Agregar categorías predeterminadas",
"Default Categories": "Categorías predeterminadas",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Categorie secondarie di transazione",
"All Categories": "Tutte le categorie",
"No available category": "Nessuna categoria disponibile",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Trova categoria",
"Add Default Categories": "Aggiungi categorie predefinite",
"Default Categories": "Categorie predefinite",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "取引二次カテゴリ",
"All Categories": "すべてのカテゴリ",
"No available category": "利用可能なカテゴリはありません",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "カテゴリを見つける",
"Add Default Categories": "デフォルトのカテゴリを追加",
"Default Categories": "デフォルトのカテゴリ",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Categorias Secundárias de Transação",
"All Categories": "Todas as Categorias",
"No available category": "Nenhuma categoria disponível",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Encontrar categoria",
"Add Default Categories": "Adicionar Categorias Padrão",
"Default Categories": "Categorias Padrão",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Вторичные категории транзакций",
"All Categories": "Все категории",
"No available category": "Нет доступных категорий",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Find category",
"Add Default Categories": "Добавить категории по умолчанию",
"Default Categories": "Категории по умолчанию",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Другорядні категорії транзакцій",
"All Categories": "Усі категорії",
"No available category": "Немає доступних категорій",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Знайти категорію",
"Add Default Categories": "Додати категорії за замовчуванням",
"Default Categories": "Категорії за замовчуванням",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "Danh mục giao dịch phụ",
"All Categories": "Tất cả danh mục",
"No available category": "Không có danh mục nào khả dụng",
"No secondary expense categories are available": "No secondary expense categories are available",
"No secondary income categories are available": "No secondary income categories are available",
"No secondary transfer categories are available": "No secondary transfer categories are available",
"Find category": "Find category",
"Add Default Categories": "Thêm danh mục mặc định",
"Default Categories": "Danh mục mặc định",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "交易二级分类",
"All Categories": "全部分类",
"No available category": "没有可用的分类",
"No secondary expense categories are available": "没有可用的二级支出分类",
"No secondary income categories are available": "没有可用的二级收入分类",
"No secondary transfer categories are available": "没有可用的二级转账分类",
"Find category": "查找分类",
"Add Default Categories": "添加默认分类",
"Default Categories": "默认分类",
+3
View File
@@ -2029,6 +2029,9 @@
"Transaction Secondary Categories": "交易次要分類",
"All Categories": "所有分類",
"No available category": "沒有可用的分類",
"No secondary expense categories are available": "沒有可用的次要支出分類",
"No secondary income categories are available": "沒有可用的次要收入分類",
"No secondary transfer categories are available": "沒有可用的次要轉帳分類",
"Find category": "尋找分類",
"Add Default Categories": "新增預設分類",
"Default Categories": "預設分類",
@@ -123,96 +123,126 @@
v-model="transaction.destinationAmount"/>
</v-col>
<v-col cols="12" md="12" v-if="transaction.type === TransactionType.Expense">
<two-column-select primary-key-field="id" primary-value-field="id" primary-title-field="name"
primary-icon-field="icon" primary-icon-type="category" primary-color-field="color"
primary-hidden-field="hidden" primary-sub-items-field="subCategories"
secondary-key-field="id" secondary-value-field="id" secondary-title-field="name"
secondary-icon-field="icon" secondary-icon-type="category" secondary-color-field="color"
secondary-hidden-field="hidden"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !hasAvailableExpenseCategories"
:enable-filter="true" :filter-placeholder="tt('Find category')" :filter-no-items-text="tt('No available category')"
:show-selection-primary-text="true"
:custom-selection-primary-text="getTransactionPrimaryCategoryName(transaction.expenseCategoryId, allCategories[CategoryType.Expense])"
:custom-selection-secondary-text="getTransactionSecondaryCategoryName(transaction.expenseCategoryId, allCategories[CategoryType.Expense])"
:label="tt('Category')" :placeholder="tt('Category')"
:items="allCategories[CategoryType.Expense] || []"
v-model="transaction.expenseCategoryId">
</two-column-select>
<v-tooltip :disabled="hasAvailableExpenseCategories" :text="hasAvailableExpenseCategories ? '' : tt('No secondary expense categories are available')">
<template v-slot:activator="{ props }">
<div v-bind="props" class="d-block">
<two-column-select primary-key-field="id" primary-value-field="id" primary-title-field="name"
primary-icon-field="icon" primary-icon-type="category" primary-color-field="color"
primary-hidden-field="hidden" primary-sub-items-field="subCategories"
secondary-key-field="id" secondary-value-field="id" secondary-title-field="name"
secondary-icon-field="icon" secondary-icon-type="category" secondary-color-field="color"
secondary-hidden-field="hidden"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !hasAvailableExpenseCategories"
:enable-filter="true" :filter-placeholder="tt('Find category')" :filter-no-items-text="tt('No available category')"
:show-selection-primary-text="true"
:custom-selection-primary-text="getTransactionPrimaryCategoryName(transaction.expenseCategoryId, allCategories[CategoryType.Expense])"
:custom-selection-secondary-text="getTransactionSecondaryCategoryName(transaction.expenseCategoryId, allCategories[CategoryType.Expense])"
:label="tt('Category')" :placeholder="tt('Category')"
:items="allCategories[CategoryType.Expense] || []"
v-model="transaction.expenseCategoryId">
</two-column-select>
</div>
</template>
</v-tooltip>
</v-col>
<v-col cols="12" md="12" v-if="transaction.type === TransactionType.Income">
<two-column-select primary-key-field="id" primary-value-field="id" primary-title-field="name"
primary-icon-field="icon" primary-icon-type="category" primary-color-field="color"
primary-hidden-field="hidden" primary-sub-items-field="subCategories"
secondary-key-field="id" secondary-value-field="id" secondary-title-field="name"
secondary-icon-field="icon" secondary-icon-type="category" secondary-color-field="color"
secondary-hidden-field="hidden"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !hasAvailableIncomeCategories"
:enable-filter="true" :filter-placeholder="tt('Find category')" :filter-no-items-text="tt('No available category')"
:show-selection-primary-text="true"
:custom-selection-primary-text="getTransactionPrimaryCategoryName(transaction.incomeCategoryId, allCategories[CategoryType.Income])"
:custom-selection-secondary-text="getTransactionSecondaryCategoryName(transaction.incomeCategoryId, allCategories[CategoryType.Income])"
:label="tt('Category')" :placeholder="tt('Category')"
:items="allCategories[CategoryType.Income] || []"
v-model="transaction.incomeCategoryId">
</two-column-select>
<v-tooltip :disabled="hasAvailableIncomeCategories" :text="hasAvailableIncomeCategories ? '' : tt('No secondary income categories are available')">
<template v-slot:activator="{ props }">
<div v-bind="props" class="d-block">
<two-column-select primary-key-field="id" primary-value-field="id" primary-title-field="name"
primary-icon-field="icon" primary-icon-type="category" primary-color-field="color"
primary-hidden-field="hidden" primary-sub-items-field="subCategories"
secondary-key-field="id" secondary-value-field="id" secondary-title-field="name"
secondary-icon-field="icon" secondary-icon-type="category" secondary-color-field="color"
secondary-hidden-field="hidden"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !hasAvailableIncomeCategories"
:enable-filter="true" :filter-placeholder="tt('Find category')" :filter-no-items-text="tt('No available category')"
:show-selection-primary-text="true"
:custom-selection-primary-text="getTransactionPrimaryCategoryName(transaction.incomeCategoryId, allCategories[CategoryType.Income])"
:custom-selection-secondary-text="getTransactionSecondaryCategoryName(transaction.incomeCategoryId, allCategories[CategoryType.Income])"
:label="tt('Category')" :placeholder="tt('Category')"
:items="allCategories[CategoryType.Income] || []"
v-model="transaction.incomeCategoryId">
</two-column-select>
</div>
</template>
</v-tooltip>
</v-col>
<v-col cols="12" md="12" v-if="transaction.type === TransactionType.Transfer">
<two-column-select primary-key-field="id" primary-value-field="id" primary-title-field="name"
primary-icon-field="icon" primary-icon-type="category" primary-color-field="color"
primary-hidden-field="hidden" primary-sub-items-field="subCategories"
secondary-key-field="id" secondary-value-field="id" secondary-title-field="name"
secondary-icon-field="icon" secondary-icon-type="category" secondary-color-field="color"
secondary-hidden-field="hidden"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !hasAvailableTransferCategories"
:enable-filter="true" :filter-placeholder="tt('Find category')" :filter-no-items-text="tt('No available category')"
:show-selection-primary-text="true"
:custom-selection-primary-text="getTransactionPrimaryCategoryName(transaction.transferCategoryId, allCategories[CategoryType.Transfer])"
:custom-selection-secondary-text="getTransactionSecondaryCategoryName(transaction.transferCategoryId, allCategories[CategoryType.Transfer])"
:label="tt('Category')" :placeholder="tt('Category')"
:items="allCategories[CategoryType.Transfer] || []"
v-model="transaction.transferCategoryId">
</two-column-select>
<v-tooltip :disabled="hasAvailableTransferCategories" :text="hasAvailableTransferCategories ? '' : tt('No secondary transfer categories are available')">
<template v-slot:activator="{ props }">
<div v-bind="props" class="d-block">
<two-column-select primary-key-field="id" primary-value-field="id" primary-title-field="name"
primary-icon-field="icon" primary-icon-type="category" primary-color-field="color"
primary-hidden-field="hidden" primary-sub-items-field="subCategories"
secondary-key-field="id" secondary-value-field="id" secondary-title-field="name"
secondary-icon-field="icon" secondary-icon-type="category" secondary-color-field="color"
secondary-hidden-field="hidden"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !hasAvailableTransferCategories"
:enable-filter="true" :filter-placeholder="tt('Find category')" :filter-no-items-text="tt('No available category')"
:show-selection-primary-text="true"
:custom-selection-primary-text="getTransactionPrimaryCategoryName(transaction.transferCategoryId, allCategories[CategoryType.Transfer])"
:custom-selection-secondary-text="getTransactionSecondaryCategoryName(transaction.transferCategoryId, allCategories[CategoryType.Transfer])"
:label="tt('Category')" :placeholder="tt('Category')"
:items="allCategories[CategoryType.Transfer] || []"
v-model="transaction.transferCategoryId">
</two-column-select>
</div>
</template>
</v-tooltip>
</v-col>
<v-col cols="12" :md="transaction.type === TransactionType.Transfer ? 6 : 12">
<two-column-select primary-key-field="id" primary-value-field="category"
primary-title-field="name" primary-footer-field="displayBalance"
primary-icon-field="icon" primary-icon-type="account"
primary-sub-items-field="accounts"
:primary-title-i18n="true"
secondary-key-field="id" secondary-value-field="id"
secondary-title-field="name" secondary-footer-field="displayBalance"
secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !allVisibleAccounts.length"
:enable-filter="true" :filter-placeholder="tt('Find account')" :filter-no-items-text="tt('No available account')"
:custom-selection-primary-text="sourceAccountName"
:label="tt(sourceAccountTitle)"
:placeholder="tt(sourceAccountTitle)"
:items="allVisibleCategorizedAccounts"
v-model="transaction.sourceAccountId">
</two-column-select>
<v-tooltip :disabled="!!allVisibleAccounts.length" :text="allVisibleAccounts.length ? '' : tt('No available account')">
<template v-slot:activator="{ props }">
<div v-bind="props" class="d-block">
<two-column-select primary-key-field="id" primary-value-field="category"
primary-title-field="name" primary-footer-field="displayBalance"
primary-icon-field="icon" primary-icon-type="account"
primary-sub-items-field="accounts"
:primary-title-i18n="true"
secondary-key-field="id" secondary-value-field="id"
secondary-title-field="name" secondary-footer-field="displayBalance"
secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !allVisibleAccounts.length"
:enable-filter="true" :filter-placeholder="tt('Find account')" :filter-no-items-text="tt('No available account')"
:custom-selection-primary-text="sourceAccountName"
:label="tt(sourceAccountTitle)"
:placeholder="tt(sourceAccountTitle)"
:items="allVisibleCategorizedAccounts"
v-model="transaction.sourceAccountId">
</two-column-select>
</div>
</template>
</v-tooltip>
</v-col>
<v-col cols="12" md="6" v-if="transaction.type === TransactionType.Transfer">
<two-column-select primary-key-field="id" primary-value-field="category"
primary-title-field="name" primary-footer-field="displayBalance"
primary-icon-field="icon" primary-icon-type="account"
primary-sub-items-field="accounts"
:primary-title-i18n="true"
secondary-key-field="id" secondary-value-field="id"
secondary-title-field="name" secondary-footer-field="displayBalance"
secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !allVisibleAccounts.length"
:enable-filter="true" :filter-placeholder="tt('Find account')" :filter-no-items-text="tt('No available account')"
:custom-selection-primary-text="destinationAccountName"
:label="tt('Destination Account')"
:placeholder="tt('Destination Account')"
:items="allVisibleCategorizedAccounts"
v-model="transaction.destinationAccountId">
</two-column-select>
<v-tooltip :disabled="!!allVisibleAccounts.length" :text="allVisibleAccounts.length ? '' : tt('No available account')">
<template v-slot:activator="{ props }">
<div v-bind="props" class="d-block">
<two-column-select primary-key-field="id" primary-value-field="category"
primary-title-field="name" primary-footer-field="displayBalance"
primary-icon-field="icon" primary-icon-type="account"
primary-sub-items-field="accounts"
:primary-title-i18n="true"
secondary-key-field="id" secondary-value-field="id"
secondary-title-field="name" secondary-footer-field="displayBalance"
secondary-icon-field="icon" secondary-icon-type="account" secondary-color-field="color"
:readonly="mode === TransactionEditPageMode.View"
:disabled="loading || submitting || !allVisibleAccounts.length"
:enable-filter="true" :filter-placeholder="tt('Find account')" :filter-no-items-text="tt('No available account')"
:custom-selection-primary-text="destinationAccountName"
:label="tt('Destination Account')"
:placeholder="tt('Destination Account')"
:items="allVisibleCategorizedAccounts"
v-model="transaction.destinationAccountId">
</two-column-select>
</div>
</template>
</v-tooltip>
</v-col>
<v-col cols="12" md="6" v-if="type === TransactionEditPageType.Transaction">
<date-time-select