jquery.flot.navigate.js を介してflotズームを使用しています xaxis をモード「time」で使用している場合、マウスホイールを介したズームが機能しなくなります。ダブルクリックによるズームは引き続き機能します。
例を参照してください:
var plot;
$(function () {
var d3 = [[1350645091000, 1.54], [1351287868000, 1.59], [1351546638000, 1.59]];
var d2 = [[1350645091000, 3.4], [1351287868000, 3.51], [1351546638000, 3.51]];
var d1 = [[1350645091000, 1], [1351287868000, 1], [1351546638000, 1]];
var all_data = [{
label: 'PageRank = 1.00', color: '#119F11', data: d1
}, {
label: 'Real PageRank = 3.51', color: '#14C914', data: d2
}, {
label: 'TrustRank(sm) = 1.59', color: '#0D8FDD', data: d3
}];
var plot_conf = {
series: {
points: {
show: true
},
lines: {
show: true,
lineWidth: 1.5
},
shadowSize: 1.5
},
crosshair: {
mode: 'x'
},
grid: {
hoverable: true,
autoHighlight: false
},
legend: {
noColumns: 3,
container: $('#legend')
},
zoom: {
interactive: true
},
pan: {
interactive: true
},
xaxis: {
mode: 'time',
timeformat: '%d.%m.%Y ',
timezone: 'browser',
zoomRange: [0.1, 10],
panRange: [1350218985000, 1351738106000]
},
yaxis: {
zoomRange: [0.1, 10],
panRange: [-1, 11]
}
};
plot = $.plot($('#placeholder'), all_data, plot_conf);
$('#placeholder').bind('plotzoom', function (event, plot) {
legends();
});
$('#placeholder').bind('plotpan', function (event, plot) {
legends();
});
legends();
// Cross --------------------------
function legends() {
var legends = $('#legend .legendLabel');
legends.each(function () {
// fix the widths so they don't jump around
$(this).css('width', $(this).width());
});
var updateLegendTimeout = null;
var latestPosition = null;
function updateLegend() {
updateLegendTimeout = null;
var pos = latestPosition;
var axes = plot.getAxes();
if (pos.x < axes.xaxis.min || pos.x > axes.xaxis.max ||
pos.y < axes.yaxis.min || pos.y > axes.yaxis.max) {
return;
}
var i, j, dataset = plot.getData();
for (i = 0; i < dataset.length; ++i) {
var series = dataset[i];
// find the nearest points, x-wise
for (j = 0; j < series.data.length; ++j) {
if (series.data[j][0] > pos.x) {
break;
}
}
// now interpolate
var y, p1 = series.data[j - 1], p2 = series.data[j];
if (p1 == null) {
y = p2[1];
}
else if (p2 == null) {
y = p1[1];
}
else {
y = p1[1] + (p2[1] - p1[1]) * (pos.x - p1[0]) / (p2[0] - p1[0]);
}
legends.eq(i).text(series.label.replace(/=.*/, '= ' + y.toFixed(2)));
}
}
$('#placeholder').bind('plothover', function (event, pos, item) {
latestPosition = pos;
if (!updateLegendTimeout) {
updateLegendTimeout = setTimeout(updateLegend, 50);
}
});
}
});
それで、xaxisがモード「時間」に切り替えられた状態でズームを強制的に動作させるためのヒントを誰かに教えてもらえますか?