I am trying to embed a D3 chart in qweb report. I managed to get data into the script but i can not use d3 object inside script. d3.v3.min.js is imported in assets but d3 object doesn't work in script.
Asset part :
<template id="report_style_assets" inherit_id="report.internal_layout"> <xpath expr="." position="inside"> <script charset="utf-8" type="text/javascript" src="http://my_server_adress:8069/my_module/static/src/js/libs/d3.v3.min.js"/> </xpath> </template>
inside report :
<template id="my_module.hotel_daily_report"> <t t-call="report.html_container"> <t t-call="report.internal_layout"> <div class="page"> <div id="chart_div"></div> <script charset="utf-8" type="text/javascript" src="http://my_server_adress:8069/my_module/static/src/js/libs/d3.v3.min.js"/> <script t-attf-data="{{hotelData['graph_data']}}" type="text/javascript"> var chartId = "chart_div"; var check = true; var start_date = new Date(); var end_date = new Date(); var min_value = 5.0; var max_value = 9.0; var graph_score_type = 'overall_score'; var graph_line_color = 'indigo'; var data = []; var counter = 0; var hotelDataStr = document.getElementsByTagName('script')[0].getAttribute("data").replace(/'/g, '"'); var result = JSON.parse(hotelDataStr); var keyCounter = 0; for (var key in result) { try { data.push({ time: new Date(result[key]['review_date']), value: parseFloat(result[key][graph_score_type]) }); if (check) { check = false; start_date = new Date(result[key]['review_date']); } } catch (err) { } } var graph_width = 650; var graph_height = 160; var graph_margin = { top: 20, right: 20, bottom: 40, left: 40 }; end_date = new Date(result[key]['review_date']); var svg = d3.select("#chart_div").append("svg") .attr("width", graph_width + graph_margin.left + graph_margin.right) .attr("height", graph_height + graph_margin.top + graph_margin.bottom) .append("g") .attr("transform", "translate(" + graph_margin.left + "," + graph_margin.top + ")"); document.getElementById("chart_div").innerHTML = "test passed"; </script> </div> </t> </t> </template>
Everything works until d3 part in script. I saw that there is a paid module for graphs in odoo reports, so it is possible but how to use d3 in script?
Hi, Did you get solution?