gpt4 book ai didi

javascript - JSReport - 图表不呈现动态值

转载 作者:搜寻专家 更新时间:2023-11-01 00:49:59 26 4
gpt4 key购买 nike

我能够使用 JSReport 脚本通过 REST API 获取数据。我能够使用具有硬编码值的模板引擎(配方:html,引擎: Handlebars )显示饼图。现在我必须将动态数据从 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>

如何将动态值从脚本文件传递到模板引擎以正确呈现图表。

最佳答案

可以找到解决方案here .

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

定义自定义助手

function toJSON(data) {
return JSON.stringify(data);
}

将数据写入内联脚本

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

关于javascript - JSReport - 图表不呈现动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com