我有一个已解析的数据表,用于生成带有 jqplot 的条形图。我希望能够在表格行悬停时突出显示特定栏。
突出显示周围的方式很容易 - 只需连接到 jqplotDataHighlight 和 jqplotDataUnhighlight 事件。任何想法如何做到这一点?
我有一个已解析的数据表,用于生成带有 jqplot 的条形图。我希望能够在表格行悬停时突出显示特定栏。
突出显示周围的方式很容易 - 只需连接到 jqplotDataHighlight 和 jqplotDataUnhighlight 事件。任何想法如何做到这一点?
我把它钉牢了。
我已经扩展了位于 jqplot.highight.js 中的 Highlighter 对象,这样我们就可以从库外部突出显示和取消突出显示。
Sill 这可用于任何高光,但应检测渲染器。我没有花时间这样做。
$.jqplot.Highlighter.highlightBar = function(plot, serIndex, barId, barXVal, barYVal) {
//We just use the showTooltip. Simple!
var neighbor = {
seriesIndex: serIndex,
pointIndex: barId,
data: {
0: barXVal,
1: barYVal
},
gridData: plot.series[serIndex].gridData[barId],
points: plot.series[serIndex]._barPoints[barId]
}
showTooltip(plot, plot.series[serIndex], neighbor);
barHighlight(plot, serIndex, barId, neighbor.points);
}
function barHighlight(plot, sidx, pidx, points) {
var s = plot.series[sidx];
var canvas = plot.plugins.barRenderer.highlightCanvas;
canvas._ctx.clearRect(0,0,canvas._ctx.canvas.width, canvas._ctx.canvas.height);
s._highlightedPoint = pidx;
plot.plugins.barRenderer.highlightedSeriesIndex = sidx;
var opts = {fillStyle: s.highlightColors[pidx]};
s.renderer.shapeRenderer.draw(canvas._ctx, points, opts);
canvas = null;
}
function barUnhighlight(plot) {
var canvas = plot.plugins.barRenderer.highlightCanvas;
canvas._ctx.clearRect(0,0, canvas._ctx.canvas.width, canvas._ctx.canvas.height);
for (var i=0; i<plot.series.length; i++) {
plot.series[i]._highlightedPoint = null;
}
plot.plugins.barRenderer.highlightedSeriesIndex = null;
plot.target.trigger('jqplotDataUnhighlight');
canvas = null;
}
$.jqplot.Highlighter.clearHighlight = function (plot) {
barUnighlight(plot);
}
很高兴你设法自己解决了,Nickolay。
不过,我想提出一种不同的方法。不涉及更改荧光笔脚本的一种。我对类似问题的回答中介绍了您可以根据需要采用的解决方案。