From dbae7938da9b0a3b80f242dac3e6f177e03a7fdd Mon Sep 17 00:00:00 2001 From: ZProger Date: Sun, 30 Aug 2026 19:30:49 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20show=20full=20category=20path=20(parent?= =?UTF-8?q?=20=C2=B7=20subcategory)=20everywhere,=20group=20filters=20by?= =?UTF-8?q?=20hierarchy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Транзакция на подкатегории показывала только её имя — непонятно было, что это подкатегория и к какой родительской категории она относится. Фильтры по категории в Транзакциях и Отчётах тоже перечисляли подкатегории наравне с родительскими, без иерархии. - categoryLabels.ts: categoryPath() и buildHierarchicalCategories() — общая логика, вынесенная из TransactionFormModal. - Список транзакций и «Последние транзакции» на Dashboard показывают счёт, затем родителя, затем подкатегорию. - Фильтр категорий в Транзакциях сгруппирован по типу (как в Отчётах); оба списка показывают подкатегорию с отступом под родителем. --- .../dashboard/RecentTransactionsCard.tsx | 12 +++++- .../transactions/TransactionFormModal.tsx | 22 ++++------ .../transactions/TransactionsTable.tsx | 6 ++- frontend/src/lib/categoryLabels.ts | 40 +++++++++++++++++++ frontend/src/pages/ReportsPage.tsx | 19 +++++++-- frontend/src/pages/TransactionsPage.tsx | 40 +++++++++++++++---- 6 files changed, 111 insertions(+), 28 deletions(-) diff --git a/frontend/src/components/dashboard/RecentTransactionsCard.tsx b/frontend/src/components/dashboard/RecentTransactionsCard.tsx index f2ffc43..76fc26e 100644 --- a/frontend/src/components/dashboard/RecentTransactionsCard.tsx +++ b/frontend/src/components/dashboard/RecentTransactionsCard.tsx @@ -3,7 +3,9 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/Card"; import { getCategoryIcon } from "@/lib/icons"; import { formatCurrency, formatTransactionDate } from "@/lib/format"; import { useTranslation } from "@/lib/i18n"; +import { categoryPath, translateCategoryName } from "@/lib/categoryLabels"; import { useTransactions } from "@/hooks/useTransactions"; +import { useCategories } from "@/hooks/useCategories"; interface RecentTransactionsCardProps { year: number; @@ -13,6 +15,7 @@ interface RecentTransactionsCardProps { export function RecentTransactionsCard({ year, month }: RecentTransactionsCardProps) { const { t } = useTranslation(); const { data, isLoading } = useTransactions({ year, month, page: 1, page_size: 6 }); + const { data: categories } = useCategories(); return ( @@ -33,10 +36,16 @@ export function RecentTransactionsCard({ year, month }: RecentTransactionsCardPr ) : (