2013-06-23 1 views
1

Предположим, у меня есть DataTable создан в dc.js, который выглядит следующим образом:dc.js - Как добавить итоговые значения в dataTable?

╔═══╦════════════╦═════════════╗ 
║ ║ 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:
я в конечном итоге, добавив следующий код в DataTable, чтобы заставить его работать.

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

Внутри функции «UpdateSummary», где я обновил текст «Total равно 100»

+0

Не могли бы вы добавить jsFiddle, чтобы проиллюстрировать ваше решение? Хотя сейчас я собираюсь сворачивать прямо сейчас, было бы неплохо иметь начальный старт. Благодаря! –

ответ

2

Если вы делитесь код, я мог бы быть в состоянии помочь более конкретно. Вот мой совет в то же время.

dc.js использует группы crossfilter для установки данных для таблиц. Какой бы группе вы установите на эту таблицу (в методе .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

Не уверен, что допустимо, но документы говорят, что «таблица данных не использует группу crossfilter, а скорее замыкание как функцию группировки». – mmmdreg

+0

Есть ли какой-нибудь пользовательский код d3, который отображает агрегированные числа в таблице данных ??? – Nisha