Skip to content
This repository has been archived by the owner on Jun 1, 2023. It is now read-only.

ツールチップの位置をフレキシブルにできないですか? #4807

Closed
goki90210 opened this issue Jun 15, 2020 · 8 comments
Closed
Labels
improvement 改善や新機能の要望

Comments

@goki90210
Copy link
Contributor

goki90210 commented Jun 15, 2020

改善詳細 / Details of Improvement

  • 棒グラフのツールチップが見切れる #4793 はcloseされてしまったのですが、ツールチップを左側に表示させると見切れる場合には右側に出すということはできないのでしょうか?(バグではないので改善提案です)

スクリーンショット / Screenshot

#4793 と同じのため省略します。

期待する見せ方・挙動 / Expected behavior

  • 例えば、標準では左側とするが左側で表示できるよう生き領域が取れない場合は右側に表示する

動作環境・ブラウザ / Environment

  • macOS / Windows / Linux / iOS / Android
  • Chrome / Safari / Firefox / Edge / Internet Explorer
@goki90210 goki90210 added the improvement 改善や新機能の要望 label Jun 15, 2020
@y-chan
Copy link
Contributor

y-chan commented Jun 15, 2020

フレキシブルには出来ないと思いますが、dev-ja-hiraにおいて、カスタムツールチップにて見切れないように上書きする仕組みがあります。そちらを採用すれば良いかなぁと思います(ちゃんとは見ていないので、チェリーピックなんかで対応できる保証は無いです)

@shgtkshruch
Copy link
Contributor

ツールチップを左側に表示させると見切れる場合には右側に出すということはできないのでしょうか?

dev-ja-hira でカスタムツールチップを実装しましたが、多分できると思います。

あちらはふりがな対応のコードも混ざっているのでそのまま使うのは難しいと思いますが、基本的な仕組みのところは流用できると思います。

@goki90210
Copy link
Contributor Author

モニタリング指標(2)新規陽性者における接触歴等不明率、モニタリング指標(4)重症患者数、モニタリング指標(5)入院患者数については
下側や右側に出る場合があるんですよね。
image

image

image

新規患者に関する報告件数の推移、モニタリング指標(1)新規陽性者数、モニタリング指標(3)週単位の陽性者増加比、モニタリング指標(6)PCR検査の陽性率、モニタリング指標(7)受診相談窓口における相談件数
が常に左側になるようです。

@goki90210
Copy link
Contributor Author

goki90210 commented Jun 29, 2020

dev-ja-hira-rubyはChart.jsのoptions.tooltips.customでカスタマイズをしているのは確認しました。

表示位置のカスタマイズであれば Chart.Tooltip.positionersに新たなモードを追加するか、 Chart.Tooltip.positioners.averageをオーバーライドするかでもできそうですね。

@goki90210
Copy link
Contributor Author

goki90210 commented Jun 30, 2020

Chart.js内のfunction
determineAlignment(tooltip, size)
でどこに表示するか決めていて、canvasの中央か、より左側なら右、canvasの中央より右側なら左に表示するよう定義されています。
(例外はtooltipのオプションで指定された場合はそのオプション通り、左右に表示させた場合にcanvasからはみ出す場合は上または下になります。)

https://stackoverflow.com/questions/43211497/change-tooltip-positioning-in-doughnut-chart-using-chart-js
あたりも参考にはなりそうです。

@goki90210
Copy link
Contributor Author

https://github.com/chartjs/Chart.js/blob/master/src/plugins/plugin.tooltip.js#L331-L334

/**
 * Helper to get the alignment of a tooltip given the size
 */
function determineAlignment(chart, options, size) {

https://github.com/chartjs/Chart.js/blob/master/src/plugins/plugin.tooltip.js#L347-L348

	const midX = (chartArea.left + chartArea.right) / 2;
	const midY = (chartArea.top + chartArea.bottom) / 2;

この値をスクロールするdiv(tooltip._chart.canvas.closest('.scrollable'))のscrollLeft, clientWidth, scrollTop, clientHeightで算出するだけでできそうですが、TypeScript的にどうすべきか…。

@goki90210
Copy link
Contributor Author

…とここまではわかったのですが、customでどう実装すべきかわからなくなってしまいました…。

@kaizumaki
Copy link
Collaborator

こちらは解消されているように思いますので、一旦クローズとさせてください 🙇

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
improvement 改善や新機能の要望
Projects
None yet
Development

No branches or pull requests

4 participants