This plugin allows to use the OpenFlashChart version 2 with Rails.
The idea is to get it as simple and extensible as possible, support future change of open_flash_chart
To support this, I did not reproduce all the OFC attributes on the plugin, just only the basic. All the main attributes are hashes, so if OFC add a new attribute you can add too! and the code still the same!
Initially will only support bar,line and pie graph, but is easy to add support for the other graphs
I built it to solve a problem, not all the problems that we can have in the world ;-)
Inline suport is limiter to only one graph due to the swf callbacks not available yet, but soon we can support more than one.
- Universal Rails-Sinatra-Merb compatible
- More doc
- Support for other graphs
- Label annotation for pies
- May be more specs? mmm
- Add series matcher block to allow any kind of matcher for series
- Avoid to specify the start_date for time series for each serie
- Add periodically_call_remote_graph (rodrigo orrego chileonrails)
- Not support for 2 graphs inline yet.
- Inline graph not compatible with prototype.js
Install this gems before.
Mhash
gem sources -a http://gems.github.com sudo gem install peterpunk-mhash </pre>
cd vendor/plugins git clone git://github.com/peterpunk/open_flash_chart_lazy.git cd .. cd .. rake open_flash_chart_lazy:install
cd vendor git clone git://github.com/peterpunk/open_flash_chart_lazy.git cd .. rake open_flash_chart_lazy:install (no tested)
rake open_flash_chart_lazy:remove
def progress bar_graph = OpenFlashChartLazy::Line.new("The title of the graph") first_serie = OpenFlashChartLazy::Serie.new( [["2008-1",100],["2008-2",120],["2008-3",130]], {:title=>"Argentina",:start_date=>Time.mktime(2008,1,1),:items=>8}) second_serie = OpenFlashChartLazy::Serie.new( [["2008-1",50],["2008-2",40],["2008-3",90]], {:title=>"Tupungato",:start_date=>Time.mktime(2008,1,1),:items=>8}) bar_graph.add_serie(first_serie) bar_graph.add_serie(second_serie) render :text=>bar_graph.to_graph_json end
<%= remote_graph("my_chart",{:route=>"/admin/dashboard/progress"}) %>
def show @pie_chart = OpenFlashChartLazy::Pie.new("Channels") channels=OpenFlashChartLazy::Serie.new([["Wealth",34],["Financial",45]]) @pie_chart.add_serie(channels) end
<%= inline_graph(@pie_chart) %>
All graph attributes are hash in general so you can add what you need and if the open_flash_chart add new parameters, just add them.
bar_graph.x_axis[:labels][:rotate]="vertical" bar_graph.x_axis[:labels][:rotate]="vertical" bar_graph.x_axis[:colour]="#808080" bar_graph.x_axis["grid-colour"]="#A0A0A0" bar_graph.x_axis[:stroke]=1 bar_graph.y_axis[:colour]="#808080" bar_graph.y_axis[:stroke]=1 bar_graph.y_axis["grid-colour"]="#A0A0A0"
You can specify all of them, this is handle by method missing so just use like this.
bar_graph.bg_colour="#FFFFFF"
http://github.com/korin/open_flash_chart_2/tree/master
The ‘Official’ implementationhttp://github.com/markcatley/open_flash_chart/tree/master
Enjoy!
Copyright © 2008 Pedro Visintin, released under the MIT license