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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Charts

Google Chartsは、円グラフ・棒グラフ・折れ線グラフなどのさまざまなグラフをJavaScriptで容易に表示できる無料のライブラリ。デザインやイベント処理といったカスタマイズができ、商用利用も可能です。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

809閲覧

google chartが反映されたらというトリガーの作成方法

satorushimo

総合スコア14

Google Charts

Google Chartsは、円グラフ・棒グラフ・折れ線グラフなどのさまざまなグラフをJavaScriptで容易に表示できる無料のライブラリ。デザインやイベント処理といったカスタマイズができ、商用利用も可能です。

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2019/02/04 15:55

開発環境

rails 5.1
jQuery rails 4.3

質問内容

google chartを読み込んでそのグラフの内容に基づいた位置の吹き出しをつけたいと思っています。
その位置を取得するのにjsで取得していますが、google chartsが反映するまで時間がかかるので取得値がundefinedになってしまいます。
このような場合はどうトリガーを設定すれば良いでしょうか?

Google Chartsの表示方法

ヒストグラムを作成しています。
https://www.google.com/jsapiを読み込み以下のようにjsを記述しています。

google.load('visualization', '1', { packages : [ 'corechart' ]}); google.setOnLoadCallback(drawHistogram); function drawHistogram(){ // 表示するデータの設定 var data = new google.visualization.DataTable(); data.addColumn('string', '商品'); data.addColumn('number', '品数'); data.addColumn({type: 'string', role: 'style'}); // この辺のデータコードは書き換えています。 data.addRows([ ["item1", data1], ["item2", data2], ["item3", data3], ["item4", data4] ]); // グラフの設定 var option = { width: '100%', height: '100%' }; var chart = new google.visualization.ComboChart(document.getElementById('gchart')); chart.draw(data, option); } } $(function(){ // google chartの反映待ちで遅らせたい↓↓↓ setTimeout(function(){ var position = $('.position').position(); $('.balloon').css('left', position.left); }, 2000); });

試したこと

setTimeOutでだいたい読み込むくらいの時間に設定してやるとうまくは行くのですが環境によっては30秒くらいに設定しないと反映されないものもあってアンチパターンかと思ったのでボツにしました。

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

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

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

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

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

mix-peach

2019/02/05 02:47

$('.position')の取得対象は、どこで登場するのでしょうか? あと、チャートの反映に時間がかかる理由も分かると、現象が再現しやすいのですが・・
satorushimo

2019/02/05 06:58 編集

.positionは都合よく変えたのですが、chartsのバー要素である `rect`のpositionを取得しています。 時間がかかる理由は普通にロードが遅いからです。 下記のサイトもpie chartが表示されるまでに時間がかかっています。 https://developers.google.com/chart/?hl=ja
guest

回答1

0

ベストアンサー

「チャートの用意が出来たよ」的なイベントがあるので、そちらを使ってみるのはどうですか?

こんな感じです。

javascript

1 var chart = new google.visualization.ComboChart(document.getElementById('gchart')); 2 google.visualization.events.addListener(chart, 'ready', 3 function() { 4 //試しに全てのrectの位置をログに出力してみた・・ 5 $('#gchart').find('rect').each(function(){ 6 console.log($(this).position()); 7 }); 8 } 9 ); 10 chart.draw(data, option);

投稿2019/02/05 07:38

mix-peach

総合スコア1910

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

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

satorushimo

2019/02/07 08:14

できました!まさに求めてたものでした ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問