summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/renderer_wrapper.js
diff options
context:
space:
mode:
authorVincent Schippefilt <vsc@odoo.com>2019-11-05 14:28:19 +0000
committerVincent Schippefilt <vsc@odoo.com>2019-12-09 11:09:10 +0000
commitd06e67e748ca9c5c538d5e1a1efc4ae798fee707 (patch)
tree551b153833d7a6ba72d99798983ac475d200e3ce /addons/web/static/src/js/views/renderer_wrapper.js
parent2cfa68b57158f6f4ac49549e79a5eb7f90cefb5f (diff)
[IMP] web: add Odoo view compatibility for OWL
Add a base class for a complete OWL renderer Add a compatibility layer for a Odoo controller that uses a OWL renderer. Co-authored-by: Pierre Rousseau <pro@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/views/renderer_wrapper.js')
-rw-r--r--addons/web/static/src/js/views/renderer_wrapper.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/addons/web/static/src/js/views/renderer_wrapper.js b/addons/web/static/src/js/views/renderer_wrapper.js
new file mode 100644
index 00000000000..7c1c5d6b273
--- /dev/null
+++ b/addons/web/static/src/js/views/renderer_wrapper.js
@@ -0,0 +1,57 @@
+odoo.define('web.RendererWrapper', function (require) {
+ "use strict";
+
+ const { xml } = owl.tags;
+ const AbstractRenderer = require('web.AbstractRendererOwl');
+
+ class RendererWrapper extends owl.Component {
+ /**
+ *
+ * @param {Object} parent
+ * @param {Object} props
+ * @param {Class} concreteRenderer
+ */
+ constructor(parent, props, concreteRenderer) {
+ super(...arguments);
+ this.concreteRenderer = concreteRenderer;
+ this.data = props;
+ }
+
+ /**
+ * Update the props of the renderer before a re-render
+ * called on the initial render as well as when the renderer is re-mounted (view switched)
+ *
+ * @param {Object} props new props
+ */
+ updateProps(props) {
+ this.data = Object.assign(this.data || {}, props);
+ }
+
+ mounted() {
+ for (let x in this.__owl__.children) {
+ this.__owl__.children[x].__callMounted();
+ }
+ }
+
+ willUnmount() {
+ for (let x in this.__owl__.children) {
+ this.__owl__.children[x].__callWillUnmount();
+ }
+ }
+
+ setParent() { }
+
+ getLocalState() { }
+
+ setLocalState() { }
+
+ giveFocus() { }
+ };
+
+ RendererWrapper.template = xml`<t t-component="concreteRenderer" t-props="data"/>`;
+
+ RendererWrapper.components = { AbstractRenderer };
+
+ return RendererWrapper;
+
+});