src/hg/js/hgTracks.js 1.65

1.65 2010/04/09 07:48:47 kent
The makeItems drag now returns a proper track name, chrom, start, end.
Index: src/hg/js/hgTracks.js
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/js/hgTracks.js,v
retrieving revision 1.64
retrieving revision 1.65
diff -b -B -U 4 -r1.64 -r1.65
--- src/hg/js/hgTracks.js	8 Apr 2010 22:31:13 -0000	1.64
+++ src/hg/js/hgTracks.js	9 Apr 2010 07:48:47 -0000	1.65
@@ -134,8 +134,44 @@
     return (selection.event.pageX >= leftX) && (selection.event.pageX < rightX)
         && (selection.event.pageY >= (imgOfs.top - slop)) && (selection.event.pageY < (imgOfs.top + imgHeight + slop));
 }
 
+
+function selectionPixelsToBases(img, selection)
+// Convert selection x1/x2 coordinates to chromStart/chromEnd.
+{
+var insideX = parseInt(document.getElementById("hgt.insideX").value);
+var imgWidth = jQuery(img).width() - insideX;
+var winStart = parseInt(document.getElementById("hgt.winStart").value);
+var winEnd = parseInt(document.getElementById("hgt.winEnd").value);
+var width = winEnd - winStart;
+var mult = width / imgWidth;   // mult is bp/pixel multiplier
+var startDelta;                // startDelta is how many bp's to the right/left
+if(revCmplDisp) {
+    var x1 = Math.min(imgWidth, selection.x1);
+    startDelta = Math.floor(mult * (imgWidth - x1));
+} else {
+    var x1 = Math.max(insideX, selection.x1);
+    startDelta = Math.floor(mult * (x1 - insideX));
+}
+var endDelta;
+if(revCmplDisp) {
+    endDelta = startDelta;
+    var x2 = Math.min(imgWidth, selection.x2);
+    startDelta = Math.floor(mult * (imgWidth - x2));
+} else {
+    var x2 = Math.max(insideX, selection.x2);
+    endDelta = Math.floor(mult * (x2 - insideX));
+}
+var newStart = winStart + startDelta;
+var newEnd = winStart + 1 + endDelta;
+if(newEnd > winEnd) {
+    ewEnd = winEnd;
+}
+return {chromStart : newStart, chromEnd : newEnd};
+}
+
+
 function updatePosition(img, selection, singleClick)
 {
     // singleClick is true when the mouse hasn't moved (or has only moved a small amount).
     var chromName = document.getElementById("hgt.chromName").value;
@@ -321,9 +357,16 @@
 }
 
 function makeItemsEnd(img, selection)
 {
-alert("dragged out x1=" + selection.x1 + " x2=" + selection.x2);
+var image = $(img);
+var imageId = image.attr('id');
+var trackName = imageId.substring('img_data_'.length);
+var chrom = document.getElementById("hgt.chromName").value;
+var pos = selectionPixelsToBases(image, selection);
+var command = document.getElementById('hgt_doJsCommand');
+command.value = "makeItems " + trackName + " " + chrom + " " + pos.chromStart + " " + pos.chromEnd;
+document.TrackHeaderForm.submit();
 return true;
 }
 
 function setUpMakeItemsDrag(trackName)