JSFiddle - React, Tailwind, and code Playground
by T1MOXA
JavaScript
function getPagination(key, title_id, player_series, current_serie) {
const start_serie = current_serie - (current_serie - player_series.first) % 20;
const current_page = ~~((current_serie - player_series.first) / 20) + 1;
const last_page = Math.ceil(player_series.last / 20);
let paginator = [];
let serie = start_serie;
let brk = false;
let last_row;
for (let row = 0; row < 4; row++) {
let row_array = [];
for (let item = 0; item < 5; item++) {
if (item == 0 && row === 3 && current_page > 1) {
item = 3;
}
const serie_string = (serie === current_serie) ? `[${serie}]`: `${serie}`;
row_array.push({ text: serie_string, callback_data: `${key}_${title_id}_${serie}` });
if (++serie >= player_series.last) {
brk = !brk;
break;
}
}
paginator.push(row_array);
last_row = row;
if (brk) {
break;
}
}
if (paginator[last_row].length > 2) {
paginator.push([]);
var row_array = paginator[last_row + 1];
} else {
var row_array = paginator[last_row];
}
if (current_page > 1) row_array.unshift({ text: `◀️ Страница ${current_page - 1}`, callback_data: `${key}_${title_id}_${start_serie - 1}` });
if (current_page < last_page) row_array.push({ text: `Страница ${current_page + 1} ▶️`, callback_data: `${key}_${title_id}_${serie}` });
return paginator;
}
console.log(getPagination('find', 1, {first: 1, last: 24}, 10));