From the to-do list: Запланированные улучшения backend
✔ Блок примечание нельзя перетащить в другой блок, если этот блок был ранее вставлен в анкету наравне с другими
(Completed by Андрей Буганов on January 30, 2014)
Мы потратили порядка двух честных дней на решение этой проблемы.
Я попросил нашего Frontend разработчика описать проблему, и решения которые мы пытались применить.
На странице сортировки вопросов у нас используются
технологии jquery ui draggable и sortable.
для левого списка используется draggable чтоб вопросы можно
было перетаскивать в правый список, а в правом используется sortable чтоб была
возможность сортировать вопросы. Но это схема работала только до тех пор пока
сортировка нужна была на своем уровне вложенности. т.е. вопросы сортировались с
другими вопросами, примечания с другими примечаниями внутри вопроса.
А вот когда понадобилась сортировка с разными уровнями
вложенностями - прежняя схема jquery sortable тут уже не справилась. Сначала
попробовал обьединить списки через свойство sortable "connectWith",
но при этом ломается draggable т.к. внутрь вопросов перемещаются и вопросы и
примечания. Начал проверять по типу и если перемещаем вопрос внутри вопроса -
отменял сортировку, но сортировка отменялась только внутри вопроса, а вот в
основном списке оставалась (там событие сортировки происходит дважды, изза того
что один sortable находится внутри другого). Потом попробовал плагины для
сортировок с вложенностямии, хороший кандидат nestable
, в нем можно обьединять списки и вложенности работают безупречно. Но проблема
в том что нативно нельзя запретить одному из списков сортировать внутренние
элементы, а только перетаскивать в другой список. Для этого пришлось бы
потратить пару дней на разрабор внутренностей работы библиотеки и
переписывание. Дальше решил вернуться к варианту с jquery sortable, т.к. в
связке с droppable этот вариант всеже лучше чем nestable. Написал рабочий
экскиз на jsfiddle
. С виду всё хорошо, вопросы перемещаются только в основной список, примечания
и туда и туда. Но на практике это оказалось непрактично т.к. весь трюк
заключался в том что при наведении вопроса на вопрос (в правом списке) я прятал
placeholder, но сам плагин то был в курсе что вопрос над ним надвисает и
внутренний список перехватывал на себя перетаскиваемый вопрос. Визуально это
выглядело так что допустим стоит подряд 3 вопроса и мы пытаемся впихнуть между
ними еще один. Это было очень трудно сделать т.к. внутренние списки каждого из
вопросов перехватывали на себя перетаскиваемый вопрос (хоть и не отображали
placeholder). Из-за этого при перетаскивании вся сортировка дергалась и
выглядела не презентабельно.
Мы честно пытались решить эту проблему. Но сегодня мы решить ее не можем.
Отсюда вывод: jquery sortable не приспособлен для
сортировок с вложенностями
Андрей Буганов on October 2, 2013:
пока откладываем задачу на конец тогда, там будем думать.
Comments
Андрей Буганов on September 5, 2013:
Добавить блок медиа-вопросов
Добавить в любое место анкеты (на первый уровень) блок "Примечание" http://joxi.ru/6mQoUtg5CbBWBStxOAo
Попытаться блок "Примечание" перенести в блок медиа-вопроса http://joxi.ru/NWUoUtg5CbAZB3EgjpI
Ошибка: блок не перемещается
Ожидаемые результат: блок перемещается
Проверено в: ОС - Win7, Браузер - Chrome 29, разрешение 1366*768
Igor Rynkovoy on September 9, 2013:
Igor Rynkovoy on October 2, 2013:
Я попросил нашего Frontend разработчика описать проблему, и решения которые мы пытались применить.
Мы честно пытались решить эту проблему. Но сегодня мы решить ее не можем.
Андрей Буганов on October 2, 2013: