我有一个在其组中具有reduce函数的折线图,每当我调用.filter([something])时,它将给出零结果,对于其他图表也可以正常工作。
这是行图的代码
reduceAdd(p, v) {
v.conditions.forEach (function(val, idx) {
p[val] = (p[val] || 0) + 1; //increment counts
});
return p;
}
reduceRemove(p, v) {
v.conditions.forEach (function(val, idx) {
p[val] = (p[val] || 0) - 1; //decrement counts
});
return p;
}
reduceInitial() {
return {};
}
var conditionDim = this.ndx.dimension(function(d){
return d.conditions;
});
var conditionGroup = conditionDim.groupAll().reduce(this.reduceAdd, this.reduceRemove, this.reduceInitial).value();
conditionGroup.all = function() {
var newObject = [];
for (var key in this) {
if (this.hasOwnProperty(key) && key != "all") {
newObject.push({
key: key,
value: this[key],
});
}
}
return newObject;
}
dc.rowChart(`.chart .conditions`)
.width(300)
.height(500)
.group(conditionGroup)
.elasticX(true)
.dimension(conditionDim)
.filterHandler((dimension, filters) => {
dimension.filter(null);
if (filters.length === 0)
dimension.filter(null);
else
dimension.filterFunction(function (d) {
if (difference(filters, d).length === 0) return true;
return false;
});
return filters;
})
我发现当我调用chart.filter([something])时,reduce函数上的值已经不确定。
我仍然可以通过单击图表本身来过滤行图,但是不能通过调用.filter()来过滤。我认为他们的工作方式相同,如果有人可以告诉我,那将是很大的区别。
OR
有人知道还有什么问题吗?预先感谢