Skip to content

Commit

Permalink
remove usage of current_page_data and use ag grid pagination
Browse files Browse the repository at this point in the history
  • Loading branch information
nboyse committed Feb 6, 2024
1 parent 96616c7 commit 5782ecf
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 159 deletions.
97 changes: 2 additions & 95 deletions reports/jinja2/generics/table.jinja
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{% from "components/table/macro.njk" import govukTable -%}
{% if report.slug() == "table_report_of_eu_data" -%}
{% if report.headers_list -%}
<script nonce="{{ request.csp_nonce }}" src="{{ static('common/js/ag-grid-community.min.js') }}" async></script>
<script nonce="{{ request.csp_nonce }}">
Expand Down Expand Up @@ -81,106 +81,13 @@
</div>

{% else -%}
{% if current_page_data -%}
{{ govukTable({
"head": report.headers(),
"rows": report.rows(current_page_data)
}) }}


<nav class="pagination tamato-clearfix" role="navigation" aria-label="Pagination Navigation"><nav class="pagination tamato-clearfix" role="navigation" aria-label="Pagination Navigation">
<div class="govuk-body">
Showing {{ current_page_data|length }} of {{ current_page_data.paginator.count }}
{# Polymorphic TrackedModelsQuerySet instances don't have a valid `model`. #}
{% if items_name %}
{{items_name}}
{% elif current_page_data.object_list.model %}
{{ current_page_data.object_list.model._meta.verbose_name_plural if current_page_data.paginator.count > 1 else current_page_data.object_list.model._meta.verbose_name }}
{% else %}
"items"
{% endif %}
</div>
<div class="govuk-body">
Page {{ current_page_data.number }} of {{ current_page_data.paginator.num_pages }}
</div>
<ul class="govuk-list align-right">
{% if current_page_data.has_previous %}
<li>
<a
class="govuk-link govuk-!-margin-right-1"
href="?{{ query_transform(request, page=1)}}"
rel="prev"
aria-label="Go to First Page"
>
First
</a>
</li>
<li>
<a
class="govuk-link govuk-!-margin-right-1"
href="?{{ query_transform(request, page=current_page_data.previous_page_number)}}"
rel="prev"
aria-label="Go to Previous Page"
>
Prev
</a>
</li>
{% endif %}
{% for page_link in current_page_data.paginator.page_range %}
{% set isCurrent = page_link == current_page_data.number %}
{% if page_link >= current_page_data.number - 5 and page_link <= current_page_data.number + 5 %}

<li
class="{{ 'govuk-!-margin-left-2 govuk-!-margin-right-2' if isCurrent else 'govuk-!-margin-right-1'}}"
{% if isCurrent %}aria-current="true"{% endif %}
>
{% if page_link == '...' or page_link == current_page_data.number|string %}
{{ page_link }}
{% else %}
<a
class="govuk-link"
href="?{{ query_transform(request, page=page_link) }}"
aria-label="Go to Page {{ page_link }}"
>{{ '{0:,}'.format(page_link|int) }}</a>
{% endif %}
</li>
{% endif %}
{% endfor %}
{% if current_page_data.paginator.limit_breached %}
<li class="govuk-!-margin-right-1" >...</li>
{% endif %}
{% if current_page_data.has_next %}
<li>
<a
class="govuk-link"
href="?{{ query_transform(request, page=current_page_data.next_page_number()) }}"
rel="next"
aria-label="Go to Next Page"
>
Next
</a>
</li>
<li>
<a
class="govuk-link"
href="?{{ query_transform(request, page=current_page_data.paginator.num_pages) }}"
rel="next"
aria-label="Go to Last Page"
>
Last
</a>
</li>
{% endif %}
</ul>
</nav>
{% else -%}
{% if report.slug() == "table_report_of_eu_data" -%}
{% if report.headers_list -%}
<div id="myGrid" class="ag-theme-alpine" style="height: 500px"></div>
{% else -%}
{{ govukTable({
"head": report.headers(),
"rows": report.rows()
}) }}
{% endif -%}
{% endif -%}
{% endif -%}
6 changes: 1 addition & 5 deletions reports/jinja2/reports/report_table.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@
Report: {{ report.name }}
</h1>
{% if not report.tab_name2 %}
{% if current_page_data %}
<a id="exportToCSVLink{{report.slug()}}" class="govuk-button" style="float:right;" href="{{ url("reports:export_report_with_page_to_csv", kwargs={"report_slug": report.slug(), "current_page": current_page_data.number}) }}">Export to CSV</a>
{% else %}
<a id="exportToCSVLink{{report.slug()}}" class="govuk-button" style="float:right;" href="{{ url("reports:export_report_to_csv", kwargs={"report_slug": report.slug()}) }}">Export to CSV</a>
{% endif %}
<a id="exportToCSVLink{{report.slug()}}" class="govuk-button" style="float:right;" href="{{ url("reports:export_report_to_csv", kwargs={"report_slug": report.slug()}) }}">Export to CSV</a>
{% endif %}
<h2 class="govuk-body">
{{ report.description|safe }}
Expand Down
2 changes: 1 addition & 1 deletion reports/reports/base_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def headers(self) -> [dict]:
pass

@abstractmethod
def rows(self, current_page_data=None) -> [dict]:
def rows(self) -> [dict]:
pass

@abstractmethod
Expand Down
2 changes: 1 addition & 1 deletion reports/reports/blank_goods_nomenclature_descriptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def row(self, row: GoodsNomenclatureDescription) -> [dict]:
{"text": live_description},
]

