in optaplanner-docs/src/modules/ROOT/images/website/jstree/jstree.js [2015:2117]
_parse_model_from_html : function (d, p, ps) {
if(!ps) { ps = []; }
else { ps = [].concat(ps); }
if(p) { ps.unshift(p); }
var c, e, m = this._model.data,
data = {
id : false,
text : false,
icon : true,
parent : p,
parents : ps,
children : [],
children_d : [],
data : null,
state : { },
li_attr : { id : false },
a_attr : { href : '#' },
original : false
}, i, tmp, tid;
for(i in this._model.default_state) {
if(this._model.default_state.hasOwnProperty(i)) {
data.state[i] = this._model.default_state[i];
}
}
tmp = $.vakata.attributes(d, true);
$.each(tmp, function (i, v) {
v = $.trim(v);
if(!v.length) { return true; }
data.li_attr[i] = v;
if(i === 'id') {
data.id = v.toString();
}
});
tmp = d.children('a').first();
if(tmp.length) {
tmp = $.vakata.attributes(tmp, true);
$.each(tmp, function (i, v) {
v = $.trim(v);
if(v.length) {
data.a_attr[i] = v;
}
});
}
tmp = d.children("a").first().length ? d.children("a").first().clone() : d.clone();
tmp.children("ins, i, ul").remove();
tmp = tmp.html();
tmp = $('<div />').html(tmp);
data.text = this.settings.core.force_text ? tmp.text() : tmp.html();
tmp = d.data();
data.data = tmp ? $.extend(true, {}, tmp) : null;
data.state.opened = d.hasClass('jstree-open');
data.state.selected = d.children('a').hasClass('jstree-clicked');
data.state.disabled = d.children('a').hasClass('jstree-disabled');
if(data.data && data.data.jstree) {
for(i in data.data.jstree) {
if(data.data.jstree.hasOwnProperty(i)) {
data.state[i] = data.data.jstree[i];
}
}
}
tmp = d.children("a").children(".jstree-themeicon");
if(tmp.length) {
data.icon = tmp.hasClass('jstree-themeicon-hidden') ? false : tmp.attr('rel');
}
if(data.state.icon !== undefined) {
data.icon = data.state.icon;
}
if(data.icon === undefined || data.icon === null || data.icon === "") {
data.icon = true;
}
tmp = d.children("ul").children("li");
do {
tid = 'j' + this._id + '_' + (++this._cnt);
} while(m[tid]);
data.id = data.li_attr.id ? data.li_attr.id.toString() : tid;
if(tmp.length) {
tmp.each($.proxy(function (i, v) {
c = this._parse_model_from_html($(v), data.id, ps);
e = this._model.data[c];
data.children.push(c);
if(e.children_d.length) {
data.children_d = data.children_d.concat(e.children_d);
}
}, this));
data.children_d = data.children_d.concat(data.children);
}
else {
if(d.hasClass('jstree-closed')) {
data.state.loaded = false;
}
}
if(data.li_attr['class']) {
data.li_attr['class'] = data.li_attr['class'].replace('jstree-closed','').replace('jstree-open','');
}
if(data.a_attr['class']) {
data.a_attr['class'] = data.a_attr['class'].replace('jstree-clicked','').replace('jstree-disabled','');
}
m[data.id] = data;
if(data.state.selected) {
this._data.core.selected.push(data.id);
}
return data.id;
},