From 23ee19ba2809d3fd18b43b5544e76779724b0603 Mon Sep 17 00:00:00 2001 From: zandercymatics <141044360+zandercymatics@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:15:02 -0600 Subject: [PATCH] Add js logic --- src/registrar/assets/js/get-gov-admin.js | 69 +++++-------------- src/registrar/assets/sass/_theme/_admin.scss | 4 ++ .../admin/includes/detail_table_fieldset.html | 6 +- 3 files changed, 25 insertions(+), 54 deletions(-) diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js index 2670a1b11..594628b16 100644 --- a/src/registrar/assets/js/get-gov-admin.js +++ b/src/registrar/assets/js/get-gov-admin.js @@ -146,60 +146,23 @@ function openInNewTab(el, removeAttribute = false){ 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); + let currentUserName = this.getAttribute("data-user-name"); + if (currentUserId && currentUserName){ + // Logic borrowed from here: + // https://select2.org/programmatic-control/add-select-clear-items#create-if-not-exists + let selector = django.jQuery(investigatorSelect) + // Set the value, creating a new option if necessary + if (selector.find(`option[value='${currentUserId}']`).length) { + selector.val(currentUserId).trigger("change"); + } else { + // Create a DOM Option and pre-select by default + let currentUser = new Option(currentUserName, currentUserId, true, true); + // Append it to the select + selector.append(currentUser).trigger("change"); + } + }else { + console.error("Could not assign current user.") } - - // 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 }); } })(); diff --git a/src/registrar/assets/sass/_theme/_admin.scss b/src/registrar/assets/sass/_theme/_admin.scss index 8ed702665..0f8a1ed91 100644 --- a/src/registrar/assets/sass/_theme/_admin.scss +++ b/src/registrar/assets/sass/_theme/_admin.scss @@ -773,3 +773,7 @@ div.dja__model-description{ .module caption, .inline-group h2 { text-transform: capitalize; } + +.usa-button--dja-link-color { + color: var(--link-fg); +} 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 15796599a..72340ff37 100644 --- a/src/registrar/templates/django/admin/includes/detail_table_fieldset.html +++ b/src/registrar/templates/django/admin/includes/detail_table_fieldset.html @@ -177,7 +177,11 @@ This is using a custom implementation fieldset.html (see admin/fieldset.html) {% elif field.field.name == "investigator" %}