feat(reports): CategoryOverTimeTable hierarchique + collapse + resultat interleave (#260) #265

Closed
opened 2026-07-07 14:55:53 +00:00 by maximus · 0 comments
Owner

Rendre CategoryOverTimeTable en hierarchie parent/enfant indentee (comme ComparePeriodTable) a partir du champ tree (#2b) : grouper les lignes contigues en sections income/expense/transfer, brancher le repli/depli via useCollapsibleGroups (reutilise collapsibleRows.ts du #254), replie par defaut + bouton tout replier/deplier, etat persiste par rapport (cle localStorage reports-trends-expanded). Interleaver la ligne Resultat avant transferts avant la section transferts (parite ComparePeriodTable.tsx:430-442 ; absorbe le follow-up differe note dans STATE).

Fichiers concernes

  • src/components/reports/CategoryOverTimeTable.tsx (rendu hierarchique indente + chevrons + filtrage groups.visible(...) + resultat interleave)
  • src/hooks/useCollapsibleGroups.ts (reutilise ; cle de persistance dediee reports-trends-expanded)
  • src/utils/collapsibleRows.ts (reutilise ; accessors keyOf/depthOf/isParent sur l'id de categorie)
  • src/i18n/locales/{fr,en}.json (reutiliser reports.collapse.{expandAll,collapseAll} du #254 si presents)
  • Tests : rendu hierarchique, repli par defaut, resultat interleave, invariant totaux

Depends on

Criteres d'acceptation

  • Tableau tendances en hierarchie parent/enfant indentee, income-first
  • Chevron par parente + tout replier/deplier ; replie par defaut au premier affichage ; sous-total parent visible quand replie
  • Repli purement visuel : sous-totaux, Resultat avant/net et total inchanges au repli/depli (calcules sur lignes brutes) — test
  • Ligne « Resultat avant transferts » interleavee avant la section transferts
  • Etat d'expansion persiste avec une cle distincte des tableaux comparables
  • La Paie (revenu) apparait sous Revenus apres depli
  • Build + suite verts, aucune regression

Review caveats

  • 🟡 (Technique) Le collapse exige un flux depth-first parent-first (fourni par #2b) ; les cles de collapse sont par id, pas par nom.

Decisions prises ce soir

  • Replie par defaut (coherent #254/#260) ; resultat interleave (parite gold standard).

Spec source

spec-plan-tendances-hierarchiques.md (milestone overnight-2026-07-08-tendances-hierarchiques)

Rendre `CategoryOverTimeTable` en hierarchie parent/enfant indentee (comme `ComparePeriodTable`) a partir du champ `tree` (#2b) : grouper les lignes contigues en sections income/expense/transfer, brancher le repli/depli via `useCollapsibleGroups` (reutilise `collapsibleRows.ts` du #254), **replie par defaut** + bouton tout replier/deplier, etat persiste par rapport (cle localStorage `reports-trends-expanded`). Interleaver la ligne **Resultat avant transferts** avant la section transferts (parite `ComparePeriodTable.tsx:430-442` ; absorbe le follow-up differe note dans STATE). ## Fichiers concernes - `src/components/reports/CategoryOverTimeTable.tsx` (rendu hierarchique indente + chevrons + filtrage `groups.visible(...)` + resultat interleave) - `src/hooks/useCollapsibleGroups.ts` (reutilise ; cle de persistance dediee `reports-trends-expanded`) - `src/utils/collapsibleRows.ts` (reutilise ; accessors `keyOf/depthOf/isParent` sur l'id de categorie) - `src/i18n/locales/{fr,en}.json` (reutiliser `reports.collapse.{expandAll,collapseAll}` du #254 si presents) - Tests : rendu hierarchique, repli par defaut, resultat interleave, invariant totaux ## Depends on - #262 - #264 ## Criteres d'acceptation - [ ] Tableau tendances en hierarchie parent/enfant indentee, income-first - [ ] Chevron par parente + tout replier/deplier ; **replie par defaut** au premier affichage ; sous-total parent visible quand replie - [ ] Repli **purement visuel** : sous-totaux, Resultat avant/net et total inchanges au repli/depli (calcules sur lignes brutes) — test - [ ] Ligne « Resultat avant transferts » interleavee avant la section transferts - [ ] Etat d'expansion persiste avec une cle distincte des tableaux comparables - [ ] La Paie (revenu) apparait sous Revenus apres depli - [ ] Build + suite verts, aucune regression ## Review caveats - 🟡 (Technique) Le collapse exige un flux depth-first parent-first (fourni par #2b) ; les cles de collapse sont par id, pas par nom. ## Decisions prises ce soir - Replie par defaut (coherent #254/#260) ; resultat interleave (parite gold standard). ## Spec source spec-plan-tendances-hierarchiques.md (milestone overnight-2026-07-08-tendances-hierarchiques)
maximus added this to the overnight-2026-07-08-tendances-hierarchiques milestone 2026-07-07 14:55:53 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-07-07 14:55:53 +00:00
maximus added
status:approved
and removed
status:ready
labels 2026-07-08 00:25:42 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#265
No description provided.