1. /**
  2. * Paginate a list of records for quick fixes with error logging.
  3. *
  4. * @param {Array} records - The array of records to paginate.
  5. * @param {number} pageSize - The number of records to display per page.
  6. * @param {number} pageNumber - The page number to display (1-based).
  7. * @returns {object} An object containing the paginated records, total pages, and error (if any).
  8. */
  9. function paginateRecords(records, pageSize, pageNumber) {
  10. if (!Array.isArray(records)) {
  11. console.error("Error: records must be an array.");
  12. return { records: [], totalPages: 0, error: "Invalid records input." };
  13. }
  14. if (typeof pageSize !== 'number' || pageSize <= 0) {
  15. console.error("Error: pageSize must be a positive number.");
  16. return { records: [], totalPages: 0, error: "Invalid pageSize input." };
  17. }
  18. if (typeof pageNumber !== 'number' || pageNumber <= 0) {
  19. console.error("Error: pageNumber must be a positive number.");
  20. return { records: [], totalPages: 0, error: "Invalid pageNumber input." };
  21. }
  22. const startIndex = (pageNumber - 1) * pageSize;
  23. const endIndex = startIndex + pageSize;
  24. if (startIndex >= records.length) {
  25. return { records: [], totalPages: 0, error: "Page number exceeds the number of records." };
  26. }
  27. const paginatedRecords = records.slice(startIndex, endIndex);
  28. const totalRecords = records.length;
  29. const totalPages = Math.ceil(totalRecords / pageSize);
  30. return {
  31. records: paginatedRecords,
  32. totalPages: totalPages,
  33. error: null,
  34. };
  35. }

Add your comment