mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
Squash of 8 commits
Add README.rst Too short underline for module title in README.rst Improving module meta information Version 1.0 W391 blank line at end of file Remove module description because README.rst is there web_search_with_and: Latest OCA conventions
This commit is contained in:
committed by
Pedro M. Baeza
parent
6ce6961ceb
commit
6ceced2dfb
52
web_search_with_and/README.rst
Normal file
52
web_search_with_and/README.rst
Normal file
@@ -0,0 +1,52 @@
|
||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
||||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
|
||||
:alt: License: AGPL-3
|
||||
|
||||
====================================
|
||||
Use AND conditions on omnibar search
|
||||
====================================
|
||||
|
||||
When searching for records on same field Odoo joins multiple queries with OR.
|
||||
For example:
|
||||
|
||||
* Perform a search for customer "John" on field Name
|
||||
* Odoo displays customers containing "John"
|
||||
* Search for "Smith" on same field Name
|
||||
* Odoo displays customers containing "John" OR "Smith"
|
||||
|
||||
With this module installed you can press Shift key before searching for "Smith"
|
||||
and Odoo finds customers containing "John" AND "Smith"
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
* Enter your value in omnibar search field
|
||||
* Press and hold Shift key
|
||||
* Select field with mouse or keyboard to perform search on
|
||||
|
||||
.. 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
|
||||
|
||||
Credits
|
||||
=======
|
||||
|
||||
Contributors
|
||||
------------
|
||||
|
||||
* Andrius Preimantas <andrius@versada.lt>
|
||||
|
||||
Maintainer
|
||||
----------
|
||||
|
||||
.. image:: http://odoo-community.org/logo.png
|
||||
:alt: Odoo Community Association
|
||||
:target: http://odoo-community.org
|
||||
|
||||
This module is maintained by the OCA.
|
||||
|
||||
OCA, or the Odoo Community Association, is a nonprofit organization whose
|
||||
mission is to support the collaborative development of Odoo features and
|
||||
promote its widespread use.
|
||||
|
||||
To contribute to this module, please visit http://odoo-community.org.
|
||||
1
web_search_with_and/__init__.py
Normal file
1
web_search_with_and/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
20
web_search_with_and/__openerp__.py
Normal file
20
web_search_with_and/__openerp__.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# © 2015 Andrius Preimantas <andrius@versada.lt>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
{
|
||||
'name': "Use AND conditions on omnibar search",
|
||||
'version': '8.0.1.0.0',
|
||||
'author': 'Versada UAB, Odoo Community Association (OCA)',
|
||||
'license': 'AGPL-3',
|
||||
'category': 'web',
|
||||
'website': 'http://www.versada.lt',
|
||||
'depends': [
|
||||
'web',
|
||||
],
|
||||
'data': [
|
||||
'data/data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': False,
|
||||
}
|
||||
10
web_search_with_and/data/data.xml
Normal file
10
web_search_with_and/data/data.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="assets_backend" name="web_view_editor assets" inherit_id="web.assets_backend">
|
||||
<xpath expr="." position="inside">
|
||||
<script type="text/javascript" src="/web_search_with_and/static/src/js/search.js"/>
|
||||
</xpath>
|
||||
</template>
|
||||
</data>
|
||||
</openerp>
|
||||
43
web_search_with_and/static/src/js/search.js
Normal file
43
web_search_with_and/static/src/js/search.js
Normal file
@@ -0,0 +1,43 @@
|
||||
openerp.web_search_with_and = function (instance) {
|
||||
|
||||
instance.web.SearchView = instance.web.SearchView.extend({
|
||||
select_completion: function (e, ui) {
|
||||
var self = this;
|
||||
if (e.shiftKey) {
|
||||
e.preventDefault();
|
||||
|
||||
var input_index = _(this.input_subviews).indexOf(
|
||||
this.subviewForRoot(
|
||||
this.$('div.oe_searchview_input:focus')[0]));
|
||||
this.query.add(ui.item.facet, {at: input_index / 2, shiftKey: true});
|
||||
} else {
|
||||
this._super(e, ui);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.search.SearchQuery = instance.web.search.SearchQuery.extend({
|
||||
add: function (values, options) {
|
||||
|
||||
options = options || {};
|
||||
|
||||
if (!values) {
|
||||
values = [];
|
||||
} else if (!(values instanceof Array)) {
|
||||
values = [values];
|
||||
}
|
||||
|
||||
if (options.shiftKey) {
|
||||
delete options.shiftKey;
|
||||
_(values).each(function (value) {
|
||||
var model = this._prepareModel(value, options);
|
||||
Backbone.Collection.prototype.add.call(this, model, options);
|
||||
}, this);
|
||||
return this;
|
||||
}
|
||||
else {
|
||||
return this.constructor.__super__.add.apply(this, arguments);
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user