From 0e5b6555f36afcc808191b3188dfbea4e307e803 Mon Sep 17 00:00:00 2001 From: MaysWind Date: Sun, 29 Nov 2020 14:26:26 +0800 Subject: [PATCH] code refactor --- pkg/models/account.go | 24 +++++++++++++++++++++++ src/consts/account.js | 7 ------- src/lib/utils.js | 11 ++++++++--- src/views/mobile/accounts/AccountList.vue | 6 +++--- 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/pkg/models/account.go b/pkg/models/account.go index 13ceb01a..a39f79bf 100644 --- a/pkg/models/account.go +++ b/pkg/models/account.go @@ -15,6 +15,26 @@ const ( ACCOUNT_CATEGORY_INVESTMENT AccountCategory = 7 ) +var AssetAccountCategory = map[AccountCategory]bool{ + ACCOUNT_CATEGORY_CASH: true, + ACCOUNT_CATEGORY_DEBIT_CARD: true, + ACCOUNT_CATEGORY_CREDIT_CARD: false, + ACCOUNT_CATEGORY_VIRTUAL: true, + ACCOUNT_CATEGORY_DEBT: false, + ACCOUNT_CATEGORY_RECEIVABLES: true, + ACCOUNT_CATEGORY_INVESTMENT: true, +} + +var LiabilityAccountCategory = map[AccountCategory]bool{ + ACCOUNT_CATEGORY_CASH: false, + ACCOUNT_CATEGORY_DEBIT_CARD: false, + ACCOUNT_CATEGORY_CREDIT_CARD: true, + ACCOUNT_CATEGORY_VIRTUAL: false, + ACCOUNT_CATEGORY_DEBT: true, + ACCOUNT_CATEGORY_RECEIVABLES: false, + ACCOUNT_CATEGORY_INVESTMENT: false, +} + type AccountType byte const ( @@ -98,6 +118,8 @@ type AccountInfoResponse struct { Balance int64 `json:"balance"` Comment string `json:"comment"` DisplayOrder int `json:"displayOrder"` + IsAsset bool `json:"isAsset,omitempty"` + IsLiability bool `json:"isLiability,omitempty"` Hidden bool `json:"hidden"` SubAccounts AccountInfoResponseSlice `json:"subAccounts,omitempty"` } @@ -115,6 +137,8 @@ func (a *Account) ToAccountInfoResponse() *AccountInfoResponse { Balance: a.Balance, Comment: a.Comment, DisplayOrder: a.DisplayOrder, + IsAsset: AssetAccountCategory[a.Category], + IsLiability: LiabilityAccountCategory[a.Category], Hidden: a.Hidden, } } diff --git a/src/consts/account.js b/src/consts/account.js index 08bbe76f..4f84281d 100644 --- a/src/consts/account.js +++ b/src/consts/account.js @@ -2,43 +2,36 @@ const allAccountCategories = [ { id: 1, name: 'Cash', - isAsset: true, defaultAccountIconId: '1' }, { id: 2, name: 'Debit Card', - isAsset: true, defaultAccountIconId: '100' }, { id: 3, name: 'Credit Card', - isLiability: true, defaultAccountIconId: '100' }, { id: 4, name: 'Virtual Account', - isAsset: true, defaultAccountIconId: '500' }, { id: 5, name: 'Debt Account', - isLiability: true, defaultAccountIconId: '600' }, { id: 6, name: 'Receivables', - isAsset: true, defaultAccountIconId: '700' }, { id: 7, name: 'Investment Account', - isAsset: true, defaultAccountIconId: '800' } ]; diff --git a/src/lib/utils.js b/src/lib/utils.js index 1640436d..44114422 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -106,21 +106,21 @@ function getAccountByAccountId(categorizedAccounts, accountId) { return null; } -function getAllFilteredAccountsBalance(categorizedAccounts, accountCategoryFilter) { +function getAllFilteredAccountsBalance(categorizedAccounts, accountFilter) { const allAccountCategories = accountConstants.allCategories; const ret = []; for (let categoryIdx = 0; categoryIdx < allAccountCategories.length; categoryIdx++) { const accountCategory = allAccountCategories[categoryIdx]; - if (!accountCategoryFilter(accountCategory) || !categorizedAccounts[accountCategory.id]) { + if (!categorizedAccounts[accountCategory.id]) { continue; } for (let accountIdx = 0; accountIdx < categorizedAccounts[accountCategory.id].length; accountIdx++) { const account = categorizedAccounts[accountCategory.id][accountIdx]; - if (account.hidden) { + if (account.hidden || !accountFilter(account)) { continue; } @@ -132,6 +132,11 @@ function getAllFilteredAccountsBalance(categorizedAccounts, accountCategoryFilte } else if (account.type === accountConstants.allAccountTypes.MultiSubAccounts) { for (let subAccountIdx = 0; subAccountIdx < account.subAccounts.length; subAccountIdx++) { const subAccount = account.subAccounts[subAccountIdx]; + + if (subAccount.hidden || !accountFilter(subAccount)) { + continue; + } + ret.push({ balance: subAccount.balance, currency: subAccount.currency diff --git a/src/views/mobile/accounts/AccountList.vue b/src/views/mobile/accounts/AccountList.vue index d2d52e81..0e8d2d63 100644 --- a/src/views/mobile/accounts/AccountList.vue +++ b/src/views/mobile/accounts/AccountList.vue @@ -243,7 +243,7 @@ export default { return '***'; } - const accountsBalance = this.$utilities.getAllFilteredAccountsBalance(this.accounts, category => category.isAsset); + const accountsBalance = this.$utilities.getAllFilteredAccountsBalance(this.accounts, account => account.isAsset); let totalAssets = 0; let hasUnCalculatedAmount = false; @@ -273,7 +273,7 @@ export default { return '***'; } - const accountsBalance = this.$utilities.getAllFilteredAccountsBalance(this.accounts, category => category.isLiability); + const accountsBalance = this.$utilities.getAllFilteredAccountsBalance(this.accounts, account => account.isLiability); let totalLiabilities = 0; let hasUnCalculatedAmount = false; @@ -404,7 +404,7 @@ export default { return '***'; } - const accountsBalance = this.$utilities.getAllFilteredAccountsBalance(this.accounts, category => category.id === accountCategory.id); + const accountsBalance = this.$utilities.getAllFilteredAccountsBalance(this.accounts, account => account.category === accountCategory.id); let totalBalance = 0; let hasUnCalculatedAmount = false;