From 0145f425b1b763d88b11911690edcdc51c032345 Mon Sep 17 00:00:00 2001 From: Andymick Date: Sat, 18 Jul 2026 10:13:21 +0100 Subject: [PATCH] Add filter to show only personalised orders --- src/app/admin/orders/page.tsx | 45 +++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/app/admin/orders/page.tsx b/src/app/admin/orders/page.tsx index 8094c28..b6f2a77 100644 --- a/src/app/admin/orders/page.tsx +++ b/src/app/admin/orders/page.tsx @@ -13,10 +13,11 @@ const STATUS_STYLES: Record = { FAILED: 'bg-splash-pink/10 text-splash-pink', }; -export default async function OrdersPage({ searchParams }: { searchParams: { archived?: string } }) { +export default async function OrdersPage({ searchParams }: { searchParams: { archived?: string; personalised?: string } }) { await autoArchiveOldOrders(); const showArchived = searchParams.archived === '1'; + const showOnlyPersonalised = searchParams.personalised === '1'; let orders = []; try { @@ -28,10 +29,28 @@ export default async function OrdersPage({ searchParams }: { searchParams: { arc include: { items: true }, }); orders.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime()); + + // Filter to personalised orders if requested + if (showOnlyPersonalised) { + orders = orders.filter((order) => + order.items.some((item) => { + const design = JSON.parse(item.designJson) as { front: unknown[]; back: unknown[] }; + return design.front.length > 0 || design.back.length > 0; + }) + ); + } } catch (err) { console.error('Error fetching orders:', err); } + const filterHref = (personalised: boolean) => { + const params = new URLSearchParams(); + if (showArchived) params.set('archived', '1'); + if (personalised) params.set('personalised', '1'); + const qs = params.toString(); + return `/admin/orders${qs ? `?${qs}` : ''}`; + }; + return (
@@ -48,8 +67,30 @@ export default async function OrdersPage({ searchParams }: { searchParams: { arc

)} + {!showArchived && ( +
+ Filter: +
+ + All + + + Personalised only + +
+
+ )} + {orders.length === 0 ? ( -

{showArchived ? 'Nothing archived yet.' : 'No orders yet.'}

+

+ {showArchived ? 'Nothing archived yet.' : showOnlyPersonalised ? 'No personalised orders yet.' : 'No orders yet.'} +

) : (
{orders.map((order) => {