当我单击数据表中的一行时,我需要过滤其他图表。
I did
my_table.on('pretransition', function (table) {
table.selectAll('td.dc-table-column')
.on('click',function(d){
table.filter(d.key)
dc.redrawAll();
})
});
但其他图表中没有任何反应。
你能帮我吗?
如果表维度是维度...
通常填充数据表的数据是原始数据集中的原始行,而不是键/值对。
所以很可能是d.key
未定义。
我建议你首先坚持
console.log(d)
进入您的点击处理程序以查看您的数据是什么样子,以确保d.key
已验证。
其次,请记住图表通过其维度进行过滤。所以你需要将一个值传递给table.filter()
这是您维度的有效键,然后它将过滤掉该键不同的所有行。这可能不仅仅是您选择的一行。
通常,表维度是根据其对行值进行排序的方式来选择的。您实际上可能想过滤一些其他维度。但希望这足以让您开始。
但是如果表维度是一个组怎么办?
仅当您的表采用交叉过滤器维度作为其维度时,上述技术才有效。如果,就像您在评论中链接的小提琴一样,您使用组作为维度,则该对象没有.filter()
方法,所以table.filter()
方法不会做任何事情。
如果您只需要过滤单击的一项,您可以这样做
foodim.filter(d.key)
这个有效果,但是没那么有用。
如果您需要 dc 序数图中使用的切换功能,则需要对其进行模拟。事情并没有那么复杂:
// global
var filterKeys = [];
// inside click event
if(filterKeys.indexOf(d.key)===-1)
filterKeys.push(d.key);
else
filterKeys = filterKeys.filter(k => k != d.key);
if(filterKeys.length === 0)
foodim.filter(null);
else
foodim.filterFunction(function(d) {
return filterKeys.indexOf(d) !== -1;
})
小提琴示例:https://jsfiddle.net/gordonwoodhull/kfmfkLj0/9/ https://jsfiddle.net/gordonwoodhull/kfmfkLj0/9/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)