seer 0.9.1 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -38,22 +38,6 @@ rescue LoadError
38
38
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
39
39
  end
40
40
 
41
- require 'spec/rake/spectask'
42
- Spec::Rake::SpecTask.new(:spec) do |spec|
43
- spec.libs << 'lib' << 'spec'
44
- spec.spec_files = FileList['spec/**/*_spec.rb']
45
- end
46
-
47
- Spec::Rake::SpecTask.new(:rcov) do |spec|
48
- spec.libs << 'lib' << 'spec'
49
- spec.pattern = 'spec/**/*_spec.rb'
50
- spec.rcov = true
51
- end
52
-
53
- task :spec => :check_dependencies
54
-
55
- task :default => :spec
56
-
57
41
  require 'rake/rdoctask'
58
42
  Rake::RDocTask.new do |rdoc|
59
43
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
@@ -1,7 +1,7 @@
1
1
  module Seer
2
2
 
3
3
  # =USAGE
4
- #
4
+ #
5
5
  # In your controller:
6
6
  #
7
7
  # @data = Widgets.all # Must be an array, and must respond
@@ -14,7 +14,7 @@ module Seer
14
14
  # <div id="chart"></div>
15
15
  #
16
16
  # <%= Seer::visualize(
17
- # @data,
17
+ # @data,
18
18
  # :as => :area_chart,
19
19
  # :in_element => 'chart',
20
20
  # :series => {
@@ -23,7 +23,7 @@ module Seer
23
23
  # :data_method => 'quantity',
24
24
  # :data_series => @series
25
25
  # },
26
- # :chart_options => {
26
+ # :chart_options => {
27
27
  # :height => 300,
28
28
  # :width => 300,
29
29
  # :axis_font_size => 11,
@@ -34,19 +34,19 @@ module Seer
34
34
  # )
35
35
  # -%>
36
36
  #
37
- # For details on the chart options, see the Google API docs at
37
+ # For details on the chart options, see the Google API docs at
38
38
  # http://code.google.com/apis/visualization/documentation/gallery/areachart.html
39
39
  #
40
40
  class AreaChart
41
-
41
+
42
42
  include Seer::Chart
43
-
43
+
44
44
  # Graph options
45
45
  attr_accessor :axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :data_table, :enable_tooltip, :focus_border_color, :height, :is_stacked, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :number, :tooltip_width, :width
46
-
46
+
47
47
  # Graph data
48
48
  attr_accessor :series_label, :data_label, :data, :data_method, :data_series
49
-
49
+
50
50
  def initialize(args={}) #:nodoc:
51
51
 
52
52
  # Standard options
@@ -55,16 +55,16 @@ module Seer
55
55
  # Chart options
56
56
  args[:chart_options].each{ |method, arg| self.send("#{method}=",arg) if self.respond_to?(method) }
57
57
 
58
- # Handle defaults
58
+ # Handle defaults
59
59
  @colors ||= args[:chart_options][:colors] || DEFAULT_COLORS
60
60
  @legend ||= args[:chart_options][:legend] || DEFAULT_LEGEND_LOCATION
61
61
  @height ||= args[:chart_options][:height] || DEFAULT_HEIGHT
62
62
  @width ||= args[:chart_options][:width] || DEFAULT_WIDTH
63
63
 
64
64
  @data_table = []
65
-
65
+
66
66
  end
67
-
67
+
68
68
  def data_columns #:nodoc:
69
69
  _data_columns = " data.addRows(#{data_rows.size});\r"
70
70
  _data_columns << " data.addColumn('string', 'Date');\r"
@@ -73,7 +73,7 @@ module Seer
73
73
  end
74
74
  _data_columns
75
75
  end
76
-
76
+
77
77
  def data_table #:nodoc:
78
78
  _rows = data_rows
79
79
  _rows.each_with_index do |r,i|
@@ -86,7 +86,7 @@ module Seer
86
86
  end
87
87
  @data_table
88
88
  end
89
-
89
+
90
90
  def data_rows
91
91
  data_series.inject([]) do |rows, element|
92
92
  rows |= element.map { |e| e.send(data_label) }
@@ -96,11 +96,11 @@ module Seer
96
96
  def nonstring_options #:nodoc:
97
97
  [ :axis_font_size, :colors, :enable_tooltip, :height, :is_stacked, :legend_font_size, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width]
98
98
  end
99
-
99
+
100
100
  def string_options #:nodoc:
101
101
  [ :axis_color, :axis_background_color, :background_color, :border_color, :focus_border_color, :legend, :legend_background_color, :legend_text_color, :title, :title_x, :title_y, :title_color ]
102
102
  end
103
-
103
+
104
104
  def to_js #:nodoc:
105
105
 
