алгоритм переупорядочения товаров - PullRequest
2 голосов
/ 18 марта 2009

Я получил HTML-таблицу, таким образом:

up | dn
[ ]  Item 1
[x]  Item 2
[ ]  Item 3
[ ]  Item 4
[x]  Item 5
[ ]  Item 6
[ ]  Item 7

Если 2 и 5 отмечены, и я нажимаю вверх, результат:

up | dn
[x]  Item 2
[x]  Item 5
[ ]  Item 1
[ ]  Item 3
[ ]  Item 4
[ ]  Item 6
[ ]  Item 7

Если я нажму dn, результат будет:

up | dn
[ ]  Item 1
[ ]  Item 3
[ ]  Item 4
[ ]  Item 6
[x]  Item 2
[x]  Item 5
[ ]  Item 7

Другими словами, элементы группируются в выбранном направлении, а затем перемещаются на одну строку в этом направлении. У кого-нибудь есть хороший алгоритм для этого? Я уверен, что могу написать что-то без особых затруднений, но это похоже на то, что должно быть "там" ....

Ответы [ 2 ]

2 голосов
/ 18 марта 2009

Я думаю, что склоняюсь к подходу «вырезать и вставить», так как фреймворки js делают перемещение частей DOM относительно простым.

  • получить строки проверенных элементов
  • получить индекс {top} -проверенного проверенного элемента
  • удалить строки и вставить их в таблицу в {index-1}
  • (конечно, top может быть снизу, а index-1 более сложный в зависимости от направления и того, находимся ли мы уже в крайнем конце)
0 голосов
/ 18 марта 2009

Это похоже на задачу сортировки по нескольким ключам. Вы можете использовать что-то вроде интерфейса jQuery UI Sortable . Ваше условие сортировки будет выглядеть примерно так: a.selected <=> b.selected && a.index <=> b.index.

Не обращать внимания: Вы хотите использовать Алгоритм Фишера Йетса Shuffle .

...