2015-03-31 1 views
2

Можно ли удалить/скрыть легенды для piechart, если результат 0?dc.js легенда piechart - скрыть, если результат 0

У меня есть легенда, у которой есть немало предметов в легенде, когда была какая-то фильтрация, было бы замечательно удалить легенды, которые недоступны.

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

+0

Похоже, что легенда должна забрать только закрытые срезы при ее рендеринге, но это не так. У меня есть логика обновления/перерисовки, поэтому она не будет отвечать на фильтры. Вы можете попробовать вручную вызвать legend.render при изменении фильтра? – Gordon

+0

Простите, Гордон, как бы я это сделал? Есть ли у вас какие-нибудь примеры, на которые я мог бы обратить внимание, это укажет на меня в правильном направлении? Большое спасибо. – NorthSide

+0

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

ответ

5

Легенды визуализируются, когда их диаграммы перерисовываются, но проблема в том, что легенда берется из данных, а crossfilter не автоматически удаляет пустые группы.

Было бы здорово, если бы легенды были типом диаграммы, поэтому мы могли бы просто использовать поддельную группу (преобразование данных «a.k.a.»). Но нет, нам нужно обновить .legendables() отфильтровать пустые контейнеры:

dc.override(pieactChart, 'legendables', function() { 
    var legendables = this._legendables(); 
    return legendables.filter(function(l) { 
     return l.data > 0; 
    }); 
}); 

вилка вашей скрипки: http://jsfiddle.net/gordonwoodhull/13t804u6/5/

Примечание: это только изменяет один (левый) график, вы должны скопировать/вставьте его для каждой диаграммы (или оберните ее в функцию), чтобы применить ее к другим диаграммам.

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

+0

Это прекрасно. – NorthSide