Я использую плагин mjsarfattis nestedSortable для построения иерархической структуры данных.Есть ли способ предотвратить вложение элементов?Пример:
phase 1
group
item
item
subgroup
item
item
item
item
item
item
item
phase 2
group
item
item
subgroup
item
item
item
item
Как видите, (под) группы или элементы могут быть вложены в фазы, но сами фазы не должны быть вложены в другую фазу или (под) группу.
Для этого случая я использовал свойство "mustBeRoot", которое обрабатывает эту функцию: _isAllowed, который был немного изменен:
_isAllowed: function(parentItem, levels) {
var o = this.options;
// Are we trying to nest under a no-nest or are we nesting too deep?
if (this.currentItem.hasClass(o.mustBeRoot) && this._getLevel(this.placeholder) != 0) {
this.placeholder.removeClass(o.mustBeRoot).addClass(o.errorClass);
if ( this._getLevel(this.placeholder) == 1) {
this.placeholder.removeClass(o.errorClass).addClass(o.mustBeRoot);
}
this.beyondMaxLevels = 1;
} else if (parentItem == null || !(parentItem.hasClass(o.disableNesting))) {
if (o.maxLevels < levels && o.maxLevels != 0) {
this.placeholder.addClass(o.errorClass);
this.beyondMaxLevels = levels - o.maxLevels;
} else {
this.placeholder.removeClass(o.errorClass);
this.beyondMaxLevels = 0;
}
} else {
this.placeholder.addClass(o.errorClass);
if (o.maxLevels < levels && o.maxLevels != 0) {
this.beyondMaxLevels = levels - o.maxLevels;
} else {
this.beyondMaxLevels = 1;
}
}
},
Хорошо, это работает нормально, если я пытаюсь сбросить фазу внутри другой фазы, но если я перетащу его немного глубже (то есть в подгруппу) и уроню, он будет «подниматься» только на один уровень вверх.тогда у меня одна фаза в другой: - /
Фазы должны быть только корневыми элементами!Надеюсь, у тебя есть идеи.