mirror of https://github.com/OCA/web.git
[IMP] web_widget_mpld3_chart: Move js to owl
parent
f6f41efcbe
commit
c3caf43e5b
|
@ -17,7 +17,8 @@
|
||||||
"license": "LGPL-3",
|
"license": "LGPL-3",
|
||||||
"assets": {
|
"assets": {
|
||||||
"web.assets_backend": [
|
"web.assets_backend": [
|
||||||
"web_widget_mpld3_chart/static/src/js/web_widget_mpld3_chart.esm.js",
|
"web_widget_mpld3_chart/static/src/js/*.js",
|
||||||
|
"web_widget_mpld3_chart/static/src/xml/*.xml",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ class AbstractMpld3Parser(models.AbstractModel):
|
||||||
soup = BeautifulSoup(html_string, "lxml")
|
soup = BeautifulSoup(html_string, "lxml")
|
||||||
json_data = {
|
json_data = {
|
||||||
"style": soup.style.decode(),
|
"style": soup.style.decode(),
|
||||||
"div": soup.div.get("id"),
|
"div": str(soup.div),
|
||||||
"script": soup.script.decode_contents(),
|
"script": soup.script.decode_contents(),
|
||||||
}
|
}
|
||||||
return json.dumps(json_data)
|
return json.dumps(json_data)
|
||||||
|
|
|
@ -1,31 +1,32 @@
|
||||||
/** @odoo-module **/
|
/** @odoo-module **/
|
||||||
|
|
||||||
import basicFields from "web.basic_fields";
|
import {CharField} from "@web/views/fields/char/char_field";
|
||||||
import fieldRegistry from "web.field_registry";
|
import {loadBundle} from "@web/core/assets";
|
||||||
|
import {registry} from "@web/core/registry";
|
||||||
const Mpld3ChartWidget = basicFields.FieldChar.extend({
|
const {onWillStart, markup} = owl;
|
||||||
jsLibs: [
|
class Mpld3ChartWidget extends CharField {
|
||||||
"/web_widget_mpld3_chart/static/src/lib/d3/d3.v5.js",
|
setup() {
|
||||||
"/web_widget_mpld3_chart/static/src/lib/mpld3/mpld3.v0.5.9.js",
|
super.setup();
|
||||||
],
|
onWillStart(() =>
|
||||||
_renderReadonly: function () {
|
loadBundle({
|
||||||
|
jsLibs: [
|
||||||
|
"/web_widget_mpld3_chart/static/src/lib/d3/d3.v5.js",
|
||||||
|
"/web_widget_mpld3_chart/static/src/lib/mpld3/mpld3.v0.5.9.js",
|
||||||
|
],
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
get json_value() {
|
||||||
try {
|
try {
|
||||||
const val = JSON.parse(this.value);
|
var value = JSON.parse(this.props.value);
|
||||||
const new_div = document.createElement("div");
|
value.div = markup(value.div.trim());
|
||||||
new_div.setAttribute("id", val.div);
|
return value;
|
||||||
this.$el.html(new_div);
|
|
||||||
this.$el.ready(function () {
|
|
||||||
const script = document.createElement("script");
|
|
||||||
script.setAttribute("type", "text/javascript");
|
|
||||||
if ("textContent" in script) script.textContent = val.script;
|
|
||||||
else script.text = val.script;
|
|
||||||
$("head").append(script);
|
|
||||||
});
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return this._super(...arguments);
|
return {};
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
Mpld3ChartWidget.template = "web_widget_mpld3_chart.Mpld3ChartField";
|
||||||
|
registry.category("fields").add("mpld3_chart", Mpld3ChartWidget);
|
||||||
|
|
||||||
fieldRegistry.add("mpld3_chart", Mpld3ChartWidget);
|
|
||||||
export default Mpld3ChartWidget;
|
export default Mpld3ChartWidget;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<templates xml:space="preserve">
|
||||||
|
<t t-name="web_widget_mpld3_chart.Mpld3ChartField" owl="1">
|
||||||
|
<t t-out="json_value.div" />
|
||||||
|
<script type="text/javascript" t-out="json_value.script" />
|
||||||
|
</t>
|
||||||
|
</templates>
|
Loading…
Reference in New Issue