Sort pick list items alphabetically

This commit is contained in:
beatz174-bit
2025-11-23 15:26:15 +10:00
parent 32e2adaf2f
commit ed96c7d40a
+29 -21
View File
@@ -43,27 +43,6 @@ export const ActivePickListScreen = () => {
[items], [items],
); );
const areaName = useMemo(
() => areas.find((area) => area.id === pickList?.area_id)?.name ?? 'Area',
[areas, pickList?.area_id],
);
const sortedItems = useMemo(() => {
return items
.map((item, index) => ({ item, index }))
.sort((a, b) => {
const timeA = a.item.updated_at ?? a.item.created_at;
const timeB = b.item.updated_at ?? b.item.created_at;
if (timeA !== timeB) {
return timeB - timeA;
}
return a.index - b.index;
})
.map(({ item }) => item);
}, [items]);
const productMap = useMemo(() => { const productMap = useMemo(() => {
const map = new Map<string, Product>(); const map = new Map<string, Product>();
products.forEach((product) => { products.forEach((product) => {
@@ -73,6 +52,35 @@ export const ActivePickListScreen = () => {
return map; return map;
}, [products]); }, [products]);
const areaName = useMemo(
() => areas.find((area) => area.id === pickList?.area_id)?.name ?? 'Area',
[areas, pickList?.area_id],
);
const sortedItems = useMemo(() => {
return [...items].sort((a, b) => {
const productA = productMap.get(a.product_id);
const productB = productMap.get(b.product_id);
const nameA = productA?.name.trim().toLowerCase() ?? '';
const nameB = productB?.name.trim().toLowerCase() ?? '';
const nameComparison = nameA.localeCompare(nameB, undefined, { sensitivity: 'base' });
if (nameComparison !== 0) {
return nameComparison;
}
if (a.is_carton !== b.is_carton) {
return a.is_carton ? 1 : -1;
}
const timeA = a.updated_at ?? a.created_at;
const timeB = b.updated_at ?? b.created_at;
return timeA - timeB;
});
}, [items, productMap]);
const sortedProducts = useMemo(() => { const sortedProducts = useMemo(() => {
const uniqueProducts = new Map<string, Product>(); const uniqueProducts = new Map<string, Product>();