charset reader
by Johan Vandeplas
HTML
<script src="http://cdn.sencha.com/ext/gpl/4.2.1/ext-all-dev.js"></script>
<link rel="stylesheet" href="http://cdn.sencha.com/ext/gpl/4.2.1/resources/css/ext-all.css">
JavaScript
var buildTree = function (rawData) {
var findByName = function (children, name) {
for (var i = 0; i < children.length; i++) {
if (children[i].name === name) {
return children[i];
}
}
return null;
},
setLabels = [];
data = [];
for (var i = 0; i < rawData.length; i++) {
if (rawData[i].setLabel !== undefined && setLabels.indexOf(rawData[i].setLabel) === -1) {
setLabels.push(rawData[i].setLabel);
data.push({
id: null,
name: rawData[i].setLabel,
children: [],
leaf: false
});
}
}
for (var i = rawData.length - 1; i >= 0; i--) {
rawData[i].leaf = true;
if (rawData[i].setLabel !== undefined) {
var o = findByName(data, rawData[i].setLabel);
if (o !== null) {
o.children.push(rawData[i]);
} else {
console.log('iet ni just');
}
} else {
data.push(rawData[i]);
}
}
return data;
}
//getResponseData in the reader
console.log(buildTree([
{
"id": 6,
"name": "Seeding Type"
},
{
"id": 1,
"name": "Result % Germinated",
"setLabel": "test"
},
{
"id": 2,
"name": "Number Sown",
"setLabel": "test 2"
},
{
"id": 3,
"name": "Sowing Date"
},
{
"id": 4,
"name": "Pot/Tray Size",
"setLabel": "test 2"
},
{
"id": 5,
"name": "Step Target"
}
]));