Можно ли сразу добавить набор фильтров на диаграмме постоянного тока? Например, скажем, у меня есть pieChart и массив значений фильтра для применения.dc.js добавить сразу несколько фильтров
var osChart = dc.pieChart('#oschart');
И входной набор фильтров, скажем
var filters = ["linux", "mac osx", "windows", "solaris"]
Как я могу применить фильтры, так что генерируется только один «фильтруется» событие? я могу сделать что-то вроде
for (var i=0; i < filters.length; i++) {
osChart.filter(filters[i]);
}
Однако, что будет генерировать 4 filtered
событие. Я применяю фильтры, основанные на том, что пользователь вводил в текстовое поле. Когда применяется фильтр, я делаю несколько вызовов ajax, и это имеет тенденцию замедляться, если я применяю фильтры один за другим. Я могу избежать дополнительных вызовов ajax, если фильтры можно установить сразу.
crossfilter имеет функцию filterFunction
, которая может выполнить эту задачу, но я не уверен, как я могу применить ее на диаграмме постоянного тока. Применить filterFunction
на osChart.dimension()
не получилось. С последней версией dc я видел некоторые функции, такие как addFilterHandler
и removeFilterHandler
, однако я не могу протестировать и развернуть эту версию прямо сейчас.
Какие еще варианты у меня есть?
ах, поэтому он должен быть массивом в массиве, например. .replaceFilter ([["linux", "mac osx", "windows", "solaris"]]) – marcin
Действительно @marcin? Это удивительно. На какой схеме вы работаете? – Gordon
pieChart. Первая строка кода в этом ответе ('if (_ instanceof Array && _ [0] instanceof Array &&') проверяет, является ли первый элемент массива массивом. – marcin