mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-20 05:28:11 +02:00
fix(grid): aligner la fenêtre 12 mois sur les données et tabuler les ventes du modal
Le total « Tot. 12m » est figé côté serveur sur SA fenêtre de 12 mois, tandis que la Grille et le modal recalculaient les 12 mois depuis l'horloge du navigateur. Dès que les deux divergeaient (onglet ouvert au changement de mois, lignes servies depuis le cache), un mois de ventes disparaissait des colonnes tout en restant compté dans le total : 28 sur la ligne, 20 dans le modal. - months.ts : `getMonthsFromRows()` lit la fenêtre dans les clés des séries reçues ; `getLast12Months()` ne sert plus que de repli avant chargement. - heatmap-grid : MONTHS_12 dérivé des lignes chargées. - product-monthly-modal : le tableau par magasin devient générique et sert aussi aux ventes, sous le graphique, avec une colonne de cumul « 12 m » qui retombe sur le total de la Grille. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0177HLQz6w2hgoXpx6t1Rkn9
This commit is contained in:
3 files changed
+121
-40
No files matched your search
@@ -32,6 +32,7 @@ import type { ProductRow, GammeCode } from "@/types/grid";
|
||||
import { cn } from "@/lib/utils";
|
||||
import {
|
||||
getLast12Months,
|
||||
getMonthsFromRows,
|
||||
formatMonthLabel,
|
||||
formatDate,
|
||||
SITE_LABELS,
|
||||
@@ -620,8 +621,11 @@ export function HeatmapGrid({ onSelectionChange, isAdmin, nomFournisseur }: Heat
|
||||
const [gapsOpen, setGapsOpen] = useState(false);
|
||||
const tableContainerRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
// Calculer les mois dynamiquement pour éviter le mismatch entre serveur et client
|
||||
const MONTHS_12 = useMemo(() => getLast12Months(), []);
|
||||
// Les 12 mois viennent des données, pas de l'horloge du navigateur : les
|
||||
// totaux sont figés sur la fenêtre du serveur, les colonnes doivent l'être
|
||||
// aussi, sinon un mois manque aux cases mais pas au total (cf. months.ts).
|
||||
// Le calcul local ne sert que tant qu'aucune ligne n'est chargée.
|
||||
const MONTHS_12 = useMemo(() => getMonthsFromRows(rows) ?? getLast12Months(), [rows]);
|
||||
|
||||
useEffect(() => {
|
||||
setIsMounted(true);
|
||||
|
||||
Reference in new issue
Block a user