前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dygraphs 滚动图表

Dygraphs 滚动图表

作者头像
Jimmy_is_jimmy
发布2022-09-22 11:21:57
5200
发布2022-09-22 11:21:57
举报
文章被收录于专栏:call_me_Rcall_me_R

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

本文我们来谈谈在 Dygraphs 中实现图表的滚动,我们还是将 Dygraphsangular 结合起来使用。

我们将用到下面的三个方法:

  • ** Dygraph.Interaction.startPan(event, g, context)**:调用此回调函数以启动默认的平移的交互模式。这个方法用于 mousedown 操作中。自定义交互模式构建器可以使用它来提供默认的平移行为。其相关的参数如下:
代码语言:txt
复制
- **{Event} event**:导致 `startPan` 开始平移调用的事件对象。
- **{Dygraph} g**:`Dygraph` 对象。
- \*\*{Object} \*_context_\*\*\*:上下文对象。拖动上下文对象(具有 `dragStartX/dragStartY` 等属性)。** Dygraph.Interaction.movePan(event, g, context)**:调用此函数以操作响应平移视图的事件。这个方法用于 
代码语言:txt
复制
- **{Event} event**:导致 `movePan` 开始平移调用的事件对象。
- **{Dygraph} g**:`Dygraph` 对象。
- \*\*{Object} \*_context_\*\*\*:上下文对象。同上 **startPan**。** Dygraph.Interaction.endPan(event, g, context)**:调用此函数以操作响应平移视图的事件。这个方法用于 
代码语言:txt
复制
- **{Event} event**:导致 `endPan` 开始平移调用的事件对象。
- **{Dygraph} g**:`Dygraph` 对象。
- \*\*{Object} \*_context_\*\*\*:上下文对象。同上 **startPan**。

了解上面的内容之后,我们来实现相关的效果。我们结合 Dygraphs 动态更新文章的代码进行更改。其功能核心代码如下:

代码语言:javascript
复制
ngAfterViewInit() {
  if(this.chartRef) {
    this.fileData = this.generateData(); // 生成数据
    this.dygraph = new Dygraph(
      this.chartRef.nativeElement, // dom 节点
      this.fileData,
      {
        interactionModel: {
          mousedown: function(event: Event, g: any, context: any) {
            context.initializeMouseDown(event, g, context); // 初始化鼠标按下
            Dygraph.startPan(event, g, context); // 开始平移
          },
          mousemove: function(event: Event, g: any, context: any) {
            Dygraph.movePan(event, g, context); // 移动中
          },
          mouseup: function(event: Event, g: any, context: any) {
            Dygraph.endPan(event, g, context); // 结束平移
          }
        }
      },
    );
  }
}

// 生成已有的数据
public generateData(): Array<any> {
  let data = [];
  let time = new Date();
  for(let i = 10; i >= 0; i--) {
    let x = new Date(time.getTime() - i * 1000);
    data.push([x, Math.random()]);
  }
  return data;
} 

感兴趣的读者自行复制代码进行效果验证。这里是结合 angular 实现,我们可以更改为自己熟悉的框架或者单纯使用传统的 javascript + html + css 来实现。

文末留一个问题:

如果我们在平移的时候更新数据,那会是怎么操作呢?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档