2013-06-23 30 views
1

假设我有dc.js创建一个DataTable,看起来像:dc.js - 如何将总计添加到数据表?

╔═══╦════════════╦═════════════╗ 
║ ║ Name  ║ Amount  ║ 
╠═══╬════════════╬═════════════╣ 
║ 1 ║ Bob  ║ 25   ║ 
║ 2 ║ Sam  ║ 25   ║ 
║ 3 ║ Steve  ║ 50   ║ 
╚═══╩════════════╩═════════════╝ 

如何创建一个在底部的小计?

╔═══╦════════════╦═════════════╗ 
║ ║ Name  ║ Amount  ║ 
╠═══╬════════════╬═════════════╣ 
║ 1 ║ Bob  ║ 25   ║ 
║ 2 ║ Sam  ║ 25   ║ 
║ 3 ║ Steve  ║ 50   ║ 
╚═══╩════════════╩═════════════╝ 
    Total is equal to 100 
════════════════════════════════ 

任何帮助将不胜感激。

答:
我最终加入以下代码到数据表,使其工作。

.renderlet(function (d) { return UpdateSummary(d); }); 

功能“UpdateSummary”里面是我更新文本“总数等于100”

+0

你愿意添加一个jsFiddle来说明你的解决方案吗?尽管我现在即将推出自己的产品,但如果能够取得领先优势,我们感到非常高兴。谢谢! –

回答

2

如果您共享代码,我也许能帮助更具体。这是我的建议。

dc.js使用交叉过滤组来设置表的数据。无论你组设置此表(在.group()法)说

var helperArray = myGroup.all(), 
total = 0; 

helperArray.forEach(function(d) {total += d.value.amount;}) 
// console.log(d) to see what d is. it might need to just be total+= d.value 

d3.select("body").append("p") //this should be changed to make it the right spot 
    .text("Total is equal to " + total) 

大意的东西。

+0

不确定是否有效,但文档说“数据表不使用交叉过滤器组而是使用闭包作为分组函数”。 – mmmdreg

+0

是否有任何自定义d3代码将显示数据表中的聚合数字? – Nisha