web/web_action_conditionable/static/src/components/field_one2many.esm.js

38 lines
1.4 KiB
JavaScript

/** @odoo-module **/
import {X2ManyField} from "@web/views/fields/x2many/x2many_field";
import {XMLParser} from "@web/core/utils/xml";
import {evaluateExpr} from "@web/core/py_js/py";
import {patch} from "@web/core/utils/patch";
patch(X2ManyField.prototype, "web_action_conditionable_FieldOne2Many", {
get rendererProps() {
this.updateActiveActions();
return this._super(...arguments);
},
updateActiveActions() {
if (this.viewMode === "list" && this.activeActions.type === "one2many") {
const self = this;
const parser = new XMLParser();
const archInfo = this.activeField.views[this.viewMode];
const xmlDoc = parser.parseXML(archInfo.__rawArch);
["create", "delete"].forEach(function (item) {
if (self.activeActions[item] && _.has(xmlDoc.attributes, item)) {
const expr = xmlDoc.getAttribute(item);
try {
self.activeActions[item] = evaluateExpr(
expr,
self.props.record.data
);
} catch (ignored) {
console.log(
"[web_action_conditionable] unrecognized expr '" +
expr +
"', ignoring"
);
}
}
});
}
},
});