Parcourir la source

fix date sorting in proof search

CR013B2
Jason Chuang il y a 23 heures
Parent
révision
65b0382330
1 fichiers modifiés avec 45 ajouts et 8 suppressions
  1. +45
    -8
      src/pages/Proof/Search_GLD/DataGrid.js

+ 45
- 8
src/pages/Proof/Search_GLD/DataGrid.js Voir le fichier

@@ -74,16 +74,53 @@ export default function SearchPublicNoticeTable({searchCriteria, applyGridOnRead

valueGetter: (params) => {
const v = params?.value;
if (!Array.isArray(v) || v.length < 3) return null;
if (v == null) return null;

const year = v[0];
const month = v[1]; // 1-12
const day = v[2];
const hour = v[3] ?? 0;
const minute = v[4] ?? 0;
const second = v[5] ?? 0;
// 1) Number => epoch timestamp (ms or seconds)
if (typeof v === "number") {
if (!Number.isFinite(v)) return null;

return new Date(year, month - 1, day, hour, minute, second);
// Heuristic: if it's too small, it's probably seconds
// (ms in 2026 is ~1.7e12, seconds is ~1.7e9)
const ms = v < 1e11 ? v * 1000 : v;

const d = new Date(ms);
return Number.isNaN(d.getTime()) ? null : d;
}

// 2) Array => [Y, M, D, h, m, s]
if (Array.isArray(v)) {
if (v.length < 3) return null;

const year = Number(v[0]);
const month = Number(v[1]); // expecting 1-12
const day = Number(v[2]);
const hour = Number(v[3] ?? 0);
const minute = Number(v[4] ?? 0);
const second = Number(v[5] ?? 0);

if (![year, month, day, hour, minute, second].every(Number.isFinite)) return null;
if (month < 1 || month > 12) return null;

const d = new Date(year, month - 1, day, hour, minute, second);

// Guard against JS "auto-fixing" invalid dates (e.g., Feb 31 -> Mar 2)
if (
d.getFullYear() !== year ||
d.getMonth() !== month - 1 ||
d.getDate() !== day
) return null;

return d;
}

// 3) Optional: ISO string support (if it ever appears)
if (typeof v === "string") {
const d = new Date(v);
return Number.isNaN(d.getTime()) ? null : d;
}

return null;
},

valueFormatter: (params) => {


Chargement…
Annuler
Enregistrer