Flashでキレイなグラフを生成してくれるOpenFlashChart。
Railsにも、OpenFlashChartをRailsで使用するためのPluginが公開されている。
PullMonkey Projects: Open Flash Chart Plugin for Ruby on Rails - Graphs
簡単にキレイなFlashグラフを生成してくれるけど、困ったことが1つ。
生成したFlashグラフが描画された状態で、JavaScript+CSSの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は透過表示をさせる値となる。