udpate the ordering of the cards to be oldest first by set

This commit is contained in:
2025-08-17 13:11:40 +01:00
parent 7e0aa8fed0
commit 43aafba57a
4 changed files with 38 additions and 23 deletions

View File

@@ -4923,5 +4923,5 @@
"count": 44, "count": 44,
"totalCount": 44, "totalCount": 44,
"cached": false, "cached": false,
"updatedAt": "2025-08-17T12:00:51.895Z" "updatedAt": "2025-08-17T12:09:13.846Z"
} }

View File

@@ -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
}
}

View File

@@ -36,7 +36,24 @@ export default function Page() {
const res = await fetch('/api/magikarp?pageSize=250'); const res = await fetch('/api/magikarp?pageSize=250');
if (!res.ok) throw new Error('Failed to fetch'); if (!res.ok) throw new Error('Failed to fetch');
const json = await res.json(); 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.note) setNote(String(json.note));
if (json.updatedAt) setUpdatedAt(String(json.updatedAt)); if (json.updatedAt) setUpdatedAt(String(json.updatedAt));
if (typeof json.cached === 'boolean') setCachedFlag(json.cached); 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' }); const res = await fetch('/api/magikarp?pageSize=250&refresh=1', { cache: 'no-store' });
if (!res.ok) throw new Error('Failed to refresh'); if (!res.ok) throw new Error('Failed to refresh');
const json = await res.json(); 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.note) setNote(String(json.note)); else setNote(null);
if (json.updatedAt) setUpdatedAt(String(json.updatedAt)); if (json.updatedAt) setUpdatedAt(String(json.updatedAt));
if (typeof json.cached === 'boolean') setCachedFlag(json.cached); if (typeof json.cached === 'boolean') setCachedFlag(json.cached);

View File

@@ -2,6 +2,7 @@ export type TcgSet = {
id: string; id: string;
name: string; name: string;
series: string; series: string;
releaseDate?: string;
printedTotal?: number; printedTotal?: number;
total?: number; total?: number;
images?: { images?: {