sorters.js 898 B

123456789101112131415161718192021222324252627282930313233
  1. /**
  2. * Numeric string sorting helpers.
  3. *
  4. * The backend currently returns ascending order for years/months/days.
  5. * In the Explorer we want a "latest first" experience, so we sort descending.
  6. */
  7. function toNumber(value) {
  8. const n = Number.parseInt(String(value), 10);
  9. return Number.isNaN(n) ? null : n;
  10. }
  11. export function sortNumericStringsAsc(items) {
  12. const arr = Array.isArray(items) ? [...items] : [];
  13. return arr.sort((a, b) => {
  14. const na = toNumber(a);
  15. const nb = toNumber(b);
  16. if (na !== null && nb !== null) return na - nb;
  17. return String(a).localeCompare(String(b), "de");
  18. });
  19. }
  20. export function sortNumericStringsDesc(items) {
  21. return sortNumericStringsAsc(items).reverse();
  22. }
  23. export function sortFilesByNameAsc(files) {
  24. const arr = Array.isArray(files) ? [...files] : [];
  25. return arr.sort((a, b) =>
  26. String(a?.name || "").localeCompare(String(b?.name || ""), "de")
  27. );
  28. }