From e414332703ccb86fdb7398ddf44df0148a200620 Mon Sep 17 00:00:00 2001 From: Nathanael Jourdane <nathanael.jourdane@irap.omp.eu> Date: Fri, 6 Jan 2017 17:37:54 +0100 Subject: [PATCH] Update the service panel dynamically according to the filter. --- js/app/controllers/EpnTapModule.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/js/app/controllers/EpnTapModule.js b/js/app/controllers/EpnTapModule.js index ad5c73d..cfd0622 100644 --- a/js/app/controllers/EpnTapModule.js +++ b/js/app/controllers/EpnTapModule.js @@ -72,19 +72,53 @@ Ext.define('amdaDesktop.EpnTapModule', { }, all_prettify: function(name) { - return 'All ' + this.prettify(name[name.length-1] == 's' ? name : name + 's'); + return 'All ' + (name[name.length-1] == 's' ? name : name + 's').replace(/_/g, ' ').toLowerCase(); }, update_services: function() { this.sp_grid.getStore().removeAll(); this.gp_grid.getStore().removeAll(); - // TODO: mettre à jour la liste des services + var filter_dic = new Array(); + if(this.dpt_cb.value == 'all') { + for (var dpt in this.services) { + for (var tc in this.services[dpt]) { + for (tn in this.services[dpt][tc]) { + for (serv in this.services[dpt][tc][tn]) { + filter_dic[serv] = this.services[dpt][tc][tn][serv][0] + (serv in filter_dic ? filter_dic[serv] : 0); + } + } + } + } + } else if (this.tc_cb.value == 'all') { + for (var tc in this.services[this.dpt_cb.value]) { + for (tn in this.services[this.dpt_cb.value][tc]) { + for (serv in this.services[this.dpt_cb.value][tc][tn]) { + filter_dic[serv] = this.services[this.dpt_cb.value][tc][tn][serv][0] + (serv in filter_dic ? filter_dic[serv] : 0); + } + } + } + } else if (this.tn_cb.value == 'all') { + for (tn in this.services[this.dpt_cb.value][this.tc_cb.value]) { + for (serv in this.services[this.dpt_cb.value][this.tc_cb.value][tn]) { + filter_dic[serv] = this.services[this.dpt_cb.value][this.tc_cb.value][tn][serv][0] + (serv in filter_dic ? filter_dic[serv] : 0); + } + } + } else { + for (serv in this.services[this.dpt_cb.value][this.tc_cb.value][this.tn_cb.value]) { + filter_dic[serv] = this.services[this.dpt_cb.value][this.tc_cb.value][this.tn_cb.value][serv][0] + (serv in filter_dic ? filter_dic[serv] : 0); + } + } - // var target_names = services[this.dpt_cb.value][this.tc_cb.value]; - // for (var res_key in results) { - // sp_store.add({'id': res_key, 'nb_results': results[res_key][0]}); - // } + var filter = Object.keys(filter_dic).map(function(key) { + return [key, filter_dic[key]]; + }); + filter.sort(function(first, second) { + return second[1] - first[1]; + }); + for (var s = 0; s < filter.length; s++) { + this.sp_grid.getStore().add({'id': filter[s][0], 'nb_results': filter[s][1]}); + } }, onWindowLoaded: function(services) { @@ -126,16 +160,18 @@ Ext.define('amdaDesktop.EpnTapModule', { var target_classes = this.services[this.dpt_cb.value]; if (Object.keys(target_classes).length == 1) { - this.tc_cb.getStore().add({'id': target_classes[0], 'name': this.prettify(target_classes[0])}); + this.tc_cb.getStore().add({'id': Object.keys(target_classes)[0], 'name': this.prettify(Object.keys(target_classes)[0])}); this.tc_cb.disable(); + this.tc_cb.select(this.tc_cb.getStore().getAt(0)['internalId']); + this.onTargetClassCB(); } else { this.tc_cb.getStore().add({'id': 'all', 'name': this.all_prettify(this.dpt_dic[this.dpt_cb.value])}); for (var tc_id in target_classes) { this.tc_cb.getStore().add({'id': tc_id, 'name': this.prettify(tc_id)}); } + this.tc_cb.select('all'); this.tc_cb.enable(); } - this.tc_cb.select(this.tc_cb.getStore().getAt(0)['internalId']); } this.update_services(); }, @@ -150,15 +186,16 @@ Ext.define('amdaDesktop.EpnTapModule', { if (Object.keys(target_names).length == 1) { this.tn_cb.getStore().add({'id': Object.keys(target_names)[0], 'name': this.prettify(Object.keys(target_names)[0])}); + this.tn_cb.select(this.tn_cb.getStore().getAt(0)['internalId']); this.tn_cb.disable(); } else { this.tn_cb.getStore().add({'id': 'all', 'name': this.all_prettify(this.tc_cb.value)}); for (var tn_id in target_names) { this.tn_cb.getStore().add({'id': tn_id, 'name': this.prettify(tn_id)}); } + this.tn_cb.select('all'); this.tn_cb.enable(); } - this.tn_cb.select(this.tn_cb.getStore().getAt(0)['internalId']); } this.update_services(); }, @@ -192,14 +229,5 @@ Ext.define('amdaDesktop.EpnTapModule', { handler: this.createWindow, scope: this }; - - // this.onWindowLoaded = onWindowLoaded; - // this.onSearchBtnClicked = onSearchBtnClicked; - // this.onProductTypeCB = onProductTypeCB; - // this.onGranuleSelected = onGranuleSelected; - // this.onServiceSelected = onServiceSelected; - // this.onTargetClassCB = onTargetClassCB; - // this.onTargetNameCB = onTargetNameCB; } - }); -- libgit2 0.21.2