(function () { 'use strict'; var SIZE_OPTIONS = [10, 20, 50, 100]; function pagesCount(total, size) { return Math.max(1, Math.ceil((total || 0) / (size || 20))); } function html(opts) { opts = opts || {}; var page = opts.page || 1; var size = opts.size || 20; var total = opts.total || 0; var pages = pagesCount(total, size); var sizes = opts.sizeOptions || SIZE_OPTIONS; if (total === 0) { return '
共 0 条
'; } var sizeOpts = sizes.map(function (n) { return ''; }).join(''); return '
' + '
' + '' + '' + '' + page + ' / ' + pages + ' 页,共 ' + total + ' 条' + '' + '' + '
' + '
' + '' + '' + '
'; } function bind(container, state, onChange) { if (!container) return; var page = state.page || 1; var size = state.size || 20; var total = state.total || 0; var pages = pagesCount(total, size); function go(p) { p = Math.max(1, Math.min(pages, p)); if (p !== page) onChange({ page: p }); } var first = container.querySelector('.soon-pager-first'); var prev = container.querySelector('.soon-pager-prev'); var next = container.querySelector('.soon-pager-next'); var last = container.querySelector('.soon-pager-last'); var sizeSel = container.querySelector('.soon-pager-size'); var jump = container.querySelector('.soon-pager-jump'); var goBtn = container.querySelector('.soon-pager-go'); if (first && !first.disabled) first.onclick = function () { go(1); }; if (prev && !prev.disabled) prev.onclick = function () { go(page - 1); }; if (next && !next.disabled) next.onclick = function () { go(page + 1); }; if (last && !last.disabled) last.onclick = function () { go(pages); }; if (sizeSel) { sizeSel.onchange = function () { onChange({ page: 1, size: parseInt(sizeSel.value, 10) || size }); }; } if (goBtn && jump) { goBtn.onclick = function () { go(parseInt(jump.value, 10) || page); }; jump.onkeydown = function (e) { if (e.key === 'Enter') go(parseInt(jump.value, 10) || page); }; } } window.AdminPager = { html: html, bind: bind, pagesCount: pagesCount }; })();