diff --git a/src/registrar/admin.py b/src/registrar/admin.py index ca51e8b72..e21f7581b 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -3208,12 +3208,17 @@ class PortfolioAdmin(ListHeaderAdmin): obj: Portfolio = self.get_object(request, object_id) extra_context = extra_context or {} extra_context["skip_additional_contact_info"] = True + sort_by = request.GET.get('sort', 'requested_domain__name') + order = request.GET.get('order', 'asc') + + order_prefix = '-' if order == 'desc' else '' + domain_requests_order_by = [f"{order_prefix}{sort_by}"] if obj: extra_context["members"] = self.get_user_portfolio_permission_non_admins(obj) extra_context["admins"] = self.get_user_portfolio_permission_admins(obj) extra_context["domains"] = obj.get_domains(order_by=["domain__name"]) - extra_context["domain_requests"] = obj.get_domain_requests(order_by=["requested_domain__name"]) + extra_context["domain_requests"] = obj.get_domain_requests(order_by=domain_requests_order_by) return super().change_view(request, object_id, form_url, extra_context) def save_model(self, request, obj, form, change): diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js index 73f3dded1..0de2c7c81 100644 --- a/src/registrar/assets/js/get-gov-admin.js +++ b/src/registrar/assets/js/get-gov-admin.js @@ -1035,3 +1035,19 @@ document.addEventListener('DOMContentLoaded', function() { }; } })(); + +(function sortTable(sortBy, order,event) { + event.preventDefault() + const xhr = new XMLHttpRequest(); + xhr.open('GET', `?sort=${sortBy}&order=${order}`, true); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + // Parse the response and update only the table body or container + const parser = new DOMParser(); + const doc = parser.parseFromString(xhr.responseText, 'text/html'); + const sortedContent = doc.querySelector('#table-content').innerHTML; + document.querySelector('#table-content').innerHTML = sortedContent; + } + }; + xhr.send(); +})(); \ No newline at end of file diff --git a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html index 46303efce..9988e62e1 100644 --- a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html +++ b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html @@ -5,11 +5,19 @@ - - + + - + {% for domain_request in domain_requests %} {% url 'admin:registrar_domainrequest_change' domain_request.pk as url %} diff --git a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html index 56621b769..f81bc080c 100644 --- a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html +++ b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html @@ -5,8 +5,12 @@
NameStatus + + Name + + + + Status + +
- - + +
NameState + Name + + State +