feat: introduce GridClient component to manage grid state, scoring, and UI orchestration.

This commit is contained in:
Michael committed 2026-03-18 14:35:24 +01:00
1 parent 1035489db1
commit 7b209292b9
1 file changed
+5 -3
+5 -3
View File
@@ -30,7 +30,9 @@ export function GridClient({ initialRows, nomFournisseur, fournisseurs, magasins
const setActiveGridQuery = useGridStore((s) => s.setActiveGridQuery);
const searchParams = useSearchParams();
const scoreSettings = useScoreSettingsStore((s) => ({ weightCA: s.weightCA, weightVolume: s.weightVolume, weightMarge: s.weightMarge }));
const weightCA = useScoreSettingsStore((s) => s.weightCA);
const weightVolume = useScoreSettingsStore((s) => s.weightVolume);
const weightMarge = useScoreSettingsStore((s) => s.weightMarge);
const [selectedCodeins, setSelectedCodeins] = useState<string[]>([]);
const [isPending, startTransition] = useTransition();
@@ -59,9 +61,9 @@ export function GridClient({ initialRows, nomFournisseur, fournisseurs, magasins
// Optimisation : On évite le JSON.parse(JSON.stringify()) qui est très lourd sur 1000 lignes
// On passe directement les initialRows au moteur de score, ou on fait une copie superficielle si nécessaire.
// Le moteur de score doit idéalement retourner de nouveaux objets.
const scoredRows = computeProductScores([...initialRows], scoreSettings);
const scoredRows = computeProductScores([...initialRows], { weightCA, weightVolume, weightMarge });
setRows(scoredRows);
}, [initialRows, setRows, scoreSettings, isMounted]);
}, [initialRows, setRows, weightCA, weightVolume, weightMarge, isMounted]);
const handleSave = () => {
startTransition(async () => {