Paginate partner review board panels
This commit is contained in:
@@ -83,8 +83,15 @@
|
||||
</tr>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro panel(title, subtitle, ids, payload, tone) %}
|
||||
{% macro panel(title, subtitle, ids, payload, tone, page_param, current_page, page_size, q_value) %}
|
||||
<section class="overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-soft">
|
||||
{% set total_items = ids|length %}
|
||||
{% set total_pages = ((total_items + page_size - 1) // page_size) if total_items else 1 %}
|
||||
{% set page = current_page if current_page > 0 else 1 %}
|
||||
{% if page > total_pages %}{% set page = total_pages %}{% endif %}
|
||||
{% set start_index = (page - 1) * page_size %}
|
||||
{% set page_ids = ids[start_index:start_index + page_size] %}
|
||||
|
||||
<div class="flex flex-col gap-2 border-b border-slate-200 px-5 py-4 sm:flex-row sm:items-center sm:justify-between">
|
||||
<div>
|
||||
<h3 class="text-base font-semibold text-slate-900">{{ title }}</h3>
|
||||
@@ -115,13 +122,13 @@
|
||||
{% set rendered = namespace(seen=[]) %}
|
||||
{% for column in payload.columns %}
|
||||
{% for task in column.tasks %}
|
||||
{% if task.subscription_id and task.subscription_id in ids and task.subscription_id not in rendered.seen %}
|
||||
{% if task.subscription_id and task.subscription_id in page_ids and task.subscription_id not in rendered.seen %}
|
||||
{% set _ = rendered.seen.append(task.subscription_id) %}
|
||||
{{ engagement_row(task, column, payload) }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% if rendered.seen|length == 0 %}
|
||||
{% if total_items == 0 %}
|
||||
<tr>
|
||||
<td colspan="7" class="px-6 py-10 text-center text-sm text-slate-500">No engagements in this section.</td>
|
||||
</tr>
|
||||
@@ -129,6 +136,29 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% if total_items > page_size %}
|
||||
<div class="flex flex-col gap-3 border-t border-slate-200 px-5 py-4 text-xs text-slate-600 sm:flex-row sm:items-center sm:justify-between">
|
||||
<div>
|
||||
Showing {{ start_index + 1 }}-{{ [start_index + page_ids|length, total_items]|min }} of {{ total_items }} engagements
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
{% if page > 1 %}
|
||||
<a href="?q={{ q_value }}&{{ page_param }}={{ page - 1 }}"
|
||||
class="rounded-lg border border-slate-300 bg-white px-3 py-1.5 font-semibold text-slate-700 hover:bg-slate-50">Previous</a>
|
||||
{% else %}
|
||||
<span class="rounded-lg border border-slate-200 bg-slate-50 px-3 py-1.5 font-semibold text-slate-400">Previous</span>
|
||||
{% endif %}
|
||||
<span class="font-semibold text-slate-700">Page {{ page }} of {{ total_pages }}</span>
|
||||
{% if page < total_pages %}
|
||||
<a href="?q={{ q_value }}&{{ page_param }}={{ page + 1 }}"
|
||||
class="rounded-lg border border-slate-300 bg-white px-3 py-1.5 font-semibold text-slate-700 hover:bg-slate-50">Next</a>
|
||||
{% else %}
|
||||
<span class="rounded-lg border border-slate-200 bg-slate-50 px-3 py-1.5 font-semibold text-slate-400">Next</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endmacro %}
|
||||
|
||||
@@ -223,12 +253,21 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% set review_page = request.query_params.get('review_page', '1')|int %}
|
||||
{% set progress_page = request.query_params.get('progress_page', '1')|int %}
|
||||
{% set completed_page = request.query_params.get('completed_page', '1')|int %}
|
||||
{% set panel_page_size = 25 %}
|
||||
|
||||
{{ panel(
|
||||
'Review Required',
|
||||
'Pending review, clarification-required and rework engagements are shown first.',
|
||||
groups.review,
|
||||
payload,
|
||||
'review'
|
||||
'review',
|
||||
'review_page',
|
||||
review_page,
|
||||
panel_page_size,
|
||||
q or ''
|
||||
) }}
|
||||
|
||||
{{ panel(
|
||||
@@ -236,7 +275,11 @@
|
||||
'Engagements currently moving with the team and not presently waiting in the review queue.',
|
||||
groups.progress,
|
||||
payload,
|
||||
'progress'
|
||||
'progress',
|
||||
'progress_page',
|
||||
progress_page,
|
||||
panel_page_size,
|
||||
q or ''
|
||||
) }}
|
||||
|
||||
{{ panel(
|
||||
@@ -244,7 +287,11 @@
|
||||
'Completed engagement rows remain available separately for review history and reference.',
|
||||
groups.completed,
|
||||
payload,
|
||||
'completed'
|
||||
'completed',
|
||||
'completed_page',
|
||||
completed_page,
|
||||
panel_page_size,
|
||||
q or ''
|
||||
) }}
|
||||
|
||||
<div class="rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-xs text-slate-500">
|
||||
|
||||
Reference in New Issue
Block a user