5b211c300c02e8db4a5b4daedb1711122d9321d3 hiram Fri Jan 16 11:47:18 2026 -0800 initial content for the liftRequest function refs #31811 diff --git src/hg/js/liftRequest.js src/hg/js/liftRequest.js new file mode 100644 index 00000000000..50a8f6e8fae --- /dev/null +++ src/hg/js/liftRequest.js @@ -0,0 +1,93 @@ +var assembly1Value = ""; +var assembly2Value = ""; + +function assembly1Select(selectEle, item) { + selectEle.innerHTML = item.label; + assembly1Value = item.value || item.label; +} + +function assembly2Select(selectEle, item) { + selectEle.innerHTML = item.label; + assembly2Value = item.value || item.label; +} + +function submitForm() { + var email = document.getElementById("emailInput").value; + var comments = document.getElementById("commentsInput").value; + + // Hide any previous error message + document.getElementById("errorMessage").style.display = "none"; + + if (!assembly1Value) { + alert("Please select Assembly 1"); + return; + } + if (!assembly2Value) { + alert("Please select Assembly 2"); + return; + } + if (!email) { + alert("Please enter an email address"); + return; + } + + // Build the API URL with query parameters + comment = comments.slice(0, 1000); // make sure that URL is not too long + var apiUrl = "/cgi-bin/hubApi/liftRequest?" + + "fromGenome=" + encodeURIComponent(assembly1Value) + ";" + + "toGenome=" + encodeURIComponent(assembly2Value) + ";" + + "email=" + encodeURIComponent(email) + ";" + + "comment=" + encodeURIComponent(comments); + + $.ajax({ + url: apiUrl, + type: "GET", + success: function(response) { + document.getElementById("formContainer").style.display = "none"; + document.getElementById("successMessage").style.display = "block"; + }, + error: function(xhr, status, error) { + var errorMsg = "Error submitting request"; + if (xhr.responseJSON && xhr.responseJSON.error) { + errorMsg = xhr.responseJSON.error; + } else if (xhr.responseText) { + try { + var parsed = JSON.parse(xhr.responseText); + if (parsed.error) { + errorMsg = parsed.error; + } + } catch (e) { + errorMsg = error || status || "Unknown error occurred"; + } + } else if (error) { + errorMsg = error; + } + document.getElementById("errorText").textContent = errorMsg; + document.getElementById("errorMessage").style.display = "block"; + } + }); +} + +document.addEventListener("DOMContentLoaded", () => { + // Assembly 1 autocomplete + let selectEle1 = document.getElementById("genomeLabel1"); + let boundSelect1 = assembly1Select.bind(null, selectEle1); + initSpeciesAutoCompleteDropdown('genomeSearch1', boundSelect1, "https://hgwdev-demo-chmalee.gi.ucsc.edu/cgi-bin/hubApi/findGenome?browser=mustExist&q="); + + let btn1 = document.getElementById("genomeSearchButton1"); + btn1.addEventListener("click", () => { + let val = document.getElementById("genomeSearch1").value; + $("[id='genomeSearch1']").autocompleteCat("search", val); + }); + + // Assembly 2 autocomplete + let selectEle2 = document.getElementById("genomeLabel2"); + let boundSelect2 = assembly2Select.bind(null, selectEle2); + initSpeciesAutoCompleteDropdown('genomeSearch2', boundSelect2, "https://hgwdev-demo-chmalee.gi.ucsc.edu/cgi-bin/hubApi/findGenome?browser=mustExist&q="); + + let btn2 = document.getElementById("genomeSearchButton2"); + btn2.addEventListener("click", () => { + let val = document.getElementById("genomeSearch2").value; + $("[id='genomeSearch2']").autocompleteCat("search", val); + }); +});