我正在使用dc.js,
我想根据复选框选择添加过滤器。这是我的方案
当我选择基于我需要过滤器的复选框时。
这是我的代码
var ndx = crossfilter(readData);
var practiceDimension = ndx.dimension(function (d) {
return d.practice_name;
});
$('#treeview input[name="practice_name[]"]:checked').each(function() {
if(searchPracticeArray.indexOf($(this).val()) == -1)
searchPracticeArray.push($(this).val());
// If I added searchPracticeArray as filter parameter then it's not working
// searchPracticeArray value are ['LPS','Mercy']
practiceDimension = practiceDimension.filter($(this).val());
bubbleChart.filter($(this).val());
});
目前我有两个复选框,但它应该超过两个或更多。
答案 0 :(得分:0)
您可以根据功能过滤维度。我建议你这样做。 API documentation
但是,请记住,此函数将在某个时刻在数据集中的每个记录上运行,因此您只需要执行一次DOM查询,然后将这些值保存到范围内的数组中。功能,然后对其进行过滤。
答案 1 :(得分:0)
您好我找到了一些像这样的解决方案
这里的searchPracticeArray是基于选择存储值的数组值。
if(searchPracticeArray.length > 0)
{
var practiceDimensionFilterData;
for(var d=0; d < searchPracticeArray.length; d++ )
{
pract_name_search = searchPracticeArray[d].key;
practiceDimensionFilterData = readData.filter(function(d){ return(d.practice_name == pract_name_search)})
practiceDimension2[d] = practiceDimensionFilterData
if(d > 0)
{
practiceDimension6 = practiceDimension2[0].concat(practiceDimension2[d])
}
else{
practiceDimension6 = practiceDimension2[d];
}
bubbleChart.filter(pract_name_search);
}
ndx = crossfilter(practiceDimension6);
}