diff options
| author | Frederic van der Essen <fva@openerp.com / fvdessen+o@gmail.com> | 2014-07-17 17:51:27 +0200 |
|---|---|---|
| committer | Frederic van der Essen <fva@openerp.com / fvdessen+o@gmail.com> | 2014-07-17 17:51:27 +0200 |
| commit | 8d2fdafebc6676699de2d48ca2bcc66bdcf3a1af (patch) | |
| tree | f27bff382a58c5c40ac4188b0c8245109d9b633a | |
| parent | d2f6b5c57d1df76633ed5357dd265e7c30f26909 (diff) | |
[IMP] point_of_sale: improved rendering speed of the partner list
| -rw-r--r-- | addons/point_of_sale/static/src/js/screens.js | 28 |
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(){ |
