ncri-seer 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTORS +4 -0
- data/LICENSE +20 -0
- data/README.rdoc +51 -0
- data/Rakefile +64 -0
- data/init.rb +1 -0
- data/lib/seer.rb +59 -0
- data/lib/seer/area_chart.rb +142 -0
- data/lib/seer/bar_chart.rb +127 -0
- data/lib/seer/chart.rb +60 -0
- data/lib/seer/column_chart.rb +167 -0
- data/lib/seer/gauge.rb +121 -0
- data/lib/seer/line_chart.rb +144 -0
- data/lib/seer/pie_chart.rb +118 -0
- data/spec/area_chart_spec.rb +108 -0
- data/spec/bar_chart_spec.rb +51 -0
- data/spec/chart_spec.rb +62 -0
- data/spec/column_chart_spec.rb +51 -0
- data/spec/custom_matchers.rb +23 -0
- data/spec/gauge_spec.rb +59 -0
- data/spec/helpers.rb +37 -0
- data/spec/line_chart_spec.rb +86 -0
- data/spec/pie_chart_spec.rb +51 -0
- data/spec/seer_spec.rb +134 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +13 -0
- metadata +110 -0
@@ -0,0 +1,118 @@
|
|
1
|
+
module Seer
|
2
|
+
|
3
|
+
# =USAGE
|
4
|
+
#
|
5
|
+
# In your controller:
|
6
|
+
#
|
7
|
+
# @data = Widgets.all # Must be an array of objects that respond to the specidied data method
|
8
|
+
# # (In this example, 'quantity'
|
9
|
+
#
|
10
|
+
# In your view:
|
11
|
+
#
|
12
|
+
# <div id="chart"></div>
|
13
|
+
#
|
14
|
+
# <%= Seer::visualize(
|
15
|
+
# @data,
|
16
|
+
# :as => :pie_chart,
|
17
|
+
# :series => {:series_label => 'name', :data_method => 'quantity'},
|
18
|
+
# :chart_options => {
|
19
|
+
# :height => 300,
|
20
|
+
# :width => 300,
|
21
|
+
# :axis_font_size => 11,
|
22
|
+
# :title => "Widget Quantities",
|
23
|
+
# :point_size => 5,
|
24
|
+
# :is_3_d => true
|
25
|
+
# }
|
26
|
+
# )
|
27
|
+
# -%>
|
28
|
+
#
|
29
|
+
# For details on the chart options, see the Google API docs at
|
30
|
+
# http://code.google.com/apis/visualization/documentation/gallery/piechart.html
|
31
|
+
#
|
32
|
+
class PieChart
|
33
|
+
|
34
|
+
include Seer::Chart
|
35
|
+
|
36
|
+
# Chart options accessors
|
37
|
+
attr_accessor :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
|
38
|
+
|
39
|
+
# Graph data
|
40
|
+
attr_accessor :data, :data_method, :data_table, :label_method
|
41
|
+
|
42
|
+
def initialize(args={}) #:nodoc:
|
43
|
+
|
44
|
+
# Standard options
|
45
|
+
args.each{ |method,arg| self.send("#{method}=",arg) if self.respond_to?(method) }
|
46
|
+
|
47
|
+
# Chart options
|
48
|
+
args[:chart_options].each{ |method, arg| self.send("#{method}=",arg) if self.respond_to?(method) }
|
49
|
+
|
50
|
+
# Handle defaults
|
51
|
+
@colors ||= args[:chart_options][:colors] || DEFAULT_COLORS
|
52
|
+
@legend ||= args[:chart_options][:legend] || DEFAULT_LEGEND_LOCATION
|
53
|
+
@height ||= args[:chart_options][:height] || DEFAULT_HEIGHT
|
54
|
+
@width ||= args[:chart_options][:width] || DEFAULT_WIDTH
|
55
|
+
@is_3_d ||= args[:chart_options][:is_3_d]
|
56
|
+
|
57
|
+
@data_table = []
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
def data_table #:nodoc:
|
62
|
+
data.each_with_index do |datum, column|
|
63
|
+
@data_table << [
|
64
|
+
" Seer.chartsData[chartIndex].setValue(#{column}, 0,'#{datum.send(label_method)}');\r",
|
65
|
+
" Seer.chartsData[chartIndex].setValue(#{column}, 1, #{datum.send(data_method)});\r"
|
66
|
+
]
|
67
|
+
end
|
68
|
+
@data_table
|
69
|
+
end
|
70
|
+
|
71
|
+
def is_3_d #:nodoc:
|
72
|
+
@is_3_d.blank? ? false : @is_3_d
|
73
|
+
end
|
74
|
+
|
75
|
+
def nonstring_options #:nodoc:
|
76
|
+
[:colors, :enable_tooltip, :height, :is_3_d, :legend_font_size, :pie_join_angle, :pie_minimal_angle, :title_font_size, :tooltip_font_size, :tooltip_width, :width]
|
77
|
+
end
|
78
|
+
|
79
|
+
def string_options #:nodoc:
|
80
|
+
[:background_color, :border_color, :focus_border_color, :legend, :legend_background_color, :legend_text_color, :title, :title_color]
|
81
|
+
end
|
82
|
+
|
83
|
+
def to_js #:nodoc:
|
84
|
+
|
85
|
+
%{
|
86
|
+
<script type="text/javascript">
|
87
|
+
google.load('visualization', '1', {'packages':['piechart']});
|
88
|
+
google.setOnLoadCallback(drawChart);
|
89
|
+
function drawChart() {
|
90
|
+
var chartIndex = Seer.chartsCount;
|
91
|
+
Seer.chartsData[chartIndex] = new google.visualization.DataTable();
|
92
|
+
#{data_columns}
|
93
|
+
#{data_table.to_s}
|
94
|
+
var options = {};
|
95
|
+
#{options}
|
96
|
+
var container = document.getElementById('#{self.chart_element}');
|
97
|
+
Seer.charts[chartIndex] = new google.visualization.PieChart(container);
|
98
|
+
Seer.charts[chartIndex].draw(Seer.chartsData[chartIndex], options);
|
99
|
+
Seer.chartsCount += 1;
|
100
|
+
}
|
101
|
+
</script>
|
102
|
+
}
|
103
|
+
end
|
104
|
+
|
105
|
+
def self.render(data, args) #:nodoc:
|
106
|
+
graph = Seer::PieChart.new(
|
107
|
+
:data => data,
|
108
|
+
:label_method => args[:series][:series_label],
|
109
|
+
:data_method => args[:series][:data_method],
|
110
|
+
:chart_options => args[:chart_options],
|
111
|
+
:chart_element => args[:in_element] || 'chart'
|
112
|
+
)
|
113
|
+
graph.to_js
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
@@ -0,0 +1,108 @@
|
|
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
|
@@ -0,0 +1,51 @@
|
|
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
|
data/spec/chart_spec.rb
ADDED
@@ -0,0 +1,62 @@
|
|
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
|
@@ -0,0 +1,51 @@
|
|
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
|
@@ -0,0 +1,23 @@
|
|
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
|
data/spec/gauge_spec.rb
ADDED
@@ -0,0 +1,59 @@
|
|
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
|