From aa4a916c5d578540dad235d27f70f8863b2b5c11 Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Fri, 17 Apr 2026 08:14:50 +0200 Subject: [PATCH] fix: Restore missing top50Ranking2025 definition --- App.tsx | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/App.tsx b/App.tsx index d944d88..6304f0a 100644 --- a/App.tsx +++ b/App.tsx @@ -554,6 +554,37 @@ const App: React.FC = () => { const aggregatedData = useMemo(() => aggregateData(filteredData), [filteredData]); console.timeEnd('aggregatedData'); + const top50Ranking2025 = useMemo(() => { + // Filter only 2025 data + const data2025 = rawData.filter(r => r.year === 2025); + + const calculateTop50 = (entries: SalesRecord[]) => { + const asinTotals = new Map(); + entries.forEach(r => { + const asin = r.asin.trim().toUpperCase(); + asinTotals.set(asin, (asinTotals.get(asin) || 0) + r.sellOut); + }); + + const sorted = Array.from(asinTotals.entries()) + .sort((a, b) => b[1] - a[1]) + .slice(0, 50); + + const rankMap = new Map(); + sorted.forEach(([asin], index) => { + rankMap.set(asin, index + 1); + }); + return rankMap; + }; + + const euData = data2025.filter(r => !r.customer.toLowerCase().includes('uk')); + const ukData = data2025.filter(r => r.customer.toLowerCase().includes('uk')); + + return { + eu: calculateTop50(euData), + uk: calculateTop50(ukData) + }; + }, [rawData]); + const filteredBsrData = useMemo(() => filterBsrData(bsrData, deferredFilters, globalAsinMetadata, stockMap, vendorStockMap, top50Mode), [bsrData, deferredFilters, globalAsinMetadata, stockMap, vendorStockMap, top50Mode]); console.time('combinedAdsData');