* Compute what number buttons to show in the paging control * * @param {*} page Current page * @param {*} pages Total number of pages * @param {*} buttons Target number of number buttons * @param {boolean} addFirstLast Indicate if page 1 and end should be included * @returns Buttons to s
(page, pages, buttons, addFirstLast)
| 12471 | * @returns Buttons to show |
| 12472 | */ |
| 12473 | function _pagingNumbers(page, pages, buttons, addFirstLast) { |
| 12474 | var numbers = [], |
| 12475 | half = Math.floor(buttons / 2), |
| 12476 | before = addFirstLast ? 2 : 1, |
| 12477 | after = addFirstLast ? 1 : 0 |
| 12478 | |
| 12479 | if (pages <= buttons) { |
| 12480 | numbers = _range(0, pages) |
| 12481 | } else if (buttons === 1) { |
| 12482 | // Single button - current page only |
| 12483 | numbers = [page] |
| 12484 | } else if (buttons === 3) { |
| 12485 | // Special logic for just three buttons |
| 12486 | if (page <= 1) { |
| 12487 | numbers = [0, 1, "ellipsis"] |
| 12488 | } else if (page >= pages - 2) { |
| 12489 | numbers = _range(pages - 2, pages) |
| 12490 | numbers.unshift("ellipsis") |
| 12491 | } else { |
| 12492 | numbers = ["ellipsis", page, "ellipsis"] |
| 12493 | } |
| 12494 | } else if (page <= half) { |
| 12495 | numbers = _range(0, buttons - before) |
| 12496 | numbers.push("ellipsis") |
| 12497 | |
| 12498 | if (addFirstLast) { |
| 12499 | numbers.push(pages - 1) |
| 12500 | } |
| 12501 | } else if (page >= pages - 1 - half) { |
| 12502 | numbers = _range(pages - (buttons - before), pages) |
| 12503 | numbers.unshift("ellipsis") |
| 12504 | |
| 12505 | if (addFirstLast) { |
| 12506 | numbers.unshift(0) |
| 12507 | } |
| 12508 | } else { |
| 12509 | numbers = _range(page - half + before, page + half - after) |
| 12510 | numbers.push("ellipsis") |
| 12511 | numbers.unshift("ellipsis") |
| 12512 | |
| 12513 | if (addFirstLast) { |
| 12514 | numbers.push(pages - 1) |
| 12515 | numbers.unshift(0) |
| 12516 | } |
| 12517 | } |
| 12518 | |
| 12519 | return numbers |
| 12520 | } |
| 12521 | |
| 12522 | var __lengthCounter = 0 |
| 12523 |