Files
queuebot/bot/app/pagination.py
2023-11-11 15:15:03 +03:00

35 lines
1.0 KiB
Python

from typing import Union
class PaginatedList:
def __init__(self, data: list, page_size: int, current_page:int=0):
self.data = data
self.page_size = page_size
self.current_page = current_page
@property
def divided_list(self):
return [
self.data[x : x + self.page_size]
for x in range(0, len(self.data), self.page_size)
]
def get_page(self, page: int) -> Union[list, None]:
if page < len(self.divided_list):
return self.divided_list[page]
return None
def get_current_page(self) -> list:
return self.get_page(self.current_page)
def page_up(self) -> Union[list, None]:
if self.current_page + 1 < len(self.divided_list):
self.current_page += 1
return self.get_page(self.current_page)
return None
def page_down(self) -> Union[list, None]:
if self.current_page - 1 >= 0:
self.current_page -= 1
return self.get_page(self.current_page)
return None