使用文本框进行交叉过滤

时间:2019-02-19 09:34:42

标签: javascript d3.js dc.js

我一直在四处搜寻,但似乎找不到在文本框上使用交叉过滤的好例子。

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

当前遵循此代码基础http://bl.ocks.org/d3noob/6077996

阅读此Wiki并没有太大帮助

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

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

Crossfilter filter based on textbox

1 个答案:

答案 0 :(得分:2)

我不确定您在项目中所处的位置,因此,我只能针对您可以进一步调查的事情提供广泛的建议。

  • 在使用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)。

让我知道这是否对您有帮助。如果您可以共享当前拥有的代码,我可以更秘密地解决您的问题。

相关问题