2016-10-13 4 views
1

Меня прослушивали, вероятно, тривиальные проблемы, но я хочу нарисовать две таблицы, сгруппированные по размеру.Как нарисовать агрегированную таблицу с dc.js?

например:

var data=[{country:"US", medal:"gold",sport:"jump",year:"2015"}, 
{country:"US", medal:"silver",sport:"jump",year:"2011"} 
{country:"CN", medal:"gold",sport:"jump",year:"2015"}} 

и хотел бы сделать несколько таблиц:

country medals 
US  2 
CN  1 

и

medal  qty 
gold  2 
silver 1 

так тривиальный тусклый + группа по crossfilter, но DataTable Безразлично «возьмите« реальные »группы как группы ... бит застрял

Любое предложение?

ответ

2

Вообще говоря, вы можете использовать группу в качестве измерения для dc.dataTable, если вы просто дадите ей метод bottom. Вы можете сделать что-то вроде этого:

var cf = crossfilter(["a","a","b","b","c","d","d","d"]) 
var dim = cf.dimension(function(d) { return d; }); 
var grp = dim.group() 
grp.bottom = grp.top; 

var dataTable = dc.dataTable('#dataTable'); 

dataTable 
    .dimension(grp) 
    .group(function() { return ""; }) 
    .size(100) 
    .columns(['key', 'value']); 

dc.renderAll(); 

Проблема заключается в том, что вам необходимо поместить всю необходимую информацию в группу. Вы можете либо сделать это в пользовательской группе, либо создать фальшивую группу, обертывающую вашу группу, где вы найдете дополнительную информацию и добавьте ее в группу, когда dataTable запрашивает поддельную группу.