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) {
const lowSearch = searchTerm.toLowerCase();
result = result.filter(item =>
item.asin.toLowerCase().includes(lowSearch) ||
item.sku.toLowerCase().includes(lowSearch) ||
item.title.toLowerCase().includes(lowSearch)
const searchTerms = searchTerm.toLowerCase().split(/[\s,]+/).filter(term => term.length > 0);
if (searchTerms.length > 0) {
result = result.filter(item => {
const rowValues = [
item.asin.toLowerCase(),
item.sku.toLowerCase(),
item.title.toLowerCase()
];
return searchTerms.some(term =>
rowValues.some(val => val.includes(term))
);
});
}
}
// Apply WOC Filter
+12 -4
View File
@@ -276,11 +276,19 @@ const ForecastView: React.FC<ForecastViewProps> = ({
}
if (debouncedSearch) {
result = result.filter(p =>
p.sku.toLowerCase().includes(debouncedSearch) ||
p.asin.toLowerCase().includes(debouncedSearch) ||
p.title.toLowerCase().includes(debouncedSearch)
const searchTerms = debouncedSearch.toLowerCase().split(/[\s,]+/).filter(term => term.length > 0);
if (searchTerms.length > 0) {
result = result.filter(p => {
const rowValues = [
p.sku.toLowerCase(),
p.asin.toLowerCase(),
p.title.toLowerCase()
];
return searchTerms.some(term =>
rowValues.some(val => val.includes(term))
);
});
}
}
// Apply WOC Filter
+13 -6
View File
@@ -248,13 +248,20 @@ const WeeklyGrid: React.FC<WeeklyGridProps & { top50Mode: 'eu' | 'uk' }> = ({
// Search Filter
if (debouncedSearch) {
const lowSearch = debouncedSearch.toLowerCase();
result = result.filter(r =>
r.sku.toLowerCase().includes(lowSearch) ||
r.asin.toLowerCase().includes(lowSearch) ||
r.title.toLowerCase().includes(lowSearch) ||
r.line.toLowerCase().includes(lowSearch)
const searchTerms = debouncedSearch.toLowerCase().split(/[\s,]+/).filter(t => t.length > 0);
if (searchTerms.length > 0) {
result = result.filter(r => {
const rowValues = [
r.sku.toLowerCase(),
r.asin.toLowerCase(),
r.title.toLowerCase(),
r.line.toLowerCase()
];
return searchTerms.some(term =>
rowValues.some(val => val.includes(term))
);
});
}
}
// Growth Filter (if active)