Implement multi-ASIN/SKU search support in all main views

This commit is contained in:
Christian Vidal Wolf
2026-01-29 13:14:28 +01:00
parent 9736a8194f
commit 3f50883bd2
3 changed files with 40 additions and 18 deletions
+12 -5
View File
@@ -260,12 +260,19 @@ const AdsPerformance: React.FC<AdsPerformanceProps> = ({
} }
if (searchTerm) { if (searchTerm) {
const lowSearch = searchTerm.toLowerCase(); const searchTerms = searchTerm.toLowerCase().split(/[\s,]+/).filter(term => term.length > 0);
result = result.filter(item => if (searchTerms.length > 0) {
item.asin.toLowerCase().includes(lowSearch) || result = result.filter(item => {
item.sku.toLowerCase().includes(lowSearch) || const rowValues = [
item.title.toLowerCase().includes(lowSearch) item.asin.toLowerCase(),
item.sku.toLowerCase(),
item.title.toLowerCase()
];
return searchTerms.some(term =>
rowValues.some(val => val.includes(term))
); );
});
}
} }
// Apply WOC Filter // Apply WOC Filter
+12 -4
View File
@@ -276,11 +276,19 @@ const ForecastView: React.FC<ForecastViewProps> = ({
} }
if (debouncedSearch) { if (debouncedSearch) {
result = result.filter(p => const searchTerms = debouncedSearch.toLowerCase().split(/[\s,]+/).filter(term => term.length > 0);
p.sku.toLowerCase().includes(debouncedSearch) || if (searchTerms.length > 0) {
p.asin.toLowerCase().includes(debouncedSearch) || result = result.filter(p => {
p.title.toLowerCase().includes(debouncedSearch) const rowValues = [
p.sku.toLowerCase(),
p.asin.toLowerCase(),
p.title.toLowerCase()
];
return searchTerms.some(term =>
rowValues.some(val => val.includes(term))
); );
});
}
} }
// Apply WOC Filter // Apply WOC Filter
+13 -6
View File
@@ -248,13 +248,20 @@ const WeeklyGrid: React.FC<WeeklyGridProps & { top50Mode: 'eu' | 'uk' }> = ({
// Search Filter // Search Filter
if (debouncedSearch) { if (debouncedSearch) {
const lowSearch = debouncedSearch.toLowerCase(); const searchTerms = debouncedSearch.toLowerCase().split(/[\s,]+/).filter(t => t.length > 0);
result = result.filter(r => if (searchTerms.length > 0) {
r.sku.toLowerCase().includes(lowSearch) || result = result.filter(r => {
r.asin.toLowerCase().includes(lowSearch) || const rowValues = [
r.title.toLowerCase().includes(lowSearch) || r.sku.toLowerCase(),
r.line.toLowerCase().includes(lowSearch) r.asin.toLowerCase(),
r.title.toLowerCase(),
r.line.toLowerCase()
];
return searchTerms.some(term =>
rowValues.some(val => val.includes(term))
); );
});
}
} }
// Growth Filter (if active) // Growth Filter (if active)