Fix Weekly Grid WOC and Restore Forecast View Graph/UI

This commit is contained in:
Christian Vidal Wolf
2026-01-28 12:35:40 +01:00
parent f7dd827258
commit 1886554a31
3 changed files with 161 additions and 37 deletions
+12 -3
View File
@@ -21,6 +21,7 @@ interface WeeklyGridProps {
vendorStockMap?: Map<string, { eu: number; uk: number }>;
vendorStockFilter: string[];
onVendorStockFilterChange: (newFilters: string[]) => void;
velocityMap?: Map<string, number>;
}
type SortConfig = {
@@ -53,7 +54,8 @@ const WeeklyRow: React.FC<{
renderGrowth: (current: number, previous: number) => React.ReactNode;
customerFilters: string[];
vendorStockMap?: Map<string, { eu: number; uk: number }>;
}> = React.memo(({ row, weeks, onDrillDown, stockMap, top50Ranking, top50Mode, sortConfig, renderGrowth, customerFilters, vendorStockMap }) => {
velocityMap?: Map<string, number>;
}> = React.memo(({ row, weeks, onDrillDown, stockMap, top50Ranking, top50Mode, sortConfig, renderGrowth, customerFilters, vendorStockMap, velocityMap }) => {
const ranks: { rank: number; label: string; theme: 'amber' | 'blue' | 'indigo' }[] = [];
const asin = row.asin.trim().toUpperCase();
@@ -90,7 +92,12 @@ const WeeklyRow: React.FC<{
{stockMap && (
<StockBadge stock={stockMap.get(row.sku?.replace(/(DE|EN)$/i, ''))} />
)}
<VendorStockBadge asin={row.asin} vendorStockMap={vendorStockMap} mode={top50Mode} avgWeeklySales={row.avgWeeklySales} />
<VendorStockBadge
asin={asin}
vendorStockMap={vendorStockMap}
mode={top50Mode}
avgWeeklySales={velocityMap?.get(asin)}
/>
</div>
<span className="text-[9px] text-fuchsia-400/80 font-bold uppercase tracking-widest">{row.line}</span>
</div>
@@ -146,7 +153,8 @@ const WeeklyGrid: React.FC<WeeklyGridProps & { top50Mode: 'eu' | 'uk' }> = ({
vendorStockFilter,
onVendorStockFilterChange,
customerFilters,
top50Mode
top50Mode,
velocityMap
}) => {
// Pivot data - memoized
const { rows, weeks: allWeeks } = useMemo(() => pivotWeeklySalesData(data), [data]);
@@ -583,6 +591,7 @@ const WeeklyGrid: React.FC<WeeklyGridProps & { top50Mode: 'eu' | 'uk' }> = ({
sortConfig={sortConfig}
renderGrowth={renderGrowth}
customerFilters={customerFilters}
velocityMap={velocityMap}
/>
))}
{displayCount < sortedRows.length && (