| 
	| 
	
	| 
		
	| 
			
			 
			
				25.04.2018, 16:55
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.12.2012 
						Сообщений: 3,841
					 
		
 |  |  
	| 
				Pagination + sortable list
			 Здравствуйте.
 Как правильно реализовать сортировку списка перетаскиванием элементов с учетом того, что список выводится постранично?
 
 Элементам списка собираюсь добавить свойство int _index, по которому сортировка и будет осуществляться.
 С сортировкой данных в пределах одной страницы никаких проблем нет, но как реализовать её с учетом пагинации - не знаю.
 
 Пока что думаю отслеживать позицию перетаскиваемого элемента и подгружать следующую/предыдущую страницу списка и скрывать "старые" страницы, чтобы не насиловать клиент.
 Реализация кажется довольно геморойной.
 
 Есть ли более простые решения?
 (отказ от пагинации - не вариант, т.к. элементом может быть ну очень много).
 |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:06
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| А как понять "с учетом постранчиной навигации"? Перетаскивание в пределах то какой либо страницы, и без всего списка, в пределах его всего отсортировать не получится. Постраничный вывод уже подразумевает сортировку по какому либо параметру. |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:08
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.12.2012 
						Сообщений: 3,841
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas |  
	| Перетаскивание в пределах то какой либо страницы, и без всего списка, в пределах его всего отсортировать не получится. |  
	
 Вот именно отсортировать в пределах всего списка и нужно. |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:19
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от Nexus |  
	| Вот именно отсортировать в пределах всего списка и нужно. |  
	
 Ну не имея его как, а тем более перетаскиванием? Пусть это к примеру будет пользовательская сортировка по значению от 0 до макс. Если знаем макс. значение и руками вводим нужную позицию текущему элементу, то даже в этом случае, как ни крути, визуально будем видеть только представление части всего списка, все остальное в уме.   |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:25
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Nexus,
    согласен с laimas , либо задача невыполнима, либо вы что-то не договариваите. |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:28
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.12.2012 
						Сообщений: 3,841
					 
		
 |  |  
	| laimas, в шапке в 4-м абзаце описал предполагаемый способ решения задачи.Если подгружать недостающие элементы на пути drag'а, то задача вполне себе решаемая.
 |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:30
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.12.2012 
						Сообщений: 3,841
					 
		
 |  |  
	| рони, что невыполнимого я описал в 4-м абзаце в шапке?) |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:36
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Nexus,мне сложно представить перетаскивание элемента со страницы на страницу.(не хочу вам мешать)
 |  |  
	| 
		
	| 
			
			 
			
				25.04.2018, 17:45
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.12.2012 
						Сообщений: 3,841
					 
		
 |  |  
	| рони, вы мне не мешаете. 
Если бы я желал, чтобы мне не "мешали", то не создал бы эту тему)
 
Попытаюсь визуализировать описанное в шапке. 
Есть условный список:
 
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.
 |  |  |  |