Я застрял, ребята, я надеюсь, что кто-то может помочь мне понять это. У меня есть три типа узлов, которыми я заполняю JStree.
- Папка
- Проект
- Работа
У меня есть некоторые правила, которые необходимо учитывать при попытке перетащить один узел в другой.
- Папки могут иметь дочерние элементы типа «папка» и «проект».
- Проекты могут иметь дочерние элементы только типа «работа».
- Джобс не может иметь детей
Проблема: JSTree игнорирует логические значения, которые я возвращаю, и разрешает DND для всех элементов. Обычно возврат "false" устанавливает красный X, а также запрещает удаление, но это не так. Я написал возврат моей функции checkNodeCB() в консоль, и моя логика истинного/ложного кажется верной. Смотрите мой код ниже:
core: {
check_callback: function(e,node,parent,position,more){
function checkNodeCB(oNode,tNode){
if(tNode.type === "folder" && oNode.type !== "job"){
//console.log("I want to place a "+oNode.type+" inside a folder");
return true;
}
if(tNode.type === "project" && oNode.type === "job"){
//console.log("I want to place a job under a project");
return true;
}
return false;
};
if((e === 'copy_node' || e === 'move_node') && more.dnd){
if (oldNode !== more.ref.id){
oldNode = more.ref.id; //Set the oldNode to the current ID so it no longer executes
//console.log(checkNodeCB(node.original,more.ref.original));
return checkNodeCB(node.original,more.ref.original);
}
}
return true;
},
worker: true
},
dnd:{
check_while_dragging:true
},