Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSReport-图表不使用动态值呈现_Javascript_Node.js_Reactjs_Reporting_Jsreport - Fatal编程技术网

Javascript JSReport-图表不使用动态值呈现

Javascript JSReport-图表不使用动态值呈现,javascript,node.js,reactjs,reporting,jsreport,Javascript,Node.js,Reactjs,Reporting,Jsreport,我能够使用JSReport脚本通过RESTAPI获取数据。我能够使用带有硬编码值的模板引擎(recipe:html,engine:handlebar)显示饼图。现在我必须将动态数据从JSreport脚本传递到模板引擎。我不知道怎么做 剧本 async function prepareDataSource() { const extracts = await fetchStats() . // REST API Call // console.log(extracts.data);

我能够使用JSReport脚本通过RESTAPI获取数据。我能够使用带有硬编码值的模板引擎(recipe:html,engine:handlebar)显示饼图。现在我必须将动态数据从JSreport脚本传递到模板引擎。我不知道怎么做

剧本

async function prepareDataSource() {
    const extracts = await fetchStats() . // REST API Call
   // console.log(extracts.data);
    let arr = extracts.data
     let statsbySale = d3.nest()
                .rollup(function(d) {
                    return {
                    A : d3.sum(d, function (g) { return g.a; }),
                    B : d3.sum(d, function (g) { return g.b; }),
                    C : d3.sum(d, function (g) { return g.c; }),
                    D : d3.sum(d, function (g) { return g.d; })
                };
                }).object(arr);
                console.log(JSON.stringify(statsbySale)); ==> returns ["A" : 10, "B" : 20, "C" : 30, "D" : 40]
                return (JSON.stringify(statsbySale))
}


async function beforeRender(req, res, done) {
     req.data.sales = await prepareDataSource()
     console.log(req.data.sales======>Printed the same JSON object as above
     done();
}

==================================

Template engine

<script>
    Chart.defaults.global.legend.display = false;
    new Chart(document.getElementById('myChart').getContext("2d"),            
        type: 'pie',
        data: {
             labels: ['A', 'B', 'C', 'D'],
             datasets: [{
                  backgroundColor: [
                      'green',
                      'orange',
                      'yellow',
                      'purple'
                  ]                
                  borderColor: "rgba(27,161,226,1)",
                  borderWidth: 1,
                  hoverBackgroundColor: "rgba(27,161,226,0.4)",
                  hoverBorderColor: "rgba(27,161,226,1)",
                  data: [10,20,30,40] ===>Hardcoded value
                }]
        },
        options: {
             animation: {
                 duration:            
             }
        }
});
</script>
异步函数prepareDataSource(){ const extracts=await fetchStats()。//REST API调用 //console.log(extracts.data); 设arr=extracts.data 设statsbySale=d3.nest() .汇总(功能(d){ 返回{ A:d3.sum(d,函数(g){返回g.A;}), B:d3.sum(d,函数(g){返回g.B;}), C:d3.sum(d,函数(g){返回g.C;}), D:d3.sum(D,函数(g){返回g.D;}) }; }).对象(arr); log(JSON.stringify(statsbySale));=>返回[“A”:10,“B”:20,“C”:30,“D”:40] 返回(JSON.stringify(statsbySale)) } 异步函数beforeRender(req、res、done){ req.data.sales=wait prepareDataSource() console.log(req.data.sales)===>打印了与上面相同的JSON对象 完成(); } ================================== 模板引擎 Chart.defaults.global.legend.display=false; 新图表(document.getElementById('myChart').getContext(“2d”), 键入“pie”, 数据:{ 标签:['A','B','C','D'], 数据集:[{ 背景颜色:[ “绿色”, “橙色”, “黄色”, “紫色” ] 边框颜色:“rgba(27161226,1)”, 边框宽度:1, hoverBackgroundColor:“rgba(27161226,0.4)”, hoverBorderColor:“rgba(27161226,1)”, 数据:[10,20,30,40]=>硬编码值 }] }, 选项:{ 动画:{ 持续时间: } } }); 如何将脚本文件中的动态值传递到模板引擎以正确呈现图表。

可以找到解决方案

您需要使用自定义模板引擎助手序列化json数据,并将它们写入内联脚本

定义自定义辅助对象

function toJSON(data) {
  return JSON.stringify(data);
}
将数据写入内联脚本

<script>
  var data = {{{toJSON sales}}}
  ... your chart using data
</script>

var data={{{toJSON sales}}}
…使用数据创建图表