diff options
Diffstat (limited to 'addons/web/static/src/js/widgets/domain_selector.js')
| -rw-r--r-- | addons/web/static/src/js/widgets/domain_selector.js | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/addons/web/static/src/js/widgets/domain_selector.js b/addons/web/static/src/js/widgets/domain_selector.js index c5a561b1b77..f7d5e02c5e5 100644 --- a/addons/web/static/src/js/widgets/domain_selector.js +++ b/addons/web/static/src/js/widgets/domain_selector.js @@ -177,18 +177,12 @@ var DomainTree = DomainNode.extend({ * operator from the domain. * @see DomainTree._addFlattenedChildren */ - init: function (parent, model, domain, options) { + init: function (parent, model, domain) { this._super.apply(this, arguments); - try { - domain = Domain.prototype.stringToArray(domain); - } catch (err) { - // TODO: domain could contain `parent` for example, which is - // currently not handled by the DomainSelector - this.invalidDomain = true; - this.children = []; - return; + var parsedDomain = this._parseDomain(domain); + if (parsedDomain) { + this._initialize(parsedDomain); } - this._initialize(domain); }, /** * @see DomainNode.start @@ -386,6 +380,23 @@ var DomainTree = DomainNode.extend({ }); }).bind(this)); }, + /** + * @param {string} domain + * @returns {Array[]} + */ + _parseDomain: function (domain) { + var parsedDomain = false; + try { + parsedDomain = Domain.prototype.stringToArray(domain); + this.invalidDomain = false; + } catch (err) { + // TODO: domain could contain `parent` for example, which is + // currently not handled by the DomainSelector + this.invalidDomain = true; + this.children = []; + } + return parsedDomain; + }, //-------------------------------------------------------------------------- // Handlers @@ -471,14 +482,17 @@ var DomainSelector = DomainTree.extend({ * If the internal domain value was already equal to the given one, this * does nothing. * - * @param {Array|string} domain + * @param {string} domain * @returns {Deferred} resolved when the rerendering is finished */ setDomain: function (domain) { - if (Domain.prototype.arrayToString(domain) === Domain.prototype.arrayToString(this.getDomain())) { + if (domain === Domain.prototype.arrayToString(this.getDomain())) { return $.when(); } - return this._redraw(domain); + var parsedDomain = this._parseDomain(domain); + if (parsedDomain) { + return this._redraw(domain); + } }, //-------------------------------------------------------------------------- |
