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 93 94 95 96 97 98 99 100 101 102 103 104
| var composantToString = function(string){
var enterString, sortie, prev, lastParent, lastParents, newParents, liste, clone, parent, iterator;
enterString = document.createElement('ul');
enterString.innerHTML = string;
sortie = document.createElement('div');
lastParents = [];
newParents = {};
iterator=0;
$(enterString).find('*').each(function(){
$(this).attr('data-temp-id',iterator);
iterator++;
});
liste = $(enterString).find('*').each(function(){
if ($(this).is('.composant')) {}
else if ($(this).is('.ul-composant')){}
else if ($(this).is('.jusc-component-container')) {}
else if ($(this).is('.line')) {}
else if ($(this).is('.movable')) {}
else if ($(this).is('.jusc-dragdrop')) {
clone = $(this).clone();
clone.find('*').remove();
lastParents.push($(this)[0]);
prev = $(this)[0].parentNode;
while (prev && prev.nodeName) {
for(var x in lastParents){
if (lastParents[x] === prev) {
newParents[$(prev).attr('data-temp-id')] = newParents[$(prev).attr('data-temp-id')] || {};
newParents[$(prev).attr('data-temp-id')][$(clone[0]).attr('data-temp-id')] = '';
prev = null;
}
}
prev = prev === null ? null : prev.parentNode;
}
}
else{
if (!lastParent) {
lastParents.push($(this)[0]);
lastParent = $(this).clone();
lastParent.find('*').remove();
}else{
clone = $(this).clone();
clone.find('*').remove();
lastParents.push($(this)[0]);
prev = $(this)[0].parentNode;
while (prev && prev.nodeName) {
for(var x in lastParents){
if (lastParents[x] === prev) {
newParents[$(prev).attr('data-temp-id')] = newParents[$(prev).attr('data-temp-id')]||{};
newParents[$(prev).attr('data-temp-id')][$(clone[0]).attr('data-temp-id')] = '';
prev = null;
}
}
prev = prev === null ? null : prev.parentNode;
}
}
}
});
parent = sortie;
for(var i in newParents){
if (!$(sortie).find('[data-temp-id='+i+']')[0]) {
clone = $(enterString).find('[data-temp-id='+i+']').clone();
clone.find('*').remove();
$(parent).append(clone[0]) ;
parent = $(sortie).find('[data-temp-id='+i+']')[0];
}else{
parent = $(sortie).find('[data-temp-id='+i+']')[0];
}
for(var t in newParents[i]){
clone = $(enterString).find('[data-temp-id='+t+']').clone();
clone.find('*').remove();
$(parent).append(clone[0]);
}
}
$(sortie).find('*').each(function(){
$(this).removeAttr('data-temp-id' );
$(this).removeAttr('data-accept' );
$(this).removeAttr('jusc-dragdrop-uid' );
$(this).removeClass('jusc-dragdrop' );
})
return sortie;
}; |
Partager