extjs - How to implement custom filter algorithm for Ext.data.Store -
i want filter ext store using custom algorithm. json/ajax proxy returns >100 records , need reduce number top-5 based on number of criteria.
how go (not algorithm trigger it)?
my current approach use custom reader so
ext.define('myreader', { extend : 'ext.data.reader.json', alias : 'reader.myreader', getresponsedata : function(response) { var data = this.callparent([response]); // algorithm return filtereddata; } }); ext.define('sunapp.store.stations', { extend: 'ext.data.store', requires: ['myreader'], config: { model: 'sunapp.model.station', autoload: true, proxy: { type: 'ajax', url: 'data.json', reader: { type: 'myreader' } } } });
but i'd rather base algorithm on store model on raw json data. hence, i'd filter while/after data loaded store. note store created implicitly ext when list view displayed:
ext.define('sunapp.view.stations', { extend: 'ext.list', xtype: 'stations', config: { title: 'stations', store: 'stations', ...
therefore, can't add function store invoke manually before it's being passed list.
in case filter may need traverse store data (i.e. records) several times reduce full set desired set believe (i'm still sencha rookie...) following may fine:
- write on-load event listener
- do magic filtering
- call
setdata
on store passing filtered data
hence, instead of filtering in reader it'd this:
ext.define('sunapp.store.stations', { extend: 'ext.data.store', config: { model: ..., sorters: [...], listeners: { load: function(store, records, success, eopts) { var filteredrecords = filter(records); store.setdata(filteredrecords); } }, proxy: ... } });
Comments
Post a Comment