@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
32 lines • 3.5 kB
JavaScript
/**
* si n <= 5 : [[1,n]], n=4 -> (1 2 3 4)
* n=5 -> (1 2 3 4 5)
* si p <= 2 : [[1,3], [n, n]], p=2, n=6 -> (1 2 3 ... 6)
* si p >= n-3 : [min(p-1, n-2), n], p=3, n=6 -> (... 2 3 4 5 6)
* p=4, n=6 -> (... 3 4 5 6)
* p=5, n=6 -> (... 4 5 6)
* p=5, n=6 -> (... 4 5 6)
* sinon [[p-1, p+1], [n, n]], p=3, n=7 -> (... 2 3 4 ... 7)
* @param p n° de la page courante, démarre à 1
* @param n nombre de pages
*/
export function calcPages(p, n) {
// n <= 5
if (n <= 5)
return [[1, n]];
// p <= 2
if (p <= 2)
return [
[1, 3],
[n, n], // on affiche toujours la dernière page
];
// p >= n-3
if (p >= n - 3)
return [[Math.min(p - 1, n - 2), n]];
// sinon
return [
[p - 1, p + 1],
[n, n], // on affiche toujours la dernière page
];
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1jYWxjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLWNhbGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTO0lBQzVDLFNBQVM7SUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUIsU0FBUztJQUNULElBQUksQ0FBQyxJQUFJLENBQUM7UUFDUixPQUFPO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsdUNBQXVDO1NBQ2hELENBQUM7SUFFSixXQUFXO0lBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckQsUUFBUTtJQUNSLE9BQU87UUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHVDQUF1QztLQUNoRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEludGVydmFsID0gW251bWJlciwgbnVtYmVyXTtcblxuLyoqXG4gKiBzaSBuIDw9IDUgICA6IFtbMSxuXV0sICAgICAgICAgICAgICAgICBuPTQgLT4gKDEgMiAzIDQpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuPTUgLT4gKDEgMiAzIDQgNSlcbiAqIHNpIHAgPD0gMiAgIDogW1sxLDNdLCBbbiwgbl1dLCAgICBwPTIsIG49NiAtPiAoMSAyIDMgLi4uIDYpXG4gKiBzaSBwID49IG4tMyA6IFttaW4ocC0xLCBuLTIpLCBuXSwgcD0zLCBuPTYgLT4gKC4uLiAyIDMgNCA1IDYpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcD00LCBuPTYgLT4gKC4uLiAzIDQgNSA2KVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA9NSwgbj02IC0+ICguLi4gNCA1IDYpXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcD01LCBuPTYgLT4gKC4uLiA0IDUgNilcbiAqIHNpbm9uIFtbcC0xLCBwKzFdLCBbbiwgbl1dLCAgICAgICBwPTMsIG49NyAtPiAoLi4uIDIgMyA0IC4uLiA3KVxuICogQHBhcmFtIHAgbsKwIGRlIGxhIHBhZ2UgY291cmFudGUsIGTDqW1hcnJlIMOgIDFcbiAqIEBwYXJhbSBuIG5vbWJyZSBkZSBwYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY1BhZ2VzKHA6IG51bWJlciwgbjogbnVtYmVyKTogSW50ZXJ2YWxbXSB7XG4gIC8vIG4gPD0gNVxuICBpZiAobiA8PSA1KSByZXR1cm4gW1sxLCBuXV07XG5cbiAgLy8gcCA8PSAyXG4gIGlmIChwIDw9IDIpXG4gICAgcmV0dXJuIFtcbiAgICAgIFsxLCAzXSxcbiAgICAgIFtuLCBuXSwgLy8gb24gYWZmaWNoZSB0b3Vqb3VycyBsYSBkZXJuacOocmUgcGFnZVxuICAgIF07XG5cbiAgLy8gcCA+PSBuLTNcbiAgaWYgKHAgPj0gbiAtIDMpIHJldHVybiBbW01hdGgubWluKHAgLSAxLCBuIC0gMiksIG5dXTtcblxuICAvLyBzaW5vblxuICByZXR1cm4gW1xuICAgIFtwIC0gMSwgcCArIDFdLFxuICAgIFtuLCBuXSwgLy8gb24gYWZmaWNoZSB0b3Vqb3VycyBsYSBkZXJuacOocmUgcGFnZVxuICBdO1xufVxuIl19