diff --git a/components/WeeklyGrid.tsx b/components/WeeklyGrid.tsx index 9f16716..efe14b6 100644 --- a/components/WeeklyGrid.tsx +++ b/components/WeeklyGrid.tsx @@ -559,25 +559,6 @@ const WeeklyGrid: React.FC = ({ return totals; }, [rows, weeks]); - const aggregateWoc = useMemo(() => { - if (!vendorStockMap || !velocityMap || filteredRows.length === 0) return null; - - let totalStock = 0; - let totalVelocity = 0; - - filteredRows.forEach(row => { - const asin = row.asin.trim().toUpperCase(); - const stockData = vendorStockMap.get(asin); - if (stockData) { - totalStock += (top50Mode === 'uk' ? stockData.uk : stockData.eu); - } - totalVelocity += (velocityMap.get(asin) || 0); - }); - - if (totalVelocity > 0) return totalStock / totalVelocity; - if (totalStock > 0) return 999; - return 0; - }, [filteredRows, vendorStockMap, velocityMap, top50Mode]); // 1. Filter by search term, Top 50, and growth (using debounced value) const filteredRows = useMemo(() => { @@ -727,6 +708,26 @@ const WeeklyGrid: React.FC = ({ return result; }, [rows, debouncedSearch, showOnlyTop50, showActiveExperiments, experimentMap, top50Ranking, growthFilterMode, growthThreshold, sortConfig, weeks, top50Mode, wocFilter, velocityMap, vendorStockMap, numericFilters, columnFilters]); + const aggregateWoc = useMemo(() => { + if (!vendorStockMap || !velocityMap || filteredRows.length === 0) return null; + + let totalStock = 0; + let totalVelocity = 0; + + filteredRows.forEach(row => { + const asin = row.asin.trim().toUpperCase(); + const stockData = vendorStockMap.get(asin); + if (stockData) { + totalStock += (top50Mode === 'uk' ? stockData.uk : stockData.eu); + } + totalVelocity += (velocityMap.get(asin) || 0); + }); + + if (totalVelocity > 0) return totalStock / totalVelocity; + if (totalStock > 0) return 999; + return 0; + }, [filteredRows, vendorStockMap, velocityMap, top50Mode]); + // 2. Sort results const sortedRows = useMemo(() => { if (!sortConfig || filteredRows.length === 0) return filteredRows;