/**
* Paginate task queue results for dry-run scenarios.
*
* @param {Array} tasks - Array of task objects. Each task should have a unique ID.
* @param {number} pageSize - The number of tasks to display per page.
* @param {number} pageNumber - The page number to display (1-indexed).
* @returns {{totalTasks: number, currentPage: number, currentPageTasks: Array, nextPage: boolean, prevPage: boolean}} - An object containing pagination information and the current page's tasks.
*/
function paginateTasks(tasks, pageSize, pageNumber) {
if (!Array.isArray(tasks)) {
console.error("Tasks must be an array.");
return { totalTasks: 0, currentPage: 1, currentPageTasks: [], nextPage: false, prevPage: false };
}
if (typeof pageSize !== 'number' || pageSize <= 0) {
console.error("Page size must be a positive number.");
return { totalTasks: tasks.length, currentPage: 1, currentPageTasks: tasks, nextPage: false, prevPage: false };
}
if (typeof pageNumber !== 'number' || pageNumber <= 0) {
console.error("Page number must be a positive number.");
return { totalTasks: tasks.length, currentPage: 1, currentPageTasks: tasks, nextPage: false, prevPage: false };
}
const totalTasks = tasks.length;
const currentPage = pageNumber;
const startIndex = (currentPage - 1) * pageSize;
const endIndex = startIndex + pageSize;
const currentPageTasks = tasks.slice(startIndex, endIndex);
const nextPage = currentPage < totalTasks / pageSize;
const prevPage = currentPage > 1;
return {
totalTasks: totalTasks,
currentPage: currentPage,
currentPageTasks: currentPageTasks,
nextPage: nextPage,
prevPage: prevPage,
};
}
Add your comment