a3ebab6b88099fcd6e2f7dafcb393677ef97fdc4 tdreszer Fri Aug 5 10:59:18 2011 -0700 Restricted some map items to not cover width of image but only width of label or width of item. This should make dragScroll more obvious. diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js index a17da3a..706a1c7 100644 --- src/hg/js/hgTracks.js +++ src/hg/js/hgTracks.js @@ -954,30 +954,31 @@ if (rows) $( rows ).removeClass("trDrag"); } } ///////////////////////////////////////////////////// // Drag Scroll code jQuery.fn.panImages = function(imgOffset,imgBoxLeftOffset){ // globals across all panImages var leftLimit = imgBoxLeftOffset*-1; var rightLimit = (hgTracks.imgBoxPortalWidth - hgTracks.imgBoxWidth + leftLimit); var only1xScrolling = (hgTracks.imgBoxPortalOffsetX == 0); var prevX = (imgOffset + imgBoxLeftOffset)*-1; var portalWidth = 0; + var savedPosition; panAdjustHeight(prevX); this.each(function(){ var pic; var pan; if ( $(this).is("img") ) { pan = $(this).parent("div"); pic = $(this); } else if ( $(this).is("div.scroller") ) { pan = $(this); pic = $(this).children("img#panImg"); // Get the real pic } @@ -1012,30 +1013,31 @@ $(document).bind('mousemove',panner); $(document).bind( 'mouseup', panMouseUp); // Will exec only once return false; } }); } function panner(e) { //if(!e) e = window.event; if ( mouseIsDown ) { var relativeX = (e.clientX - mouseDownX); if(relativeX != 0) { if (blockUseMap == false) { // need to throw up a z-index div. Wait mask? + savedPosition = getPosition(); dragMaskShow(); blockUseMap = true; } var decelerator = 1; var wingSize = 1000; // 0 stops the scroll at the edges. // Remeber that offsetX (prevX) is negative newX = prevX + relativeX; if ( newX >= leftLimit ) { // scrolled all the way to the left if(atEdge) { // Do not drag straight off edge. Force second drag beyondImage = true; newX = leftLimit + (newX - leftLimit)/decelerator;// slower if( newX >= leftLimit + wingSize) // Don't go too far over the edge! newX = leftLimit + wingSize; } else newX = leftLimit; @@ -1066,32 +1068,32 @@ if(mouseIsDown) { dragMaskClear(); $(document).unbind('mousemove',panner); $(document).unbind('mouseup',panMouseUp); mouseIsDown = false; setTimeout('blockUseMap=false;',50); // Necessary incase the selectEnd was over a map item. select takes precedence. // Outside image? Then abandon. var curY = e.clientY; var imgTbl = $('#imgTbl'); var imgTop = $(imgTbl).position().top; if (curY < imgTop || curY > imgTop + $(imgTbl).height()) { atEdge = false; beyondImage = false; - //warn ('curY:'+curY+ ' top:'+imgTop+' bottom:'+imgTop + $(imgTbl).innerHeight()); - panUpdatePosition(prevX,false); // FIXME: This should revert to a saved position!! + if (savedPosition != undefined) + setPosition(savedPosition,null); var oldPos = prevX.toString() + "px"; $(".panImg").css( {'left': oldPos }); $('.tdData').css( {'backgroundPosition': oldPos } ); return true; } // Do we need to fetch anything? if(beyondImage) { if(inPlaceUpdate) { var pos = parsePosition(getPosition()); navigateInPlace("position=" + encodeURIComponent(pos.chrom + ":" + pos.start + "-" + pos.end)); } else { document.TrackHeaderForm.submit(); } return true; // Make sure the setTimeout below is not called.