From 43aafba57aec7d9098973da55e08fc0389251ed6 Mon Sep 17 00:00:00 2001 From: Foohoo Date: Sun, 17 Aug 2025 13:11:40 +0100 Subject: [PATCH] udpate the ordering of the cards to be oldest first by set --- data/cards.json | 2 +- data/checklist.json | 21 +-------------------- src/app/page.tsx | 37 +++++++++++++++++++++++++++++++++++-- src/types/pokemon.ts | 1 + 4 files changed, 38 insertions(+), 23 deletions(-) diff --git a/data/cards.json b/data/cards.json index b43bea9..23e3167 100644 --- a/data/cards.json +++ b/data/cards.json @@ -4923,5 +4923,5 @@ "count": 44, "totalCount": 44, "cached": false, - "updatedAt": "2025-08-17T12:00:51.895Z" + "updatedAt": "2025-08-17T12:09:13.846Z" } \ No newline at end of file diff --git a/data/checklist.json b/data/checklist.json index 39c10c8..9e26dfe 100644 --- a/data/checklist.json +++ b/data/checklist.json @@ -1,20 +1 @@ -{ - "det1-8": { - "base": true, - "holofoil": true - }, - "xy7-19": { - "base": true, - "reverseHolofoil": true - }, - "sm115-15": { - "base": true, - "reverseHolofoil": true - }, - "sm75-19": { - "base": true - }, - "mcd16-4": { - "base": true - } -} \ No newline at end of file +{} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 492d256..ffa2f1c 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -36,7 +36,24 @@ export default function Page() { const res = await fetch('/api/magikarp?pageSize=250'); if (!res.ok) throw new Error('Failed to fetch'); const json = await res.json(); - setCards(json.data || []); + const list: TcgCard[] = json.data || []; + list.sort((a, b) => { + const da = Date.parse(a.set.releaseDate || ''); + const db = Date.parse(b.set.releaseDate || ''); + if (Number.isFinite(da) && Number.isFinite(db)) { + if (da !== db) return da - db; // oldest first + } else if (Number.isFinite(da)) { + return -1; + } else if (Number.isFinite(db)) { + return 1; + } + // tie-breaker by card number if numeric + const na = parseInt(a.number, 10); + const nb = parseInt(b.number, 10); + if (Number.isFinite(na) && Number.isFinite(nb)) return na - nb; + return a.number.localeCompare(b.number); + }); + setCards(list); if (json.note) setNote(String(json.note)); if (json.updatedAt) setUpdatedAt(String(json.updatedAt)); if (typeof json.cached === 'boolean') setCachedFlag(json.cached); @@ -56,7 +73,23 @@ export default function Page() { const res = await fetch('/api/magikarp?pageSize=250&refresh=1', { cache: 'no-store' }); if (!res.ok) throw new Error('Failed to refresh'); const json = await res.json(); - setCards(json.data || []); + const list: TcgCard[] = json.data || []; + list.sort((a, b) => { + const da = Date.parse(a.set.releaseDate || ''); + const db = Date.parse(b.set.releaseDate || ''); + if (Number.isFinite(da) && Number.isFinite(db)) { + if (da !== db) return da - db; // oldest first + } else if (Number.isFinite(da)) { + return -1; + } else if (Number.isFinite(db)) { + return 1; + } + const na = parseInt(a.number, 10); + const nb = parseInt(b.number, 10); + if (Number.isFinite(na) && Number.isFinite(nb)) return na - nb; + return a.number.localeCompare(b.number); + }); + setCards(list); if (json.note) setNote(String(json.note)); else setNote(null); if (json.updatedAt) setUpdatedAt(String(json.updatedAt)); if (typeof json.cached === 'boolean') setCachedFlag(json.cached); diff --git a/src/types/pokemon.ts b/src/types/pokemon.ts index b1de7c6..9a5070f 100644 --- a/src/types/pokemon.ts +++ b/src/types/pokemon.ts @@ -2,6 +2,7 @@ export type TcgSet = { id: string; name: string; series: string; + releaseDate?: string; printedTotal?: number; total?: number; images?: {