5634a1ee547d0d332bfe1ec37e164bfe896d6288 hiram Mon Feb 8 17:23:03 2021 -0800 honor the log transform and the negate option for mouseOver values refs #26505 diff --git src/hg/hgTracks/wigTrack.c src/hg/hgTracks/wigTrack.c index a49dea9..948baa2 100644 --- src/hg/hgTracks/wigTrack.c +++ src/hg/hgTracks/wigTrack.c @@ -1426,40 +1426,47 @@ struct wigMouseOver *mouseOverData = graphPreDrawContainer(preContainer, preDrawZero, width, tg, hvg, xOff, yOff, graphUpperLimit, graphLowerLimit, graphRange, vis, wigCart); drawZeroLine(vis, wigCart->horizontalGrid, graphUpperLimit, graphLowerLimit, hvg, xOff, yOff, width, tg->lineHeight); drawArbitraryYLine(vis, (enum wiggleGridOptEnum)wigCart->yLineOnOff, graphUpperLimit, graphLowerLimit, hvg, xOff, yOff, width, tg->lineHeight, wigCart->yLineMark, graphRange, wigCart->yLineOnOff); if (enableMouseOver && mouseOverData) { + enum wiggleTransformFuncEnum transformFunc = wigCart->transformFunc; + boolean gotLog = (transformFunc == wiggleTransformFuncLog); + jsonWriteObjectStart(mouseOverJson, tg->track); jsonWriteString(mouseOverJson, "t", tg->tdb->type); jsonWriteListStart(mouseOverJson, "d"); slReverse(&mouseOverData); struct wigMouseOver *dataItem = mouseOverData; for (; dataItem; dataItem = dataItem->next) { jsonWriteObjectStart(mouseOverJson, NULL); jsonWriteNumber(mouseOverJson, "x1", (long long)dataItem->x1); jsonWriteNumber(mouseOverJson, "x2", (long long)dataItem->x2); + if (gotLog) + dataItem->value = doTransform(dataItem->value, transformFunc); + if (wigCart->doNegative) + dataItem->value = - dataItem->value; jsonWriteDouble(mouseOverJson, "v", dataItem->value); jsonWriteNumber(mouseOverJson, "c", dataItem->valueCount); jsonWriteObjectEnd(mouseOverJson); } jsonWriteListEnd(mouseOverJson); jsonWriteObjectEnd(mouseOverJson); slFreeList(&mouseOverData); // hidden element to pass along jsonUrl file name and also the trigger // that this track has data to display. hPrintf("<div id='mouseOver_%s' name='%s' class='hiddenText mouseOverData' jsonUrl='%s'></div>\n", tg->track, tg->track, mouseOverJsonFile->forCgi); } // Might need something like this later for other purposes // else if (enableMouseOver) // system enabled, but no data for this track // { /* signal to indicate zoom in required to see data */