@rogerpence/rp-utils
    Preparing search index...

    Class Pager<T>

    An enhanced generic pagination utility class for dividing an array of items into pages.

    Page numbers are 1-based (first page is page 1, not 0). Returns -1 for previous/next page numbers when at boundaries. Automatically adjusts the last row index if it exceeds the array length. Includes validation, utility methods, and immutability features.

    interface User {
    id: number;
    name: string;
    }

    const users: User[] = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    ... more users
    ];

    const pager = new PagerNew<User>(users, 10);
    const page1 = pager.getRowsForPage(1);

    Returns object with dataRows, navigation info, and metadata

    Type Parameters

    • T

      The type of objects contained in the array to be paginated

    Index

    Constructors

    • Creates a new PagerNew instance.

      Type Parameters

      • T

      Parameters

      • arr: T[]

        The array of items to paginate

      • pageSize: number

        The number of items to display per page

      Returns Pager<T>

      If arr is not an array

      If pageSize is not a positive integer

    Properties

    arr: T[]
    pageSize: number
    rowCount: number
    totalPages: number

    Methods

    • Gets all pages as an array of page data. Warning: This can be memory-intensive for large datasets.

      Returns {
          currentPage: number;
          dataRows: T[];
          endIndex: number;
          hasNext: boolean;
          hasPrev: boolean;
          nextPageNumber: number;
          prevPageNumber: number;
          startIndex: number;
          totalPages: number;
      }[]

      Array of all pages with their data

    • Gets the first and last row indices for a given page number. Adjusts the last index if it exceeds the total row count.

      Parameters

      • pageNumber: number

        The page number (1-based)

      Returns { first: number; last: number }

      An object containing the first and last row indices

      If pageNumber is invalid

    • Gets metadata about the pagination without fetching data.

      Returns { isEmpty: boolean; pageSize: number; totalItems: number; totalPages: number }

      Object containing pagination metadata

    • Gets a range of page numbers for pagination UI. Useful for displaying "1 2 3 ... 8 9 10" style pagination controls.

      Parameters

      • currentPage: number

        Current page number

      • range: number = 2

        Number of pages to show on each side of current page (default: 2)

      Returns number[]

      Array of page numbers to display

    • Retrieves the data rows for a specific page along with navigation information and metadata.

      Parameters

      • pageNumber: number

        The page number to retrieve (1-based)

      Returns {
          currentPage: number;
          dataRows: T[];
          endIndex: number;
          hasNext: boolean;
          hasPrev: boolean;
          nextPageNumber: number;
          prevPageNumber: number;
          startIndex: number;
          totalPages: number;
      }

      An object containing:

      • dataRows: Array of items for the requested page
      • prevPageNumber: Previous page number, or -1 if on first page
      • nextPageNumber: Next page number, or -1 if on last page
      • currentPage: The current page number
      • totalPages: Total number of pages
      • hasNext: Boolean indicating if there is a next page
      • hasPrev: Boolean indicating if there is a previous page
      • startIndex: The starting index (0-based) of items on this page
      • endIndex: The ending index (0-based) of items on this page

      If pageNumber is invalid

    • Checks if there is a next page.

      Parameters

      • pageNumber: number

        Current page number

      Returns boolean

      True if there is a next page

    • Checks if there is a previous page.

      Parameters

      • pageNumber: number

        Current page number

      Returns boolean

      True if there is a previous page

    • Checks if a page number is valid.

      Parameters

      • pageNumber: number

        The page number to validate

      Returns boolean

      True if the page number is valid