空のビンを削除しようとしています。また、dc.js dataTableに0の値を持つ行を表示しますか?dc.js dataTableから空のビンを削除できません
にある&スニペットをdc.jsのよくある質問に記載しましたが、まだ希望の結果が得られていません。
私は偽のグループを使用してデータをグループ化し、次に合計金額の降順でテーブルをソートしようとしています。私は、デバッガで確認するが、それでも何とか0の値がフィルタリングされていないとき
var data = [{salesman: "AB",name: "John",total: 190.1,type: "Tab"},
{salesman: "CD",name: "David",total: 190,type: "Tab"},
{salesman: "EF",name: "Elton",total: 300.5,type: "Visa"},
{salesman: "AB",name: "John",total: 90.0,type: "Tab"},
{salesman: "EF",name: "Elton",total: 90,type: "Tab"},
{salesman: "CD",name: "David",total: 90,type: "Tab"}];
var ndx = crossfilter(data);
var salesManDim = ndx.dimension(function(d) {
return d.salesman;
});
var salesmanSumGroup = salesManDim.group().reduceSum(function(d) {
return (Math.round((d.total) * 100)/100);
});
var salesmanChart = dc.pieChart("#chart");
salesmanChart
.width(200)
.height(150)
.slicesCap(10)
.innerRadius(30)
.dimension(salesManDim)
.group(salesmanSumGroup);
var salesMan_TypeDim = ndx.dimension(function(d) {
return d.salesman + "/" + d.type;
});
var groupedDimension = salesMan_TypeDim.group().reduce(
function(p, v) {
p.TOTAL += +(Math.round((v.total) * 100)/100);
p.SALESMAN = v.salesman + " - " + v.name;
p.TYPE = v.type;
return p;
},
function(p, v) {
p.TOTAL -= +(Math.round((v.total) * 100)/100);
p.SALESMAN = v.salesman + " - " + v.name;;
p.TYPE = v.type;
return p;
},
function() {return { TOTAL: 0, SALESMAN: "",TYPE: ""};});
var rank = function(p) {
return p.key.substr(p.key.lastIndexOf("/") + 1);
};
function remove_empty_bins(source_group) {
function non_zero_pred(d) {
return d.value.TOTAL !== 0;
}
return {
top: function(n) {
return source_group.top(Infinity).filter(non_zero_pred).slice(0, n);
}
};
}
dc.dataTable(".dc-data-table")
.dimension(remove_empty_bins(groupedDimension))
.group(rank)
.size(Infinity)
.columns([
function(d) {
return d.value.SALESMAN;
},
function(d) {
return (Math.round((d.value.TOTAL) * 100)/100);
}
])
.sortBy(function(d) {
return d.value.TOTAL;
})
.order(d3.descending);
dc.renderAll();
dc.redrawAll();
削除空ビン機能が正常に動作します。私の鍵が定義されている方法のためですか? To best explain my scenario here is a jsFiddle for the above example
うわー...私は今日何か新しいことを学びました。ありがとうゴードン。 –