Фильтр FK колонок: заменён dropdown на ввод с автоподстановкой
- autocomplete: true - показывает подсказки при вводе - freetext: true - разрешает свободный ввод - filterFunc - фильтрация по вхождению подстроки - clearable: true - кнопка очистки Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -479,21 +479,26 @@ async function selectTable(schema, tableName) {
|
||||
// ✅ Проверяем - загружены ли все значения
|
||||
const allLoaded = values.length >= total;
|
||||
|
||||
// ✅ ФИЛЬТР В ЗАГОЛОВКЕ - выпадающий список для FK колонок
|
||||
// ✅ ФИЛЬТР В ЗАГОЛОВКЕ - ввод с автоподстановкой для FK колонок
|
||||
if (allLoaded || total <= 1000) {
|
||||
// Формируем список значений для фильтра с пустым значением
|
||||
const filterValues = { "": "-- Все --" };
|
||||
values.forEach(v => { filterValues[v] = v; });
|
||||
|
||||
colDef.headerFilter = "list";
|
||||
colDef.headerFilterParams = {
|
||||
values: filterValues,
|
||||
clearable: false // Не показываем кнопку очистки, есть "Все"
|
||||
values: values,
|
||||
autocomplete: true,
|
||||
clearable: true,
|
||||
listOnEmpty: true,
|
||||
freetext: true, // Разрешаем свободный ввод для поиска
|
||||
placeholderEmpty: "Введите для поиска...",
|
||||
filterFunc: function(term, label, value, item) {
|
||||
// Фильтрация по вхождению подстроки
|
||||
if (!term) return true;
|
||||
return String(label).toLowerCase().includes(term.toLowerCase());
|
||||
}
|
||||
};
|
||||
// Серверная фильтрация - пропускаем все на клиенте
|
||||
colDef.headerFilterFunc = function() { return true; };
|
||||
} else {
|
||||
// Много значений - оставляем текстовый поиск
|
||||
// Много значений - текстовый поиск
|
||||
colDef.headerFilter = "input";
|
||||
colDef.headerFilterPlaceholder = `Поиск (${total})...`;
|
||||
colDef.headerFilterFunc = function() { return true; };
|
||||
|
||||
Reference in New Issue
Block a user