ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Как подружить пагинацию с сортировкой в таблице?

Есть массив строк в формате:
[{
	row: {
		cellName: {
			value: ""
		}
	}
}]

Каждая ячейка шапки содержит ключ, который равен ключу ячейки в row.
Алгоритм пересортировки выглядит так:
resort = (array) ->
						return array.sort (a, b) ->
							if typeof a.row[that.currentSort.value].value == 'number' && typeof b.row[that.currentSort.value].value == 'number'
								modifier = 1
								if that.currentSort.dir == 'desc'
									modifier = -1
								if a.row[that.currentSort.value].value < b.row[that.currentSort.value].value
									return -1 * modifier
								if a.row[that.currentSort.value].value > b.row[that.currentSort.value].value
									return 1 * modifier
								return 0
							else
								console.log("sort like strings: ", a.row[that.currentSort.value].value, b.row[that.currentSort.value].value)
								modifier = 1
								if that.currentSort.dir == 'desc'
									modifier = -1
								if a.row[that.currentSort.value].value.toLowerCase() < b.row[that.currentSort.value].value.toLowerCase()
									console.log('return: ', -1 * modifier)
									return -1 * modifier
								if a.row[that.currentSort.value].value.toLowerCase() > b.row[that.currentSort.value].value.toLowerCase()
									console.log('return: ', 1 * modifier)
									return 1 * modifier
								console.log('return 0')
								return 0


В таблицах есть пагинация, которая активируется путём добавления ключа hideByPagi в объект массива, если длина массива больше числа строк в одной странице пагинации.
Сортировка работает правильно, но при попытке сдружить его с пагинацией вызывает баги. Я не могу понять почему
Я пытался:
return array.sort (a, b) ->
	if a.hideByPagi && b.hideByPagi
		return 0
	if a.hideByPagi && !b.hideByPagi
		return 1
	if b.hideByPagi && !a.hideByPagi
		return -1
...

В разных комбинациях. Ни одна не дала корректный результат.
  • Вопрос задан
  • 180 просмотров
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Можно сделать
data = data.sort(mySortFunc).filter(myFilterFunc)
или
data = data.filter(myFilterFunc).sort(mySortFunc)

А у вас что-то странное.

(Вангую, что первый вариант предпочтительнее. Но это не точно.)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы