984a3761c1300e20e463304a81098b312da7bd66
jnavarr5
  Wed Nov 26 15:49:51 2025 -0800
Adding the custom track tutorial, refs #34354

diff --git src/hg/js/tutorials/tutorialPopup.js src/hg/js/tutorials/tutorialPopup.js
index 9793f41ef1b..e68b2f0893a 100644
--- src/hg/js/tutorials/tutorialPopup.js
+++ src/hg/js/tutorials/tutorialPopup.js
@@ -19,30 +19,39 @@
           display. Learn how to configure display settings, search for tracks, and view the
           negative strand (3' to 5').</small>
           </td></tr>
       <tr><td style="width: 250px; padding: 8px; text-align: center; border: 1px solid #666666;">
           <a href="#" id="clinicalTutorial">Advanced tutorial for clinicians</a><br>
           <em style="font-size: 11px">(only available on hg19 & hg38)</em></td>
           <td style="padding: 8px; width: 450px; word-wrap: break-word; border: 1px solid #666666; text-align:center">
           <small>
           A tutorial focused on clinical genetics to showcase resources that
           may be useful in variant interpretation.
           <br>
           Learn how to search for variants,
           view recommended track sets, and save your configuration settings to share with others.
           </small>
           </td></tr>
+      <tr><td style="padding: 8px;width: 200px; text-align: center; border: 1px solid #666666;">
+          <a href="#" id="customTrackTutorial">Custom Track tutorial</a><br>
+          <em style="font-size: 11px">(only available on hg38)</em></td>
+          <td style="padding: 8px; width: 450px; word-wrap: break-word; border: 1px solid #666666; text-align:center">
+          <small>
+          An introductory tutorial to guide users with steps to upload their own data into the
+          UCSC Genome Browser. Learn how to upload a BED, Wiggle, bigBed, or bigWigs for the
+          hg38 genome assembly.</small>
+          </td></tr>
       <tr><td style="padding: 8px;width: 200px; text-align: center; border: 1px solid #666666;">
           <a href="#" id="tableBrowserTutorial">Table Browser tutorial</a></td>
           <td style="padding: 8px; width: 450px; word-wrap: break-word; border: 1px solid #666666; text-align:center">
           <small>
           An introductory tutorial to navigate and configure the UCSC Table Browser.
           Learn how to switch between assemblies, select primary or related tables for a track,
           and select your output format.</small>
           </td></tr>
       <tr><td style="padding: 8px;width: 200px; text-align: center; border: 1px solid #666666;">
           <a href="#" id="gatewayTutorial">Gateway tutorial</a></td>
           <td style="padding: 8px; width: 450px; word-wrap: break-word; border: 1px solid #666666; text-align:center">
           <small>
           An introductory tutorial covering key features of the UCSC Gateway page.
           Learn how to locate and search genome assemblies, view the assembly
           browser sequences page, examine detailed assembly information, and more.
@@ -84,30 +93,42 @@
     }
   });
 
   // Function to control the clincial tutorial link
   document.getElementById('clinicalTutorial').addEventListener('click', function(event) {
     event.preventDefault();
     $("#tutorialContainer").dialog("close");
     if (cgi == "hgTracks" && (db == "hg38" || db =="hg19")) {
         clinicalTour.start(); // If you are on hg38 or hg19, then start the tutorial
     } else {
         // Otherwise go to hg38 and start the tutorial.
         window.location.href = "/cgi-bin/hgTracks?db=hg38&startClinical=true";
     }
   });
 
+  // Function to control the clincial tutorial link
+  document.getElementById('customTrackTutorial').addEventListener('click', function(event) {
+    event.preventDefault();
+    $("#tutorialContainer").dialog("close");
+    if (cgi == "hgCustom" && db == "hg38") {
+        customTrackTour.start(); // If you are on hg38, then start the tutorial
+    } else {
+        // Otherwise go to hg38 and start the tutorial.
+        window.location.href = "/cgi-bin/hgCustom?db=hg38&startCustomTutorial=true&hgct_do_add=1";
+    }
+  });
+
   // Function to control the Table Browser tutorial link
   document.getElementById('tableBrowserTutorial').addEventListener('click', function(event) {
     event.preventDefault();
     $("#tutorialContainer").dialog("close");
     if (cgi == "hgTables" && (typeof startTableBrowserOnLoad !== 'undefined' && startTableBrowserOnLoad)) {
         tableBrowserTour.start(); // If you are on hgTables, start the tutorial
     } else {
         // Go to hgTables and start the tutorial
         window.location.href = "/cgi-bin/hgTables?startTutorial=true";
     }
   });
 
   // Function to control the Gateway tutorial link
   document.getElementById('gatewayTutorial').addEventListener('click', function(event) {
     event.preventDefault();