parantId 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, idProperty, parentIdProperty) {
var findById = function (children, id) {
for (var i = 0; i < children.length; i++) {
var c = children[i];
if (c[idProperty] == id) {
return c;
} else if (c.children && c.children.length > 0) {
var r = findById(c.children, id);
if (r !== -1) {
return r;
}
}
}
return -1;
};
for (var i = rawData.length - 1; i >= 0; i--) {
if (rawData[i][parentIdProperty] !== undefined && rawData[i][parentIdProperty] !== null) {
var parentNode = findById(rawData, rawData[i][parentIdProperty]);
if (parentNode.children) {
parentNode.children.push(rawData[i]);
} else {
parentNode.children = [rawData[i]];
}
rawData.splice(i, 1);
}
}
return rawData;
}
//getResponseData in the reader
console.log(buildTree([
{ id: 1, name: 'nodeA' },
{ id: 2, name: 'nodeB' },
{ id: 3, name: 'nodeC', setLabel: 2},
{ id: 4, name: 'nodeD', setLabel: 2},
{ id: 5, name: 'nodeE'},
{ id: 6, name: 'nodeF', setLabel: 4},
{ id: 7, name: 'nodeG'}
], 'id', 'setLabel'));
Ext.define('BCS.data.proxy.AjaxWithPayload', {
extend: Ext.data.proxy.Ajax ,
alias: 'proxy.ajaxWithPayload',
actionMethods: {
create: "POST",
destroy: "POST",
read: "POST",
update: "POST"
},
buildRequest: function(operation) {
var me = this,
request = me.callParent([operation]);
request.jsonData = me.jsonData;
return request;
...