Maintainers
+Maintainers
This module is maintained by the OCA.

OCA, or the Odoo Community Association, is a nonprofit organization whose
diff --git a/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_chart.esm.js b/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_chart.esm.js
index 362a77d66..cd972c2dd 100644
--- a/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_chart.esm.js
+++ b/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_chart.esm.js
@@ -1,11 +1,23 @@
/** @odoo-module **/
import {CharField} from "@web/views/fields/char/char_field";
-import {registry} from "@web/core/registry";
import {loadBundle} from "@web/core/assets";
-const {onWillStart, markup} = owl;
-class BokehChartWidget extends CharField {
+import {registry} from "@web/core/registry";
+const {onWillStart, markup, onMounted, onPatched, useRef} = owl;
+
+export default class BokehChartWidget extends CharField {
setup() {
+ this.widget = useRef("widget");
+ onPatched(() => {
+ var script = document.createElement("script");
+ script.text = this.json_value.script;
+ this.widget.el.append(script);
+ });
+ onMounted(() => {
+ var script = document.createElement("script");
+ script.text = this.json_value.script;
+ this.widget.el.append(script);
+ });
super.setup();
onWillStart(() =>
loadBundle({
@@ -22,11 +34,11 @@ class BokehChartWidget extends CharField {
}
get json_value() {
var value = JSON.parse(this.props.value);
- value.div = markup(value.div.trim());
+ if (value) {
+ value.div = markup(value.div.trim());
+ }
return value;
}
}
BokehChartWidget.template = "web_widget_bokeh_chart.BokehChartField";
registry.category("fields").add("bokeh_chart", BokehChartWidget);
-
-export default BokehChartWidget;
diff --git a/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_json_chart.esm.js b/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_json_chart.esm.js
new file mode 100644
index 000000000..04f4605b2
--- /dev/null
+++ b/web_widget_bokeh_chart/static/src/js/web_widget_bokeh_json_chart.esm.js
@@ -0,0 +1,40 @@
+/** @odoo-module **/
+
+import {loadBundle} from "@web/core/assets";
+import {registry} from "@web/core/registry";
+const {onWillStart, markup, Component, onMounted, onPatched, useRef} = owl;
+
+export default class BokehChartJsonWidget extends Component {
+ setup() {
+ this.widget = useRef("widget");
+ onPatched(() => {
+ var script = document.createElement("script");
+ script.text = this.props.value.script;
+ this.widget.el.append(script);
+ });
+ onMounted(() => {
+ var script = document.createElement("script");
+ script.text = this.props.value.script;
+ this.widget.el.append(script);
+ });
+ onWillStart(() =>
+ loadBundle({
+ jsLibs: [
+ "/web_widget_bokeh_chart/static/src/lib/bokeh/bokeh-3.1.1.min.js",
+ "/web_widget_bokeh_chart/static/src/lib/bokeh/bokeh-api-3.1.1.min.js",
+ "/web_widget_bokeh_chart/static/src/lib/bokeh/bokeh-widgets-3.1.1.min.js",
+ "/web_widget_bokeh_chart/static/src/lib/bokeh/bokeh-tables-3.1.1.min.js",
+ "/web_widget_bokeh_chart/static/src/lib/bokeh/bokeh-mathjax-3.1.1.min.js",
+ "/web_widget_bokeh_chart/static/src/lib/bokeh/bokeh-gl-3.1.1.min.js",
+ ],
+ })
+ );
+ }
+ markup(value) {
+ console.log("Marking up...");
+ return markup(value);
+ }
+}
+
+BokehChartJsonWidget.template = "web_widget_bokeh_chart.BokehChartlJsonField";
+registry.category("fields").add("bokeh_chart_json", BokehChartJsonWidget);
diff --git a/web_widget_bokeh_chart/static/src/xml/bokeh.xml b/web_widget_bokeh_chart/static/src/xml/bokeh.xml
index fbe607509..1b4bfcb9a 100644
--- a/web_widget_bokeh_chart/static/src/xml/bokeh.xml
+++ b/web_widget_bokeh_chart/static/src/xml/bokeh.xml
@@ -1,7 +1,9 @@