mirror of
https://github.com/christianvidalwolf-prog/CrazeAnalytix.git
synced 2026-08-03 12:35:24 +02:00
Implement Vendor Stock Filtering across Weekly Sales, Ads, and Forecast views
This commit is contained in:
@@ -54,7 +54,6 @@ const App: React.FC = () => {
|
||||
// Modal State
|
||||
const [isDataModalOpen, setIsDataModalOpen] = useState(false);
|
||||
|
||||
// Filters State
|
||||
const [filters, setFilters] = useState<FilterState>({
|
||||
customer: [],
|
||||
year: [],
|
||||
@@ -63,7 +62,9 @@ const App: React.FC = () => {
|
||||
asin: [],
|
||||
sku: [],
|
||||
title: [],
|
||||
week: [],
|
||||
stock: [],
|
||||
vendorStock: [],
|
||||
});
|
||||
|
||||
// Handle Data Fetch (Simplified)
|
||||
@@ -229,6 +230,7 @@ const App: React.FC = () => {
|
||||
title: [],
|
||||
week: [],
|
||||
stock: [],
|
||||
vendorStock: [],
|
||||
});
|
||||
};
|
||||
|
||||
@@ -405,8 +407,15 @@ const App: React.FC = () => {
|
||||
return metaMap;
|
||||
}, [rawData]);
|
||||
|
||||
const filteredData = useMemo(() => filterData(rawData, filters, stockMap), [rawData, filters, stockMap]);
|
||||
const filteredAdsData = useMemo(() => filterAdsData(adsData, filters, globalAsinMetadata, stockMap), [adsData, filters, globalAsinMetadata, stockMap]);
|
||||
const top50Mode = useMemo(() => {
|
||||
const hasUK = filters.customer.includes('Amazon UK');
|
||||
const hasEU = filters.customer.some(c => ['Amazon DE', 'Amazon IT', 'Amazon FR', 'Amazon ES'].includes(c));
|
||||
if (hasUK) return 'uk';
|
||||
return 'eu';
|
||||
}, [filters.customer]);
|
||||
|
||||
const filteredData = useMemo(() => filterData(rawData, filters, stockMap, vendorStockMap, top50Mode), [rawData, filters, stockMap, vendorStockMap, top50Mode]);
|
||||
const filteredAdsData = useMemo(() => filterAdsData(adsData, filters, globalAsinMetadata, stockMap, vendorStockMap, top50Mode), [adsData, filters, globalAsinMetadata, stockMap, vendorStockMap, top50Mode]);
|
||||
const aggregatedData = useMemo(() => aggregateData(filteredData), [filteredData]);
|
||||
|
||||
// Calculate country-aware Top 50 Best Sellers for 2025
|
||||
@@ -641,6 +650,8 @@ const App: React.FC = () => {
|
||||
vendorStockMap={vendorStockMap}
|
||||
stockFilter={filters.stock}
|
||||
onStockFilterChange={(s) => setFilters(prev => ({ ...prev, stock: s }))}
|
||||
vendorStockFilter={filters.vendorStock}
|
||||
onVendorStockFilterChange={(s) => setFilters(prev => ({ ...prev, vendorStock: s }))}
|
||||
customerFilters={filters.customer}
|
||||
top50Mode={filters.customer.includes('Amazon UK') ? 'uk' : 'eu'}
|
||||
top50Ranking={top50Ranking2025}
|
||||
@@ -662,6 +673,8 @@ const App: React.FC = () => {
|
||||
vendorStockMap={vendorStockMap}
|
||||
stockFilter={filters.stock}
|
||||
onStockFilterChange={(s) => setFilters(prev => ({ ...prev, stock: s }))}
|
||||
vendorStockFilter={filters.vendorStock}
|
||||
onVendorStockFilterChange={(s) => setFilters(prev => ({ ...prev, vendorStock: s }))}
|
||||
top50Mode={filters.customer.includes('Amazon UK') ? 'uk' : 'eu'}
|
||||
/>
|
||||
</Suspense>
|
||||
@@ -676,6 +689,8 @@ const App: React.FC = () => {
|
||||
vendorStockMap={vendorStockMap}
|
||||
stockFilter={filters.stock}
|
||||
onStockFilterChange={(s) => setFilters(prev => ({ ...prev, stock: s }))}
|
||||
vendorStockFilter={filters.vendorStock}
|
||||
onVendorStockFilterChange={(s) => setFilters(prev => ({ ...prev, vendorStock: s }))}
|
||||
top50Mode={filters.customer.includes('Amazon UK') ? 'uk' : 'eu'}
|
||||
/>
|
||||
</Suspense>
|
||||
|
||||
Reference in New Issue
Block a user