f63a718960b6a66276d579e7cd3fbb107f2cfd78 tdreszer Tue Nov 16 16:37:13 2010 -0800 Removed obsolete ifdef for SUBTRACKS_HAVE_VIS. Streamlined some composite vis code. Added support for remote tracks being rendered by AJAX callback. Currently ifdefed out. diff --git src/hg/hgTracks/imageV2.c src/hg/hgTracks/imageV2.c index 12edee9..c5ba95f 100644 --- src/hg/hgTracks/imageV2.c +++ src/hg/hgTracks/imageV2.c @@ -842,30 +842,36 @@ } else { imgTrack->reorderable = TRUE; if(order == IMG_ANYORDER) { if(imgTrack->order <= 0) imgTrack->order = ++lastOrder; } else if(imgTrack->order != order) imgTrack->order = order; } return imgTrack; } +void imgTrackMarkForAjaxRetrieval(struct imgTrack *imgTrack,boolean ajaxRetrieval) +/* Updates the imgTrack to trigger an ajax callback from the html client to get this track */ +{ +imgTrack->ajaxRetrieval = ajaxRetrieval; +} + int imgTrackOrderCmp(const void *va, const void *vb) /* Compare to sort on imgTrack->order */ { const struct imgTrack *a = *((struct imgTrack **)va); const struct imgTrack *b = *((struct imgTrack **)vb); return (a->order - b->order); } struct imgSlice *imgTrackSliceAdd(struct imgTrack *imgTrack,enum sliceType type, struct image *img,char *title,int width,int height,int offsetX,int offsetY) /* Adds slices to an image track. Expected are types: stData, stButton, stSide and stCenter */ { struct imgSlice *slice = sliceCreate(type,img,title,width,height,offsetX,offsetY); if(slice) slAddHead(&(imgTrack->slices),slice); return imgTrack->slices; @@ -978,30 +984,32 @@ } } static void imgTrackShow(struct dyString **dy,struct imgTrack *imgTrack,int indent) /* show the imgTrack */ { if(imgTrack) { struct dyString *myDy = addIndent(dy,indent); dyStringPrintf(myDy,"imgTrack: name:%s tdb:%s", (imgTrack->name?imgTrack->name:""),(imgTrack->tdb && imgTrack->tdb->track?imgTrack->tdb->track:"")); if(imgTrack->hasCenterLabel) dyStringPrintf(myDy," centerLabel:%s",centerLabelSeenToString(imgTrack->centerLabelSeen)); if(imgTrack->reorderable) dyStringPrintf(myDy," reorderable"); + if(imgTrack->ajaxRetrieval) + dyStringPrintf(myDy," ajaxRetrieval"); dyStringPrintf(myDy," order:%d vis:%s",imgTrack->order,hStringFromTv(imgTrack->vis)); if(dy == NULL) warn("%s",dyStringCannibalize(&myDy)); indent++; struct imgSlice *slice = imgTrack->slices; for(; slice != NULL; slice = slice->next ) sliceShow(dy,slice,indent); if(dy != NULL) *dy = myDy; } } boolean imgTrackIsComplete(struct imgTrack *imgTrack,boolean verbose) @@ -1768,33 +1776,34 @@ char *newLine = NEWLINE_TO_USE(cgiClientBrowser(NULL,NULL,NULL)); struct imgTrack *imgTrack = imgBox->imgTracks; for(;imgTrack!=NULL;imgTrack=imgTrack->next) { char *trackName = (imgTrack->name != NULL ? imgTrack->name : imgTrack->tdb->track ); #if defined(CONTEXT_MENU) || defined(TRACK_SEARCH) if (!trackImgOnly) { struct track *track = hashFindVal(trackHash, trackName); if(track) jsonTdbSettingsBuild(&jsonTdbVars, track); } #endif //if(verbose && imgTrack->order == 3) // imgTrackShow(NULL,imgTrack,0); - hPrintf("<TR id='tr_%s' abbr='%d' class='imgOrd%s%s'>\n",trackName,imgTrack->order, + hPrintf("<TR id='tr_%s' abbr='%d' class='imgOrd%s%s%s'>\n",trackName,imgTrack->order, (imgTrack->reorderable?" trDraggable":" nodrop nodrag"), - (imgTrack->centerLabelSeen != clAlways?" clOpt":"") ); + (imgTrack->centerLabelSeen != clAlways?" clOpt":""), + (imgTrack->ajaxRetrieval ?" mustRetrieve":"")); if(imgBox->showSideLabel && imgBox->plusStrand) { // button safef(name, sizeof(name), "btn_%s", trackName); hPrintf(" <TD id='td_%s'%s>\n",name,(imgTrack->reorderable?" class='dragHandle'":"")); sliceAndMapDraw(imgBox,imgTrack,stButton,name,FALSE); hPrintf("</TD>\n"); // leftLabel safef(name,sizeof(name),"side_%s",trackName); if (imgTrack->reorderable) hPrintf(" <TD id='td_%s' class='dragHandle' title='%s%sdrag to reorder'>\n",name,htmlEncode(imgTrack->tdb->longLabel),newLine); else hPrintf(" <TD id='td_%s'>\n",name); sliceAndMapDraw(imgBox,imgTrack,stSide,name,FALSE);