From d5fc0e9ce7c70f1b6ba556ed77fcc3bf7a4e329d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 28 Sep 2016 16:56:17 -0400 Subject: [PATCH] Closes #345: Bulk edit: allow user to select all objects on page or all matching query --- netbox/project-static/js/forms.js | 15 ++++--- netbox/templates/dcim/inc/device_table.html | 39 +++++-------------- .../templates/utilities/bulk_edit_form.html | 2 +- netbox/templates/utilities/obj_table.html | 17 ++++++-- netbox/utilities/tables.py | 2 +- 5 files changed, 34 insertions(+), 41 deletions(-) diff --git a/netbox/project-static/js/forms.js b/netbox/project-static/js/forms.js index 6647046d7..d437c3e4a 100644 --- a/netbox/project-static/js/forms.js +++ b/netbox/project-static/js/forms.js @@ -1,13 +1,18 @@ $(document).ready(function() { - // "Select all" checkbox in a table header - $('th input:checkbox[name=_all]').click(function (event) { - $(this).parents('table').find('td input:checkbox').prop('checked', $(this).prop('checked')); + // "Toggle all" checkbox in a table header + $('#toggle_all').click(function (event) { + $('td input:checkbox[name=pk]').prop('checked', $(this).prop('checked')); + if ($(this).is(':checked')) { + $('#select_all_box').removeClass('hidden'); + } else { + $('#select_all').prop('checked', false); + } }); - // Uncheck the "select all" checkbox if an item is unchecked + // Uncheck the "toggle all" checkbox if an item is unchecked $('input:checkbox[name=pk]').click(function (event) { if (!$(this).attr('checked')) { - $(this).parents('table').find('input:checkbox[name=_all]').prop('checked', false); + $('#select_all, #toggle_all').prop('checked', false); } }); diff --git a/netbox/templates/dcim/inc/device_table.html b/netbox/templates/dcim/inc/device_table.html index 2f585968f..480bbc933 100644 --- a/netbox/templates/dcim/inc/device_table.html +++ b/netbox/templates/dcim/inc/device_table.html @@ -1,30 +1,9 @@ -{% load render_table from django_tables2 %} -{% load helpers %} -{% if table.model|user_can_change:request.user or table.model|user_can_delete:request.user %} -
- {% csrf_token %} - - - {% render_table table table_template|default:'table.html' %} - {% if perms.dcim.add_interface %} - - {% endif %} - {% if bulk_edit_url and table.model|user_can_change:request.user %} - - {% endif %} - {% if bulk_delete_url and table.model|user_can_delete:request.user %} - - {% endif %} -
-{% else %} - {% render_table table table_template|default:'table.html' %} -{% endif %} +{% extends 'utilities/obj_table.html' %} + +{% block extra_actions %} + {% if perms.dcim.add_interface %} + + {% endif %} +{% endblock %} diff --git a/netbox/templates/utilities/bulk_edit_form.html b/netbox/templates/utilities/bulk_edit_form.html index e723da656..1aa7344ce 100644 --- a/netbox/templates/utilities/bulk_edit_form.html +++ b/netbox/templates/utilities/bulk_edit_form.html @@ -11,7 +11,7 @@
-
{% block selected_objects_title %}Selected For Editing{% endblock %}
+
{% block selected_objects_title %}{{ selected_objects|length }} Selected For Editing{% endblock %}
{% block select_objects_table %}{% endblock %}
diff --git a/netbox/templates/utilities/obj_table.html b/netbox/templates/utilities/obj_table.html index eaad9c5b3..d611d26e6 100644 --- a/netbox/templates/utilities/obj_table.html +++ b/netbox/templates/utilities/obj_table.html @@ -5,17 +5,26 @@ {% csrf_token %} + {% if table.paginator.num_pages > 1 %} + + {% endif %} {% render_table table table_template|default:'table.html' %} + {% block extra_actions %}{% endblock %} {% if bulk_edit_url and table.model|user_can_change:request.user %} {% endif %} {% if bulk_delete_url and table.model|user_can_delete:request.user %} {% endif %} diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index 724e96056..a53227937 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -27,4 +27,4 @@ class ToggleColumn(tables.CheckBoxColumn): @property def header(self): - return mark_safe('') + return mark_safe('')