diff --git a/web_advanced_search/__manifest__.py b/web_advanced_search/__manifest__.py
index 5f751061e..46710e36f 100644
--- a/web_advanced_search/__manifest__.py
+++ b/web_advanced_search/__manifest__.py
@@ -5,23 +5,15 @@
{
"name": "Advanced search",
- "version": "12.0.1.0.2",
- "author": "Therp BV, "
- "Tecnativa, "
- "Odoo Community Association (OCA)",
+ "version": "13.0.1.0.0",
+ "author": "Therp BV, " "Tecnativa, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Usability",
"summary": "Easier and more powerful searching tools",
"website": "https://github.com/OCA/web",
- "depends": [
- 'web',
- ],
- "data": [
- 'views/templates.xml',
- ],
- "qweb": [
- 'static/src/xml/web_advanced_search.xml',
- ],
+ "depends": ["web"],
+ "data": ["views/templates.xml"],
+ "qweb": ["static/src/xml/web_advanced_search.xml"],
"installable": True,
"application": False,
}
diff --git a/web_advanced_search/static/src/js/human_domain.js b/web_advanced_search/static/src/js/human_domain.js
index 82aefc5ce..82bfebef9 100644
--- a/web_advanced_search/static/src/js/human_domain.js
+++ b/web_advanced_search/static/src/js/human_domain.js
@@ -1,26 +1,24 @@
/* Copyright 2018 Tecnativa - Jairo Llopis
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
- odoo.define("web_advanced_search.human_domain", function (require) {
- "use strict";
+odoo.define("web_advanced_search.human_domain", function(require) {
+ "use strict";
- var DomainSelector = require("web.DomainSelector");
+ var DomainSelector = require("web.DomainSelector");
- var join_mapping = {
- "&": _(" and "),
- "|": _(" or "),
- "!": _(" is not "),
+ var join_mapping = {
+ "&": _(" and "),
+ "|": _(" or "),
+ "!": _(" is not "),
};
// HACK I should extend classes, but they are not exposed
// TODO Remove file when merged https://github.com/odoo/odoo/pull/25922
var human_domain_methods = {
- DomainTree: function () {
+ DomainTree: function() {
var human_domains = [];
- _.each(this.children, function (child) {
- human_domains.push(
- human_domain_methods[child.template].apply(child)
- );
+ _.each(this.children, function(child) {
+ human_domains.push(human_domain_methods[child.template].apply(child));
});
return _.str.sprintf(
"(%s)",
@@ -28,23 +26,21 @@
);
},
- DomainSelector: function () {
+ DomainSelector: function() {
var result = human_domain_methods.DomainTree.apply(this, arguments);
// Remove surrounding parenthesis
return result.slice(1, -1);
},
- DomainLeaf: function () {
+ DomainLeaf: function() {
var chain = [],
operator = this.operator_mapping[this.operator],
value = _.str.sprintf('"%s"', this.value);
// Humanize chain
- this.chain.split(".").forEach(function (element, index) {
+ this.chain.split(".").forEach(function(element, index) {
chain.push(
- _.findWhere(
- this.fieldSelector.pages[index],
- {name: element}
- ).string || element
+ _.findWhere(this.fieldSelector.pages[index], {name: element})
+ .string || element
);
}, this);
// Special beautiness for some values
@@ -54,27 +50,17 @@
} else if (_.isArray(this.value)) {
value = _.str.sprintf('["%s"]', this.value.join('", "'));
}
- return _.str.sprintf(
- "%s %s %s",
- chain.join("→"),
- operator || this.operator,
- value
- ).trim();
+ return _.str
+ .sprintf("%s %s %s", chain.join("→"), operator || this.operator, value)
+ .trim();
},
};
- function getHumanDomain (parent, model, domain, options) {
- var domain_selector = new DomainSelector(
- parent,
- model,
- domain,
- options
- );
+ function getHumanDomain(parent, model, domain, options) {
+ var domain_selector = new DomainSelector(parent, model, domain, options);
var dummy_parent = $("
");
domain_selector.appendTo(dummy_parent);
- var result = human_domain_methods.DomainSelector.apply(
- domain_selector
- );
+ var result = human_domain_methods.DomainSelector.apply(domain_selector);
domain_selector.destroy();
dummy_parent.destroy();
return result;
diff --git a/web_advanced_search/static/src/js/web_advanced_search.js b/web_advanced_search/static/src/js/web_advanced_search.js
index 571ea6c08..41faf6d88 100644
--- a/web_advanced_search/static/src/js/web_advanced_search.js
+++ b/web_advanced_search/static/src/js/web_advanced_search.js
@@ -2,7 +2,7 @@
* Copyright 2017-2018 Jairo Llopis
* License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). */
-odoo.define("web_advanced_search", function (require) {
+odoo.define("web_advanced_search", function(require) {
"use strict";
var core = require("web.core");
@@ -18,7 +18,7 @@ odoo.define("web_advanced_search", function (require) {
SearchView.include({
custom_events: _.extend({}, SearchView.prototype.custom_events, {
- "get_dataset": "_on_get_dataset",
+ get_dataset: "_on_get_dataset",
}),
/**
@@ -29,7 +29,7 @@ odoo.define("web_advanced_search", function (require) {
*
* @param {OdooEvent} event The target will get the dataset.
*/
- _on_get_dataset: function (event) {
+ _on_get_dataset: function(event) {
event.target.dataset = this.dataset;
event.stopPropagation();
},
@@ -39,11 +39,10 @@ odoo.define("web_advanced_search", function (require) {
* An almost dummy search proposition, to use with domain widget
*/
var AdvancedSearchProposition = Widget.extend({
-
/**
* @override
*/
- init: function (parent, model, domain) {
+ init: function(parent, model, domain) {
this._super(parent);
this.model = model;
this.domain = new Domain(domain);
@@ -55,7 +54,7 @@ odoo.define("web_advanced_search", function (require) {
*
* @returns {Object} In the format expected by `web.FiltersMenu`.
*/
- get_filter: function () {
+ get_filter: function() {
return {
attrs: {
domain: this.domain_array,
@@ -76,7 +75,7 @@ odoo.define("web_advanced_search", function (require) {
// Add advanced search features
FiltersMenu.include({
custom_events: _.extend({}, FiltersMenu.prototype.custom_events, {
- "domain_selected": "advanced_search_commit",
+ domain_selected: "advanced_search_commit",
}),
events: _.extend({}, FiltersMenu.prototype.events, {
@@ -86,7 +85,7 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- init: function () {
+ init: function() {
this._super.apply(this, arguments);
this.trigger_up("get_dataset");
},
@@ -96,7 +95,7 @@ odoo.define("web_advanced_search", function (require) {
*
* @returns {$.Deferred} The opening dialog itself.
*/
- advanced_search_open: function () {
+ advanced_search_open: function() {
var domain_selector_dialog = new DomainSelectorDialog(
this,
this.dataset.model,
@@ -106,7 +105,7 @@ odoo.define("web_advanced_search", function (require) {
readonly: false,
}
);
- domain_selector_dialog.opened(function () {
+ domain_selector_dialog.opened(function() {
// Add 1st domain node by default
domain_selector_dialog.domainSelector._onAddFirstButtonClick();
});
@@ -118,7 +117,7 @@ odoo.define("web_advanced_search", function (require) {
*
* @param {OdooEvent} event A `domain_selected` event from the dialog.
*/
- advanced_search_commit: function (event) {
+ advanced_search_commit: function(event) {
_.invoke(this.propositions, "destroy");
var proposition = new AdvancedSearchProposition(
this,
@@ -148,24 +147,22 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- init: function () {
+ init: function() {
this._super.apply(this, arguments);
// To make widgets work, we need a model and an empty record
FieldManagerMixin.init.call(this);
this.trigger_up("get_dataset");
// Make equal and not equal appear 1st and 2nd
- this.operators = _.sortBy(
- this.operators,
- function (op) {
- switch (op.value) {
+ this.operators = _.sortBy(this.operators, function(op) {
+ switch (op.value) {
case "=":
return -2;
case "!=":
return -1;
default:
return 0;
- }
- });
+ }
+ });
// Create dummy record with only the field the user is searching
var params = {
fieldNames: [this.field.name],
@@ -194,11 +191,7 @@ odoo.define("web_advanced_search", function (require) {
params.fieldsInfo.default[this.field.name] = {};
// Emulate `model.load()`, without RPC-calling `default_get()`
this.datapoint_id = this.model._makeDataPoint(params).id;
- this.model.applyDefaultValues(
- this.datapoint_id,
- {},
- params.fieldNames
- );
+ this.model.applyDefaultValues(this.datapoint_id, {}, params.fieldNames);
// To generate a new fake ID
this._fake_id = -1;
},
@@ -206,7 +199,7 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- start: function () {
+ start: function() {
var result = this._super.apply(this, arguments);
// Render the initial widget
result.done($.proxy(this, "show_inputs", $("")));
@@ -216,7 +209,7 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- destroy: function () {
+ destroy: function() {
if (this._field_widget) {
this._field_widget.destroy();
}
@@ -230,22 +223,22 @@ odoo.define("web_advanced_search", function (require) {
*
* @returns {Object}
*/
- _get_record: function () {
+ _get_record: function() {
return this.model.get(this.datapoint_id);
},
/**
* @override
*/
- show_inputs: function ($operator) {
+ show_inputs: function($operator) {
// Get widget class to be used
switch ($operator.val()) {
- case "=":
- case "!=":
- this._field_widget_name = "many2one";
- break;
- default:
- this._field_widget_name = "char";
+ case "=":
+ case "!=":
+ this._field_widget_name = "many2one";
+ break;
+ default:
+ this._field_widget_name = "char";
}
var _Widget = field_registry.get(this._field_widget_name);
// Destroy previous widget, if any
@@ -278,8 +271,8 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- _applyChanges: function (dataPointID, changes, event) {
- if (this._field_widget_name === 'many2one') {
+ _applyChanges: function(dataPointID, changes, event) {
+ if (this._field_widget_name === "many2one") {
// Make char updates look like valid x2one updates
if (_.isNaN(changes[this.field.name].id)) {
changes[this.field.name] = {
@@ -296,7 +289,7 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- _confirmChange: function (id, fields, event) {
+ _confirmChange: function(id, fields, event) {
this.datapoint_id = id;
return this._field_widget.reset(this._get_record(), event);
},
@@ -304,13 +297,13 @@ odoo.define("web_advanced_search", function (require) {
/**
* @override
*/
- get_value: function () {
+ get_value: function() {
try {
switch (this._field_widget_name) {
- case "many2one":
- return this._field_widget.value.res_id;
- default:
- return this._field_widget.$el.val();
+ case "many2one":
+ return this._field_widget.value.res_id;
+ default:
+ return this._field_widget.$el.val();
}
} catch (error) {
if (error.name === "TypeError") {
@@ -324,20 +317,20 @@ odoo.define("web_advanced_search", function (require) {
*
* @override
*/
- toString: function () {
+ toString: function() {
try {
switch (this._field_widget_name) {
- case "many2one":
- return this._field_widget.value.data.display_name;
- default:
- return this._field_widget.$el.val();
+ case "many2one":
+ return this._field_widget.value.data.display_name;
+ default:
+ return this._field_widget.$el.val();
}
- return this._super.apply(this, arguments);
} catch (error) {
if (error.name === "TypeError") {
return "";
}
}
+ return this._super.apply(this, arguments);
},
});
diff --git a/web_advanced_search/static/src/xml/web_advanced_search.xml b/web_advanced_search/static/src/xml/web_advanced_search.xml
index 8d791eaaa..a7d25e4f3 100644
--- a/web_advanced_search/static/src/xml/web_advanced_search.xml
+++ b/web_advanced_search/static/src/xml/web_advanced_search.xml
@@ -1,10 +1,10 @@
-
+
-
+
Add Advanced Filter
diff --git a/web_advanced_search/views/templates.xml b/web_advanced_search/views/templates.xml
index 4ef2eda9e..5f3aa4838 100644
--- a/web_advanced_search/views/templates.xml
+++ b/web_advanced_search/views/templates.xml
@@ -1,13 +1,17 @@
-
+
-
-
-
+
+
-