This repository has been archived on 2026-05-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
imagerepo/app/templates/_pagination.html
T
2025-08-16 10:25:16 -04:00

75 lines
2.4 KiB
HTML

<!-- /app/templates/_pagination.html -->
{% 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 %}
{# Build a merged param dict: query args + path args #}
{% set params = request.args.to_dict(flat=True) %}
{% for k, v in request.view_args.items() %}
{% set _ = params.update({k: v}) %}
{% endfor %}
{# Helper to make a page URL while preserving all other params #}
{% macro page_url(p) -%}
{%- set pmap = params.copy() -%}
{%- set _ = pmap.update({'page': p}) -%}
{{ url_for(endpoint, **pmap) }}
{%- endmacro %}
{# First and Prev #}
{% if images.has_prev %}
{% if current_page > 1 %}
<a class="pagination-link" href="{{ page_url(1) }}">« First</a>
{% endif %}
<a class="pagination-link" href="{{ page_url(images.prev_num) }}">← 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="{{ page_url(1) }}">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="{{ page_url(p) }}">{{ 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="{{ page_url(total_pages) }}">{{ total_pages }}</a>
{% endif %}
{# Next and Last #}
{% if images.has_next %}
<a class="pagination-link" href="{{ page_url(images.next_num) }}">Next →</a>
{% if current_page < total_pages %}
<a class="pagination-link" href="{{ page_url(total_pages) }}">Last »</a>
{% endif %}
{% endif %}
</div>
{% endif %}