1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
$('.btn-add-node').click(function(){
console.log('btn add node clicked');
var actual_tree = $('#tree').treeview('getNode', 0);
$('#tree').hide();
var ref_model = $('#ref_model').text();
$(this).parent().parent().find('input[type=checkbox]').each(function (index, value) {
if (this.checked) {
$.getJSON("/exports/data/" + $(this).val(), function(data) {
$(this).addNode(data, ref_model, actual_tree);
});
} else {
actual_tree = $(this).removeNode(value, ref_model, actual_tree); // est pris en compte car log
$(this).createTree([actual_tree]); // n'est pas pris en compte (ou mauvaises valeurs dans "actual_tree")
}
});
$('#tree').show();
$('#modal_add_nodes').modal('hide');
});
$.fn.addNode = function(data, reference, actual_tree) {
console.log('add node');
console.log('add ' + data.records.text + ' in ' + reference);
var dfd = $.Deferred();
actual_tree = insertSubNode(data.records, reference, actual_tree, dfd);
$.when(dfd, insertSubNode).done(function(){
console.log(actual_tree);
$(this).createTree([actual_tree]);
})
return actual_tree;
};
$.fn.removeNode = function(value, reference, actual_tree) {
console.log('remove node');
console.log('remove :' + value.value + ' in ' + reference);
var reference_tree = $('#tree').treeview('getNode', reference);
actual_tree = removeSubNode(value.value, reference.text, actual_tree);
return actual_tree;
};
function insertSubNode(data, reference, node, deferred) {
console.log('insert sub node');
if (node.nodeId == reference) {
var need_add = true;
$.each(node.nodes, function(index, value) {
if (data.text == value.text) {
need_add = false;
}
});
if (need_add) {
node.nodes.splice(0, 0, data);
}
deferred.resolve();
} else if (node.hasOwnProperty('nodes')) {
var new_nodes = [];
$.each(node.nodes, function(index, value) {
if (value.hasOwnProperty('nodes')) {
new_nodes.push(insertSubNode(data, reference, value, deferred));
} else {
new_nodes.push(value);
}
});
node['nodes'] = new_nodes;
}
return node;
};
function removeSubNode(data, reference, node) {
console.log('remove sub node');
if (node.text == reference) {
var new_nodes = [];
$.each(node.nodes, function(index, value) {
if (value.text != data) {
new_nodes.push(value);
}
});
node['nodes'] = new_nodes;
} else if (node.hasOwnProperty('nodes')) {
var new_nodes = [];
$.each(node.nodes, function(index, value) {
if (value.hasOwnProperty('nodes')) {
new_nodes.push(removeSubNode(data, reference, value));
} else {
new_nodes.push(value);
}
});
node['nodes'] = new_nodes;
}
return node;
}; |
Partager