From f7294f7087275d3c7163ad94f565d442f7ffa338 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Wed, 7 Feb 2024 13:37:57 -0600 Subject: [PATCH] Preliminary work on 9583. --- netbox/templates/generic/object_list.html | 2 +- netbox/templates/inc/table_controls_htmx.html | 2 +- .../inc/table_header_filter_dropdown.html | 2 +- netbox/utilities/templatetags/form_helpers.py | 16 ++++++++++++++-- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/netbox/templates/generic/object_list.html b/netbox/templates/generic/object_list.html index 043a55798..bf0777406 100644 --- a/netbox/templates/generic/object_list.html +++ b/netbox/templates/generic/object_list.html @@ -60,7 +60,7 @@ Context: {% block content %} {# Object list tab #} -
+
{# Applied filters #} {% if filter_form %} diff --git a/netbox/templates/inc/table_controls_htmx.html b/netbox/templates/inc/table_controls_htmx.html index 3b1417cdd..62c587328 100644 --- a/netbox/templates/inc/table_controls_htmx.html +++ b/netbox/templates/inc/table_controls_htmx.html @@ -5,7 +5,7 @@
+ hx-get="" hx-target="#object_list" hx-trigger="keyup changed delay:500ms, search" /> diff --git a/netbox/templates/inc/table_header_filter_dropdown.html b/netbox/templates/inc/table_header_filter_dropdown.html index 4d134c9ec..36665841f 100644 --- a/netbox/templates/inc/table_header_filter_dropdown.html +++ b/netbox/templates/inc/table_header_filter_dropdown.html @@ -5,7 +5,7 @@
{% endif %} \ No newline at end of file diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index dd4f1578f..6fe526f53 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -1,5 +1,6 @@ from django import template + __all__ = ( 'getfield', 'getfilterfield', @@ -10,6 +11,7 @@ __all__ = ( 'widget_type', ) +from utilities.templatetags.helpers import querystring register = template.Library() @@ -68,13 +70,23 @@ def render_field(field, bulk_nullable=False, label=None): @register.inclusion_tag('form_helpers/render_field.html') -def render_filter_field(field, bulk_nullable=False, label=None): +def render_filter_field(field, bulk_nullable=False, table=None, request=None): """ Render a single form field from template """ + url = "" + kwargs = { + field.name: None + } + if request and table.htmx_url: + url = table.htmx_url + querystring(request, **kwargs) + elif request: + url = querystring(request, **kwargs) + if hasattr(field.field, 'widget'): field.field.widget.attrs.update({ - 'hx-get': "", + 'hx-get': url if url else '#', + 'hx-push-url': "true", 'hx-target': '#object_list', 'hx-trigger': 'hidden.bs.dropdown from:closest .dropdown' })