私は単純な折れ線グラフを持っています。しかし、最初のクリック後、チャートは更新されたデータでレンダリングされていないようです。
最初にボタンをクリックしてから、データベースのデータを更新します。ボタンをもう一度クリックすると、最新のデータがグラフに表示されません。chartData とは何かについて印刷行を作成しました。その古いデータを示しています。
何が問題なのかわかりませんでした。ここで助けが必要です。
<script type="text/javascript">
function renderChart(divId, chartType, chartTitle, chartData, categories){
console.log(chartData);
var data = jQuery.parseJSON(chartData);
var cat = jQuery.parseJSON(categories);
var options = createOption(divId, chartType, chartTitle, cat);
options.series = data;
var chart = new Highcharts.Chart(options);
}
function createOption(divId, chartType, chartTitle, categories){
var options = {
colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'],
chart: {
backgroundColor: {
linearGradient: [0, 0, 500, 500],
stops: [
[0, 'rgb(255, 255, 255)'],
[1, 'rgb(240, 240, 255)']
]
},
borderWidth: 2,
plotBackgroundColor: 'rgba(255, 255, 255, .9)',
plotShadow: true,
plotBorderWidth: 1,
renderTo: divId,
type: chartType
},
title: {
text: 'Fruit Chart'
},
xAxis: {
categories: categories
},
yAxis: {
title: {
text: 'Fruits Eaten'
}
},
series: []
};
return options;
}
</script>
<h:panelGrid id="grid" columns="1" style="margin-bottom:10px">
<div id="container" style="width:100%; height:500px;"></div>
</h:panelGrid>
<p:commandButton styleClass="commandButton" value="This" id="btnThis" process="@form" update="grid"
actionListener="#{pc_Test.doLoadChartDataAction}"
oncomplete="renderChart('container','line','Sample Chart','${pc_Test.w_test.chartData}', '${pc_Test.w_test.categories}');"/>
データ
Initial data
APPLES BANANAS ORANGES
Anne 1 0 4
Billy 5 7 5
Updated data
APPLES BANANAS ORANGES
Anne 1 0 4
Billy 5 7 10