b53a97d26633a1f174a7031559a69d37e393379f chmalee Fri May 1 14:19:19 2026 -0700 Allow myVariants tracks to be shared similar to google docs, read only and read+edit access by username or for all. Last write wins. Currently no history of changes, leaving that for the next version of the feature diff --git src/hg/hgTracks/config.c src/hg/hgTracks/config.c index 748ec3ab426..c34f1d89cda 100644 --- src/hg/hgTracks/config.c +++ src/hg/hgTracks/config.c @@ -765,30 +765,59 @@ hPrintf("</TD><TD>"); hPrintf("Enable highlight with drag-and-select " "(if unchecked, drag-and-select always zooms to selection)"); hPrintf("</TD></TR>\n"); // check if we can do hgc pages in a pop up before putting up the user control if (cfgOptionBooleanDefault("canDoHgcInPopUp", TRUE)) { // put a checkbox, on by default, to control whether item clicks stay on hgTracks or // go to hgTracks hPrintf("<tr><td>"); hCheckBox("doHgcInPopUp", cartUsualBoolean(cart, "doHgcInPopUp", TRUE)); hPrintf("<td>Enable pop-up when clicking items</td></tr>\n"); } +// My Variants navigation preference reset - stored in localStorage +if (cfgOptionBooleanDefault("doMyVariants", FALSE)) + { + hPrintf("<TR><TD>"); + hPrintf("<input type='checkbox' id='resetMyVariantsNav' name='resetMyVariantsNav'>"); + hPrintf("</TD><TD>"); + hPrintf("Reset 'My Variants' navigation preference (currently: <span id='myVariantsNavPrefDisplay'>not set</span>)"); + hPrintf("</TD></TR>\n"); + // Display current preference and clear localStorage on form submit if checkbox is checked + jsInlineF( + "document.addEventListener('DOMContentLoaded', function() {" + " var prefSpan = document.getElementById('myVariantsNavPrefDisplay');" + " if (prefSpan) {" + " var pref = localStorage.getItem('myVariants_navPref');" + " prefSpan.textContent = pref ? pref : 'not set';" + " }" + " var form = document.forms['TrackForm'] || document.forms['TrackHeaderForm'];" + " if (form) {" + " form.addEventListener('submit', function() {" + " var cb = document.getElementById('resetMyVariantsNav');" + " if (cb && cb.checked) {" + " localStorage.removeItem('myVariants_navPref');" + " }" + " });" + " }" + "});" + ); + } + hTableEnd(); cgiDown(0.9); char buf[256]; char *freeze = hFreezeFromDb(database); if (freeze == NULL) safef(buf, sizeof buf, "Configure Tracks on %s %s: %s", organization, browserName, trackHubSkipHubName(organism)); else if (stringIn(database, freeze)) safef(buf, sizeof buf, "Configure Tracks on %s %s: %s %s", organization, browserName, trackHubSkipHubName(organism), freeze); else safef(buf, sizeof buf, "Configure Tracks on %s %s: %s %s (%s)",