3
0
Fork 0

Merge pull request #614 from hbrunn/8.0-web_search_autocomplete_prefetch

8.0 web search autocomplete prefetch
8.0
Pedro M. Baeza 2017-06-08 20:55:44 +02:00 committed by GitHub
commit 0f8ba85e99
2 changed files with 38 additions and 2 deletions

View File

@ -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
===========

View File

@ -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)
},
});
}