Skip to content

Commit

Permalink
Adds locale option as described in https://google-developers.appspot.…
Browse files Browse the repository at this point in the history
  • Loading branch information
winston committed Aug 26, 2015
1 parent cf9af52 commit 7b094bb
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
5 changes: 3 additions & 2 deletions lib/google_visualr/base_chart.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ class BaseChart

DEFAULT_VERSION = "1.0".freeze

attr_accessor :data_table, :listeners, :version, :material
attr_accessor :data_table, :listeners, :version, :language, :material

def initialize(data_table, options={})
@data_table = data_table
@listeners = []
@version = options.delete(:version) || DEFAULT_VERSION
@language = options.delete(:language) || "en"
@material = options.delete(:material) || false
send(:options=, options)
end
Expand Down Expand Up @@ -73,7 +74,7 @@ def to_js(element_id)
# Parameters:
# *div_id [Required] The ID of the DIV element that the Google Chart should be rendered in.
def load_js(element_id)
"\n google.load('visualization','#{version}', {packages: ['#{package_name}'], callback: #{chart_function_name(element_id)}});"
"\n google.load('visualization', '#{version}', {packages: ['#{package_name}'], language: '#{language}', callback: #{chart_function_name(element_id)}});"
end

# Generates JavaScript function for rendering the chart.
Expand Down
20 changes: 18 additions & 2 deletions spec/google_visualr/base_chart_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,18 @@
@chart.options.should == { "legend" => "Test Chart", "width" => 800, "is3D" => true }
end

it "accepts material and version attributes" do
@chart = GoogleVisualr::BaseChart.new(@dt, { :version => "1.1", :material => true })
it "accepts version attribute" do
@chart = GoogleVisualr::BaseChart.new(@dt, version: "1.1")
@chart.version.should == "1.1"
end

it "accepts language attribute" do
@chart = GoogleVisualr::BaseChart.new(@dt, language: "ja")
@chart.language.should == "ja"
end

it "accepts material attribute" do
@chart = GoogleVisualr::BaseChart.new(@dt, material: true)
@chart.material.should == true
end
end
Expand Down Expand Up @@ -89,6 +98,13 @@
js.should include("<script")
end

it "generates JS of a different locale" do
@chart.language = "ja"

js = @chart.to_js("body")
js.should == base_chart_js("body", "ja")
end

it "generates JS with listeners" do
@chart.add_listener("select", "function() {test_event(chart);}")

Expand Down
14 changes: 7 additions & 7 deletions spec/support/common.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ def base_chart(data_table = data_table())
GoogleVisualr::BaseChart.new(data_table, { :legend => "Test Chart", :width => 800, :is3D => true })
end

def base_chart_js_without_script_tag(div_class="div_class")
js = "\n google.load('visualization','1.0', {packages: ['basechart'], callback: draw_#{div_class}});"
def base_chart_js_without_script_tag(div_class = "div_class", language = "en")
js = "\n google.load('visualization', '1.0', {packages: ['basechart'], language: '#{language}', callback: draw_#{div_class}});"
js << "\n function draw_#{div_class}() {"
js << "\n var data_table = new google.visualization.DataTable();data_table.addColumn({\"type\":\"string\",\"label\":\"Year\"});data_table.addColumn({\"type\":\"number\",\"label\":\"Sales\"});data_table.addColumn({\"type\":\"number\",\"label\":\"Expenses\"});data_table.addRow([{v: \"2004\"}, {v: 1000}, {v: 400}]);data_table.addRow([{v: \"2005\"}, {v: 1200}, {v: 450}]);data_table.addRow([{v: \"2006\"}, {v: 1500}, {v: 600}]);data_table.addRow([{v: \"2007\"}, {v: 800}, {v: 500}]);\n var chart = new google.visualization.BaseChart(document.getElementById('#{div_class}'));"
js << "\n chart.draw(data_table, {legend: \"Test Chart\", width: 800, is3D: true});"
js << "\n };"
end

def base_chart_js(div_class="div_class")
def base_chart_js(div_class = "div_class", language = "en")
js = "\n<script type='text/javascript'>"
js << base_chart_js_without_script_tag(div_class)
js << base_chart_js_without_script_tag(div_class, language)
js << "\n</script>"
end

def base_chart_with_listener_js(div_class="div_class")
def base_chart_with_listener_js(div_class = "div_class")
js = "\n<script type='text/javascript'>"
js << "\n google.load('visualization','1.0', {packages: ['basechart'], callback: draw_#{div_class}});"
js << "\n google.load('visualization', '1.0', {packages: ['basechart'], language: 'en', callback: draw_#{div_class}});"
js << "\n function draw_#{div_class}() {"
js << "\n var data_table = new google.visualization.DataTable();data_table.addColumn({\"type\":\"string\",\"label\":\"Year\"});data_table.addColumn({\"type\":\"number\",\"label\":\"Sales\"});data_table.addColumn({\"type\":\"number\",\"label\":\"Expenses\"});data_table.addRow([{v: \"2004\"}, {v: 1000}, {v: 400}]);data_table.addRow([{v: \"2005\"}, {v: 1200}, {v: 450}]);data_table.addRow([{v: \"2006\"}, {v: 1500}, {v: 600}]);data_table.addRow([{v: \"2007\"}, {v: 800}, {v: 500}]);\n var chart = new google.visualization.BaseChart(document.getElementById('#{div_class}'));"
js << "\n google.visualization.events.addListener(chart, 'select', function() {test_event(chart);});"
Expand All @@ -44,7 +44,7 @@ def base_chart_with_listener_js(div_class="div_class")

def material_chart(div_class = "div_class")
js = "\n<script type='text/javascript'>"
js << "\n google.load('visualization','1.0', {packages: ['basechart'], callback: draw_#{div_class}});"
js << "\n google.load('visualization', '1.0', {packages: ['basechart'], language: 'en', callback: draw_#{div_class}});"
js << "\n function draw_#{div_class}() {"
js << "\n var data_table = new google.visualization.DataTable();data_table.addColumn({\"type\":\"string\",\"label\":\"Year\"});data_table.addColumn({\"type\":\"number\",\"label\":\"Sales\"});data_table.addColumn({\"type\":\"number\",\"label\":\"Expenses\"});data_table.addRow([{v: \"2004\"}, {v: 1000}, {v: 400}]);data_table.addRow([{v: \"2005\"}, {v: 1200}, {v: 450}]);data_table.addRow([{v: \"2006\"}, {v: 1500}, {v: 600}]);data_table.addRow([{v: \"2007\"}, {v: 800}, {v: 500}]);\n var chart = new google.charts.Base(document.getElementById('#{div_class}'));"
js << "\n chart.draw(data_table, {legend: \"Test Chart\", width: 800, is3D: true});"
Expand Down

0 comments on commit 7b094bb

Please sign in to comment.