前提・実現したいこと
Ruby on rails5を用いてアプリケーションを開発しています。
解決したい事はchart.jsで表示したドーナツグラフを削除したいです。
具体系に説明すると
現在index.html.hamlにあるグラフ表示ボタンを押すとドーナツグラフが表示されます。
表示ボタンを押すとlocalstorageにクリック時の時間が保存されクリックからの経過時間をグラフにsetTimeoutで一秒ごとに更新する機能をつけました。(timer.jsに記載のdata[70,30]と書かれている部分に経過時間ごとに比率が変わっていくのですが、今回の質問とはあまり関係がないところなので適当に数字を置いてます)
そこで削除ボタンを押すとドーナツグラフが消えるようにするためにmyPieChart.destroy();と書くとグラフが削除されると思ったのですが削除されません。
削除ボタンを押した後リロードするとグラフは消えてくれるのですがリロードせずに削除ボタンを押すとすぐにグラフが消えるようにしたいです。
どこを改善するとうまく動作するでしょうか。
app/views/users/index.html.haml
index.html.haml
1%input{type: 'button', value: 'グラフ表示', onclick: 'chartShowing();'} 2%input{type: 'button', value: '削除', onclick: 'reset();'} 3%canvas#myPieChart
app/assets/javascripts/timer.js
timer.js
1function reset() { 2 localStorage.removeItem("time"); 3} 4 5elapsed = 0; 6function chartShowing() { 7 var start = new Date(); 8 localStorage.setItem("time", start.getTime()); 9 elapsed = parseInt((new Date().getTime() - localStorage.getItem("time")) / 1000 / 60); 10 var ctx = document.getElementById("myPieChart"); 11 var myPieChart = new Chart(ctx, { 12 type: 'doughnut', //ドーナツチャートを描画する場合、typeに'doughnut'を指定する。 13 data: { 14 datasets: [{ 15 backgroundColor: [ 16 "#ff0000", 17 "#000000" 18 ], 19 data: [70,30] 20 }] 21 } 22 }) 23 if (localStorage.getItem("time")) { 24 var id = setTimeout(chartShowing, 1000); 25 } else { 26 //削除ボタン押した時 27 clearTimeout(id); 28 myPieChart.destroy(); 29 } 30}
試したこと
myPieChart.destroy();と記述するとグラフが削除されるとネットに書いていたのですが削除されませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/22 05:17