gpt4 book ai didi

javascript - 如何在 jsreport 的图表中使用自定义数据?

转载 作者:行者123 更新时间:2023-12-03 03:52:00 25 4
gpt4 key购买 nike

我正在尝试在 jsreport 中使用自定义数据并使用 Chart.js 制作一些图表,问题是我不知道如何使用自定义数据来填充我的图表。到目前为止,我用我的数据创建了一个非常大的 json 和生成图表并放置在 Canvas 内的函数,但我无法使用 handle 调用 html 中的函数,因为它说文档未定义。那么,我如何使用我的数据创建图表并将其显示在 Canvas 中?

P.S.:我可以轻松地显示包含静态数据的图表,但我真的想使用我创建的 json 来执行此操作。

我创建图表的函数:

function graficoEstiloAdaptado(exame){
var ctx = document.getElementById('graficoEsquerdo').getContext('2d');

var total = 280;
var incentivador = 0;
var idealizador = 0;
var detalhista = 0;
var sociavel = 0;

for(var i=0;i<exame.respostas.length;i++){
for(var j=0;j<exame.respostas[i].alternativas.length;j++){
switch(exame.respostas[i].alternativas[j].categoria){
case 'Incentivador':
incentivador += 4-j;
break;
case 'Idealizador':
idealizador += 4-j;
break;
case 'Detalhista':
detalhista += 4-j;
break;
case 'Sociável':
sociavel += 4-j;
break;
}
}
}

var porcentagens = {
incentivador: (incentivador/total).toFixed(1),
idealizador: (idealizador/total).toFixed(1),
detalhista: (detalhista/total).toFixed(1),
sociavel: (sociavel/total).toFixed(1)
};

var chartEstiloAdaptado = new Chart(ctx, {
type: 'bar',
data: {
labels: [porcentagens.incentivador + "%", porcentagens.idealizador + "%", porcentagens.detalhista + "%", porcentagens.sociavel + "%"],
datasets: [{
label: "Gráfico I",
data: [
porcentagens.incentivador,
porcentagens.idealizador,
porcentagens.detalhista,
porcentagens.sociavel
]
}]
},
options: {
animation: {
onComplete: function() {
window.JSREPORT_READY_TO_START = true;
}
}
}
});
}

我还不想使用 API 来获取数据,我只想按照我喜欢的方式构建报告,然后使用 API 来获取数据。

最佳答案

主要思想在这个blog中有描述。 :

Define helper function which makes JSON string from the parameter

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

And call this helper in inline script

<script>
var data= {{{toJSON this}}}
</script>

chart.js 的完整示例如下所示

<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.6/Chart.min.js'></script>
</head>
<body>

<canvas id='myChart' style="margin-top:30px"></canvas>

<script>
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['M', 'T', 'W', 'T', 'F', 'S', 'S'],
datasets: [{
label: 'apples',
data: {{{toJSON A}}},
backgroundColor: "rgba(153,255,51,0.4)"
}, {
label: 'oranges',
data: {{{toJSON B}}},
backgroundColor: "rgba(255,153,0,0.4)"
}]
},
options: {
animation: {
onComplete: function () {
// set the PDF printing trigger when the animation is done
// to have this working, the phantom-pdf menu in the left must
// have the wait for printing trigger option selected
window.JSREPORT_READY_TO_START = true
}
}
}
});
</script>
</body>
</html>

可以找到工作 Playground 演示 here .

关于javascript - 如何在 jsreport 的图表中使用自定义数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45122614/

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