[IMP] point_of_sale: improve the reactivity of the searchbox by timeouting on the...
authorFrédéric van der Essen <fva@openerp.com>
Tue, 12 Nov 2013 16:05:34 +0000 (17:05 +0100)
committerFrédéric van der Essen <fva@openerp.com>
Tue, 12 Nov 2013 16:05:34 +0000 (17:05 +0100)
bzr revid: fva@openerp.com-20131112160534-004d8df6ede1b4yt

addons/point_of_sale/static/src/js/widgets.js

index 447094e..866e3c7 100644 (file)
@@ -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