def rows(self, current_page_data) -> [[dict]]:
def rows(self) -> [[dict]]:
table_rows = []
for row in self.query():
table_rows.append(self.row(row))
Expand Down
13 changes: 0 additions & 13 deletions reports/reports/eu_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,3 @@ def rows(self) -> [dict]:
def query(self):
return EUDataModel.objects.all().order_by("goods_code")

def get_paginated_data(self, page=1, items_per_page=25):
report_data = self.query()

paginator = Paginator(report_data, items_per_page)

try:
current_page_data = paginator.page(page)
except PageNotAnInteger:
current_page_data = paginator.page(1)
except EmptyPage:
current_page_data = paginator.page(paginator.num_pages)

return current_page_data
44 changes: 18 additions & 26 deletions reports/reports/quotas_cannot_be_used.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,31 @@ class Report(ReportBaseTable):
enabled = True
description = "Quotas that won't be able to be used by a trader"

headers_list = [
"order_number",
"start_date",
"end_date",
"reason",
]

def headers(self) -> [dict]:
return [
{"text": "Order number"},
{"text": "Start date"},
{"text": "End date"},
{"text": "Reason"},
{
"field": header.replace("_", " ").capitalize(),
"filter": "agTextColumnFilter",
}
for header in self.headers_list
]

def row(self, row: QuotaDefinition) -> [dict]:
return [
{"text": row.order_number},
{"text": row.valid_between.lower},
{"text": row.valid_between.upper},
{"text": row.reason},
]
return {
field.replace("_", " ").capitalize(): str(getattr(row, field, None))
for field in self.headers_list
}

def rows(self, current_page_data) -> [[dict]]:
def rows(self) -> [[dict]]:
table_rows = []
for row in current_page_data:
for row in self.query():
table_rows.append(self.row(row))

return table_rows
Expand Down Expand Up @@ -136,17 +142,3 @@ def find_quotas_that_cannot_be_used(self, quotas_with_definition_periods):
quota.reason = "Definition period has not been set"

return list(matching_data)

def get_paginated_data(self, page=1, items_per_page=25):
report_data = self.query()

paginator = Paginator(report_data, items_per_page)

try:
current_page_data = paginator.page(page)
except PageNotAnInteger:
current_page_data = paginator.page(1)
except EmptyPage:
current_page_data = paginator.page(paginator.num_pages)

return current_page_data
18 changes: 0 additions & 18 deletions reports/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,8 @@ def index(request):
def report(request):
report_class = utils.get_report_by_slug(request.resolver_match.url_name)

# Adjust the number of items per page as needed
items_per_page = 25

# current_page_data = report_class().get_paginated_data(
# request.GET.get("page", 1), items_per_page
# )

context = {
"report": report_class(),
# "current_page_data": current_page_data,
}

return render(
Expand Down Expand Up @@ -97,16 +89,6 @@ def export_report_to_csv(request, report_slug, current_tab=None):
headers = (
report_instance.headers() if hasattr(report_instance, "headers") else None
)
# if current_page:
# current_page_data = Paginator(report_instance.query(), 25).page(
# current_page
# )
# rows = (
# report_instance.rows(current_page_data=current_page_data)
# if hasattr(report_instance, "rows")
# else None
# )
# else:
rows = (
report_instance.rows()
if hasattr(report_instance, "rows")
Expand Down

0 comments on commit 5782ecf

Please sign in to comment.