Nested Sortable Knockoutjs, возможность конвертировать задачу в подзадачу и наоборот

Я пытаюсь создать вложенный сортируемый список (только до уровня 2). Я пытался использовать сортируемый плагин RP Neimeyers, но мне нужно больше функций, таких как

  1. Подпункт должен быть в состоянии стать родительским элементом
  2. Родительский элемент должен иметь возможность стать вложенным элементом.
  3. Если элемент с подэлементами перетаскивается в какой-либо родительский элемент, этот родительский элемент должен переходить в перкулярный родительский элемент как субэлемент, а его подэлементы должны становиться основными элементами. (не уверен, если это возможно)
  4. ведение индексации для родительских и вспомогательных элементов.

Чего я достиг к настоящему времени -

  1. Индексирование родительских элементов
  2. Перетаскивание родительских элементов для изменения приоритета.

Я застрял на: 1. Ведение индексации для подпунктов 2. Возможность конвертировать основной элемент в подпункт и наоборот.

Моя попытка на JSFiddle: http://jsfiddle.net/83QrY/

Весь код дан в KnockoutJS..

я использую self.Tasks.withIndex("Position", 0, 0); поддерживать индексацию. Я надеюсь, что кто-то определенно поможет мне в достижении этого..

PS: я не прошу решения, я хочу помочь в достижении этого. Я также должен изучить это:-)

С уважением. RP.

1 ответ

Решение

Вот несколько советов:

  • connectClass Опция определяет, какие сортируемые объекты можно перетаскивать друг с другом. На верхнем уровне сортировки установлено значение "Задачи", что предотвращает SubTasks списки от возможности взаимодействовать с родителями. Таким образом, вы можете удалить connectClass опция от родителя, чтобы позволить переход между родителем / ребенком
  • когда вы переходите от родительского к дочернему, вы должны будете убедиться, что их структура одинакова для привязки, в противном случае вам нужно будет выполнить какое-то отображение. для вашего примера я бы, вероятно, бросил плагин сопоставления и создал бы TaskModel который поддерживает все ваши наблюдаемые свойства, которые вы можете использовать для задач и подзадач. В противном случае вы можете использовать beforeMove обратный звонок на карту arg.item в правильный формат, склейте его вручную (используя arg.TargetParent а также arg.TargetIndex), затем установите arg.cancelDrop равно истине.
  • withIndex расширение - это способ, которым мне нравится поддерживать индекс. в TaskModel конструктор, вы можете создать SubTasks observableArray с добавленной индексацией. В противном случае, вы можете использовать параметры отображения плагина отображения, чтобы попытаться это сделать.
  • вам может понадобиться стиль, чтобы помочь пользователю узнать, попадают ли они в родительский или дочерний список.
  • если вы поместите родителя с подзадачами в существующий список подзадач, то я не уверен, что вы хотите делать с подзадачами, существовавшими в оригинале. это может быть тот случай, когда вы хотите использовать beforeMove извлечь подзадачи.

Вот пример с первыми 3 обновлениями: http://jsfiddle.net/rniemeyer/5V3rK/

Другие вопросы по тегам