summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core
diff options
context:
space:
mode:
authorJulien Mougenot <jum@odoo.com>2020-04-29 09:14:03 +0000
committerMathieu Duckerts-Antoine <dam@odoo.com>2020-05-05 19:23:20 +0000
commitd21c4129852484860572accbb28c5691ae98a634 (patch)
tree3e09e9a145b0b4985f0424c1e67399dc8b5fb885 /addons/web/static/src/js/core
parent26491fcb4ce1e21584be0454a4178f8249ec75a9 (diff)
[IMP] web: Standardize FALSE and TRUE leaves/domains
Add four static properties on the Domain.js class: (TRUE|FALSE)_(LEAF|DOMAIN). This increases consistency for domains using these concepts.
Diffstat (limited to 'addons/web/static/src/js/core')
-rw-r--r--addons/web/static/src/js/core/domain.js47
1 files changed, 31 insertions, 16 deletions
diff --git a/addons/web/static/src/js/core/domain.js b/addons/web/static/src/js/core/domain.js
index 0db9847645d..07d785b9292 100644
--- a/addons/web/static/src/js/core/domain.js
+++ b/addons/web/static/src/js/core/domain.js
@@ -5,6 +5,15 @@ var collections = require("web.collections");
var pyUtils = require("web.py_utils");
var py = window.py; // look py.js
+const TRUE_LEAF = [1, '=', 1];
+const FALSE_LEAF = [0, '=', 1];
+const TRUE_DOMAIN = [TRUE_LEAF];
+const FALSE_DOMAIN = [FALSE_LEAF];
+
+function compare(a, b) {
+ return JSON.stringify(a) === JSON.stringify(b);
+}
+
/**
* The Domain Class allows to work with a domain as a tree and provides tools
* to manipulate array and string representations of domains.
@@ -58,23 +67,24 @@ var Domain = collections.Tree.extend({
var fieldName = this._data[0];
// We split the domain first part and check if it's a match
// for the syntax 'parent.field'.
- var parentField = this._data[0].split('.');
- if ('parent' in values && parentField.length === 2) {
- fieldName = parentField[1];
- isParentField = parentField[0] === 'parent' &&
- fieldName in values.parent;
- }
- if (!(this._data[0] in values) && !(isParentField)) {
- throw new Error(_.str.sprintf(
- "Unknown field %s in domain",
- this._data[0]
- ));
- }
- var fieldValue;
- if (!isParentField) {
- fieldValue = values[fieldName];
+
+ let fieldValue;
+ if (compare(this._data, FALSE_LEAF) || compare(this._data, TRUE_LEAF)) {
+ fieldValue = this._data[0];
} else {
- fieldValue = values.parent[fieldName];
+ var parentField = this._data[0].split('.');
+ if ('parent' in values && parentField.length === 2) {
+ fieldName = parentField[1];
+ isParentField = parentField[0] === 'parent' &&
+ fieldName in values.parent;
+ }
+ if (!(this._data[0] in values) && !(isParentField)) {
+ throw new Error(_.str.sprintf(
+ "Unknown field %s in domain",
+ this._data[0]
+ ));
+ }
+ fieldValue = isParentField ? values.parent[fieldName] : values[fieldName];
}
switch (this._data[1]) {
@@ -518,5 +528,10 @@ var Domain = collections.Tree.extend({
},
});
+Domain.TRUE_LEAF = TRUE_LEAF;
+Domain.FALSE_LEAF = FALSE_LEAF;
+Domain.TRUE_DOMAIN = TRUE_DOMAIN;
+Domain.FALSE_DOMAIN = FALSE_DOMAIN;
+
return Domain;
});