Сортировка
Сортировка включена по умолчанию для всех столбцов, щелкнув заголовок любого столбца, можно отсортировать данные по этому столбцу.
Сортировка может быть включена или отключена для каждого столбца с использованием параметра сортировки.
sortable
По умолчанию все столбцы сортируются как текст. Вы можете указать другой сортировщик с параметром $("#example-table").tabulator({
columns:[
{title:"Name", field:"name", sortable:true},
{title:"Progress", field:"progress", sortable:false},
],
});
sorter
Доступно несколько встроенных сортировщиков:
- строка — сортирует как строки символов (опция по умолчанию)
- число — Сортирует как числа (целое или с плавающей точкой, также будет обрабатывать числа с использованием разделителей «,»)
- alphanum — сортирует как буквенно-цифровую строку
- логическое — сортирует как логическое
- дата — сортировка по дате
Чтобы определить пользовательский сортировщик, передайте обратный вызов параметру $("#example-table").tabulator({
columns:[
{title:"Name", field:"name", sortable:true},
{title:"Progress", field:"progress", sortable:true, sorter:"number"},
],
});
Он должен возвращать разницу между двумя сравниваемыми значениями.
sorter
С Tabulator вы не привязаны к отображению ваших данных в виде простого текста. Используя средства форматирования, вы можете решить, как вы хотите, чтобы каждый столбец выглядел.
Разнообразие встроенных форматеров включены:
- открытый текст — отображение значения ячейки в виде текста. (опция по умолчанию)
- textarea — показывает текст с неповрежденными символами возврата каретки
- деньги — форматирует число в обозначение валюты (например, 1234567.8901 -> 1 234 567,89)
- email — отображает данные как якорь с ссылкой mailto: на указанное значение
- link — отображает данные как якорь со ссылкой на данное значение
- галочка — зеленая галочка, если значение равно (true | ‘true’ | ‘True’ | 1) и пустая ячейка, если нет
- tickCross — зеленая галочка, если значение равно (true | ‘true’ | ‘True’ | 1) и красный крестик, если нет
- звезда — графический рейтинг звезды, основанный на целочисленных значениях
- прогресс — индикатор выполнения, который заполняет ячейку слева направо (используя значения 0-100 в процентах от ширины)
Вы можете установить форматер столбца с помощью параметра var customSorter = function(a, b, aData, bData){
return a - b;
}
$("#example-table").tabulator({
columns:[
{title:"Progress", field:"progress", sortable:true, sorter:customSorter},
],
});
formatter
Чтобы определить пользовательский форматер, передайте обратный вызов параметру $("#example-table").tabulator({
columns:[
{title:"Progress", field:"progress", formatter:"progress" },
],
});
Обратный вызов должен возвращать HTML, который будет отображаться в ячейке.
formatter
фильтрация
Часто бывает, что вам нужно отображать только подмножество данных для ваших пользователей. Вы можете фильтровать данные, используя функцию var customFormatter = function(value, data, cell, row, options, formatterParams){
return "<div></div>";
}
$("#example-table").tabulator({
columns:[
{title:"Progress", field:"progress", formatter:customFormatter},
],
});
setFilter
Функция принимает три аргумента: поле для фильтрации, функцию сравнения (=, <, <=,>,> =,! =, Like) и значение фильтра.
Чтобы выполнить более сложный фильтр, вы можете передать обратный вызов в функцию $("#example-table").tabulator("setFilter", "progress", ">", 10);
Обратный вызов должен возвращать логическое значение, причем значение setFilter
true
Очистите существующие фильтры с var customFilter = (data){
return data.name == "bob" && data.progress < 50;
}
$("#example-table").tabulator("setFilter", customFilter);
clearFilter
$("#example-table").tabulator("clearFilter");
Редактирование
Одним из основных преимуществ использования Tabulator по сравнению со стандартной таблицей HTML является возможность редактирования данных в таблице.
Доступно несколько предварительно настроенных редакторов:
- ввод — простой текст
- textarea — многострочный текст, позволяет изменять размер строки по размеру, чтобы соответствовать тексту при вводе
- число — числа с кнопками увеличения и уменьшения
- галочка — флажок
- звезда — рейтинг звезды (можно использовать клавиши со стрелками влево / вправо и ввести для выбора, а также мыши)
- прогресс — индикатор выполнения (можно использовать клавиши со стрелками влево / вправо и ввести для выбора, а также мышь)
Столбцы могут быть установлены как редактируемые с помощью editable
$("#example-table").tabulator({
columns:[
{title:"Progress", field:"progress", formatter:"progress", editable:true},
],
});
По умолчанию будет использоваться редактор, соответствующий форматеру для этого столбца. Чтобы указать другой редактор, используйте параметр editor
$("#example-table").tabulator({
columns:[
{title:"Progress", field:"progress", formatter:"progress", editable:true, editor:"number"},
],
});
Чтобы определить пользовательский редактор, передайте обратный вызов параметру editor
Он должен вернуть элемент редактора, который будет отображаться в ячейке. Возвращение false
var customEditor = function(cell, value, data){
var editor = $("<select><option value=''></option><option value='male'>male</option><option value='female'>female</option></select>");
editor.css({
"padding":"3px",
"width":"100%",
"box-sizing":"border-box",
});
editor.val(value);
editor.on("change blur", function(e){
cell.trigger("editval", editor.val());
});
return editor;
}
$("#example-table").tabulator({
columns:[
{title:"Gender", field:"gender", editable:true, editor:customEditor},
],
});
Чтобы получить доступ к данным, хранящимся в таблице, используйте функцию getData
Это вернет массив объектов данных строки.
var data = $("#example-table").tabulator("getData");
Полнофункциональный пример
Если мы объединим все уроки, которые мы выучили выше, мы сможем создать многофункциональную интерактивную таблицу.
Верхушка айсберга
Мы рассмотрели, как создать базовый табулятор и добавить функции для улучшения его внешнего вида и удобства использования.
Эта статья охватывает только верхушку айсберга, когда дело доходит до создания и настройки ваших таблиц. Библиотека содержит множество функций, которые помогут обеспечить еще более богатый опыт для пользователей:
- Группировка строк
- Подвижные строки и столбцы
- пагинация
- CSS стилизация и тематика
- Прогрессивный рендеринг для больших наборов данных
- Постоянный макет столбца (сохраняет пользовательские настройки в куки)
- Обратные вызовы на каждом этапе рендеринга таблиц и любого типа взаимодействия с пользователем
Я надеюсь, что эта статья показала вам, как вывести ваши базовые таблицы HTML на новый уровень, добавив интерактивность и стиль вашим данным.
Счастливого табулирования!