@onehat/data 1.4.5 → 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -414,29 +414,61 @@ describe('Repository Base', function() {
|
|
|
414
414
|
});
|
|
415
415
|
|
|
416
416
|
it('_calculatePaginationVars', function() {
|
|
417
|
-
let results
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
results
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
expect(
|
|
417
|
+
let results;
|
|
418
|
+
|
|
419
|
+
results = this.Repository._calculatePaginationVars(0, 1, 10);
|
|
420
|
+
expect(results.page).to.be.eq(1);
|
|
421
|
+
expect(results.pageSize).to.be.eq(10);
|
|
422
|
+
expect(results.total).to.be.eq(0);
|
|
423
|
+
expect(results.totalPages).to.be.eq(1);
|
|
424
|
+
expect(results.pageStart).to.be.eq(0);
|
|
425
|
+
expect(results.pageEnd).to.be.eq(0);
|
|
426
|
+
expect(results.pageTotal).to.be.eq(0);
|
|
427
|
+
|
|
428
|
+
results = this.Repository._calculatePaginationVars(15, 1, 10);
|
|
429
|
+
expect(results.page).to.be.eq(1);
|
|
430
|
+
expect(results.pageSize).to.be.eq(10);
|
|
431
|
+
expect(results.total).to.be.eq(15);
|
|
432
|
+
expect(results.totalPages).to.be.eq(2);
|
|
433
|
+
expect(results.pageStart).to.be.eq(1);
|
|
434
|
+
expect(results.pageEnd).to.be.eq(10);
|
|
435
|
+
expect(results.pageTotal).to.be.eq(10);
|
|
436
|
+
|
|
437
|
+
results = this.Repository._calculatePaginationVars(15, 2, 10);
|
|
438
|
+
expect(results.page).to.be.eq(2);
|
|
439
|
+
expect(results.pageSize).to.be.eq(10);
|
|
440
|
+
expect(results.total).to.be.eq(15);
|
|
441
|
+
expect(results.totalPages).to.be.eq(2);
|
|
442
|
+
expect(results.pageStart).to.be.eq(11);
|
|
443
|
+
expect(results.pageEnd).to.be.eq(15);
|
|
444
|
+
expect(results.pageTotal).to.be.eq(5);
|
|
445
|
+
|
|
446
|
+
results = this.Repository._calculatePaginationVars(15, 2, 5);
|
|
447
|
+
expect(results.page).to.be.eq(2);
|
|
448
|
+
expect(results.pageSize).to.be.eq(5);
|
|
449
|
+
expect(results.total).to.be.eq(15);
|
|
450
|
+
expect(results.totalPages).to.be.eq(3);
|
|
451
|
+
expect(results.pageStart).to.be.eq(6);
|
|
452
|
+
expect(results.pageEnd).to.be.eq(10);
|
|
453
|
+
expect(results.pageTotal).to.be.eq(5);
|
|
454
|
+
|
|
455
|
+
results = this.Repository._calculatePaginationVars(7, 2, 5);
|
|
456
|
+
expect(results.page).to.be.eq(2);
|
|
457
|
+
expect(results.pageSize).to.be.eq(5);
|
|
458
|
+
expect(results.total).to.be.eq(7);
|
|
459
|
+
expect(results.totalPages).to.be.eq(2);
|
|
460
|
+
expect(results.pageStart).to.be.eq(6);
|
|
461
|
+
expect(results.pageEnd).to.be.eq(7);
|
|
462
|
+
expect(results.pageTotal).to.be.eq(2);
|
|
463
|
+
|
|
464
|
+
results = this.Repository._calculatePaginationVars(15, 15, 1);
|
|
465
|
+
expect(results.page).to.be.eq(15);
|
|
466
|
+
expect(results.pageSize).to.be.eq(1);
|
|
467
|
+
expect(results.total).to.be.eq(15);
|
|
468
|
+
expect(results.totalPages).to.be.eq(15);
|
|
469
|
+
expect(results.pageStart).to.be.eq(15);
|
|
470
|
+
expect(results.pageEnd).to.be.eq(15);
|
|
471
|
+
expect(results.pageTotal).to.be.eq(1);
|
|
440
472
|
});
|
|
441
473
|
|
|
442
474
|
});
|
package/package.json
CHANGED
|
@@ -779,12 +779,38 @@ export default class Repository extends EventEmitter {
|
|
|
779
779
|
* @static
|
|
780
780
|
*/
|
|
781
781
|
static _calculatePaginationVars = (total, page, pageSize) => {
|
|
782
|
+
|
|
783
|
+
// Special case: empty pages
|
|
784
|
+
if (total < 1) {
|
|
785
|
+
return {
|
|
786
|
+
page,
|
|
787
|
+
pageSize,
|
|
788
|
+
total,
|
|
789
|
+
totalPages: 1,
|
|
790
|
+
pageStart: 0,
|
|
791
|
+
pageEnd: 0,
|
|
792
|
+
pageTotal: 0,
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
|
|
782
796
|
const totalPages = Math.ceil(total / pageSize),
|
|
783
|
-
pageStart =
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
797
|
+
pageStart = ((page -1) * pageSize) + 1;
|
|
798
|
+
|
|
799
|
+
let remainder,
|
|
800
|
+
pageEnd,
|
|
801
|
+
pageTotal;
|
|
802
|
+
|
|
803
|
+
if (page === 1 && totalPages === 1) {
|
|
804
|
+
pageTotal = total;
|
|
805
|
+
} else if (page < totalPages) {
|
|
806
|
+
pageTotal = pageSize;
|
|
807
|
+
} else {
|
|
808
|
+
// last page
|
|
809
|
+
remainder = total % pageSize;
|
|
810
|
+
pageTotal = remainder || pageSize;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
pageEnd = pageStart + pageTotal -1;
|
|
788
814
|
|
|
789
815
|
return {
|
|
790
816
|
page,
|