cc23b76a1f2c7dc6a29c227661bfb0ce4d20eb54 lrnassar Fri Sep 4 13:43:48 2026 -0700 BLAT page polish from QA: Load example button, corrected input limits, wording fixes. refs #37996 Load example is a chip-style button with a mouseover instead of a hyperlink. Removed the Show input limits modal; corrected the limits in hgTracksHelp.html, stale since 2013 (DNA is 75,000 bases per sequence and 187,500 combined, protein and translated 10,000 and 25,000), added a #blatLimits anchor and pointed the two over-limit BLAT warnings and the form at it. Genome selector: section title Target assembly, type-to-search hint in the dropdown, Shortcuts: label, input and Query type select sized to match. Similar tools sidebar uses house-style hyphens and corrects the findMotif name and description. Share and rename text now states link lifetimes accurately (snapshot links last years, only sessions are permanent). Alignment page buttons match .gbPill, summary strip spacing fixed, New BLAT search button demoted from primary. Documents blatResultsGroup in ex.hg.conf. diff --git src/hg/js/topLinks.js src/hg/js/topLinks.js index 5176fcb3a4b..b842e35c9dd 100644 --- src/hg/js/topLinks.js +++ src/hg/js/topLinks.js @@ -212,32 +212,38 @@ note.appendChild(el("a", {href: loginEl ? loginEl.getAttribute("href") : "../cgi-bin/hgLogin", textContent: "Log in"})); note.appendChild(document.createTextNode( " to give your links a name and to edit or update them later.")); } body.appendChild(note); } // Show the resulting share URL with a "Copy to clipboard" button. opts (session mode): // {name: , session: true, loggedIn: }. A logged-in session link // also gets a "Specify name" button. url mode passes no opts → just the link + Copy. function showResult(body, url, opts) { opts = opts || {}; var canRename = opts.session && opts.loggedIn; body.innerHTML = ""; + // Saved sessions never expire (site policy); a url-mode link (the BLAT alignment page's + // snapshot) is durable while used but cleaned after years of no use, so it makes the + // softer promise and points at sessions for permanence. + var durability = opts.session ? "Links never time out:" : + "The link remains valid for years; to keep your results permanently, save them " + + "into a Session:"; body.appendChild(el("p", {textContent: "You can share this link with collaborators, put " + - "it into figure legends or manuscripts. Links never time out:"}, {marginTop: "0"})); + "it into figure legends or manuscripts. " + durability}, {marginTop: "0"})); // Read-only text region (not an ) so it's clear the URL isn't meant to be edited. var urlBox = el("div", {id: "tlShareUrl", textContent: url}, {background: "#f0f0f0", padding: "6px 8px", borderRadius: "4px", wordBreak: "break-all", userSelect: "all", fontFamily: "monospace"}); urlBox.setAttribute("data-copy", url); // copyToClipboard() reads data-copy or innerText body.appendChild(urlBox); var btnRow = el("div", {}, {marginTop: "8px"}); var copyBtn = el("button", {title: "Copy URL to clipboard"}); copyBtn.setAttribute("data-target", "tlShareUrl"); copyBtn.innerHTML = clipboardSvg + "Copy to clipboard"; copyBtn.addEventListener("click", function(ev) { if (typeof copyToClipboard === "function") copyToClipboard(ev); }); btnRow.appendChild(copyBtn);