From ddf6ec224fed7c305b99fa04ff75ad70343a746d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20van=20der=20Essen?= Date: Tue, 12 Nov 2013 17:05:34 +0100 Subject: [PATCH] [IMP] point_of_sale: improve the reactivity of the searchbox by timeouting on the search instead on searching after each character change bzr revid: fva@openerp.com-20131112160534-004d8df6ede1b4yt --- addons/point_of_sale/static/src/js/widgets.js | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js index 447094e0c4e..866e3c7ba72 100644 --- a/addons/point_of_sale/static/src/js/widgets.js +++ b/addons/point_of_sale/static/src/js/widgets.js @@ -560,26 +560,32 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa var products = this.pos.db.get_product_by_category(this.category.id); self.pos.get('products').reset(products); + + var searchtimeout = null; // filter the products according to the search string this.$('.searchbox input').keyup(function(event){ - console.log('event',event); - query = $(this).val().toLowerCase(); - if(query){ - if(event.which === 13){ - if( self.pos.get('products').size() === 1 ){ - self.pos.get('selectedOrder').addProduct(self.pos.get('products').at(0)); - self.clear_search(); + clearTimeout(searchtimeout); + + var query = $(this).val().toLowerCase(); + + searchtimeout = setTimeout(function(){ + if(query){ + if(event.which === 13){ + if( self.pos.get('products').size() === 1 ){ + self.pos.get('selectedOrder').addProduct(self.pos.get('products').at(0)); + self.clear_search(); + } + }else{ + var products = self.pos.db.search_product_in_category(self.category.id, query); + self.pos.get('products').reset(products); + self.$('.search-clear').fadeIn(); } }else{ - var products = self.pos.db.search_product_in_category(self.category.id, query); + var products = self.pos.db.get_product_by_category(self.category.id); self.pos.get('products').reset(products); - self.$('.search-clear').fadeIn(); + self.$('.search-clear').fadeOut(); } - }else{ - var products = self.pos.db.get_product_by_category(self.category.id); - self.pos.get('products').reset(products); - self.$('.search-clear').fadeOut(); - } + },200); }); //reset the search when clicking on reset