feat: enable sorting and filtering on CPNP No. column in Cosmetic Items tab

Show all cosmetic products regardless of CPNP status. Column filter on
CPNP No. lets user isolate items with empty value.

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
Christian Vidal Wolf
2026-05-12 11:53:54 +02:00
co-authored by claude-flow
parent 7d37d4777b
commit 19b02812bd
-8
View File
@@ -43,8 +43,6 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro
data.forEach(row => { data.forEach(row => {
const lineVal = String(row[COLUMNS.LINE] ?? '').trim().toUpperCase(); const lineVal = String(row[COLUMNS.LINE] ?? '').trim().toUpperCase();
if (!COSMETIC_LINES.some(l => lineVal === l)) return; if (!COSMETIC_LINES.some(l => lineVal === l)) return;
const cpnp = row[COLUMNS.CPNP_NO];
if (cpnp !== null && cpnp !== undefined && String(cpnp).trim() !== '') return;
columns.forEach(({ col }) => { columns.forEach(({ col }) => {
result[col].add(String(row[col] ?? '')); result[col].add(String(row[col] ?? ''));
@@ -66,12 +64,6 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro
return COSMETIC_LINES.some(l => lineVal === l); return COSMETIC_LINES.some(l => lineVal === l);
}); });
// Filter: CPNP No. is empty
result = result.filter(({ row }) => {
const cpnp = row[COLUMNS.CPNP_NO];
return cpnp === null || cpnp === undefined || String(cpnp).trim() === '';
});
// Global search // Global search
if (search) { if (search) {
const terms = search.toLowerCase().split(/\s+/).filter(Boolean); const terms = search.toLowerCase().split(/\s+/).filter(Boolean);