如何重写C3.js中的拖动事件

2023-12-10

我目前正在尝试实现一种与现有功能略有不同的缩放功能。
实际上,我希望如果用户单击并拖动图表,它会放大如此定义的域。我想这样做,因为使用鼠标滚轮可以防止用户向上/向下翻页。

因为这似乎不可能C3.js API,我尝试按照 D3.js 上的这个小演练来实现拖动事件拖动行为。 但是,我不太理解它,因为当我在图表上尝试它时它不起作用。

这是我的代码示例:

function setHandlers() {
    /**
     * A custom drag event  to zoom on the graph
     */

    var drag = d3.behavior.drag();
    d3.selectAll('.c3-event-rects').on(".drag", null);

    drag
        .on('dragstart', function (d) {
            d3.event.sourceEvent.stopPropagation();
            console.log("start");
            console.log(d)
        })
        .on('drag', function (d) {
            console.log("on bouge :)")           
        })
        .on('dragend', function (d) {
            console.log("end");
            console.log(d)
         })
}

每当我刷新图表时,我都会调用此函数,并且我已经为双击编写了一个自定义处理程序(在同一函数中,但我将其关闭以便更清楚)。我想知道如何在 C3.js 图中成功触发拖动事件,尤其是dragstart and dragend events?


c3-event-rects 标记驱动事件(工具提示、单击等)的层。您通常不想移动它,除非您希望事件反应被抵消(就像当您将鼠标悬停在第 1 条以外的其他位置时获得第 1 条工具提示)

此外,该图层的不透明度设置为 0,因此您实际上看不到它移动,除非您覆盖它的不透明度。就像是

.c3-event-rects {
   fill: red;
   fill-opacity: 0.2 !important;
}

也就是说,这就是你如何做到这一点

var drag = d3.behavior.drag()
            .origin(function () {
                var t = d3.select(this);
                var translate = d3.transform(t.attr('transform')).translate;
                return { x: translate[0], y: translate[1]};
            })
            .on("drag", function () {
                d3.select(this)
                    .attr("transform", "translate(" + d3.event.x + " " + d3.event.y + ")")
            })
d3.selectAll('.c3-event-rects').call(drag);

小提琴 -http://jsfiddle.net/d5bhwwLh/


它看起来是这样的 - 红点是我将鼠标悬停在第一组栏上显示工具提示的位置

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重写C3.js中的拖动事件 的相关文章

