'use strict';
/**
* @author ycx
* @description 分页工具
*/
class PageUtil {
/**
* 根据总数计算总页数
* @param totalCount {number} 总数
* @param pageSize {number} 页页面大小
* @return {Number} 页数
*/
static totalPage(totalCount, pageSize) {
if (0 === pageSize) {
return 0;
}
return 0 === totalCount % pageSize ? totalCount / pageSize : Math.floor(totalCount / pageSize + 1);
}
/**
* 彩虹分页算法
* @param pageNo {number} 页码
* @param totalPage {number} 总页数
* @param displayCount {number} 每屏展示记录数
*/
static rainbow(pageNo, totalPage, displayCount) {
//
const isEven = 0 === (displayCount & 1);
const left = displayCount >> 1;
let right = displayCount >> 1;
let length = displayCount;
if (isEven) {
right++;
}
if (totalPage < displayCount) {
length =totalPage;
}
let result = new Array(length);
if (totalPage >= displayCount) {
if (pageNo <= left) {
for (let i = 0; i < result.length; i++) {
result[i] = i + 1;
}
} else if (pageNo > totalPage - right) {
for (let i = 0; i < result.length; i++) {
result[i] = i + totalPage - displayCount + 1;
}
} else {
for (let i = 0; i < result.length; i++) {
result[i] = i + pageNo - left + (isEven ? 1 : 0);
}
}
} else {
for (let i = 0; i < result.length; i++) {
result[i] = i + 1;
}
}
return result;
}
}
module.exports = PageUtil