2017-04-03 5 views
1

zoomCallbackのように、パンエンドに関数をアタッチする方法を探しています。 私はプレーンJSでアプリを書いていますが、パンの最後が であることを正しく検出する方法が見つかりません。私が試したもの:Dygraphs panEndコールバック

  • が受け皿ハンドラーhereを交換する上での例を見つけましたが、それは私のために動作しません、Dygraph.Interaction =未定義。
  • {endPan:function(){...}}をDygraph.defaultInteractionModelに追加すると、その関数は呼び出されません。
  • Dygraph関数hereにendPanを追加したもう1つの例ですが、それはどちらも動作しません。
  • mouseup/touchendイベントをアタッチしましたが、mouseup/touchendの後にのみdateWindow_が更新されます。 dygraph.jsのコメントを通じて読む

は、それがpanEnd(ライン2861)に機能を設定することが可能でしたが、そのコードは、「これらのメソッド/プロパティにアクセスする古い方法」とコメントしているのではなく、新しい方法が何であるか私はdrawCallbackを使って実験しましたが、ダイグラフオブジェクトを歩いても、ユーザがまだパンニング中であるかどうかにかかわらず、どの変数も公開されません。

パンエンドでコードを実行する方法はありますか?

おかげで、

答えて

0

独自interactionModelを(私はズームのためにそれをやった)を設定することができますが、パンも動作します。あなたのチャートのinit内

const myInteractions = Object.assign({}, Dygraph.defaultInteractionModel, { 
     dblclick: (event, g, context) => { 
     console.log("double-click!", event, g, context); 
     }, 
     mousedown: (event, g, context) => { 
     console.log("start mousedown"); 
     context.initializeMouseDown(event, g, context); 
     Dygraph.startPan(event, g, context); 
     }, 
     mousemove: (event, g, context) => { 
     if(context.isPanning) { 
      console.log("mouse is moving", event, g, context); 
      Dygraph.movePan(event, g, context); 
     } 
     }, 
     mouseup: (event, g, context) => { 
     console.log("mouseup", event, g, context); 
     Dygraph.endPan(event, g, context); 
     context.isPanning = false; 
     } 
}); 

:マウスダウンイベントの中で、あなたのmyInteractions

オプションに
{ 
    // other options 
    interactionModel: myInteractions, 
} 

を追加し、あなたが例えば開始するために異なるキーを確認することができますズームまたはパン

if (event.altKey || event.shiftKey) { 
    Dygraph.startZoom(event, g, context); 
} else { 
    Dygraph.startPan(event, g, context); 
} 
関連する問題