Socket
Socket
Sign inDemoInstall

generic-paginate

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

generic-paginate

A simple class that calculates pagination params that is easly usable in a View


Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

generic-paginate

A simple Javascript function for calculating pagination data which can be easily integrated into any view-layer

Usage

npm i generic-paginate -S

this module exports a single function called paginate

paginate(total, skip, limit, opts) ⇒ paginationData

Calculate pagination data using given params

Arguments
ParamTypeDefaultDescription
totalNumberTotal number of records
skipNumberNumber of records to be skiped. AKA offset
[limit]Number10Number of items per page
[opts]Object{}additional options
[opts.buttonCount]Number5length of pagination button list. Eg:
  • < 2, 3, 4, > -> Means buttonCount=3
  • < 2, 3, 4, 5, 6 > -> Means buttonCount=5
  • < 2, 3, 4, 5, 6, 7, 9 > -> Means buttonCount=7
[opts.activeClass]string"'active'"HTML class attribute to be applied for current page button
[opts.inactiveClass]string"''"HTML class attribute to be applied for button other than current page b
Properties of output paginationData
NameTypeDescription
nextNumber | undefinednext page number. undefined if there is no next page
prevNumber | undefinedprevious page number. undefined if there is no previous page
currentPageNumbercurrent page number
totalPagesNumbertotal number of pages
totalItemsNumbertotal number of items
limitNumberitems per page. copied from argument
skipNumberno of skipped records. copied from argument
buttonsArray.<Object>array of buttons in the pagination list
buttons[].pageNumberpage number of button
buttons[].classstringhtml class of button.
current page will have opts.inactiveClass and all others will have opts.activeClass

Example ( Nodejs )

var Paginate = require('generic-paginate');

// 37 total items,
// 10 items/page,
// skipping first 20 => current page is 3

var paginationData = Paginate( 37, 20, 10 );
console.log( paginationData );

/*
Output will be
{ next: 4,
  prev: 2,
  currentPage: 3,
  buttons:
   [ { page: 1, class: 'inactive' },
     { page: 2, class: 'inactive' },
     { page: 3, class: 'active' },
     { page: 4, class: 'inactive' } ],
  totalPages: 4,
  totalItems: 37,
  limit: 10,
  skip: 20 }
*/

Example ( Browser )

<script src="https://unpkg.com/generic-paginate" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
  var pagintionData = GenericPaginate( 37, 20, 10 );
  console.log( pagintionData );
  /*
  Output will be
  { next: 4,
    prev: 2,
    currentPage: 3,
    buttons:
     [ { page: 1, class: 'inactive' },
       { page: 2, class: 'inactive' },
       { page: 3, class: 'active' },
       { page: 4, class: 'inactive' } ],
    totalPages: 4,
    totalItems: 37,
    limit: 10,
    skip: 20 }
  */
</script>
A sample AngularJs tempalte will be like this
<ul class="pagination">
    <li ng-enable="pagination.prev" >
      <a href="/mangoes?page={{ pagination.prev }}">&laquo;</a>
    </li>
    <li ng-repeat="button in pagination.buttons" ng-class="{{ button.class }}">
      <a href="/mangoes?page={{ button.page }}">{{ button.page }}</a>
    </li>
    <li ng-enable="pagination.next">
      <a href="/mangoes?page={{ pagination.next }}">&raquo;</a>
    </li>
</ul>
<span>Showing page: {{ pagination.currentPage}}/{{pagination.totalPages}} </span>
<span>Total items: {{ pagination.totalItems}}</span>

Keywords

FAQs

Package last updated on 20 Jun 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc