From 1d5f918a0ae248f7fb9fe66327401e9f550cc071 Mon Sep 17 00:00:00 2001 From: Christian Vidal Wolf Date: Wed, 20 May 2026 15:02:48 +0200 Subject: [PATCH] show all cosmetic items by cpnp filter --- src/components/CosmeticItemsView.tsx | 38 +++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/components/CosmeticItemsView.tsx b/src/components/CosmeticItemsView.tsx index 9839d43..1c71e10 100644 --- a/src/components/CosmeticItemsView.tsx +++ b/src/components/CosmeticItemsView.tsx @@ -27,12 +27,12 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro const [search, setSearch] = usePersistentState('cosmeticItems-search', ''); const [sortCol, setSortCol] = usePersistentState('cosmeticItems-sortCol', null); const [sortDesc, setSortDesc] = usePersistentState('cosmeticItems-sortDesc', false); + const [cpnpFilter, setCpnpFilter] = usePersistentState<'all' | 'present' | 'missing'>('cosmeticItems-cpnpFilter', 'all'); const [page, setPage] = useState(1); const [columnFilters, setColumnFilters] = usePersistentState>('cosmeticItems-columnFilters', {}); const [openFilter, setOpenFilter] = useState(null); const [editingCpnp, setEditingCpnp] = useState<{ rowIndex: number; value: string } | null>(null); const [savingCpnp, setSavingCpnp] = useState(null); - const [dashboardFocus, setDashboardFocus] = useState<'present' | 'missing' | null>(null); const cpnpInputRef = useRef(null); useEffect(() => { @@ -43,12 +43,12 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro if (!dashboardDrilldown || dashboardDrilldown.tabId !== 'cosmetic_items') return; const focus = dashboardDrilldown.focus === 'missing' ? 'missing' : 'present'; - setDashboardFocus(focus); + setCpnpFilter(focus); setSearch(''); setColumnFilters({}); setPage(1); onDashboardDrilldownApplied?.(); - }, [dashboardDrilldown?.id, dashboardDrilldown?.tabId, dashboardDrilldown?.focus, onDashboardDrilldownApplied, setSearch, setColumnFilters]); + }, [dashboardDrilldown?.id, dashboardDrilldown?.tabId, dashboardDrilldown?.focus, onDashboardDrilldownApplied, setSearch, setColumnFilters, setCpnpFilter]); const pageSize = 100; @@ -92,10 +92,10 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro return COSMETIC_LINES.some(l => lineVal === l); }); - if (dashboardFocus) { + if (cpnpFilter !== 'all') { result = result.filter(({ row }) => { const cpnp = String(row[COLUMNS.CPNP_NO] ?? '').trim(); - return dashboardFocus === 'present' ? cpnp !== '' : cpnp === ''; + return cpnpFilter === 'present' ? cpnp !== '' : cpnp === ''; }); } @@ -136,7 +136,7 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro } return result; - }, [data, search, sortCol, sortDesc, columnFilters, COLUMNS, columnUniqueValues, dashboardFocus]); + }, [data, search, sortCol, sortDesc, columnFilters, COLUMNS, columnUniqueValues, cpnpFilter]); const paginatedData = useMemo(() => { const start = (page - 1) * pageSize; @@ -219,6 +219,26 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro ยท Lines: {COSMETIC_LINES.join(', ')} +
+ {[ + { id: 'all', label: 'All' }, + { id: 'present', label: 'With CPNP' }, + { id: 'missing', label: 'Missing CPNP' }, + ].map(option => ( + + ))} +
@@ -385,7 +405,11 @@ export function CosmeticItemsView({ data, headers, onSaveRow, onCaptureState, ro {paginatedData.length === 0 && ( - No cosmetic items pending CPNP registration. + {cpnpFilter === 'all' + ? 'No cosmetic items found.' + : cpnpFilter === 'present' + ? 'No cosmetic items with CPNP No. found.' + : 'No cosmetic items missing CPNP No. found.'} )}