質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1510閲覧

chart.jsで描いたドーナツグラフをリアルタイムに更新し続けたい

Homaresan

総合スコア15

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/08/20 06:09

編集2019/08/20 08:10

前提・実現したいこと

現在Ruby on rails5でアプリケーションを作成しています。
そのアプリケーションの機能で経過時間ごとにchart.jsで描いたドーナツグラフをリアルタイムに更新し続けたいです。

具体的に説明するとビューのスタートボタンをクリックすると(今回この画像には載っていませんがしっかりボタンはあります)クリック時の時間がlocalstorageに保存され、それを元に経過時間を算出しドーナツグラフに反映させます。
今回は20分と言う時間制約の中でどれだけスタートしてから時間が経過したのか、比率をリアルタイムで更新し描写したいです。

※ここでいうリアルタイムで更新し描写したいとはドーナツグラフを表示し続けたまま経過時間と共に赤色の割合が少しづつ増えていきグレーの割合が少しづづ減って動いていくと言うことです。
(ドーナツグラフの赤色が経過時間の割合、グレーが残りの時間です)

どのようにすればドーナツグラフをリアルタイムに更新し続けられますか?

イメージ説明

app/views/users/index.html.haml

%input{type: 'button', value: 'スタート', onclick: 'chartShowing();'} %canvas#myPieChart

app/assets/javascripts/timer.js

var now = 0; var elapsed = 0; function chartShowing() { now = new Date();   var start = new Date();   localStorage.setItem("time", start.getTime());   elapsed = parseInt((new Date().getTime() - localStorage.getItem("time")) / 1000 / 60); //スタートボタン押してからの経過時間(分)   var ctx = document.getElementById("myPieChart"); var myPieChart = new Chart(ctx, { type: 'doughnut', //ドーナツチャートを描画する場合、typeに'doughnut'を指定する。 data: { datasets: [{ backgroundColor: [  "#FF0000", "#BDBDBD" ], data: [elapsed, 20 - elapsed] //[経過時間,20 - 経過時間] }] }, options: { title: { display: true, text: 'グラフ' } } }) }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

use Jquery

$(document).ready(function(){
setInterval(chartShowing, 1000);// 1sec
});

投稿2019/08/20 07:58

mgju

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Homaresan

2019/08/20 08:17

回答ありがとうございます! その方法だとドーナツグラフが表示し続けず1秒おきに一からドーナツグラフが描かれ続けてしまうのですが… $(document).ready(function(){ setInterval(chartShowing, 1000);// 1sec }); の記述を上記jsファイルのどこに記述すればうまくいきますか?
mgju

2019/08/20 08:59 編集

signalR needs Server I recommend you for() & if() & setInterval() in JQuery
Homaresan

2019/08/20 09:55

Thank you very much. I will try it once.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問