フルHTMLを含むカスタムツールチップをGoogleChartsに表示させようとしています。
ツールチップを有効にして適切なデータを渡す方法を知っています-問題は-allowHTML
オプションが有効になっている場合でも、ツールチップはプレーンテキストとしてレンダリングされるため、たとえばツールチップに画像を表示できません。
これが私が目指していることの小さな例です:
この問題を解決する1つの方法は、ツールチップを無効にし、マウスオーバーイベントをキャプチャし、別のライブラリ(cluetipなど)を使用してツールチップをカーソルで表示することですが、GoogleChartsでこの種の機能を有効にするクリーンでネイティブな方法があるかどうか疑問に思いました。
また、グーグルチャートのポイントマーカーとしての画像についての他の質問もチェックしてください。
編集:
その間に、この機能をカバーする非常に優れた非常に安価な(Webサイトライセンスあたり60ドル)ライブラリを見つけました: Highchartsライブラリ
例でわかるように、ツールチップをフォーマットする関数を渡すことができます。ツールチップのコンテンツを動的にロードするために使用できるURLを含む特別なプロパティを各データポイントに簡単に追加できます。次に、一連のデータポイントにプロパティを追加することで、ツールチップをキャッシュできます。私はそれをこのように実装しました、そしてそれは完全に機能します。
最新の編集が誰かを助けることを願っています。
これは現在私のために働いています:
ステップ1:これらの設定の両方がチャートオプションに含まれていることを確認します。
// This line makes the entire category's tooltip active.
focusTarget: 'category',
// Use an HTML tooltip.
tooltip: { isHtml: true }
ステップ2:ツールチップをチャート列の1つに追加します。
dataTable.addColumn({'type': 'string', 'role': 'tooltip' , 'p': {'html': true}});
ステップ3:データの適切な列にツールチップのHTMLを追加します。
chartReading.Push(chartSensorTooltip(obsDate, reading[1]));
メソッド「chartSensorTooltip(date、number)」は、各値のツールチップのHTMLを適切にフォーマットするために自分で作成したJSメソッドです。この種のメソッドを作成する必要はありませんが、上記の誰かが提案したように、作成すると、すべてのツールチップを同じ方法で非常に簡単にフォーマットできます。
FocusTargetのことは、私をつまずかせたものです。 HTH誰か!
この機能は信じられないほどあいまいでした!前述のように、私にとって重要なのは、ツールチップを定義するために「addColumn()」を使用するときに「、 'p':{'html':true}」を追加することでした。 'draw()'オプション 'ツールチップ:{isHtml:true}'だけでは十分ではありません。
'addRows()'に渡される 'graphItems'の配列を作成するときに、関数呼び出しを使用してHTML文字列を返すのは非常に便利です。
function myToolTip(row) {
return '<div style="white-space: nowrap; padding:5px;"><b>' + row.name + '</b><br>' +
'$' + row.worth + ' B, <b>' + _scope.sortBy + '</b>: ' + row[_scope.sortBy] + '</div>';
}
var graphItems = [];
angular.forEach(_scope.ForbesList, function(row, key) {
graphItems.Push([key, row.worth, myToolTip(row)]);
});
var data = new google.visualization.DataTable();
data.addColumn('number', 'Rank');
data.addColumn('number', 'Worth');
data.addColumn({type: 'string', role: 'tooltip', 'p': {'html': true}});
data.addRows(graphItems);
詳細はこちら: https://developers.google.com/chart/interactive/docs/customizing_tooltip_content#custom_html_content
列ではなく各行データに{p: {html: true}}
を追加し、グラフ全体にisHtml
オプションを追加する必要がありました。