mirror of
https://github.com/ThatGuySam/doesitarm.git
synced 2026-05-18 06:44:46 -07:00
44 lines
936 B
JavaScript
44 lines
936 B
JavaScript
export class PaginatedList {
|
|
constructor({ list, perPage }) {
|
|
this.list = list
|
|
this.perPage = perPage
|
|
}
|
|
|
|
get total () {
|
|
return this.list.length
|
|
}
|
|
|
|
get pageCount () {
|
|
return Math.ceil( this.total / this.perPage )
|
|
}
|
|
|
|
makePageItems ( pageNumber ) {
|
|
const start = (pageNumber - 1) * this.perPage
|
|
const end = start + this.perPage
|
|
|
|
return this.list.slice(start, end)
|
|
}
|
|
|
|
makePage ( pageNumber ) {
|
|
const items = this.makePageItems( pageNumber )
|
|
|
|
return {
|
|
number: pageNumber,
|
|
items,
|
|
json: JSON.stringify( items )
|
|
}
|
|
}
|
|
|
|
get pages () {
|
|
// Create an empty array of pages
|
|
const pages = Array( this.pageCount ).fill({})
|
|
|
|
return pages.map( ( _, index ) => {
|
|
const pageNumber = index + 1
|
|
|
|
return this.makePage( pageNumber )
|
|
})
|
|
}
|
|
}
|
|
|
|
|