У меня есть проект, в котором я создаю таблицу данных, и он будет иметь как глобальный поисковый ввод (dom
: f
), так и фасетоподобные фильтры с использованием коллекции кнопок datatables.net-buttons. По большей части это работает очень хорошо, за исключением того, что я не могу сказать глобальному (search()
) игнорировать столбцы, используемые поиском фасетов (columns().search()
).
Это проблематично, поскольку существует вероятность наложения между фасетами и глобальным поиском, и могут быть сделаны ложноположительные совпадения для фасетов, которые пользователь не хотел видеть.
Например, скажем, у меня есть набор данных названий фильмов, описаний и оценок, и я настроил фасет на оценки (например, G
, PG
, PG-13
, R
, NC-17
), и кто-то ожидает поиска фильмов с рейтингом G для детей, и они набирают NC
(как в штате Северная Каролина , США), они увидят много неподходящих совпадений, которые они не ожидали. Хотя это надуманный пример, надеюсь, он поможет объяснить проблему.
Я обнаружил, что таблицы данных милостиво позволяют нам расширять поиск , но меня беспокоит то, что он должен сначала выполнить поиск по всей таблице, а затем выполнить итерацию по ней третий † время, чтобы я мог дополнительно уточнить набор результатов. Для небольших наборов данных это не проблема, но меня беспокоят гораздо большие наборы данных.
† Отладка процесса в моем браузере привела меня к открытию, что search()
запускается дважды: сначала при вызове самого search()
, а второй раз при вызове draw()
и перерисовывается таблица . .
Если я войду в конфигурацию и установлю searchable: false
для своих аспектов, то columns().search()
больше не будет работать.
Стоит также отметить, что columns().search()
- это поиск на основе AND
- это означает, что ВСЕ столбцы должны давать совпадение, где search()
- это поиск на основе OR
, который будет работать, если ЛЮБЫЕ столбцы совпадают.
У меня вопрос (ы): есть ли способ использовать оба columns().search()
и search()
, но они должны быть взаимоисключающими друг от друга; или, если мне не хватает конфигурации, которая позволила бы мне достичь поставленных целей.
Мои версии:
- datatables.net: 1.10.19
- datatables.net-bs4: 1.10.19
- datatables.net-buttons-bs4: 1.5.4
- datatables.net-responseive-bs4: 2.2.3
- datatables.net-rowreorder-bs4: 1.2.5
- datatables.net-select-bs4: 1.3.0