【问题标题】:Crossfiltering using textboxes使用文本框进行交叉过滤
【发布时间】:2019-02-19 09:34:41
【问题描述】:

我一直在用谷歌搜索,但我似乎找不到一个使用文本框交叉过滤的好例子。

我正在尝试使用交叉过滤器在数据表上添加文本框过滤。

目前关注此代码库http://bl.ocks.org/d3noob/6077996

阅读这个 wiki 并没有多大帮助

https://github.com/square/crossfilter/wiki/API-Reference

我知道有人问了一个问题,但解决方案太短,我无法复制它

Crossfilter filter based on textbox

【问题讨论】:

  • dc.js 3.* 内置了 textFilterWidget,这可能会有所帮助。正如@matthias.rocks 建议的那样,实施起来也不是那么难。

标签: javascript d3.js dc.js


【解决方案1】:

我不确定您的项目进展如何,所以我只能就您可以进一步调查的事情提供广泛的建议。

  • 在使用 crossfilter.js 过滤维度之前,您需要注册该维度。在您找到的示例中,这是在初始化 var magValuevar timeDimensionvar depthValuevar volumeByDay 变量时所做的。
  • 如果您还没有,则需要在将字符插入文本框时进行监听。这可以通过监听keyup 事件的事件监听器来完成。当监听器注册 keyup 事件时,可以触发对应维度的过滤功能。
  • 在 crossfilter.js 中使用 myDimension.filter(value) 函数时,它会根据传递的参数是简单变量、数组还是函数来过滤精确值、范围或函数。在示例中,您发现这似乎由 dc.js 处理,但在 Stack Overflow 和您引用的 API 中,这是通过与预实例化维度交互来手动处理的。 如果完全匹配是您想要的,那么您可以直接从您的文本框中传递内容。如果您想要更模糊的标准,您可以通过在调用 myDimension.filter(value) 时传递一个函数来使用 Levenshtein distance 之类的东西(例如通过 this npm package)。

让我知道这是否对您有帮助(或没有)。如果您可以分享您目前拥有的代码,我可以更具体地解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多