Задать вопрос
@cloudz

Как правильно организовать js сортировку таблиц, для многостраничного сайта?

Есть админка с кучей ролей, и кучей страниц.
На многих страницах выводятся таблицы с данными. Есть таблицы с пагинациями, есть без.

Задача применить сортировку на фронтенде для всех таблиц без пагинации на проекте.
Сортировка должна отображаться только у некоторых столбцов таблицы. (например сортировать колонку с элементами взаимодействия не нужно, или колонку в которой выводятся аватары).

Как организовать js код при таких увловиях?
Для каждой страницы делать отдельный скриптовый файлик?
или грузить 1 js в котором обрабатывать все требования, манипулируя классами?
или мб еще какой-то вариант есть организации файловой структуры и кода?
  • Вопрос задан
  • 226 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@cloudz Автор вопроса
В итоге всем на всех страницах проекта ищу все таблицы, проверяют есть ли в них пагинация и если нет, то применяю такие настройки
$('table').dataTable({
    paginate: false,
    searching: false,
    info: false,
    ordering: true,
    order: [],
    columnDefs: [
        {
            targets: 'no-sort', //отменяем сортировку у столбцов с этим классом
            orderable: false,
        },
    ],
});


и колонкам у которых нужно убрать сортировку указываю класс .no-sort
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
https://datatables.net

Для каждой страницы делать отдельный скриптовый файлик?

Если они все уникальные - можно и отдельно. Если (почти) одинаковые можно и в один.
Ответ написан
Комментировать
Можно использовать Алгоритм быстрой сортировки. недавно делал пример из книги, вот код на JS
function quicksort(array) {

if (array.length < 1) {
    return array;    // базовый случай
} else { 
     let pivotIndex = Math.floor(array.length / 2); // берем опорный элемент в середине списка.
let pivot = array[pivotIndex];
let less = [];
let greater = [];
  for ( i =0; i < array.length; i++) {
    if ( i ==  pivotIndex) continue;
    if (array[i] <= pivot) {
      less.push(array[i]);
    } else {
      greater.push(array[i]);
    }
 
  }
     let result = [];

return result.concat(quicksort(less), pivot, quicksort(greater));
}
};

console.log(quicksort([10,5,2,3,19,4,4,2,3,6,7,78]));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы