+ v-for="transactionType in allTransactionCategories">
{{ getCategoryTypeName(transactionType.type) }}
@@ -65,44 +85,45 @@
{{ $t('No available category') }}
-
+ v-for="(category, idx) in transactionType.allCategories">
+
+
+
-
+
{{ category.name }}
-
+
+ v-if="(showHidden || !category.hidden) && ((showHidden && transactionType.allSubCategories[category.id]) || transactionType.allVisibleSubCategoryCounts[category.id])">
-
+ v-for="(subCategory, subIdx) in transactionType.allSubCategories[category.id]">
+
+
+
-
+
{{ subCategory.name }}
-
-
-
@@ -112,7 +133,7 @@
- {{ $t(applyText) }}
+ {{ $t(applyText) }}
{{ $t('Cancel') }}
@@ -129,7 +150,7 @@ import { useStatisticsStore } from '@/stores/statistics.js';
import categoryConstants from '@/consts/category.js';
import { copyObjectTo, arrayItemToObjectField } from '@/lib/common.js';
import {
- allVisibleTransactionCategories,
+ allTransactionCategoriesWithVisibleCount,
hasAnyAvailableCategory,
hasAvailableCategory,
selectSubCategories,
@@ -145,6 +166,8 @@ import {
mdiSelectAll,
mdiSelect,
mdiSelectInverse,
+ mdiEyeOutline,
+ mdiEyeOffOutline,
mdiDotsVertical
} from '@mdi/js';
@@ -167,10 +190,13 @@ export default {
categoryConstants.allCategoryTypes.Transfer.toString()
],
filterCategoryIds: {},
+ showHidden: false,
icons: {
selectAll: mdiSelectAll,
selectNone: mdiSelect,
selectInverse: mdiSelectInverse,
+ show: mdiEyeOutline,
+ hide: mdiEyeOffOutline,
more: mdiDotsVertical
}
}
@@ -194,14 +220,17 @@ export default {
allowCategoryTypes() {
return this.categoryTypes ? arrayItemToObjectField(this.categoryTypes.split(','), true) : null;
},
- allVisibleTransactionCategories() {
- return allVisibleTransactionCategories(this.transactionCategoriesStore.allTransactionCategories, this.allowCategoryTypes);
+ allTransactionCategories() {
+ return allTransactionCategoriesWithVisibleCount(this.transactionCategoriesStore.allTransactionCategories, this.allowCategoryTypes);
},
hasAnyAvailableCategory() {
- return hasAnyAvailableCategory(this.allVisibleTransactionCategories);
+ return hasAnyAvailableCategory(this.allTransactionCategories, true);
+ },
+ hasAnyVisibleCategory() {
+ return hasAnyAvailableCategory(this.allTransactionCategories, this.showHidden);
},
hasAvailableCategory() {
- return hasAvailableCategory(this.allVisibleTransactionCategories);
+ return hasAvailableCategory(this.allTransactionCategories, this.showHidden);
}
},
created() {
diff --git a/src/views/mobile/settings/CategoryFilterSettingsPage.vue b/src/views/mobile/settings/CategoryFilterSettingsPage.vue
index 1362aa61..37aeb22e 100644
--- a/src/views/mobile/settings/CategoryFilterSettingsPage.vue
+++ b/src/views/mobile/settings/CategoryFilterSettingsPage.vue
@@ -5,7 +5,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
+
+
+
+
+ v-if="(showHidden && transactionType.allSubCategories[category.id]) || transactionType.allVisibleSubCategoryCounts[category.id]">
-
+
+
+
+
+
@@ -111,9 +121,13 @@
- {{ $t('Select All') }}
- {{ $t('Select None') }}
- {{ $t('Invert Selection') }}
+ {{ $t('Select All') }}
+ {{ $t('Select None') }}
+ {{ $t('Invert Selection') }}
+
+
+ {{ $t('Show Hidden Transaction Categories') }}
+ {{ $t('Hide Hidden Transaction Categories') }}
{{ $t('Cancel') }}
@@ -132,7 +146,7 @@ import { useStatisticsStore } from '@/stores/statistics.js';
import categoryConstants from '@/consts/category.js';
import { copyObjectTo, arrayItemToObjectField } from '@/lib/common.js';
import {
- allVisibleTransactionCategories,
+ allTransactionCategoriesWithVisibleCount,
hasAnyAvailableCategory,
hasAvailableCategory,
selectSubCategories,
@@ -158,6 +172,7 @@ export default {
type: null,
allowCategoryTypes: null,
filterCategoryIds: {},
+ showHidden: false,
collapseStates: self.getCollapseStates(),
showMoreActionSheet: false
}
@@ -178,14 +193,17 @@ export default {
return 'Apply';
}
},
- allVisibleTransactionCategories() {
- return allVisibleTransactionCategories(this.transactionCategoriesStore.allTransactionCategories, this.allowCategoryTypes);
+ allTransactionCategories() {
+ return allTransactionCategoriesWithVisibleCount(this.transactionCategoriesStore.allTransactionCategories, this.allowCategoryTypes);
},
hasAnyAvailableCategory() {
- return hasAnyAvailableCategory(this.allVisibleTransactionCategories);
+ return hasAnyAvailableCategory(this.allTransactionCategories, true);
+ },
+ hasAnyVisibleCategory() {
+ return hasAnyAvailableCategory(this.allTransactionCategories, this.showHidden);
},
hasAvailableCategory() {
- return hasAvailableCategory(this.allVisibleTransactionCategories);
+ return hasAvailableCategory(this.allTransactionCategories, this.showHidden);
}
},
created() {