mirror of
https://github.com/christianvidalwolf-prog/Craze-Data-check.git
synced 2026-08-03 16:05:23 +02:00
feat: implement multi-word AND search in all views and initialize RuFlo V3
This commit is contained in:
@@ -114,12 +114,16 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
||||
const searchSuggestions = useMemo(() => {
|
||||
if (!search && selectedSearchItems.size === 0) return data.slice(0, 50);
|
||||
if (!search) return [];
|
||||
const s = search.toLowerCase();
|
||||
return data.filter(r =>
|
||||
String(r[COLUMNS.ARTICLE_NO] || '').toLowerCase().includes(s) ||
|
||||
String(r[COLUMNS.ARTICLE_NAME] || '').toLowerCase().includes(s)
|
||||
).slice(0, 50);
|
||||
}, [data, search, selectedSearchItems]);
|
||||
|
||||
const terms = search.toLowerCase().split(/\s+/).filter(Boolean);
|
||||
if (terms.length === 0) return data.slice(0, 50);
|
||||
|
||||
return data.filter(r => {
|
||||
const articleNo = String(r[COLUMNS.ARTICLE_NO] || '').toLowerCase();
|
||||
const articleName = String(r[COLUMNS.ARTICLE_NAME] || '').toLowerCase();
|
||||
return terms.every(term => articleNo.includes(term) || articleName.includes(term));
|
||||
}).slice(0, 50);
|
||||
}, [data, search, selectedSearchItems, COLUMNS]);
|
||||
|
||||
const handleSearchItemClick = (index: number) => {
|
||||
const newSelected = new Set(selectedSearchItems);
|
||||
@@ -310,13 +314,16 @@ export function PricingView({ data, headers, onSaveRow, onCaptureState, onEdit,
|
||||
case 'units_errors': result = analyzedRows.filter(r => r.unitErrors.length > 0); break;
|
||||
}
|
||||
|
||||
// Global search (SKU + Name)
|
||||
// Global search (SKU + Name) - Multi-word AND support
|
||||
if (search) {
|
||||
const s = search.toLowerCase();
|
||||
result = result.filter(r =>
|
||||
String(r.row[COLUMNS.ARTICLE_NO] || '').toLowerCase().includes(s) ||
|
||||
String(r.row[COLUMNS.ARTICLE_NAME] || '').toLowerCase().includes(s)
|
||||
);
|
||||
const terms = search.toLowerCase().split(/\s+/).filter(Boolean);
|
||||
if (terms.length > 0) {
|
||||
result = result.filter(r => {
|
||||
const articleNo = String(r.row[COLUMNS.ARTICLE_NO] || '').toLowerCase();
|
||||
const articleName = String(r.row[COLUMNS.ARTICLE_NAME] || '').toLowerCase();
|
||||
return terms.every(term => articleNo.includes(term) || articleName.includes(term));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Selected items from search dropdown
|
||||
|
||||
Reference in New Issue
Block a user