使用reduce函数在行图上调用.filter会得到零结果

时间:2018-10-09 16:11:28

标签: dc.js crossfilter

我有一个在其组中具有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

有人知道还有什么问题吗?预先感谢

0 个答案:

没有答案