25.04.2018, 16:55
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Pagination + sortable list
Здравствуйте.
Как правильно реализовать сортировку списка перетаскиванием элементов с учетом того, что список выводится постранично?
Элементам списка собираюсь добавить свойство int _index, по которому сортировка и будет осуществляться.
С сортировкой данных в пределах одной страницы никаких проблем нет, но как реализовать её с учетом пагинации - не знаю.
Пока что думаю отслеживать позицию перетаскиваемого элемента и подгружать следующую/предыдущую страницу списка и скрывать "старые" страницы, чтобы не насиловать клиент.
Реализация кажется довольно геморойной.
Есть ли более простые решения?
(отказ от пагинации - не вариант, т.к. элементом может быть ну очень много).
|
|
25.04.2018, 17:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А как понять "с учетом постранчиной навигации"? Перетаскивание в пределах то какой либо страницы, и без всего списка, в пределах его всего отсортировать не получится. Постраничный вывод уже подразумевает сортировку по какому либо параметру.
|
|
25.04.2018, 17:08
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Сообщение от laimas
|
Перетаскивание в пределах то какой либо страницы, и без всего списка, в пределах его всего отсортировать не получится.
|
Вот именно отсортировать в пределах всего списка и нужно.
|
|
25.04.2018, 17:19
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Nexus
|
Вот именно отсортировать в пределах всего списка и нужно.
|
Ну не имея его как, а тем более перетаскиванием? Пусть это к примеру будет пользовательская сортировка по значению от 0 до макс. Если знаем макс. значение и руками вводим нужную позицию текущему элементу, то даже в этом случае, как ни крути, визуально будем видеть только представление части всего списка, все остальное в уме.
|
|
25.04.2018, 17:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Nexus,
согласен с laimas, либо задача невыполнима, либо вы что-то не договариваите.
|
|
25.04.2018, 17:28
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
laimas, в шапке в 4-м абзаце описал предполагаемый способ решения задачи.
Если подгружать недостающие элементы на пути drag'а, то задача вполне себе решаемая.
|
|
25.04.2018, 17:30
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
рони, что невыполнимого я описал в 4-м абзаце в шапке?)
|
|
25.04.2018, 17:36
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Nexus,
мне сложно представить перетаскивание элемента со страницы на страницу.(не хочу вам мешать)
|
|
25.04.2018, 17:45
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
рони, вы мне не мешаете.
Если бы я желал, чтобы мне не "мешали", то не создал бы эту тему)
Попытаюсь визуализировать описанное в шапке.
Есть условный список:
List
Page-1
Elem-0
Elem-1
Elem-2
Elem-3
Elem-4
Page-2
Elem-5
Elem-6
Elem-7
Elem-8
Elem-9
Находясь на странице 2 я желаю "элемент 8" перенести на позицию "элемента 2". Элементов со страницы 1 я не вижу, т.к. текущая страницы = 2. Как только я передвину "элемент 8" на позицию "элемента 7", в начало текущего документа асинхронно подгрузятся элементы со страницы 1. После завершения асинхронного запроса я смогу передвинуть "элемент 8" на вожделенное место "элемента 2".
Вроде бы вполне реализуемая задумка.
|
|
25.04.2018, 17:50
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Nexus
|
Как только я передвину "элемент 8" на позицию "элемента 7" в начало текущего документа асинхронно подгрузятся элементы со страницы 1.
|
Это как? Было
List
Page-1
Elem-0
Elem-1
Elem-2
Elem-3
Elem-4
Page-2
Elem-5
Elem-6
Elem-7
Elem-8
Elem-9
станет
List
Page-1
Elem-0
Elem-1
Elem-2
Elem-3
Elem-4
Page-2
Elem-5
Elem-6
Elem-8
Elem-7
Elem-9
Что при этом изменится, что заставит подгрузится элементы с первой страницы?
Я еще понимаю, если тянуть вверх и выйти за пределы списка, что инициалиузирует запрос и загрузит первую страницу и в ней опустить элемент с индексом 8, перед индексом 2, это будет инициализацией обновления в базе. Но чтобы 8 на позицию 7 и показалось нечто с первой страницы ..., этого я не понимаю.
Последний раз редактировалось laimas, 25.04.2018 в 17:55.
|
|
|
|