From 300b4e7db7a317a857f477c6a8bbb0d29bcb5fd8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Dec 2025 01:32:03 +0000 Subject: [PATCH] feat(frontend): Fix search focus issue and add transaction statistics. Co-authored-by: elisiariocouto <818914+elisiariocouto@users.noreply.github.com> --- frontend/src/components/TransactionsTable.tsx | 91 +++++++++++++++++++ frontend/src/components/filters/FilterBar.tsx | 23 +++++ 2 files changed, 114 insertions(+) diff --git a/frontend/src/components/TransactionsTable.tsx b/frontend/src/components/TransactionsTable.tsx index 13fb601..bf624b2 100644 --- a/frontend/src/components/TransactionsTable.tsx +++ b/frontend/src/components/TransactionsTable.tsx @@ -355,6 +355,25 @@ export default function TransactionsTable() { ); } + // Calculate stats from current page transactions + const totalIncome = transactions + .filter((t: Transaction) => t.transaction_value > 0) + .reduce((sum: number, t: Transaction) => sum + t.transaction_value, 0); + + const totalExpenses = Math.abs( + transactions + .filter((t: Transaction) => t.transaction_value < 0) + .reduce((sum: number, t: Transaction) => sum + t.transaction_value, 0) + ); + + const stats = { + totalCount: pagination?.total || 0, + pageCount: transactions.length, + totalIncome, + totalExpenses, + netChange: totalIncome - totalExpenses, + }; + return (
+ Showing +
++ {stats.pageCount} +
++ of {stats.totalCount} total +
++ Income +
++ +{formatCurrency(stats.totalIncome, transactions[0]?.transaction_currency || "EUR")} +
++ Expenses +
++ -{formatCurrency(stats.totalExpenses, transactions[0]?.transaction_currency || "EUR")} +
++ Net Change +
+= 0 ? "text-green-600" : "text-red-600" + }`} + > + {stats.netChange >= 0 ? "+" : ""} + {formatCurrency(stats.netChange, transactions[0]?.transaction_currency || "EUR")} +
+