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"
    }
]));