311c682d1119b11a60f0585d129c0a01f5ebf600
chmalee
  Mon Jun 10 10:00:26 2024 -0700
Check for undefined object member before calling string replace on it, refs #33216

diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 7c73622..686db8e 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -712,31 +712,34 @@
     },
 
     mapClk: function ()
     {
         var done = false;
         // if we clicked on a merged item then show all the items, similar to clicking a
         // dense track to turn it to pack
         if (!(this && this.href)) {
             writeToApacheLog(`no href for mapClk, this = `);
         }
         let parsedUrl = parseUrl(this.href);
         let cgi = parsedUrl.cgi;
 
         // for some reason, '-' characters are encoded here? unencode them so lookups into
         // hgTracks.trackDb will work
-        let id = parsedUrl.queryArgs.g.replace("%2D", "-");
+        let id = "";
+        if (typeof parsedUrl.queryArgs.g !== "undefined") {
+            id = parsedUrl.queryArgs.g.replace("%2D", "-");
+        }
         if (parsedUrl.queryArgs.i === "mergedItem") {
             updateObj={};
             updateObj[id+".doMergeItems"] = 0;
             hgTracks.trackDb[id][id+".doMergeItems"] = 0;
             cart.setVarsObj(updateObj,null,false);
             imageV2.requestImgUpdate(id, id + ".doMergeItems=0");
             return false;
         }
 
         if (done)
             return false;
         else {
             // first check if we are allowed to click, we could be in the middle
             // of a drag select
             if (posting.blockUseMap === true) {