diff --git a/web_search_autocomplete_prefetch/README.rst b/web_search_autocomplete_prefetch/README.rst index e8f8af570..88b25800c 100644 --- a/web_search_autocomplete_prefetch/README.rst +++ b/web_search_autocomplete_prefetch/README.rst @@ -12,7 +12,6 @@ term in the background and only offers an option if this search has a result. Usage ===== -* go to ... .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot :target: https://runbot.odoo-community.org/runbot/162/8.0 @@ -26,11 +25,17 @@ Known issues / Roadmap * some searches (especially via function fields) can be very heavy on the server. - To disable prefetching on a per field basis, set the option `web_search_autocomplete_prefetch.disable`:: + options="{'web_search_autocomplete_prefetch.disable': true}" + on your field in the search view. +* by default, the addon triggers a search 350 milliseconds after the last key + pess. If you want a different timeout, set the parameter + ``web_search_autocomplete_prefetch.keypress_timeout`` to the amount of + milliseconds you need as timeout. + Bug Tracker =========== diff --git a/web_search_autocomplete_prefetch/static/src/js/web_search_autocomplete_prefetch.js b/web_search_autocomplete_prefetch/static/src/js/web_search_autocomplete_prefetch.js index 1ff401efe..1d34dde55 100644 --- a/web_search_autocomplete_prefetch/static/src/js/web_search_autocomplete_prefetch.js +++ b/web_search_autocomplete_prefetch/static/src/js/web_search_autocomplete_prefetch.js @@ -84,6 +84,24 @@ openerp.web_search_autocomplete_prefetch = function(instance) }); instance.web.search.AutoComplete.include({ + keypress_timeout: 350, + start: function() + { + var self = this; + return jQuery.when( + this._super.apply(this, arguments), + new instance.web.Model('ir.config_parameter').call( + 'get_param', + [ + 'web_search_autocomplete_prefetch.keypress_timeout', + this.keypress_timeout + ] + ).then(function(keypress_timeout) + { + self.keypress_timeout = parseInt(keypress_timeout); + }) + ); + }, select_item: function() { if(!this.current_result) @@ -92,5 +110,18 @@ openerp.web_search_autocomplete_prefetch = function(instance) } return this._super.apply(this, arguments); }, + initiate_search: function(query) + { + var self = this, + _super = this._super, + last_timeout = null; + this.last_timeout = last_timeout = window.setTimeout(function() + { + if(self.last_timeout == last_timeout) + { + _super.apply(self, [query]); + } + }, this.keypress_timeout) + }, }); }