This Ruby gem, GoogleVisualr, is a wrapper around the Google Chart Tools that allows anyone to create the same beautiful charts with just plain Ruby.
You don’t have to write any JavaScript at all!
Good for any Ruby on Rails setup whereby you prefer to work your logic in models or controllers.
Please refer to the GoogleVisualr API Reference site for a complete list of Google charts that you can create with GoogleVisualr.
-
In your model or controller, write Ruby code to create your chart (e.g. Area Chart, Bar Chart, even Spark Lines etc).
-
Configure your chart with any of the options as listed in Google Chart Tools’ API Docs. E.g. Area Chart’s Configuration Options.
-
In your view, invoke a chart.to_js(div_id) method and that will magically generate and insert JavaScript into the final HTML output.
-
You get your awesome Google chart, and you didn’t write any JavaScript!
GoogleVisualr is created solely for the aim of simplifying the display of a chart, and not the interactions.
Hence, do note that GoogleVisualr is not a 100% complete wrapper for Google Chart Tools.
For example, Methods and Events as described in Google Chart Tools’ API Docs - for use after a chart has been rendered, are not implemented because they feel more natural being written as JavaScript functions, within views or .js files.
Assuming you are on Rails 3, include the gem in your Gemfile.
gem "google_visualr", ">= 2.1"
This section describes a basic implementation of the GoogleVisualr::DataTable and GoogleVisualr::AreaChart classes.
For detailed documentation and advanced implementations, please refer to the GoogleVisualr API Reference site or read the source.
In your Rails layout, load Google Ajax API in the head tag, at the very top.
<script src='https://www.google.com/jsapi'></script>
In your Rails controller, initialize a GoogleVisualr::DataTable object with an empty constructor.
data_table = GoogleVisualr::DataTable.new
Populate data_table with column headers, and row values.
# Add Column Headers data_table.new_column('string', 'Year' ) data_table.new_column('number', 'Sales') data_table.new_column('number', 'Expenses') # Add Rows and Values data_table.add_rows([ ['2004', 1000, 400], ['2005', 1170, 460], ['2006', 660, 1120], ['2007', 1030, 540] ])
Create a GoogleVisualr::AreaChart with data_table and configuration options.
option = { width: 400, height: 240, title: 'Company Performance' } @chart = GoogleVisualr::Interactive::AreaChart.new(data_table, option)
In your Rails view, render the Google chart.
<div id='chart'></div> <%= render_chart(@chart, 'chart') %>
Please submit all feedback, bugs and feature-requests to GitHub Issues Tracker.
Feel free to fork the project, make improvements or bug fixes and submit pull requests (with tests!).
I would like to collect some data about who’s using this Gem. Please drop me a line and I may put up the link here.
Version 2.1.7
-
Issue 56 Typecast to proper JSON strings.
Version 2.1.6
-
Issue 54 Allow apostrophes in labels.
-
Pull Request 55 Added support to accept BigDecimal as number.
Version 2.1.5
-
Pull Request 48 Fixed bug with Listener event registration.
Version 2.1.4
-
Pull Request 39 Added ability to use Listeners.
-
Pull Request 40 Allowed decoupling of class name and chart name.
Version 2.1.3
-
Added support for Bubble Chart.
-
Pull Request 37 Added support for Stepped Area Chart.
Version 2.1.2
-
Pull Request 28 Removed InstanceMethods as it’s deprecated in Rails 3.2.x.
-
Pull Request 26 Added 3 more image charts and #uri method to all image charts.
Version 2.1.1
-
Added support for
role
andpattern
attributes in#new_column
and#new_columns
methods.
Version 2.1.0
-
Added
#render_chart
as a helper method in Rails views.
Gem
-
is Rails 3 compatible.
-
implements many of the newer versions of Google Charts E.g. Core Charts.
-
enjoyed a major refactoring, and also now has Tests!
Plugin
-
has not been tested for Rails 3 compatibility
-
implements the older versions of Google Charts.
-
has deprecated methods.
This gem, however, is not a drop-in replacement for the plugin, as there are numerous changes in its usage.
Notably, you will have to interact mostly with GoogleVisualr::DataTable which was absent in the plugin.
GoogleVisualr is maintained by Winston Teo.
Who is Winston Teo? You should follow Winston on Twitter, or find out more on WinstonYW and LinkedIn.
Copyright © 2012 Winston Teo Yong Wei. Free software, released under the MIT license.