Web開発初心者です。
PHPでデータを取得(配列)し、そのデータをもとにchart.jsでグラフ表示したいのですが、
PHPからsmartyへ配列は普通に渡せますが、smartyからJavaScript(外部ファイル)へ
どのように配列を渡せばよいのかがわかりません。
JavaScript外部ファイルはHTMLのheadで読み込んでいます。
初心者ですので具体的なソースコードを載せてもらえると助かります。
よろしくお願いします。
ご指摘がありましたので、こちらで試したサンプルソースを載せてみます。
下記のコードでは一度HTMLファイルにsmartyの配列をもとに
テーブル(表)を作成し、その表をjavascriptでもう一度読み込んで配列を作成し、
chart.jsのデータに設定しています。
しかし、コードが非常に長くなることと表からもう一度読み込むという部分が
回りくどく感じるため、直接配列をchart.jsのデータに設定したいのです。
JavaScript
1window.onload = function() { 2 //項目用の配列を定義 3 var array01 = []; //売上年 4 var array02 = []; //売上数量 5 var array03 = []; //売上合計 6 var array04 = []; //粗利合計 7 var array05 = []; //粗利率 8 //テーブルから値取得(売上年) 9 $('#tbl_result td.s_year').each(function(){ 10 var amount01 = $(this).find('span').text(); 11 array01.push(amount01); 12 }); 13 //テーブルから値取得(売上数量) 14 $('#tbl_result td.sum_suryo').each(function(){ 15 var amount02 = $(this).find('span').text(); 16 array02.push(amount02); 17 }); 18 //テーブルから値取得(売上合計) 19 $('#tbl_result td.sum_kingaku').each(function(){ 20 var amount03 = $(this).find('span').text(); 21 array03.push(amount03); 22 }); 23//テーブルから値取得(粗利合計) 24 $('#tbl_result td.sum_arari').each(function(){ 25 var amount04 = $(this).find('span').text(); 26 array04.push(amount04); 27 }); 28//テーブルから値取得(粗利率) 29 $('#tbl_result td.araritu').each(function(){ 30 var amount05 = $(this).find('span').text(); 31 array05.push(amount05); 32 }); 33 34 var complexChartOption = { 35 responsive: false, 36 scales: { 37 yAxes: [ 38 { 39 id: "y-axis-1", // Y軸のID 40 type: "linear", // linear固定 41 position: "left", // どちら側に表示される軸か? 42 scaleLabel : { 43 display: true, 44 labelString: '売上金額(円)', 45 }, 46 gridLines:{ 47 display : true, 48 }, 49 ticks: { 50 callback: function(label, index, labels) { 51 return label.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') +' 円'; 52 }, 53 }, 54 }, 55 { 56 id: "y-axis-2", 57 type: "linear", 58 position: "right", 59 scaleLabel : { 60 display: true, 61 labelString: '粗利率(%)', 62 fontColor :"#e61f4b", 63 }, 64 gridLines:{ 65 display : false, 66 }, 67 ticks: { 68 callback: function(label, index, labels) { 69 return label +' %'; 70 }, 71 }, 72 }, 73 ], 74 } 75 }; 76 77 var ctx = document.getElementById('graph').getContext('2d'); 78 79 var myChart = new Chart(ctx, { 80 type: 'bar', 81 data: { 82 labels: array01, 83 datasets: [ 84 { 85 label: '売上合計金額', 86 data: array03, 87 backgroundColor: "rgba(153,255,51,0.4)", 88 yAxisID: "y-axis-1", 89 }, 90 { 91 type: 'line', 92 label: '粗利率', 93 data: array05, 94 backgroundColor: "rgba(255, 0, 0, 0.51)", 95 borderColor : "#ff0000", 96 borderWidth : "1", 97 pointBackgroundColor : "#ff0000", 98 yAxisID: "y-axis-2", 99 lineTension: 0, 100 fill: false, 101 }, 102 ] 103 }, 104 options: complexChartOption, 105 }); 106};
回答2件
あなたの回答
tips
プレビュー