src/hg/js/hgTracks.js 1.50

1.50 2009/12/30 04:14:21 larrym
retrieve new image when user chooses viewImg
Index: src/hg/js/hgTracks.js
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/hgTracks.js,v
retrieving revision 1.49
retrieving revision 1.50
diff -b -B -U 4 -r1.49 -r1.50
--- src/hg/js/hgTracks.js	29 Dec 2009 20:24:53 -0000	1.49
+++ src/hg/js/hgTracks.js	30 Dec 2009 04:14:21 -0000	1.50
@@ -1286,9 +1286,22 @@
         autoHideSetting = false;
         var obj = imgAreaSelect.data('imgAreaSelect');
         obj.setOptions({autoHide : false, movable: true});
     } else if (cmd == 'viewImg') {
-        window.open(trackImg.attr('src'));
+        // Fetch a new copy of track img and show it to the user in another window. This code assume we have updated
+        // remote cart with all relevant chages (e.g. drag-reorder).
+        var data = "hgt.trackImgOnly=1&hgsid=" + getHgsid();
+        jQuery('body').css('cursor', 'wait');
+        $.ajax({
+                   type: "GET",
+                   url: "../cgi-bin/hgTracks",
+                   data: data,
+                   dataType: "html",
+                   trueSuccess: handleViewImg,
+                   success: catchErrorOrDispatch,
+                   cmd: cmd,
+                   cache: false
+               });
     } else if (cmd == 'openLink') {
         // XXXX This is blocked by Safari's popup blocker (without any warning message).
         window.open(selectedMenuItem.href);
     } else {
@@ -1611,4 +1624,21 @@
         }
     }
     jQuery('body').css('cursor', '');
 }
+
+function handleViewImg(response, status)
+{
+    jQuery('body').css('cursor', '');
+    for (var id in trackDbJson) {
+        // Use an arbitrary id to pull out a src from the track image table;
+        // e.g.: <IMG id='img_data_knownGene' src='../trash/hgt/hgt_hgwdev_larrym_479c_abde90.png' ...>
+        var str = "<IMG[^>]*id='img_data_" + id + "'[^>]*src='([^']+)'";
+        var reg = new RegExp(str);
+        a = reg.exec(response);
+        if(a && a[1]) {
+            window.open(a[1]);
+            return;
+        }
+    }
+    showWarning("Couldn't parse out img src");
+}