user1058913
user1058913

Reputation: 321

ExtJs Grid Auto Refresh using REST Proxy

I have tried to refresh the Grid every 5 or 10 seconds which is using REST Proxy, but the grid is not getting refreshed more than once. Please find the code which we have tried.

Ext.define('App.Store.DeviceStore', {
extend: 'Ext.data.Store',
requires: [
    'Ext.data.proxy.Ajax',
    'Ext.data.reader.Json'
],
constructor: function(cfg) {
    var me = this;
    cfg = cfg || {};
    me.callParent([Ext.apply({
        storeId: 'app.store.DeviceStore',
        model: 'App.model.DeviceModel',
        activeRefreshTask:false,
        pageSize: 5,
        autoLoad: {
            pageSize: 5
        }
    }, cfg)]);
},listeners:{
    'load':function(store,records,successful,operation){
        if(successful === true && store.activeRefreshTask === false){
        var task = {
                identifyId: 'deviceListStore',
                run: function() {
                    if (App.app._currentPage == 'devicesform') {
                        store.reload();
                    } else {    
                        Ext.TaskManager.stop(this);
                    }
                },
                interval: '10000'
            }
            Ext.TaskManager.start(task);
            store.activeRefreshTask = true;
        }
    }
}

});

The model for the above store is

Ext.define('App.model.DeviceModel', {
extend: 'Ext.data.Model',
requires: [
    'Ext.data.field.String'
],
proxy:{
        type:'rest',
        reader: {
            type: 'json',
            rootProperty: 'data',
            totalProperty:'total'
        },
        useDefaultXhrHeader: false,
        headers:{'Content-Type':'application/json'},
        api: {
            read: 'url given gere'
        }
},

fields: [
    {
        type: 'string',
        name: 'id'
    },
    {
        type: 'string',
        name: 'name'
    },
    {
        type: 'string',
        name: 'desc'
    }, 
    {
        type: 'string',
        name: 'ipAddr'
    }

]

});

Upvotes: 0

Views: 900

Answers (2)

Surya Prakash Tumma
Surya Prakash Tumma

Reputation: 2203

I have found the issue , You have passed the interval as string in place lo number. just change to interval: '10000' to inteval: 10000 and your taskrunner will runs fine.

Upvotes: 1

LellisMoon
LellisMoon

Reputation: 5030

var runner = new Ext.util.TaskRunner(),
    updateStore , task;

updateStore = function() {
                        if (App.app._currentPage == 'devicesform') {
                            store.load();
                        } else {    
                            Ext.TaskManager.stop(this);
                        }
                    };

task = runner.start({
    run: updateStore ,
    interval: 1000
});

probably your store.reload is sending again the same params on the request, so with a request that not change nothing changes.

Upvotes: 0

Related Questions