Dygraphs panEnd回调

时间:2017-04-03 16:54:27

标签: dygraphs

我正在寻找一种在平移端附加功能的方法,比如zoomCallback。 我正在用简单的JS编写应用程序,但我找不到正确检测的方法 平移结束。我尝试了什么:

  • 找到一个关于替换pan处理程序here的示例,但这对我不起作用,Dygraph.Interaction = undefined。
  • 如果我将{endPan:function(){...}}添加到Dygraph.defaultInteractionModel,则永远不会调用该函数。
  • 这是另一个将endPan添加到Dygraph函数here的示例,但这也不起作用。
  • 附加了mouseup / touchend事件,但dateWindow_仅在mouseup / touchend之后更新。

阅读dygraph.js中的注释,过去可以在panEnd上设置一个函数(第2861行),但该代码注释了“访问这些方法/属性的旧方法”,但没有说新的方式是什么。我已经尝试过drawCallback,但是如果用户仍在忙着平移,那么走dygraph对象并不会显示任何暴露的变量。

有没有办法在平移端执行代码?

谢谢,

1 个答案:

答案 0 :(得分: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,
}

在鼠标按下事件中,您可以检查不同的键以启动,例如缩放或平移

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