62 lines
2.3 KiB
HTML
62 lines
2.3 KiB
HTML
{% set per_page = request.args.get('per_page') %}
|
|
{% if images.pages > 1 %}
|
|
<div class="pagination-container">
|
|
{% set total_pages = images.pages %}
|
|
{% set current_page = images.page %}
|
|
{% set window_size = 7 %}
|
|
{% set endpoint = request.endpoint %}
|
|
|
|
{# First and Prev #}
|
|
{% if images.has_prev %}
|
|
{% if current_page > 1 %}
|
|
<a class="pagination-link" href="{{ url_for(endpoint, page=1, per_page=per_page, **request.view_args) }}">« First</a>
|
|
{% endif %}
|
|
<a class="pagination-link" href="{{ url_for(endpoint, page=images.prev_num, per_page=per_page, **request.view_args) }}">← Previous</a>
|
|
{% endif %}
|
|
|
|
{# Page window logic #}
|
|
{% if total_pages <= window_size %}
|
|
{% set start_page = 1 %}
|
|
{% set end_page = total_pages %}
|
|
{% elif current_page <= 4 %}
|
|
{% set start_page = 1 %}
|
|
{% set end_page = window_size %}
|
|
{% elif current_page > total_pages - 4 %}
|
|
{% set start_page = total_pages - window_size + 1 %}
|
|
{% set end_page = total_pages %}
|
|
{% else %}
|
|
{% set start_page = current_page - 3 %}
|
|
{% set end_page = current_page + 3 %}
|
|
{% endif %}
|
|
|
|
{# Left ellipsis #}
|
|
{% if start_page > 1 %}
|
|
<a class="pagination-link" href="{{ url_for(endpoint, page=1, per_page=per_page, **request.view_args) }}">1</a>
|
|
{% if start_page > 2 %}
|
|
<span class="pagination-ellipsis">…</span>
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
{# Page numbers #}
|
|
{% for p in range(start_page, end_page + 1) %}
|
|
<a class="pagination-link {% if p == current_page %}active{% endif %}" href="{{ url_for(endpoint, page=p, per_page=per_page, **request.view_args) }}">{{ p }}</a>
|
|
{% endfor %}
|
|
|
|
{# Right ellipsis #}
|
|
{% if end_page < total_pages %}
|
|
{% if end_page < total_pages - 1 %}
|
|
<span class="pagination-ellipsis">…</span>
|
|
{% endif %}
|
|
<a class="pagination-link" href="{{ url_for(endpoint, page=total_pages, per_page=per_page, **request.view_args) }}">{{ total_pages }}</a>
|
|
{% endif %}
|
|
|
|
{# Next and Last #}
|
|
{% if images.has_next %}
|
|
<a class="pagination-link" href="{{ url_for(endpoint, page=images.next_num, per_page=per_page, **request.view_args) }}">Next →</a>
|
|
{% if current_page < total_pages %}
|
|
<a class="pagination-link" href="{{ url_for(endpoint, page=total_pages, per_page=per_page, **request.view_args) }}">Last »</a>
|
|
{% endif %}
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|