106
106
  %{
@@ -110,7 +110,7 @@ module Seer
110
110
  function drawChart() {
111
111
  var data = new google.visualization.DataTable();
112
112
  #{data_columns}
113
- #{data_table.to_s}
113
+ #{data_table.join("\r")}
114
114
  var options = {};
115
115
  #{options}
116
116
  var container = document.getElementById('#{self.chart_element}');
@@ -120,7 +120,7 @@ module Seer
120
120
  </script>
121
121
  }
122
122
  end
123
-
123
+
124
124
  def self.render(data, args) #:nodoc:
125
125
  graph = Seer::AreaChart.new(
126
126
  :data => data,
@@ -133,7 +133,7 @@ module Seer
133
133
  )
134
134
  graph.to_js
135
135
  end
136
-
137
- end
136
+
137
+ end
138
138
 
139
139
  end
@@ -42,7 +42,7 @@ module Seer
42
42
  include Seer::Chart
43
43
 
44
44
  # Chart options accessors
45
- attr_accessor :axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :data_table, :enable_tooltip, :focus_border_color, :height, :is_3_d, :is_stacked, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :log_scale, :max, :min, :reverse_axis, :show_categories, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width
45
+ attr_accessor :axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :data_table, :enable_tooltip, :focus_border_color, :font_size, :height, :is_3_d, :is_stacked, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :log_scale, :max, :min, :reverse_axis, :show_categories, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width
46
46
 
47
47
  # Graph data
48
48
  attr_accessor :data, :data_method, :label_method
@@ -97,7 +97,7 @@ module Seer
97
97
  function drawChart() {
98
98
  var data = new google.visualization.DataTable();
99
99
  #{data_columns}
100
- #{data_table.to_s}
100
+ #{data_table.join("\r")}
101
101
  var options = {};
102
102
  #{options}
103
103
  var container = document.getElementById('#{self.chart_element}');
@@ -97,7 +97,7 @@ module Seer
97
97
  function drawChart() {
98
98
  var data = new google.visualization.DataTable();
99
99
  #{data_columns}
100
- #{data_table.to_s}
100
+ #{data_table.join("\r")}
101
101
  var options = {};
102
102
  #{options}
103
103
  var container = document.getElementById('#{self.chart_element}');
@@ -11,13 +11,13 @@ module Seer
11
11
  # <div id="my_geomap_container" class="chart"></div>
12
12
  #
13
13
  # <%= Seer::visualize(
14
- # @widgets,
14
+ # @locations,
15
15
  # :as => :geomap,
16
16
  # :in_element => 'my_geomap_container',
17
17
  # :series => {
18
18
  # :series_label => 'name',
19
19
  # :data_label => '# widgets',
20
- # :data_method => 'quantity'
20
+ # :data_method => 'widget_count'
21
21
  # },
22
22
  # :chart_options => {
23
23
  # :data_mode => 'regions',
@@ -26,7 +26,7 @@ module Seer
26
26
  # )
27
27
  # -%>
28
28
  #
29
- # ==@widgets==
29
+ # ==@locations==
30
30
  #
31
31
  # A collection of objects (ActiveRecord or otherwise) that must respond to the
32
32
  # following methods:
@@ -90,8 +90,7 @@ module Seer
90
90
 
91
91
  def data_table #:nodoc:
92
92
  @data_table = []
93
- data.each_with_index do |datum, column|
94
- next unless datum.geocoded?
93
+ data.select{ |d| d.geocoded? }.each_with_index do |datum, column|
95
94
  if data_mode == "markers"
96
95
  @data_table << [
97
96
  " data.setValue(#{column}, 0, #{datum.latitude});\r",
@@ -130,7 +129,7 @@ module Seer
130
129
  function drawChart() {
131
130
  var data = new google.visualization.DataTable();
132
131
  #{data_columns}
133
- #{data_table.to_s}
132
+ #{data_table.join("\r")}
134
133
  var options = {};
135
134
  #{options}
136
135
  var container = document.getElementById('#{self.chart_element}');
@@ -1,10 +1,10 @@
1
1
  module Seer
2
2
 
3
3
  # =USAGE
4
- #
4
+ #
5
5
  # In your controller:
6
6
  #
7
- # @data = Widgets.all # Must be an array of objects that respond to the specidied data method
7
+ # @data = Widgets.all # Must be an array of objects that respond to the specidied data method
8
8
  # # (In this example, 'quantity'
9
9
  #
10
10
  # @series = @data.map{|w| w.widget_stats} # An array of arrays
@@ -14,7 +14,7 @@ module Seer
14
14
  # <div id="chart"></div>
15
15
  #
16
16
  # <%= Seer::visualize(
17
- # @data,
17
+ # @data,
18
18
  # :as => :line_chart,
19
19
  # :in_element => 'chart',
20
20
  # :series => {
@@ -23,7 +23,7 @@ module Seer
23
23
  # :data_method => 'quantity',
24
24
  # :data_series => @series
25
25
  # },
26
- # :chart_options => {
26
+ # :chart_options => {
27
27
  # :height => 300,
28
28
  # :width => 300,
29
29
  # :axis_font_size => 11,
@@ -34,19 +34,19 @@ module Seer
34
34
  # )
35
35
  # -%>
36
36
  #
37
- # For details on the chart options, see the Google API docs at
37
+ # For details on the chart options, see the Google API docs at
38
38
  # http://code.google.com/apis/visualization/documentation/gallery/linechart.html
39
39
  #
40
40
  class LineChart
41
-
41
+
42
42
  include Seer::Chart
43
-
43
+
44
44
  # Graph options
45
45
  attr_accessor :axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :smooth_line, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :number, :tooltip_width, :width
46
-
46
+
47
47
  # Graph data
48
48
  attr_accessor :data, :data_label, :data_method, :data_series, :data_table, :series_label
49
-
49
+
50
50
  def initialize(args={}) #:nodoc:
51
51
 
52
52
  # Standard options
@@ -55,16 +55,16 @@ module Seer
55
55
  # Chart options
56
56
  args[:chart_options].each{ |method, arg| self.send("#{method}=",arg) if self.respond_to?(method) }
57
57
 
58
- # Handle defaults
58
+ # Handle defaults
59
59
  @colors ||= args[:chart_options][:colors] || DEFAULT_COLORS
60
60
  @legend ||= args[:chart_options][:legend] || DEFAULT_LEGEND_LOCATION
61
61
  @height ||= args[:chart_options][:height] || DEFAULT_HEIGHT
62
62
  @width ||= args[:chart_options][:width] || DEFAULT_WIDTH
63
63
 
64
64
  @data_table = []
65
-
65
+
66
66
  end
67
-
67
+
68
68
  def data_columns #:nodoc:
69
69
  _data_columns = " data.addRows(#{data_rows.size});\r"
70
70
  _data_columns << " data.addColumn('string', 'Date');\r"
@@ -75,7 +75,7 @@ module Seer
75
75
  end
76
76
  _data_columns
77
77
  end
78
-
78
+
79
79
  def data_table #:nodoc:
80
80
  _rows = data_rows
81
81
  _rows.each_with_index do |r,i|
@@ -88,7 +88,7 @@ module Seer
88
88
  end
89
89
  @data_table
90
90
  end
91
-
91
+
92
92
  def data_rows
93
93
  data_series.inject([]) do |rows, element|
94
94
  rows |= element.map { |e| e.send(data_label) }
@@ -98,11 +98,11 @@ module Seer
98
98
  def nonstring_options #:nodoc:
99
99
  [ :axis_font_size, :colors, :enable_tooltip, :height, :legend_font_size, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :smooth_line, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width]
100
100
  end
101
-
101
+
102
102
  def string_options #:nodoc:
103
103
  [ :axis_color, :axis_background_color, :background_color, :border_color, :focus_border_color, :legend, :legend_background_color, :legend_text_color, :title, :title_x, :title_y, :title_color ]
104
104
  end
105
-
105
+
106
106
  def to_js #:nodoc:
107
107
 
108
108
  %{
@@ -112,7 +112,7 @@ module Seer
112
112
  function drawChart() {
113
113
  var data = new google.visualization.DataTable();
114
114
  #{data_columns}
115
- #{data_table.to_s}
115
+ #{data_table * "\r"}
116
116
  var options = {};
117
117
  #{options}
118
118
  var container = document.getElementById('#{self.chart_element}');
@@ -122,9 +122,9 @@ module Seer
122
122
  </script>
123
123
  }
124
124
  end
125
-
125
+
126
126
  # ====================================== Class Methods =========================================
127
-
127
+
128
128
  def self.render(data, args) #:nodoc:
129
129
  graph = Seer::LineChart.new(
130
130
  :data => data,
@@ -137,7 +137,7 @@ module Seer
137
137
  )
138
138
  graph.to_js
139
139
  end
140
-
141
- end
140
+
141
+ end
142
142
 
143
143
  end
@@ -89,7 +89,7 @@ module Seer
89
89
  function drawChart() {
90
90
  var data = new google.visualization.DataTable();
91
91
  #{data_columns}
92
- #{data_table.to_s}
92
+ #{data_table.join("\r")}
93
93
  var options = {};
94
94
  #{options}
95
95
  var container = document.getElementById('#{self.chart_element}');
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 57
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 9
9
- - 1
10
- version: 0.9.1
4
+ prerelease:
5
+ version: 0.10.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Corey Ehmke / SEO Logic
@@ -15,8 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-09-08 00:00:00 -05:00
19
- default_executable:
13
+ date: 2011-09-06 00:00:00 Z
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
16
  name: rspec
@@ -26,11 +20,6 @@ dependencies:
26
20
  requirements:
27
21
  - - ">="
28
22
  - !ruby/object:Gem::Version
29
- hash: 13
30
- segments:
31
- - 1
32
- - 2
33
- - 9
34
23
  version: 1.2.9
35
24
  type: :development
36
25
  version_requirements: *id001
@@ -61,23 +50,12 @@ files:
61
50
  - spec/seer_spec.rb
62
51
  - spec/spec.opts
63
52
  - spec/spec_helper.rb
64
- - spec/area_chart_spec.rb
65
- - spec/bar_chart_spec.rb
66
- - spec/chart_spec.rb
67
- - spec/column_chart_spec.rb
68
- - spec/custom_matchers.rb
69
- - spec/gauge_spec.rb
70
- - spec/geomap_spec.rb
71
- - spec/helpers.rb
72
- - spec/line_chart_spec.rb
73
- - spec/pie_chart_spec.rb
74
- has_rdoc: true
75
53
  homepage: http://github.com/Bantik/seer
76
54
  licenses: []
77
55
 
78
56
  post_install_message:
79
- rdoc_options:
80
- - --charset=UTF-8
57
+ rdoc_options: []
58
+
81
59
  require_paths:
82
60
  - lib
83
61
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -85,36 +63,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
63
  requirements:
86
64
  - - ">="
87
65
  - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
90
- - 0
91
66
  version: "0"
92
67
  required_rubygems_version: !ruby/object:Gem::Requirement
93
68
  none: false
94
69
  requirements:
95
70
  - - ">="
96
71
  - !ruby/object:Gem::Version
97
- hash: 3
98
- segments:
99
- - 0
100
72
  version: "0"
101
73
  requirements: []
102
74
 
103
75
  rubyforge_project:
104
- rubygems_version: 1.3.7
76
+ rubygems_version: 1.8.5
105
77
  signing_key:
106
78
  specification_version: 3
107
79
  summary: Seer is a lightweight, semantically rich wrapper for the Google Visualization API.
108
- test_files:
109
- - spec/area_chart_spec.rb
110
- - spec/bar_chart_spec.rb
111
- - spec/chart_spec.rb
112
- - spec/column_chart_spec.rb
113
- - spec/custom_matchers.rb
114
- - spec/gauge_spec.rb
115
- - spec/geomap_spec.rb
116
- - spec/helpers.rb
117
- - spec/line_chart_spec.rb
118
- - spec/pie_chart_spec.rb
119
- - spec/seer_spec.rb
120
- - spec/spec_helper.rb
80
+ test_files: []
81
+
@@ -1,108 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::AreaChart" do
4
-
5
- before :each do
6
- @chart = Seer::AreaChart.new(
7
- :data => [0,1,2,3],
8
- :series_label => 'to_s',
9
- :data_series => [[1,2,3],[3,4,5]],
10
- :data_label => 'to_s',
11
- :data_method => 'size',
12
- :chart_options => {},
13
- :chart_element => 'chart'
14
- )
15
- end
16
-
17
- describe 'defaults' do
18
- it_should_behave_like 'it sets default values'
19
- end
20
-
21
- describe 'graph options' do
22
-
23
- [:axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :is_stacked, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :number, :tooltip_width, :width].each do |accessor|
24
- it "sets its #{accessor} value" do
25
- @chart.send("#{accessor}=", 'foo')
26
- @chart.send(accessor).should == 'foo'
27
- end
28
- end
29
-
30
- it_should_behave_like 'it has colors attribute'
31
- end
32
-
33
- it 'renders as JavaScript' do
34
- (@chart.to_js =~ /javascript/).should be_true
35
- (@chart.to_js =~ /areachart/).should be_true
36
- end
37
-
38
- it 'sets its data columns' do
39
- @chart.data_columns.should =~ /addRows\(5\)/
40
- @chart.data_columns.should add_column('string', 'Date')
41
- @chart.data_columns.should add_column('number', '0')
42
- @chart.data_columns.should add_column('number', '1')
43
- @chart.data_columns.should add_column('number', '2')
44
- @chart.data_columns.should add_column('number', '3')
45
- end
46
-
47
- it 'sets its data table' do
48
- @chart.data_table.to_s.should set_cell(0, 0,'1')
49
- @chart.data_table.to_s.should set_cell(1, 0,'2')
50
- @chart.data_table.to_s.should set_cell(2, 0,'3')
51
- @chart.data_table.to_s.should set_cell(3, 0,'4')
52
- @chart.data_table.to_s.should set_cell(4, 0,'5')
53
- @chart.data_table.to_s.should set_cell(0,1,8)
54
- @chart.data_table.to_s.should set_cell(2,1,8)
55
- @chart.data_table.to_s.should set_cell(0,2,8)
56
- @chart.data_table.to_s.should set_cell(1,2,8)
57
- @chart.data_table.to_s.should set_cell(2,2,8)
58
- end
59
-
60
- describe 'when data_series is an array of arrays of arrays/hashes' do
61
- before(:each) do
62
- data_series = Array.new(3) {|i| [[i, i+1], [i+1, i+2]]}
63
- @chart = Seer::AreaChart.new(
64
- :data => [0,1,2,3],
65
- :series_label => 'to_s',
66
- :data_series => data_series,
67
- :data_label => 'first',
68
- :data_method => 'size',
69
- :chart_options => {},
70
- :chart_element => 'chart'
71
- )
72
- end
73
-
74
- it 'calculates number of rows' do
75
- @chart.data_columns.should =~ /addRows\(4\)/
76
- end
77
-
78
- it 'sets its data table' do
79
- @chart.data_table.to_s.should set_cell(0, 0,'0')
80
- @chart.data_table.to_s.should set_cell(1, 0,'1')
81
- @chart.data_table.to_s.should set_cell(2, 0,'2')
82
- @chart.data_table.to_s.should set_cell(3, 0,'3')
83
- end
84
- end
85
-
86
- describe 'should receive options' do
87
- before(:each) do
88
- data_series = Array.new(3) {|i| [[i, i+1], [i+1, i+2]]}
89
- @options = {
90
- :data => [0,1,2,3],
91
- :series_label => 'to_s',
92
- :data_series => data_series,
93
- :data_label => 'first',
94
- :data_method => 'size',
95
- :chart_options => {},
96
- :chart_element => 'chart'
97
- }
98
- end
99
-
100
- it 'should receive :is_stacked option' do
101
- create_chart_with_option(:is_stacked => true).to_js.should =~ /options\['isStacked'\] = true/
102
- end
103
- end
104
- end
105
-
106
- def create_chart_with_option(option)
107
- Seer::AreaChart.new(@options.merge(option))
108
- end
@@ -1,51 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::BarChart" do
4
-
5
- before :each do
6
- @chart = Seer::BarChart.new(
7
- :data => [0,1,2,3],
8
- :label_method => 'to_s',
9
- :data_method => 'size',
10
- :chart_options => {},
11
- :chart_element => 'chart'
12
- )
13
- end
14
-
15
- describe 'defaults' do
16
- it_should_behave_like 'it sets default values'
17
- end
18
-
19
- describe 'graph options' do
20
-
21
- [:axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :is_3_d, :is_stacked, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :log_scale, :max, :min, :reverse_axis, :show_categories, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width].each do |accessor|
22
- it "sets its #{accessor} value" do
23
- @chart.send("#{accessor}=", 'foo')
24
- @chart.send(accessor).should == 'foo'
25
- end
26
- end
27
-
28
- it_should_behave_like 'it has colors attribute'
29
- end
30
-
31
- it 'renders as JavaScript' do
32
- (@chart.to_js =~ /javascript/).should be_true
33
- (@chart.to_js =~ /barchart/).should be_true
34
- end
35
-
36
- it 'sets its data columns' do
37
- @chart.data_columns.should =~ /addRows\(4\)/
38
- end
39
-
40
- it 'sets its data table' do
41
- @chart.data_table.to_s.should set_value(0, 0,'0')
42
- @chart.data_table.to_s.should set_value(0, 1, 8)
43
- @chart.data_table.to_s.should set_value(1, 0,'1')
44
- @chart.data_table.to_s.should set_value(1, 1, 8)
45
- @chart.data_table.to_s.should set_value(2, 0,'2')
46
- @chart.data_table.to_s.should set_value(2, 1, 8)
47
- @chart.data_table.to_s.should set_value(3, 0,'3')
48
- @chart.data_table.to_s.should set_value(3, 1, 8)
49
- end
50
-
51
- end
@@ -1,62 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::Chart" do
4
-
5
- before :all do
6
- @chart = Seer::AreaChart.new(
7
- :data => [0,1,2,3],
8
- :series_label => 'to_s',
9
- :data_series => [[1,2,3],[3,4,5]],
10
- :data_label => 'to_s',
11
- :data_method => 'size',
12
- :chart_options => {
13
- :legend => 'right',
14
- :title_x => 'Something'
15
- },
16
- :chart_element => 'chart'
17
- )
18
- end
19
-
20
- it 'sets the chart element' do
21
- @chart.in_element = 'foo'
22
- @chart.chart_element.should == 'foo'
23
- end
24
-
25
- describe 'sets colors' do
26
-
27
- it 'accepting valid values' do
28
- @chart.colors = ["#ff0000", "#00ff00"]
29
- @chart.colors.should == ["#ff0000", "#00ff00"]
30
- end
31
-
32
- it 'raising an error on invalid values' do
33
- lambda do
34
- @chart.colors = 'fred'
35
- end.should raise_error(ArgumentError)
36
- lambda do
37
- @chart.colors = [0,1,2]
38
- end.should raise_error(ArgumentError)
39
- end
40
-
41
- end
42
-
43
- it 'formats colors' do
44
- @chart.colors = ["#ff0000"]
45
- @chart.formatted_colors.should == "['ff0000']"
46
- end
47
-
48
- it 'sets its data columns' do
49
- @chart.data_columns.should =~ /addRows\(5\)/
50
- @chart.data_columns.should =~ /addColumn\('string', 'Date'\)/
51
- @chart.data_columns.should =~ /addColumn\('number', '0'\)/
52
- @chart.data_columns.should =~ /addColumn\('number', '1'\)/
53
- @chart.data_columns.should =~ /addColumn\('number', '2'\)/
54
- @chart.data_columns.should =~ /addColumn\('number', '3'\)/
55
- end
56
-
57
- it 'sets its options' do
58
- @chart.options.should =~ /options\['titleX'\] = 'Something'/
59
- end
60
-
61
-
62
- end
@@ -1,51 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::ColumnChart" do
4
-
5
- before :each do
6
- @chart = Seer::ColumnChart.new(
7
- :data => [0,1,2,3],
8
- :label_method => 'to_s',
9
- :data_method => 'size',
10
- :chart_options => {},
11
- :chart_element => 'chart'
12
- )
13
- end
14
-
15
- describe 'defaults' do
16
- it_should_behave_like 'it sets default values'
17
- end
18
-
19
- describe 'graph options' do
20
-
21
- [:axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :is_3_d, :is_stacked, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :log_scale, :max, :min, :reverse_axis, :show_categories, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width].each do |accessor|
22
- it "sets its #{accessor} value" do
23
- @chart.send("#{accessor}=", 'foo')
24
- @chart.send(accessor).should == 'foo'
25
- end
26
- end
27
-
28
- it_should_behave_like 'it has colors attribute'
29
- end
30
-
31
- it 'renders as JavaScript' do
32
- (@chart.to_js =~ /javascript/).should be_true
33
- (@chart.to_js =~ /columnchart/).should be_true
34
- end
35
-
36
- it 'sets its data columns' do
37
- @chart.data_columns.should =~ /addRows\(4\)/
38
- end
39
-
40
- it 'sets its data table' do
41
- @chart.data_table.to_s.should set_value(0, 0,'0')
42
- @chart.data_table.to_s.should set_value(0, 1, 8)
43
- @chart.data_table.to_s.should set_value(1, 0,'1')
44
- @chart.data_table.to_s.should set_value(1, 1, 8)
45
- @chart.data_table.to_s.should set_value(2, 0,'2')
46
- @chart.data_table.to_s.should set_value(2, 1, 8)
47
- @chart.data_table.to_s.should set_value(3, 0,'3')
48
- @chart.data_table.to_s.should set_value(3, 1, 8)
49
- end
50
-
51
- end
@@ -1,23 +0,0 @@
1
- module CustomMatcher
2
- def set_cell(row, column, value)
3
- value = "'#{value}'" if value.is_a?(String)
4
-
5
- simple_matcher("setCell(#{row}, #{column}, #{value})") do |actual|
6
- actual =~ /data\.setCell\(#{row},\s*#{column},\s*#{value}\)/
7
- end
8
- end
9
-
10
- def set_value(row, column, value)
11
- value = "'#{value}'" if value.is_a?(String)
12
-
13
- simple_matcher("setValue(#{row}, #{column}, #{value})") do |actual|
14
- actual =~ /data\.setValue\(#{row},\s*#{column},\s*#{value}\)/
15
- end
16
- end
17
-
18
- def add_column(column_type, value)
19
- simple_matcher("addColumn('#{column_type}', '#{value}')") do |actual|
20
- actual =~ /data\.addColumn\('#{column_type}',\s*'#{value}'\)/
21
- end
22
- end
23
- end
@@ -1,59 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::Gauge" do
4
-
5
- before :each do
6
- @chart = Seer::Gauge.new(
7
- :data => [0,1,2,3],
8
- :label_method => 'to_s',
9
- :data_method => 'size',
10
- :chart_options => {},
11
- :chart_element => 'chart'
12
- )
13
- end
14
-
15
- describe 'defaults' do
16
-
17
- it 'height' do
18
- @chart.height.should == Seer::Chart::DEFAULT_HEIGHT
19
- end
20
-
21
- it 'width' do
22
- @chart.width.should == Seer::Chart::DEFAULT_WIDTH
23
- end
24
-
25
- end
26
-
27
- describe 'graph options' do
28
-
29
- [:green_from, :green_to, :height, :major_ticks, :max, :min, :minor_ticks, :red_from, :red_to, :width, :yellow_from, :yellow_to].each do |accessor|
30
- it "sets its #{accessor} value" do
31
- @chart.send("#{accessor}=", 'foo')
32
- @chart.send(accessor).should == 'foo'
33
- end
34
- end
35
-
36
- it_should_behave_like 'it has colors attribute'
37
- end
38
-
39
- it 'renders as JavaScript' do
40
- (@chart.to_js =~ /javascript/).should be_true
41
- (@chart.to_js =~ /gauge/).should be_true
42
- end
43
-
44
- it 'sets its data columns' do
45
- @chart.data_columns.should =~ /addRows\(4\)/
46
- end
47
-
48
- it 'sets its data table' do
49
- @chart.data_table.to_s.should set_value(0, 0,'0')
50
- @chart.data_table.to_s.should set_value(0, 1, 8)
51
- @chart.data_table.to_s.should set_value(1, 0,'1')
52
- @chart.data_table.to_s.should set_value(1, 1, 8)
53
- @chart.data_table.to_s.should set_value(2, 0,'2')
54
- @chart.data_table.to_s.should set_value(2, 1, 8)
55
- @chart.data_table.to_s.should set_value(3, 0,'3')
56
- @chart.data_table.to_s.should set_value(3, 1, 8)
57
- end
58
-
59
- end
@@ -1,67 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::Geomap" do
4
-
5
- before :each do
6
-
7
- class GeoThing
8
- def initialize; end
9
- def name; 'foo'; end
10
- def latitude; -90; end
11
- def longitude; -90; end
12
- def count; 8; end
13
- def geocoded?; true; end
14
- end
15
-
16
- @chart = Seer::Geomap.new(
17
- :data => [GeoThing.new, GeoThing.new, GeoThing.new],
18
- :label_method => 'name',
19
- :data_method => 'count',
20
- :chart_options => {},
21
- :chart_element => 'geochart'
22
- )
23
- end
24
-
25
- describe 'defaults' do
26
-
27
- it 'height' do
28
- @chart.height.should == Seer::Chart::DEFAULT_HEIGHT
29
- end
30
-
31
- it 'width' do
32
- @chart.width.should == Seer::Chart::DEFAULT_WIDTH
33
- end
34
-
35
- end
36
-
37
- describe 'graph options' do
38
-
39
- [:show_zoom_out, :zoom_out_label].each do |accessor|
40
- it "sets its #{accessor} value" do
41
- @chart.send("#{accessor}=", 'foo')
42
- @chart.send(accessor).should == 'foo'
43
- end
44
- end
45
-
46
- it_should_behave_like 'it has colors attribute'
47
- end
48
-
49
- it 'renders as JavaScript' do
50
- (@chart.to_js =~ /javascript/).should be_true
51
- (@chart.to_js =~ /geomap/).should be_true
52
- end
53
-
54
- it 'sets its data columns' do
55
- @chart.data_columns.should =~ /addRows\(3\)/
56
- end
57
-
58
- it 'sets its data table' do
59
- @chart.data_table.to_s.should set_value(0, 0,'foo')
60
- @chart.data_table.to_s.should set_value(0, 1, 8)
61
- @chart.data_table.to_s.should set_value(1, 0,'foo')
62
- @chart.data_table.to_s.should set_value(1, 1, 8)
63
- @chart.data_table.to_s.should set_value(2, 0,'foo')
64
- @chart.data_table.to_s.should set_value(2, 1, 8)
65
- end
66
-
67
- end
@@ -1,37 +0,0 @@
1
- describe "it has colors attribute", :shared => true do
2
- it 'sets its colors value' do
3
- color_list = ['#7e7587','#990000','#009900', '#3e5643', '#660000', '#003300']
4
- @chart.colors = color_list
5
- @chart.colors.should == color_list
6
- end
7
-
8
- it 'colors should be an array' do
9
- lambda {
10
- @chart.colors = '#000000'
11
- }.should raise_error(ArgumentError)
12
- end
13
-
14
- it 'colors should be valid hex values' do
15
- lambda {
16
- @chart.colors = ['#000000', 'NOTHEX']
17
- }.should raise_error(ArgumentError)
18
- end
19
- end
20
-
21
- describe "it sets default values", :shared => true do
22
- it 'colors' do
23
- @chart.colors.should == Seer::Chart::DEFAULT_COLORS
24
- end
25
-
26
- it 'legend' do
27
- @chart.legend.should == Seer::Chart::DEFAULT_LEGEND_LOCATION
28
- end
29
-
30
- it 'height' do
31
- @chart.height.should == Seer::Chart::DEFAULT_HEIGHT
32
- end
33
-
34
- it 'width' do
35
- @chart.width.should == Seer::Chart::DEFAULT_WIDTH
36
- end
37
- end
@@ -1,86 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::LineChart" do
4
-
5
- before :each do
6
- @chart = Seer::LineChart.new(
7
- :data => [0,1,2,3],
8
- :series_label => 'to_s',
9
- :data_series => [[1,2,3],[3,4,5]],
10
- :data_label => 'to_s',
11
- :data_method => 'size',
12
- :chart_options => {},
13
- :chart_element => 'chart'
14
- )
15
- end
16
-
17
- describe 'defaults' do
18
- it_should_behave_like 'it sets default values'
19
- end
20
-
21
- describe 'graph options' do
22
-
23
- [:axis_color, :axis_background_color, :axis_font_size, :background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :line_size, :log_scale, :max, :min, :point_size, :reverse_axis, :show_categories, :smooth_line, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :number, :tooltip_width, :width].each do |accessor|
24
- it "sets its #{accessor} value" do
25
- @chart.send("#{accessor}=", 'foo')
26
- @chart.send(accessor).should == 'foo'
27
- end
28
- end
29
-
30
- it_should_behave_like 'it has colors attribute'
31
- end
32
-
33
- it 'renders as JavaScript' do
34
- (@chart.to_js =~ /javascript/).should be_true
35
- (@chart.to_js =~ /linechart/).should be_true
36
- end
37
-
38
- it 'sets its data columns' do
39
- @chart.data_columns.should =~ /addRows\(5\)/
40
- @chart.data_columns.should add_column('string', 'Date')
41
- @chart.data_columns.should add_column('number', '0')
42
- @chart.data_columns.should add_column('number', '1')
43
- @chart.data_columns.should add_column('number', '2')
44
- @chart.data_columns.should add_column('number', '3')
45
- end
46
-
47
- it 'sets its data table' do
48
- @chart.data_table.to_s.should set_cell(0, 0,'1')
49
- @chart.data_table.to_s.should set_cell(1, 0,'2')
50
- @chart.data_table.to_s.should set_cell(2, 0,'3')
51
- @chart.data_table.to_s.should set_cell(3, 0,'4')
52
- @chart.data_table.to_s.should set_cell(4, 0,'5')
53
- @chart.data_table.to_s.should set_cell(0,1,8)
54
- @chart.data_table.to_s.should set_cell(2,1,8)
55
- @chart.data_table.to_s.should set_cell(0,2,8)
56
- @chart.data_table.to_s.should set_cell(1,2,8)
57
- @chart.data_table.to_s.should set_cell(2,2,8)
58
- end
59
-
60
- describe 'when data_series is an array of arrays of arrays/hashes' do
61
- before(:each) do
62
- data_series = Array.new(3) {|i| [[i, i+1], [i+1, i+2]]}
63
- @chart = Seer::LineChart.new(
64
- :data => [0,1,2,3],
65
- :series_label => 'to_s',
66
- :data_series => data_series,
67
- :data_label => 'first',
68
- :data_method => 'size',
69
- :chart_options => {},
70
- :chart_element => 'chart'
71
- )
72
- end
73
-
74
- it 'calculates number of rows' do
75
- @chart.data_columns.should =~ /addRows\(4\)/
76
- end
77
-
78
- it 'sets its data table' do
79
- @chart.data_table.to_s.should set_cell(0, 0,'0')
80
- @chart.data_table.to_s.should set_cell(1, 0,'1')
81
- @chart.data_table.to_s.should set_cell(2, 0,'2')
82
- @chart.data_table.to_s.should set_cell(3, 0,'3')
83
- end
84
- end
85
-
86
- end
@@ -1,51 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Seer::PieChart" do
4
-
5
- before :each do
6
- @chart = Seer::PieChart.new(
7
- :data => [0,1,2,3],
8
- :label_method => 'to_s',
9
- :data_method => 'size',
10
- :chart_options => {},
11
- :chart_element => 'chart'
12
- )
13
- end
14
-
15
- describe 'defaults' do
16
- it_should_behave_like 'it sets default values'
17
- end
18
-
19
- describe 'graph options' do
20
-
21
- [:background_color, :border_color, :enable_tooltip, :focus_border_color, :height, :is_3_d, :legend, :legend_background_color, :legend_font_size, :legend_text_color, :pie_join_angle, :pie_minimal_angle, :title, :title_x, :title_y, :title_color, :title_font_size, :tooltip_font_size, :tooltip_height, :tooltip_width, :width].each do |accessor|
22
- it "sets its #{accessor} value" do
23
- @chart.send("#{accessor}=", 'foo')
24
- @chart.send(accessor).should == 'foo'
25
- end
26
- end
27
-
28
- it_should_behave_like 'it has colors attribute'
29
- end
30
-
31
- it 'renders as JavaScript' do
32
- (@chart.to_js =~ /javascript/).should be_true
33
- (@chart.to_js =~ /piechart/).should be_true
34
- end
35
-
36
- it 'sets its data columns' do
37
- @chart.data_columns.should =~ /addRows\(4\)/
38
- end
39
-
40
- it 'sets its data table' do
41
- @chart.data_table.to_s.should set_value(0, 0,'0')
42
- @chart.data_table.to_s.should set_value(0, 1, 8)
43
- @chart.data_table.to_s.should set_value(1, 0,'1')
44
- @chart.data_table.to_s.should set_value(1, 1, 8)
45
- @chart.data_table.to_s.should set_value(2, 0,'2')
46
- @chart.data_table.to_s.should set_value(2, 1, 8)
47
- @chart.data_table.to_s.should set_value(3, 0,'3')
48
- @chart.data_table.to_s.should set_value(3, 1, 8)
49
- end
50
-
51
- end