2015-11-09 8 views
3

У меня есть dc.rowchart, который имеет 5 разных «категорий». Сначала выбираются все. Когда я нажимаю один, тогда выделяется только тот. Когда я нажимаю на второй, ... как первый, так и второй, который я нажал, подсвечиваются.Rowchart выбрать только одну полосу в dc.js/crossfilter?

Как это сделать/настроить строку строк так, чтобы выделялась только одна категория при каждом нажатии на панель?

dc.filter("category1"); 
dc.filter("category2"); 

Оба эти последовательно выглядят как «добавлять» фильтры, чем заменять.

+0

Вы решили свою проблему? –

ответ

1

Ответ Этана практически отсутствует. Вполне вероятно, непреднамеренное, но dc.js не представляется использовать возвращаемое значение для addFilterHandler, так что вам придется изменить параметр filters для его работы, например, так:

myChart.addFilterHandler(function (filters, filter) { 
    filters.length = 0; // empty the array 
    filters.push(filter); 
    return filters; 
}); 

Это прекрасно работает до тех пор, поскольку ваша диаграмма не использует cap (например, круговая диаграмма с ограниченными фрагментами), так как этот обработчик не позволяет группе others работать. К сожалению, я пока не придумал удовлетворительное решение для этого случая.

+0

Я пропустил это, потому что у него не было тега dc.js. Да, в dc.js 2.0 эти обработчики не являются чистыми функциями, как вы ожидали. В 2.1 они есть, и любой из них будет работать до тех пор, пока вы возвращаете новые «фильтры». Я не смотрел на проблему с «другими колпачками», но я готов поспорить, что есть обходной путь, если кто-то заинтересован. – Gordon

+0

Это, к сожалению, не совсем работает: оно позволяет выбрать только один элемент (строку), но если вы снова нажмете на один и тот же элемент, все строки будут выбраны. Так или иначе, rowchart выбирает все строки, если пользователь дважды нажимает на одну строку. Как я могу это предотвратить? – siki

Смежные вопросы