Browse Source

Merge pull request #614 from hbrunn/8.0-web_search_autocomplete_prefetch

8.0 web search autocomplete prefetch
pull/659/merge
Pedro M. Baeza 7 years ago
committed by GitHub
parent
commit
0f8ba85e99
  1. 9
      web_search_autocomplete_prefetch/README.rst
  2. 31
      web_search_autocomplete_prefetch/static/src/js/web_search_autocomplete_prefetch.js

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

31
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)
},
});
}
Loading…
Cancel
Save