WordPress管理画面にD3でグラフを描画する時のツールチップに関するTips

なんのことやらわからないようなタイトルですが、要はこういうことやりたい時の覚書です。

D3でグラフを描いて、ツールチップで数値を観れるようにする

D3でグラフを描いて、ツールチップで数値を観れるようにする

描画自体はD3.jsでSVGのグラフにツールチップを付ける方法3選の「CSSとマウスイベントを用いた方法」を使っています。

WordPress管理画面だと起きるトラブル

で、さっきの記事のコードをそのままwp-adminページに入れればいいかというとそういうわけでもなく、ツールチップが明後日の方向に表示されます。

明後日の方向にチップを出してくる・・・

違う、そこじゃない

元記事のコードのままというか、event.pageXの値をそのままleftに使うとサイドバーの横幅分右に
出てしまう様子です。

ということでサイドバーが表示されている時は表示位置を補正するようにしておきます。
[javascript]
var tipMove = function(d) {
var X = event.pageX;
var sidePanel = jQuery(‘#adminmenuwrap’);
if ( ‘none’ != sidePanel.css( ‘display’ ) ) {
X -= sidePanel.width();
}
var Y = event.pageY – 20;
return tooltip.style( "top", Y + "px" ).style( "left" , X + "px" );
}

svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr({
x: 0,
y: function(d,i){ return i*30; },
width: function(d){ return d; },
height: 20,
fill: "green",
})
.on("mouseover", function(d){return tooltip.style("visibility", "visible").text(d);})
.on("mousemove", tipMove )
.on("mouseout", function(d){return tooltip.style("visibility", "hidden");})
[/javascript]

.on("mousemove"の部分を切り出してサイドバーが表示されている場合はサイドバーの横幅分leftの値を補正するようにしています。

今のところこれで問題なく動いている様子なので、覚書を残して様子見。

Follow me!

Okamoto Hidetaka
デジタルキューブのインフラエンジニア。勉強会に和太鼓の練習から直行することが多く「太鼓の人」とかよばれてます。 思いつきで公式ディレクトリにテーマやプラグインをアップしたりテーマレビューやったりしています。 AWS / WordPress / LinkedOpenData周りで活動していて、APIをどうこうして何か作るというのが多いです。 ひとこと
mautic is open source marketing automation