diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js index 702364cba..2670a1b11 100644 --- a/src/registrar/assets/js/get-gov-admin.js +++ b/src/registrar/assets/js/get-gov-admin.js @@ -137,6 +137,72 @@ function openInNewTab(el, removeAttribute = false){ prepareDjangoAdmin(); })(); + +/** An IIFE for pages in DjangoAdmin that use a clipboard button +*/ +(function (){ + let investigatorSelect = document.querySelector("#id_investigator"); + let assignSelfButton = document.querySelector("#investigator__assign_self"); + if (investigatorSelect && assignSelfButton) { + assignSelfButton.addEventListener('click', function() { + let currentUserId = this.getAttribute("data-user-id"); + let select2Container = investigatorSelect.nextElementSibling.querySelector(".select2-selection"); + + // Log the Select2 container to verify it's the correct element + console.log(select2Container); + + // Check if the Select2 container exists and trigger a click + if (select2Container) { + // Create and dispatch a mouse event to mimic user interaction + var event = new MouseEvent('mousedown', { + 'view': window, + 'bubbles': true, + 'cancelable': true + }); + select2Container.dispatchEvent(event); + } + + // Wait for the dropdown to open and the search field to be visible + let searchField = document.querySelector(".select2-search__field"); + if (searchField) { + searchField.value = "Zander Adkinson"; // Set the value you want to search for + + // Trigger input event to filter results based on the entered value + var inputEvent = new Event('input', { + 'bubbles': true, + 'cancelable': true + }); + searchField.dispatchEvent(inputEvent); + } + + let observer = new MutationObserver(function(mutations) { + mutations.forEach(mutation => { + if (mutation.addedNodes.length) { + let options = document.querySelectorAll("#select2-id_investigator-results .select2-results__option"); + options.forEach(option => { + if (option.innerText.trim() === "Zander Adkinson zander.adkinson@ecstech.com") { + option.dispatchEvent(new MouseEvent('mouseup', { 'bubbles': true, 'cancelable': true })); + console.log("Option with the desired text has been selected."); + observer.disconnect(); // Stop observing after the desired action + } + }); + } + }); + }); + + let resultsContainer = document.querySelector("#select2-id_investigator-results"); + if (resultsContainer) { + observer.observe(resultsContainer, { + childList: true, + subtree: true + }); + } + + + // options are here: select2-results__options + }); + } +})(); /** An IIFE for pages in DjangoAdmin that use a clipboard button */ (function (){ diff --git a/src/registrar/templates/django/admin/includes/detail_table_fieldset.html b/src/registrar/templates/django/admin/includes/detail_table_fieldset.html index 5f23ac6c0..15796599a 100644 --- a/src/registrar/templates/django/admin/includes/detail_table_fieldset.html +++ b/src/registrar/templates/django/admin/includes/detail_table_fieldset.html @@ -174,5 +174,15 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html) {% endif %} + {% elif field.field.name == "investigator" %} +
+ + +
{% endif %} {% endblock after_help_text %}