1

假设我在 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
════════════════════════════════

任何帮助将不胜感激。

Ans:
我最终将以下代码添加到数据表中以使其工作。

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

在函数“UpdateSummary”中,我更新了文本“Total is equal to 100”

4

1 回答 1

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)

有这样的效果。

于 2013-06-24T05:46:25.680 回答