Question

I have a tree panel which is being dynamically generated based on server data. Below is the code to generate tree panel and add it to a form.

Ext.Ajax.request({
    url: '../Get_Menu.php',
    method: 'POST',
    success: function (result, request) {
        var json = result.responseText;
        var temp = Ext.decode(json);
        var obj = {};
        var item = {};
        var menu = {};
        var children = [];
        var module = [{
            "text": "Administrator",
                "leaf": true,
                "checked": false,
                "id": "GROUP_ADMIN",
                "formBind": true,
                "name": "GROUP_ADMIN"
        }];

        for (var i = 0; i < Object.keys(temp.MENUS).length; i++) {

            for (var key in temp.MENUS[i]) {

                for (var n = 0; n < Object.keys(temp.MENUS[i][key]).length; n++) {

                    item = {
                        "text": temp.MENUS[i][key][n],
                            "checked": false,
                            "id": key + "_" + temp.MENUS[i][key][n],
                            "name": key + "_" + temp.MENUS[i][key][n],
                            "formBind": true,
                            "leaf": true
                    };
                    children.push(item);
                }
                menu = {
                    "text": key,
                        "leaf": false,
                        "id": key,
                        "children": children
                };

                module.push(menu);
                children = [];
            }
        }
        obj = {
            "text": "Service Quality",
                "expanded": true,
                "formBind": true,
                "children": module
        };

        Ext.getCmp('permissionsTreePanel').setRootNode(obj);

    },
    failure: function (result, request) {
        Ext.Msg.alert('Error', 'An Error occured...');
    }
});

I have to check the nodes of tree panel based on server data i am receiving like this:

{"PERMISSIONS":{"GROUP_ADMIN":"false","OPERATIONS_MSU":"true","OPERATIONS_SCHEDULE":"false","OPERATIONS_MARKET_DASHBOARD":"false","OPERATIONS_FE_REFERENCE":"true","PRODUCTION_QUICKQC_VOICE":"false","PRODUCTION_QUICKQC_DATA":"false","PRODUCTION_MARKETQC_VOICE":"false","PRODUCTION_MARKETQC_DATA":"false","PRODUCTION_SURGERY":"false","PRODUCTION_FILE_INVENTORY":"false","PRODUCTION_MARKET_TRACKER":"false","PRODUCTION_DRIVE_ROUTE_TRACKER":"false","PRODUCTION_TICKETS":"false","PRODUCTION_ASSETS":"false","MANAGEMENT_DAILY_STATUS":"false","MANAGEMENT_DAILY_PROCESSING":"false","MANAGEMENT_WEEKLY_WORKFLOW":"false","MANAGEMENT_CUSTOMER_QUESTIONS":"false","MANAGEMENT_KPI_PERFORMANCE_METRICS":"false","MANAGEMENT_COLLECTION_METRICS":"false","MANAGEMENT_OPERATIONS_DASHBOARD":"false","MANAGEMENT_PRODUCTION_DASHBOARD":"false","MANAGEMENT_SUPPORT_DASHBOARD":"false","MANAGEMENT_REVENUE_TRACKER":"false","MANAGEMENT_DEPLOYMENT_TRACKER":"false","SUPPORT_TICKETS":"false","SUPPORT_ASSET_MANAGEMENT":"false","SUPPORT_GENERATE_SHIPMENT":"false","TRAINING_RESOURCES":"false","TRAINING_SCHEDULE":"false"}}

The Tree panel: enter image description here

Please help me in getting tree panel nodes checked through server data.

Help will be appreciated!

Thanks Much :)

Was it helpful?

Solution

Can't you set the permissions serverside?

Anyway, you can use the successcallback from the "permissions" request. You can loop through the permissions and then get the treenodes by Id:

var treepanel = Ext.getCmp('permissionsTreePanel');
var treestore = treepanel.getStore();
var node = treestore.getNodeById('GROUP_ADMIN'); //current permission key
node.set('checked', true); // current permission value
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top