You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
odoo.define('web_search_with_and', function (require) { "use strict";
var SearchView = require('web.SearchView'); var Backbone = window.Backbone;
SearchView.include({ // Override the base method to detect a 'shift' event
select_completion: function (e, ui) { if (e.shiftKey && ui.item.facet.values && ui.item.facet.values.length && String(ui.item.facet.values[0].value).trim() !== "") { // In case of an 'AND' search a new facet is added regarding of the previous facets
e.preventDefault();
this.query.add(ui.item.facet, {shiftKey: true}); } else {
return this._super.apply(this, arguments); } } });
SearchView.SearchQuery.prototype = SearchView.SearchQuery.extend({ // Override the odoo method to (conditionally) add a search facet even if a existing
// facet for the same field/category already exists.
// The prototype is used to override the 'add' function in order to execute the
// following code before the Odoo native override (trick)
add: function (values, options) { options = options || {}; if (options.shiftKey) {
if (!values) { values = []; } else if (!(values instanceof Array)) { values = [values]; }
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.call(this, values, options); } } }).prototype;
});
|