From c3b1e87815282ebb05ce1408fd54eae3f8e8f591 Mon Sep 17 00:00:00 2001 From: Phillip Witte Date: Wed, 27 Sep 2023 13:31:53 +0200 Subject: [PATCH] [FIX] web_advanced_search: Fixed changes from code editor not propagated --- .../static/src/js/DomainSelector.esm.js | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 web_advanced_search/static/src/js/DomainSelector.esm.js diff --git a/web_advanced_search/static/src/js/DomainSelector.esm.js b/web_advanced_search/static/src/js/DomainSelector.esm.js new file mode 100644 index 000000000..1cf9ed9a4 --- /dev/null +++ b/web_advanced_search/static/src/js/DomainSelector.esm.js @@ -0,0 +1,57 @@ +/** @odoo-module **/ + +import {patch} from "@web/core/utils/patch"; +import {_t} from "web.core"; +import Domain from "web.Domain"; +import DomainSelector from "web.DomainSelector"; +import basic_fields from "web.basic_fields"; +/** + * The redraw in the Debug Field does not trigger correctly + * so we overwrite it with the v14 Version + * + */ +patch(DomainSelector.prototype, "web.DomainSelector", { + /** + * @override + */ + _onDebugInputChange(e) { + if (!$(".o_add_advanced_search").length) { + return this._super(...arguments); + } + const rawDomain = e.currentTarget.value; + try { + Domain.prototype.stringToArray(rawDomain); + } catch (err) { + // If there is a syntax error, just ignore the change + this.displayNotification({ + title: _t("Syntax error"), + message: _t("Domain not properly formed"), + type: "danger", + }); + return; + } + this._redraw(Domain.prototype.stringToArray(rawDomain)).then( + function () { + this.trigger_up("domain_changed", { + child: this, + alreadyRedrawn: true, + }); + }.bind(this) + ); + }, +}); + +patch(basic_fields.FieldDomain.prototype, "web.basic_fields", { + /** + * Odoo restricts re-rendering the domain from the debug editor for supposedly + * performance reasons. We didn't ever came up with those and in v17 it's supported + * in the new advanced search. + * @override + */ + // eslint-disable-next-line + _onDomainSelectorValueChange(event) { + this._super(...arguments); + // Deactivate all debug conditions that cripple the functionality + this.debugEdition = false; + }, +});