/** * @class Ext.direct.JsonProvider * @extends Ext.direct.Provider */ Ext.define('Ext.direct.JsonProvider', { extend: 'Ext.direct.Provider', alias: 'directprovider.json', parseResponse: function(xhr){ if(!Ext.isEmpty(xhr.responseText)){ if(typeof xhr.responseText == 'object'){ return xhr.responseText; } return Ext.decode(xhr.responseText); } return null; }, getEvents: function(xhr){ var data = null, events = []; try { data = this.parseResponse(xhr); } catch(e) { var event = new Ext.direct.ExceptionEvent({ data: e, xhr: xhr, code: Ext.Direct.exceptions.PARSE, message: 'Error parsing json response: \n\n ' + data }); return [event]; } if (Ext.isArray(data)) { for(var i = 0, len = data.length; i < len; i++){ events.push(Ext.direct.Direct.createEvent(data[i])); } } else { events.push(Ext.direct.Direct.createEvent(data)); } return events; } });