@writetome51/array-paginator
TypeScript icon, indicating that this package has built-in type declarations

8.0.1 • Public • Published

ArrayPaginator

A TypeScript/Javascript class for paginating an array.

Constructor

constructor(
    data: any[], // the actual array, becoming this.data

    __pageConfigurator: {
        setItemsPerPage: (num) => void;
        getItemsPerPage: () => number;
    }
) 

Properties

view properties
data : any[]  // the array to be paginated.

className : string // read-only

Methods

view methods
getPage(pageNumber): any[]

getCurrentPageNumber(): number
   // returns page asked for in most recent call of this.getPage()

getTotalPages(): number

The methods below are not important to know about in order to use this
class. They're inherited from BaseClass .

protected   _createGetterAndOrSetterForEach(
                  propertyNames: string[],
                  configuration: IGetterSetterConfiguration
            ) : void
     /*********************
     Use this method when you have a bunch of properties that need getter and/or 
     setter functions that all do the same thing. You pass in an array of string 
     names of those properties, and the method attaches the same getter and/or 
     setter function to each property.
     IGetterSetterConfiguration is this object:
     {
         get_setterFunction?: (
             propertyName: string, index?: number, propertyNames?: string[]
         ) => Function,
             // get_setterFunction takes the property name as first argument and 
             // returns the setter function.  The setter function must take one 
             // parameter and return void.
     
         get_getterFunction?: (
             propertyName: string, index?: number, propertyNames?: string[]
         ) => Function
             // get_getterFunction takes the property name as first argument and 
             // returns the getter function.  The getter function must return something.
     }
     *********************/ 
   
   
protected   _returnThis_after(voidExpression: any) : this
    // voidExpression is executed, then function returns this.
    // Even if voidExpression returns something, the returned data isn't used.

protected   _errorIfPropertyHasNoValue(
                property: string, // can contain dot-notation, i.e., 'property.subproperty'
                propertyNameInError? = ''
            ) : void
    // If value of this[property] is undefined or null, it triggers fatal error:
    // `The property "${propertyNameInError}" has no value.`

Usage

view usage
// Create a pageConfigurator:

let pageConfigurator = {
	__itemsPerPage: undefined,

	setItemsPerPage: (num) => {
		this.__itemsPerPage = num;
	},
	getItemsPerPage: () => this.__itemsPerPage
};

// Getting an instance:
let paginator = new ArrayPaginator(
    [1,2,3,4,5,6,7,8,9,10], 
    pageConfigurator
);

pageConfigurator.setItemsPerPage(5);
paginator.getPage(1); // --> [1,2,3,4,5]

paginator.getCurrentPageNumber(); // --> 1

paginator.getTotalPages(); // --> 2

pageConfigurator.setItemsPerPage(4);
paginator.getPage(2); // --> [5,6,7,8]

paginator.getCurrentPageNumber(); // --> 2

paginator.getTotalPages(); // --> 3

// Assigning it a new array to paginate:  
paginator.data = [item1, item2, item3, item4];

Inheritance Chain

ArrayPaginator <--PublicArrayContainer <--BaseClass

Installation

npm i  @writetome51/array-paginator

Loading

import {ArrayPaginator} from '@writetome51/array-paginator';

License

MIT

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 8.0.1
    0
    • latest

Version History

Package Sidebar

Install

npm i @writetome51/array-paginator

Weekly Downloads

0

Version

8.0.1

License

MIT

Unpacked Size

7.45 kB

Total Files

5

Last publish

Collaborators

  • writetome51