diff --git a/js/app/controllers/EpnTapModule.js b/js/app/controllers/EpnTapModule.js index 75da672..ee159cc 100644 --- a/js/app/controllers/EpnTapModule.js +++ b/js/app/controllers/EpnTapModule.js @@ -163,10 +163,7 @@ Ext.define('amdaDesktop.EpnTapModule', { send a new query and fill `granulesGrid`. */ onServiceSelected: function(record) { - this.servicesStore.each(function(record) { - record.set('selected', false); - }, this); - record.set('selected', true); + this.granulesStore.selectedService = record.data.id; Ext.Ajax.suspendEvent('requestexception'); Ext.Ajax.abortAll(); var nbRes = record.get('nb_results'); diff --git a/js/app/views/EpnTapUI.js b/js/app/views/EpnTapUI.js index 4939dd4..1531265 100644 --- a/js/app/views/EpnTapUI.js +++ b/js/app/views/EpnTapUI.js @@ -7,6 +7,7 @@ * 24/10/2016: file creation */ +Ext.require(['Ext.grid.plugin.BufferedRenderer']); /** `productTypesStore`: An ExtJS Store containing the list of the different data product types defined on all granules, on all available EPN-TAP services (defined in `generic_data/EpnTapData/metadata.json`, updated periodically with a cron @@ -108,8 +109,7 @@ Ext.create('Ext.data.Store', { {name: 'created', type: 'date', dateFormat: 'c'}, {name: 'updated', type: 'date', dateFormat: 'c'}, {name: 'nb_results', type: 'integer'}, - {name: 'info', type: 'string'}, - {name: 'selected', type: 'boolean'} + {name: 'info', type: 'string'} ], proxy: { type: 'ajax', @@ -145,22 +145,30 @@ selected. - `thumbnail_url`: the thumbnail_url EPN-TAP parameter (ibid). */ // TODO: Add granules filter (see http://docs.sencha.com/extjs/4.0.7/#!/example/grid-filtering/grid-filter-local.html) + +Ext.define('GranulesModel', { + extend: 'Ext.data.Model' + // columns are created dynamically +}); + Ext.create('Ext.data.Store', { storeId: 'granulesStore', - model: 'granulesModel', // Created dynamically + model: 'GranulesModel', buffered: true, - leadingBufferZone: 50, autoload: false, - pageSize: 50, + pageSize: 500, + leadingBufferZone: 0, proxy: { type: 'ajax', url: 'php/epntap.php', reader: { type: 'json', root: 'data'}, simpleSortMode: true - }, listeners: { + }, + listeners: { 'beforeprefetch': function(store, operation) { - var servicesStore = Ext.data.StoreManager.lookup('servicesStore'); - var service = servicesStore.getAt(servicesStore.findExact('selected', true)).data; + Ext.Ajax.suspendEvent('requestexception'); + Ext.Ajax.abortAll(); + var service = Ext.data.StoreManager.lookup('servicesStore').getById(store.selectedService).data; store.getProxy().extraParams = { 'action': 'getGranules', 'url': service['access_url'], @@ -636,6 +644,11 @@ Ext.define('amdaUI.EpnTapUI', { title: 'Granules', store: Ext.data.StoreManager.lookup('granulesStore'), flex: 4, + plugins: { + ptype: 'bufferedrenderer', + trailingBufferZone: 20, + leadingBufferZone: 50 + }, columns: [] }; } -- libgit2 0.21.2