40 lines
1,015 B
JavaScript
40 lines
1,015 B
JavaScript
|
const Paginator = {
|
||
|
view: function(vnode) {
|
||
|
let total = vnode.attrs.total
|
||
|
let currentPage = vnode.attrs.page
|
||
|
let perPage = vnode.attrs.perPage || 10
|
||
|
let maxPage = total / perPage + 1
|
||
|
|
||
|
if (total <= perPage) return null
|
||
|
|
||
|
return m('paginator', [
|
||
|
currentPage > 1
|
||
|
? [
|
||
|
m(m.route.Link, {
|
||
|
href: vnode.attrs.base,
|
||
|
}, 'First'),
|
||
|
m(m.route.Link, {
|
||
|
href: vnode.attrs.base + (currentPage > 2
|
||
|
? '?page=' + (currentPage - 1)
|
||
|
: ''
|
||
|
),
|
||
|
}, 'Previous'),
|
||
|
]
|
||
|
: m('div'),
|
||
|
m('div', 'Page ' + currentPage),
|
||
|
currentPage < maxPage
|
||
|
? [
|
||
|
m(m.route.Link, {
|
||
|
href: vnode.attrs.base + '?page=' + (currentPage + 1),
|
||
|
}, 'Next'),
|
||
|
m(m.route.Link, {
|
||
|
href: vnode.attrs.base + '?page=' + maxPage,
|
||
|
}, 'Last')
|
||
|
]
|
||
|
: m('div'),
|
||
|
])
|
||
|
},
|
||
|
}
|
||
|
|
||
|
module.exports = Paginator
|