@cascade/pagination
Version:
Array and Service Pagination powered by Cascade.
48 lines • 1.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function createPage(data, count) {
return ({
data: data,
count: count
});
}
exports.createPage = createPage;
function pageArray(results, page, pageSize, sortedColumn, sortedDirection) {
if (results && sortedColumn) {
results.sort(function (a, b) {
var aValue = (a[sortedColumn] || '').toString();
var bValue = (b[sortedColumn] || '').toString();
var ax = [], bx = [];
aValue.replace(/(\d+)|(\D+)/g, function (_, $1, $2) {
ax.push([$1 || Infinity, $2 || ""]);
return '';
});
bValue.replace(/(\d+)|(\D+)/g, function (_, $1, $2) {
bx.push([$1 || Infinity, $2 || ""]);
return '';
});
while (ax.length && bx.length) {
var an = ax.shift();
var bn = bx.shift();
var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);
if (nn)
return nn;
}
return ax.length - bx.length;
});
if (sortedDirection === undefined) {
sortedDirection = true;
}
else {
sortedDirection = !!sortedDirection;
}
if (!sortedDirection) {
results.reverse();
}
}
return Promise.resolve(results ?
createPage(results.slice(page * pageSize, (page + 1) * pageSize), results.length) :
createPage([], 0));
}
exports.pageArray = pageArray;
//# sourceMappingURL=PageUtil.js.map