Этот пример заменяет встроенную функцию фильтрации столбчатой диаграммы собственной реализацией порядкового выбора, поскольку диаграмма имеет линейный масштаб.
В примере используется глобальная переменная focusFilter
для хранения текущий выбор. Нам нужно очистить это, и нам также нужно обновить фильтр измерений, как это сделал бы оригинальный filterAll
, вытянув этот код из обработчика щелчков:
focus.applyFilter = function() { // non-standard method
if(focusFilter.length)
this.dimension().filterFunction(function(k) {
return focusFilter.includes(k);
});
else this.dimension().filter(null);
};
focus.filterAll = function() {
focusFilter = [];
this.applyFilter();
};
Это также позволит d c .filterAll () для работы, для ссылки «сбросить все».
Вилка вашего блока .
По какой-то причине я мог В этом блоке исходные ссылки
<a href="javascript:focus.filterAll(); dc.redrawAll()">reset</a>
вообще не работают, поэтому я заменил их эквивалентными обработчиками щелчков D3:
d3.select('#reset-focus').on('click', () => {
focus.filterAll();
dc.redrawAll();
})
d3.select('#reset-all').on('click', () => {
dc.filterAll();
dc.redrawAll();
})
Я также обновил фокус пример порядкового столбца . Обратите внимание, что автоматическое c скрытие / отображение ссылки сброса не работает, поскольку в диаграмме по-прежнему имеется неактуальный фильтр диапазона.