diff --git a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png index 3cb6f9c634..6bd36f33b0 100644 Binary files a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png and b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png index e2988c222b..4722fad3d1 100644 Binary files a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png and b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png index 717ce7b1ab..0f2889138a 100644 Binary files a/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png and b/packages/desktop-client/e2e/rules.test.js-snapshots/Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/accounts/Account.jsx b/packages/desktop-client/src/components/accounts/Account.jsx index 225ec864bb..ecf4f27f7f 100644 --- a/packages/desktop-client/src/components/accounts/Account.jsx +++ b/packages/desktop-client/src/components/accounts/Account.jsx @@ -680,6 +680,26 @@ class AccountInternal extends PureComponent { }; } + getFilteredAmount = async (filters, conditionsOpKey) => { + const filter = queries.getAccountFilter(this.props.accountId); + + let query = q('transactions').filter({ + [conditionsOpKey]: [...filters], + }); + if (filter) { + query = query.filter(filter); + } + + const filteredQuery = await runQuery( + query.select([{ amount: { $sum: '$amount' } }]), + ); + const filteredAmount = filteredQuery.data.reduce( + (a, v) => (a = a + v.amount), + 0, + ); + return filteredAmount; + }; + isNew = id => { return this.props.newTransactions.includes(id); }; @@ -1307,6 +1327,10 @@ class AccountInternal extends PureComponent { conditions: conditions.filter(cond => !cond.customName), }); const conditionsOpKey = this.state.conditionsOp === 'or' ? '$or' : '$and'; + this.filteredAmount = await this.getFilteredAmount( + filters, + conditionsOpKey, + ); this.currentQuery = this.rootQuery.filter({ [conditionsOpKey]: [...filters, ...customFilters], }); @@ -1524,6 +1548,7 @@ class AccountInternal extends PureComponent { > !item._unmatched && !item.is_parent) - .reduce((sum, product) => sum + product.amount, 0); - +function FilteredBalance({ filteredAmount }) { return ( ); @@ -142,7 +138,7 @@ export function Balances({ onToggleExtraBalances, account, filteredItems, - transactions, + filteredAmount, }) { const selectedItems = useSelectedItems(); @@ -201,7 +197,7 @@ export function Balances({ )} {filteredItems.length > 0 && ( - + )} ); diff --git a/packages/desktop-client/src/components/accounts/Header.jsx b/packages/desktop-client/src/components/accounts/Header.jsx index 21b0e64b3b..a3daf4b750 100644 --- a/packages/desktop-client/src/components/accounts/Header.jsx +++ b/packages/desktop-client/src/components/accounts/Header.jsx @@ -32,6 +32,7 @@ import { Balances } from './Balance'; import { ReconcilingMessage, ReconcileTooltip } from './Reconcile'; export function AccountHeader({ + filteredAmount, tableRef, editingName, isNameEditable, @@ -242,7 +243,7 @@ export function AccountHeader({ onToggleExtraBalances={onToggleExtraBalances} account={account} filteredItems={filters} - transactions={transactions} + filteredAmount={filteredAmount} />