読者です 読者をやめる 読者になる 読者になる

Develop with pleasure!

福岡でCloudとかBlockchainとか。

OpenFlashChartⅡでwmodeを指定する。

Rails

Flashでキレイなグラフを生成してくれるOpenFlashChart。
Railsにも、OpenFlashChartをRailsで使用するためのPluginが公開されている。
PullMonkey Projects: Open Flash Chart Plugin for Ruby on Rails - Graphs

簡単にキレイなFlashグラフを生成してくれるけど、困ったことが1つ。
生成したFlashグラフが描画された状態で、JavaScriptCSSのDialogを表示すると、FlashのグラフがDialogより優先されて表示されてしまう。そのDialog内にさらに、OFCで生成したグラフを生成しているが、そのグラフよりも元々のグラフが上位として描画されてしまう…。

z-indexの指定をしてもこれは直らないようで、描画するFlashにwmodeを指定する必要がある。

OFCⅡのRailsプラグインの場合は、open_flash_chart_object.rbというファイルがあるので、その中のget_htmlというメソッドの

<script type="text/javascript">
    swfobject.embedSWF("#{base}#{swf_file_name}", "#{div_name}", "#{width}", "#{height}", "9.0.0", "expressInstall.swf",{"data-file":"#{url}"});
</script>


というコードのswfobject.embedSWFの関数コールの際にwmodeを指定するコードを追記する。
こんな感じ↓

<script type="text/javascript">
    swfobject.embedSWF("#{base}#{swf_file_name}", "#{div_name}", "#{width}", "#{height}", "9.0.0", "expressInstall.swf",{"data-file":"#{url}"}, {"wmode":"transparent"});
</script>


これで解決する。一応、ofc_ajax.rbというファイルにもswfobject.embedSWFの関数コールがあるので同様に修正しといた方が良いかも。

wmodeは、Flashの背景を透過させるかどうかのオプションで、transparentは透過表示をさせる値となる。