diff --git a/CHANGELOG.fr.md b/CHANGELOG.fr.md index a3d909f..5daf118 100644 --- a/CHANGELOG.fr.md +++ b/CHANGELOG.fr.md @@ -2,6 +2,10 @@ ## [Non publié] +### Modifié +- Rapport Catégorie dans le temps : suppression du filtre codé en dur sur les dépenses, affiche maintenant tous les types de transactions par défaut (#41) +- Rapport Catégorie dans le temps : ajout d'un filtre par type (dépense/revenu/transfert) dans le panneau de filtre à droite (#41) + ## [0.6.6] ### Modifié diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c15ed6..f764f12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Changed +- Category Over Time report: removed hard-coded expense-only filter, now shows all transaction types by default (#41) +- Category Over Time report: added type filter (expense/income/transfer) in the right filter panel (#41) + ## [0.6.6] ### Changed diff --git a/docs/guide-utilisateur.md b/docs/guide-utilisateur.md index 23463d0..4053fee 100644 --- a/docs/guide-utilisateur.md +++ b/docs/guide-utilisateur.md @@ -252,7 +252,7 @@ Visualisez vos données financières avec des graphiques interactifs et comparez - Tendances mensuelles : revenus vs dépenses dans le temps (graphique en barres) - Dépenses par catégorie : répartition des dépenses (graphique circulaire) -- Catégories dans le temps : suivez l'évolution de chaque catégorie (graphique en ligne) +- Catégories dans le temps : suivez l'évolution de chaque catégorie (graphique en barres empilées), avec filtre par type (dépense/revenu/transfert) - Budget vs Réel : tableau comparatif mensuel et cumul annuel - Rapport dynamique : tableau croisé dynamique (pivot table) personnalisable - Motifs SVG (lignes, points, hachures) pour distinguer les catégories diff --git a/src/components/reports/ReportFilterPanel.tsx b/src/components/reports/ReportFilterPanel.tsx index ec0aea0..7f21a2a 100644 --- a/src/components/reports/ReportFilterPanel.tsx +++ b/src/components/reports/ReportFilterPanel.tsx @@ -2,6 +2,7 @@ import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Filter, Search } from "lucide-react"; import type { ImportSource } from "../../shared/types"; +import type { CategoryTypeFilter } from "../../hooks/useReports"; interface ReportFilterPanelProps { categories: { name: string; color: string }[]; @@ -11,6 +12,8 @@ interface ReportFilterPanelProps { sources: ImportSource[]; selectedSourceId: number | null; onSourceChange: (id: number | null) => void; + categoryType?: CategoryTypeFilter; + onCategoryTypeChange?: (type: CategoryTypeFilter) => void; } export default function ReportFilterPanel({ @@ -21,6 +24,8 @@ export default function ReportFilterPanel({ sources, selectedSourceId, onSourceChange, + categoryType, + onCategoryTypeChange, }: ReportFilterPanelProps) { const { t } = useTranslation(); const [search, setSearch] = useState(""); @@ -57,6 +62,28 @@ export default function ReportFilterPanel({ )} + {/* Type filter */} + {onCategoryTypeChange && ( +
+
+ + {t("categories.type")} +
+
+ +
+
+ )} + {/* Category filter */} {categories.length > 0 &&