コードを見ると、NVD3 のlineWithFocusChartがどのようにフォーカス ウィンドウを作成するのかまだよくわかりませんが、側面に 2 つの長方形を作成することでそうなっていると思います。私の質問は、フォーカス ウィンドウの境界の 1 つがビューファインダーの側面に当たったときに何らかのイベントをトリガーするようにするにはどうすればよいかということです。より多くのデータをロードできますか?
たとえば、現時点では、1 か月分のデータをロードしていて、ビューファインダーが左端に達したときに別の月をロードしたいと考えています。
onBrush() 関数の nv.d3.js ソース コードでイベントをトリガーしようとしています。
function onBrush() {
brushExtent = brush.empty() ? null : brush.extent();
var extent = brush.empty() ? x2.domain() : brush.extent();
//The brush extent cannot be less than one. If it is, don't update the line chart.
if (Math.abs(extent[0] - extent[1]) <= 1) {
return;
}
if (extent[1] !== x2.domain()[1] && extent[0] === x2.domain()[0]) //my attempt
console.log("Wheaton!"); // my attempt - do something here
dispatch.brush({extent: extent, brush: brush});
updateBrushBG();
// Update Main (Focus)
var focusLinesWrap = g.select('.nv-focus .nv-linesWrap')
.datum(
data
.filter(function(d) { return !d.disabled })
.map(function(d,i) {
return {
key: d.key,
values: d.values.filter(function(d,i) {
return lines.x()(d,i) >= extent[0] && lines.x()(d,i) <= extent[1];
})
}
})
);
したがって、問題は、この方法で実行され、おそらくこれが正しい方法ではない場合、このイベントが発生したことを他のプログラムに通知して、より多くのデータをロードできるようにするにはどうすればよいですか?