diff --git a/assets/javascripts/checkbox_controller.js b/assets/javascripts/checkbox_controller.js new file mode 100644 index 0000000..9bccee3 --- /dev/null +++ b/assets/javascripts/checkbox_controller.js @@ -0,0 +1,23 @@ +document.addEventListener("turbo:load", () => { + const selectAllBox = document.getElementById("select-all-batches"); + const checkboxes = document.querySelectorAll(".item-checkbox"); + + if (selectAllBox) { + selectAllBox.addEventListener("change", function() { + checkboxes.forEach((checkbox) => { + checkbox.checked = this.checked; + }); + }); + + // Optional: Uncheck "Select All" if an individual box is unchecked + checkboxes.forEach((checkbox) => { + checkbox.addEventListener("change", () => { + if (!checkbox.checked) { + selectAllBox.checked = false; + } else if (Array.from(checkboxes).every(c => c.checked)) { + selectAllBox.checked = true; + } + }); + }); + } +}); \ No newline at end of file diff --git a/lib/issues_form_hook_listener.rb b/lib/issues_form_hook_listener.rb index e3d279a..07e4d85 100644 --- a/lib/issues_form_hook_listener.rb +++ b/lib/issues_form_hook_listener.rb @@ -12,8 +12,10 @@ class IssuesFormHookListener < Redmine::Hook::ViewListener # Load the javascript to support the autocomplete forms def view_layouts_base_html_head(context = {}) - js = javascript_include_tag 'application', :plugin => 'redmine_qbo' - js += javascript_include_tag 'autocomplete-rails', :plugin => 'redmine_qbo' + logger.info("IssuesFormHookListener.view_layouts_base_html_head") + js = javascript_include_tag 'application.js', :plugin => 'redmine_qbo' + js += javascript_include_tag 'autocomplete-rails.js', :plugin => 'redmine_qbo' + js += javascript_include_tag 'checkbox_controller.js', :plugin => 'redmine_qbo' return js end