in optaplanner-docs/src/modules/ROOT/images/website/jstree/jstree.js [1725:1825]
parse_nest = function (d, p, ps) {
if(!ps) { ps = []; }
else { ps = ps.concat(); }
if(p) { ps.unshift(p); }
var tid = false, i, j, c, e, tmp;
do {
tid = 'j' + t_id + '_' + (++t_cnt);
} while(m[tid]);
tmp = {
id : false,
text : typeof d === 'string' ? d : '',
icon : typeof d === 'object' && d.icon !== undefined ? d.icon : true,
parent : p,
parents : ps,
children : [],
children_d : [],
data : null,
state : { },
li_attr : { id : false },
a_attr : { href : '#' },
original : false
};
for(i in df) {
if(df.hasOwnProperty(i)) {
tmp.state[i] = df[i];
}
}
if(d && d.id) { tmp.id = d.id.toString(); }
if(d && d.text) { tmp.text = d.text; }
if(d && d.data && d.data.jstree && d.data.jstree.icon) {
tmp.icon = d.data.jstree.icon;
}
if(tmp.icon === undefined || tmp.icon === null || tmp.icon === "") {
tmp.icon = true;
}
if(d && d.data) {
tmp.data = d.data;
if(d.data.jstree) {
for(i in d.data.jstree) {
if(d.data.jstree.hasOwnProperty(i)) {
tmp.state[i] = d.data.jstree[i];
}
}
}
}
if(d && typeof d.state === 'object') {
for (i in d.state) {
if(d.state.hasOwnProperty(i)) {
tmp.state[i] = d.state[i];
}
}
}
if(d && typeof d.li_attr === 'object') {
for (i in d.li_attr) {
if(d.li_attr.hasOwnProperty(i)) {
tmp.li_attr[i] = d.li_attr[i];
}
}
}
if(tmp.li_attr.id && !tmp.id) {
tmp.id = tmp.li_attr.id.toString();
}
if(!tmp.id) {
tmp.id = tid;
}
if(!tmp.li_attr.id) {
tmp.li_attr.id = tmp.id;
}
if(d && typeof d.a_attr === 'object') {
for (i in d.a_attr) {
if(d.a_attr.hasOwnProperty(i)) {
tmp.a_attr[i] = d.a_attr[i];
}
}
}
if(d && d.children && d.children.length) {
for(i = 0, j = d.children.length; i < j; i++) {
c = parse_nest(d.children[i], tmp.id, ps);
e = m[c];
tmp.children.push(c);
if(e.children_d.length) {
tmp.children_d = tmp.children_d.concat(e.children_d);
}
}
tmp.children_d = tmp.children_d.concat(tmp.children);
}
if(d && d.children && d.children === true) {
tmp.state.loaded = false;
tmp.children = [];
tmp.children_d = [];
}
delete d.data;
delete d.children;
tmp.original = d;
m[tmp.id] = tmp;
if(tmp.state.selected) {
add.push(tmp.id);
}
return tmp.id;
};