summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic van der Essen <fva@openerp.com / fvdessen+o@gmail.com>2014-07-17 17:51:27 +0200
committerFrederic van der Essen <fva@openerp.com / fvdessen+o@gmail.com>2014-07-17 17:51:27 +0200
commit8d2fdafebc6676699de2d48ca2bcc66bdcf3a1af (patch)
treef27bff382a58c5c40ac4188b0c8245109d9b633a
parentd2f6b5c57d1df76633ed5357dd265e7c30f26909 (diff)
[IMP] point_of_sale: improved rendering speed of the partner list
-rw-r--r--addons/point_of_sale/static/src/js/screens.js28
1 files changed, 21 insertions, 7 deletions
diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js
index b326a6326be..dcbe933ae64 100644
--- a/addons/point_of_sale/static/src/js/screens.js
+++ b/addons/point_of_sale/static/src/js/screens.js
@@ -580,6 +580,11 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
module.ClientListScreenWidget = module.ScreenWidget.extend({
template: 'ClientListScreenWidget',
+ init: function(parent, options){
+ this._super(parent, options);
+ this.partner_cache = new module.DomCache();
+ },
+
show_leftpane: false,
auto_back: true,
@@ -610,7 +615,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
}
this.$('.client-list-contents').delegate('.client-line','click',function(event){
- console.log('uh');
self.line_select(event,$(this),parseInt($(this).data('id')));
});
@@ -651,14 +655,24 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
this.$('.searchbox input').focus();
},
render_list: function(partners){
- var contents = this.$('.client-list-contents');
- contents.empty();
+ var contents = this.$el[0].querySelector('.client-list-contents');
+ contents.innerHtml = "";
for(var i = 0, len = partners.length; i < len; i++){
- var clientline = $(QWeb.render('ClientLine',{partner:partners[i]}));
- if( partners[i] === this.new_client ){
- clientline.addClass('highlight');
+ var partner = partners[i];
+ var clientline = this.partner_cache.get_node(partner.id);
+ if(!clientline){
+ var clientline_html = QWeb.render('ClientLine',{partner:partners[i]});
+ var clientline = document.createElement('tbody');
+ clientline.innerHTML = clientline_html;
+ clientline = clientline.childNodes[1];
+ this.partner_cache.cache_node(partner.id,clientline);
+ }
+ if( partners === this.new_client ){
+ clientline.classList.add('highlight');
+ }else{
+ clientline.classList.remove('highlight');
}
- contents.append(clientline);
+ contents.appendChild(clientline);
}
},
save_changes: function(){