显示具有数据计数小部件的不同项目的数量

时间:2015-01-05 23:46:51

标签: dc.js

我有一个项目列表,其中一些项目有相同项目的多行(同一项目的不同变体)。

我想计算总共有多少项,以及选择了多少项。但是,当我使用数据计数窗口小部件时,默认情况下它只适用于行数,但无法弄清楚如何更改该行为。

var data=[{"item":"Category A","color":"blue"},
   {"item":"Category B","color":"blue"},
   {"item":"Category A","color":"pink"}];


var ndx           = crossfilter(data);

var dimension  = ndx.dimension(function(d) {return d.item;});
var all = ndx.groupAll();


 dc.dataCount('.dc-data-count')
    .dimension(ndx)
    .group(all)
    .html ({some: "%filter-count selected out of %total-count items <a class='btn btn-default btn-xs' href='javascript:dc.filterAll(); dc.renderAll();'  role='button'>Reset filters</a>", all: "%total-count items. Click on the graphs to filter them"})

根据dc doc,唯一可能的维度是整个数据集,唯一的组是dimension.groupAll()返回的一个

是否有一种解决方法可以计算除记录数量之外的其他内容(例如,ndx.dimension(function(d){return d.item;});?

1 个答案:

答案 0 :(得分:0)

嗯,这很丑陋,但你很容易破解它以产生其他行为。

如果您查看代码,则只会在维度上调用.size(),并且仅在该组上调用.value()。这就是为什么文件说只有一个小组才合适;常规组没有.value()

https://github.com/dc-js/dc.js/blob/develop/src/data-count.js#L93-94

但它不会在维度或组上调用其他方法,因此您可以非常轻松地伪造它:

chart.dimension({size: function() { 
    return 42; // calculate something here
} });

使用两个数字显示小部件可能更合适,但这应该有效。

相关问题