Add pagination to dashboard
This commit is contained in:
parent
874aad87a8
commit
8ad44ddc23
@ -1,12 +1,12 @@
|
|||||||
<nav class="flex w-full flex-wrap items-center justify-between" role="navigation" aria-label="pagination">
|
<nav class="flex w-full flex-wrap items-center justify-between" role="navigation" aria-label="pagination">
|
||||||
<div class="w-full md:w-auto mb-2">
|
<div class="w-full md:w-auto mb-2">
|
||||||
{% if page.has_previous %}
|
{% if page.has_previous %}
|
||||||
<a href="?page={{ page.previous_page_number }}{{url_parameters}}" class="button field bg-neutral-000 w-auto mr-1">Previous</a>
|
<a href="?page={{ page.previous_page_number }}&{{url_parameters}}" class="button field bg-neutral-000 w-auto mr-1">Previous</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button field bg-neutral-000 w-auto mr-1" disabled>Previous</a>
|
<a class="button field bg-neutral-000 w-auto mr-1" disabled>Previous</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if page.has_next %}
|
{% if page.has_next %}
|
||||||
<a href="?page={{ page.next_page_number }}{{url_parameters}}" class="button field bg-neutral-000 w-auto">Next</a>
|
<a href="?page={{ page.next_page_number }}&{{url_parameters}}" class="button field bg-neutral-000 w-auto">Next</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="button field bg-neutral-000 w-auto" disabled>Next</a>
|
<a class="button field bg-neutral-000 w-auto" disabled>Next</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -17,7 +17,7 @@
|
|||||||
{% ifequal page.number pnum %}
|
{% ifequal page.number pnum %}
|
||||||
<li><a class="button field w-auto mx-1 text-white bg-neutral-700">{{ pnum }}</a></li>
|
<li><a class="button field w-auto mx-1 text-white bg-neutral-700">{{ pnum }}</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a class="button field bg-neutral-000 w-auto mx-1" href="?page={{ pnum }}{{url_parameters}}">{{ pnum }}</a></li>
|
<li><a class="button field bg-neutral-000 w-auto mx-1" href="?page={{ pnum }}&{{url_parameters}}">{{ pnum }}</a></li>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
@ -27,7 +27,7 @@
|
|||||||
{% ifequal page.number pnum %}
|
{% ifequal page.number pnum %}
|
||||||
<li><a class="button field w-auto mx-1 text-white bg-neutral-700">{{ pnum }}</a></li>
|
<li><a class="button field w-auto mx-1 text-white bg-neutral-700">{{ pnum }}</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a class="button field bg-neutral-000 w-auto mx-1" href="?page={{ pnum }}{{url_parameters}}">{{ pnum }}</a></li>
|
<li><a class="button field bg-neutral-000 w-auto mx-1" href="?page={{ pnum }}&{{url_parameters}}">{{ pnum }}</a></li>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -38,7 +38,7 @@
|
|||||||
{% ifequal page.number pnum %}
|
{% ifequal page.number pnum %}
|
||||||
<li><a class="button field w-auto mx-1 text-white bg-neutral-700">{{ pnum }}</a></li>
|
<li><a class="button field w-auto mx-1 text-white bg-neutral-700">{{ pnum }}</a></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li><a class="button field bg-neutral-000 w-auto mx-1" href="?page={{ pnum }}{{url_parameters}}">{{ pnum }}</a></li>
|
<li><a class="button field bg-neutral-000 w-auto mx-1" href="?page={{ pnum }}&{{url_parameters}}">{{ pnum }}</a></li>
|
||||||
{% endifequal %}
|
{% endifequal %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -15,9 +15,9 @@ def pagination(
|
|||||||
before_current_pages=4,
|
before_current_pages=4,
|
||||||
after_current_pages=4,
|
after_current_pages=4,
|
||||||
):
|
):
|
||||||
url_parameters = "".join(
|
url_parameters = urlencode(
|
||||||
[
|
[
|
||||||
f"&{urlencode(key)}={urlencode(value)}"
|
(key, value)
|
||||||
for key, value in request.GET.items()
|
for key, value in request.GET.items()
|
||||||
if key != "page"
|
if key != "page"
|
||||||
]
|
]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% load rules %}
|
{% load rules pagination %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="md:flex justify-between items-center">
|
<div class="md:flex justify-between items-center">
|
||||||
@ -18,9 +18,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr class="sep">
|
<hr class="sep">
|
||||||
{% for object in services|dictsortreversed:"stats.session_count" %}
|
{% for object in object_list|dictsortreversed:"stats.session_count" %}
|
||||||
{% include 'dashboard/includes/service_overview.html' %}
|
{% include 'dashboard/includes/service_overview.html' %}
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<p>You don't have any services on {{request.site.name|default:"Shynet"}} yet.</p>
|
<p>You don't have any services on {{request.site.name|default:"Shynet"}} yet.</p>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{% pagination page_obj request %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -22,16 +22,24 @@ from .forms import ServiceForm
|
|||||||
from .mixins import DateRangeMixin
|
from .mixins import DateRangeMixin
|
||||||
|
|
||||||
|
|
||||||
class DashboardView(LoginRequiredMixin, DateRangeMixin, TemplateView):
|
class DashboardView(
|
||||||
|
LoginRequiredMixin, DateRangeMixin, ListView
|
||||||
|
):
|
||||||
|
model = Service
|
||||||
template_name = "dashboard/pages/dashboard.html"
|
template_name = "dashboard/pages/dashboard.html"
|
||||||
|
paginate_by = 5
|
||||||
|
|
||||||
|
def get_queryset(self):
|
||||||
|
return Service.objects.filter(
|
||||||
|
Q(owner=self.request.user) | Q(collaborators__in=[self.request.user])
|
||||||
|
).distinct()
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
data = super().get_context_data(**kwargs)
|
data = super().get_context_data(**kwargs)
|
||||||
data["services"] = Service.objects.filter(
|
|
||||||
Q(owner=self.request.user) | Q(collaborators__in=[self.request.user])
|
for service in data["object_list"]:
|
||||||
).distinct()
|
service.stats = service.get_core_stats(self.get_start_date(), self.get_end_date())
|
||||||
for service in data["services"]:
|
|
||||||
service.stats = service.get_core_stats(data["start_date"], data["end_date"])
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user