随机推荐

  • 在solvet()中使用erf()函数时,sympy和mpmath给出“TypeError:无法创建mpf”

    我有 4 个输入变量 浮点数 Xmax Xmin 百分比 mode 我想求解 s 的以下 相当长的 方程 gt 1 2 1 2 erf log Xmax log mode s 2 sqrt 2 s 1 2 1 2 erf log Xmin
  • Hashlib 和 System.Security.Cryptography.HashAlgorithm 之间的区别

    我试图了解哈希算法的工作原理 特别是 SHA3 512 为了看看它是如何工作的 我在谷歌中搜索了代码并发现了Hashlib 该代码不起作用 因为我没有 Hashlib 库 不确定它应该被称为什么 我怎样才能得到它 这是在 C 中应用 SHA
  • Facebook SDK 3.1 - com.facebook.sdk 使用 [facebook Authorize:permissions] 进行身份验证时出现错误 5

    使用以下授权方法进行身份验证时 我在 startWithGraphPath 和 startForMeWithCompletionHandler 中收到 com facebook sdk 错误 5 但在 requestWithGraphPat
  • Java 中的按位与 (&) 表达式

    我正在调试其中的代码expr1 expr2 where expr1有一个影响的副作用expr2评价结果 我怀疑expr2之前被评估过expr1 因为 JLS 保证从左到右评估 但不一定是为了 我还怀疑评估顺序的更改可能是 HotSpot 执
  • 获取cookie过期时间

    是否可以使用 php 读取 cookie 过期时间 当我print r COOKIE 它输出 Array PHPSESSID gt 0afef6bac83a7db8abd9f87b76838d7f userId gt 1232 userEm
  • Extjs 创建网格功能或网格插件,为网格中的每一列设置工具提示

    这个问题有添加工具提示的答案 Extjs4 在 gridPanel 中每列悬停时设置工具提示 我对这个问题最受好评的答案有一个后续问题 即修改渲染器函数以添加工具提示 如下所示 xtype gridcolumn dataIndex stat
  • 什么是窗口加载替代方案?

    我有以下情况 我想show我的图片at once仅当页面完全加载时 因为我想避免在 内一张一张地显示图像文档准备功能 它们最初是隐藏的 并希望向它们显示at once仅当文档加载完成时 所以我使用 window load function
  • 将 csrf 令牌从 Laravel 传递到 Vue

    Pass csrf令牌来自Laravel 到 Vue我有一个单独的 Vue 应用程序用于客户端 Laravel 应用程序用于后端 API 我使用 Cookie 因此需要 csrf 保护 如何将 csrf 令牌从服务器传递到客户端 每 XX
  • 为什么 Dataflow-BigTable 连接器不支持增量?

    我们在流模式下有一个用例 我们想要跟踪管道中 BigTable 上的计数器 items 已完成处理的东西 为此我们需要增量操作 从看https cloud google com bigtable docs dataflow hbase 我发
  • OnTriggerEnter2D 未被调用

    我正在尝试在 Unity 中制作小行星的复制品 问题是我的子弹没有触发OnTriggerEnter2D小行星上的方法 小行星附有以下脚本 using UnityEngine using System Collections public c
  • 有没有办法为 Windows 窗体中的特定按钮挂钩鼠标事件

    我想从特定窗口内的特定按钮挂钩 WM MOUSEDOWN 和 WM MOUSEUP 事件 我想 SetWindowsHookEx 会挂钩我想要的消息 FindWindowEx 将帮助我找到我想要捕获这些事件的窗口句柄 我只是不知道如何让它从
  • 如何在用户窗体上使用带有选项按钮控件的事件[重复]

    这个问题在这里已经有答案了 我正在尝试从 Excel 工作表中的范围添加选项按钮 For Each Value In OptionList Set opt UserForm3 Controls Add Forms OptionButton
  • AngularJs 中控制器之间的通信

    我有一个简单的问题 当两个控制器之间 比方说 进行交互时 最好的 最干净的 可扩展的 路径是什么 那会是定义一个服务并观察该服务的返回值以便做出反应吗 我设置了一个简单的例子here 我在其中查看服务的当前值 scope watch fun
  • Membership.GetUser().ProviderUserKey 始终返回 null

    我最近开始使用 ASP NET 表单身份验证和成员身份 我在 Visual Studio 中创建了一个 C 项目 它会自动创建 Account Login aspx 之类的页面 然后我按照一个安装示例aspnet 表到我的 SQL Serv
  • 在构造函数中读取ControllerBase.User

    我想要一个基本控制器 它应该为每个控制器操作设置身份验证变量 claimsIdentity User Identity as ClaimsIdentity userId claimsIdentity FindFirst ID Value 不
  • 字典中的哈希码

    我正在玩字典并偶然发现了以下场景 public class MyObject public string I get set public string J get set public string K get set public ov
  • 确定哪些测试用例覆盖了某个方法

    我当前正在进行的项目要求我编写一个工具 在 Web 应用程序上运行功能测试 并输出方法覆盖率数据 记录哪个测试用例遍历了哪个方法 Details 接受测试的 Web 应用程序将是在 servlet 容器 例如 Tomcat 中运行的 Jav
  • env: bash\r: 没有这样的文件或目录[重复]

    这个问题在这里已经有答案了 我正在尝试从以下位置安装 YouCompleteMehere 当我执行时 install sh clang completer 我收到此错误 env bash r No such file or director
  • 使用 GRUB2 引导非多重引导内核 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我想使用 GRUB2 启动自定义内核 非多重启动 我已经读到我需要grub cfg像这样 menuentry custom kernel set root hd0 0 chainlo
  • 如何重写C3.js中的拖动事件

    我目前正在尝试实现一种与现有功能略有不同的缩放功能 实际上 我希望如果用户单击并拖动图表 它会放大如此定义的域 我想这样做 因为使用鼠标滚轮可以防止用户向上 向下翻页 因为这似乎不可能C3 js API 我尝试按照 D3 js 上的这个小演