Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
5385 Lượt xem


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?

Ảnh đại diện
Huỷ bỏ

Hi, Did you get solution?

Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 4 25
1286
2
thg 3 25
1464
4
thg 11 24
7138
1
thg 3 24
2075
3
thg 9 23
24906