2014-07-15 1 views
1

У меня возникли проблемы с удалением пустых групп из barChart.Удаление пустых групп из barChart с помощью dc.js

Мое намерение состоит в том, чтобы удалить пустые группы из xAxis (чтобы скрыть их полностью) и соответствующим образом выполнить масштабные элементы barChart.

Прочитав dc.js Справку я наткнулся на этот фрагмент:

var group = { 
all:function() { 
    return _group.all().filter(function(d) { 
    return d.value != 0; 
    }) 
} 
}; 

Я добавил этот код так:

BarChart.on("preRedraw", function(chart) { 
    group = chart.group(); 
    group2 = { 
     all: function() 
      { return group.all().filter(function(d) { return (d.value.wins+d.value.losses) > 0; }) } 
    }; 
chart.group(group2); 
}) 

Делая это вызывает ошибку «слишком много рекурсии» после того, как 1-2 на других графиках, которые я использую.

group2 дает правильные результаты, но кажется, что существующие бары не затрагиваются им или делают это странно, заставляя бары иметь пробелы или другие недостатки.

Я попытался добавить в конце функции без успеха.

BarChart.x(d3.scale.ordinal()); 
BarChart.xUnits(dc.units.ordinal); 
BarChart.rescale(); 

Я даже попробовал переориентировать диаграмму.

Любая помощь по этому вопросу будет оценена по достоинству.

ответ

0

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

Другими словами, источник _group, упомянутый в FAQ, предназначен для группы, которую вы в противном случае передали бы в диаграмму при ее инициализации, и как только вы создадите поддельную группу, передайте это вместо.

+0

Я вижу, где моя ошибка. Это связано с обсуждением групп google, которое я нашел по аналогичной теме (https://groups.google.com/forum/#!topic/dc-js-user-group/UERVo4QGX7w). Последний ответ привел меня по неверному пути. Спасибо за быстрый ответ – AndreiB