0e6a03b8f0c8f6a307a01b8780195680e32bcb76
max
  Mon Mar 22 04:23:41 2021 -0700
adding outlink tracking to hgTrackUi, refs #21916

diff --git src/hg/lib/googleAnalytics.c src/hg/lib/googleAnalytics.c
index 76a7b70..e82fe89 100644
--- src/hg/lib/googleAnalytics.c
+++ src/hg/lib/googleAnalytics.c
@@ -7,60 +7,62 @@
 #include "googleAnalytics.h"
 
 
 void googleAnalytics()
 /* check for analytics configuration item and output google hooks if OK */
 {
 static boolean done = FALSE;
 
 if (done)
     return;
 
 done = TRUE;	/*	do not repeat this by mistake	*/
 
 char *analyticsKey = cfgOption("analyticsKey");
 
-// link tracking broke in Firefox once. In case this ever happens again, we can now switch off outlink tracking quickly
+// link tracking broke in Firefox once. In case this ever happens again, we can
+// now switch off outlink tracking quickly
 boolean trackClicks = cfgOptionBooleanDefault("analytics.trackClicks", TRUE);
 
 /*	if config is missing or empty, nothing happens here	*/
 if (isEmpty(analyticsKey))
     return;
 
 /* updated to Universal Analytics code 2014-06-19 */
 
 // replace analytics.js below with analytics_debug.js to activate ga debugging
 // It will log all events and all data that is sent to the javascript console, very handy
 jsInlineF(
 "  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n"
 "  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n"
 "  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n"
 "  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n"
 "  ga('create', '%s', 'auto');\n"
 "  ga('require', 'displayfeatures');\n"
 "  ga('set', 'transport', 'beacon');\n" // default to beacons. Old browser cannot use them, so ga will use an alternative.
 "  ga('send', 'pageview');\n"
 "\n"
 , analyticsKey);
 
 // to reduce the risk of breaking existing click handlers, only track links on hgc and hgTracks pages
 char* scriptName = getenv("SCRIPT_NAME");
 if (!scriptName)
     return;
 
 char* cgiName = basename(scriptName);
-if (sameWord(cgiName, "hgc") || sameWord(cgiName, "hgTracks") || sameWord(cgiName, "hgGene"))
+if (sameWord(cgiName, "hgc") || sameWord(cgiName, "hgTracks") || 
+        sameWord(cgiName, "hgGene") || sameWord(cgiName, "hgTrackUi"))
 {
     // see https://support.google.com/analytics/answer/1136920?hl=en
     jsInlineF(
     "  function onExtAnchorClick(ev) {\n"
     "  /* user clicked an anchor: if external link, send event to Google analytics and navigate to the link */\n"
     "      var url = ev.currentTarget.href;\n"
     "      var hostname = null;\n"
     "      if (typeof URL===undefined) {\n"
     "          hostname = url.split('//')[1].split('/')[0];\n" // for MSIE
     "      } else {\n"
     "          var urlObj = new URL(url);\n"
     "          hostname = urlObj.hostname;\n"
     "          if (hostname.indexOf('.ncbi.')!==-1)\n" // for NCBI, we keep the first part of the pathname, as all DBs share the base URL
     "              hostname = hostname+'/'+urlObj.pathname.split('/')[1];\n"
     "      }\n"