2017-04-03 32 views
1

我正在尋找一種方法來附加泛端功能,如zoomCallback。 我正在寫一個普通的JS應用程序,但我找不到一個方法來正確檢測平移結束 。我試過什麼:Dygraphs panEnd回調

  • 找到關於更換盤支架here的例子,但是這並沒有爲我工作,Dygraph.Interaction =不確定。
  • 如果我將{endPan:function(){...}}添加到Dygraph.defaultInteractionModel,則永遠不會調用該函數。
  • 下面是另一個例子,在Dygraph函數here中添加了endPan,但這也不起作用。
  • 附加了mouseup/touchend事件,但dateWindow_只在mouseup/touchend後更新。

通過dygraph.js評論閱讀,它使用的是能夠設定上panEnd(線2861)的功能,但該代碼被註釋爲「訪問這些方法/屬性的舊的方式」,但不說新的方式是什麼。我嘗試過使用drawCallback,但是如果用戶仍在忙於平移,則漫遊dygraph對象時不會顯示任何暴露的變量。

有沒有辦法在平底鍋上執行代碼?

感謝,

回答

0

你可以設置自己的interactionModel(我是做縮放),而且還平移工作。

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, 
} 

在鼠標按下事件,可以檢查不同的按鍵來啓動例如zoom or pan

if (event.altKey || event.shiftKey) { 
    Dygraph.startZoom(event, g, context); 
} else { 
    Dygraph.startPan(event, g, context); 
}