gerbilcharts 0.5.9 → 0.6.8
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/{License.txt → LICENSE.txt} +0 -0
- data/{README.txt → README.rdoc} +0 -0
- data/lib/gerbilcharts/charts.rb +2 -0
- data/lib/gerbilcharts/charts/chart_base.rb +1 -1
- data/lib/gerbilcharts/charts/line_chart_table.rb +38 -0
- data/lib/gerbilcharts/charts/stacked_area_chart_table.rb +31 -0
- data/lib/gerbilcharts/models/bucketized_timeseries_graph_model.rb +10 -7
- data/lib/gerbilcharts/models/graph_model_group.rb +1 -1
- data/lib/gerbilcharts/models/presets.rb +2 -2
- data/lib/gerbilcharts/models/raw_range.rb +1 -0
- data/lib/gerbilcharts/surfaces/area_surface.rb +46 -39
- data/lib/gerbilcharts/surfaces/conversation_ring.rb +7 -3
- data/lib/gerbilcharts/surfaces/detailed_legend.rb +15 -4
- data/lib/gerbilcharts/surfaces/impulse_surface.rb +10 -4
- data/lib/gerbilcharts/surfaces/line_surface.rb +31 -34
- data/lib/gerbilcharts/surfaces/square_line_surface.rb +27 -30
- data/lib/gerbilcharts/surfaces/surface.rb +27 -1
- data/lib/gerbilcharts/svgdc/svg_polygon.rb +14 -7
- data/lib/gerbilcharts/svgdc/svg_polyline.rb +8 -2
- data/lib/gerbilcharts/svgdc/svgdc.rb +8 -0
- data/lib/gerbilcharts/version.rb +2 -2
- metadata +118 -97
- data/History.txt +0 -105
- data/Manifest.txt +0 -92
- data/PostInstall.txt +0 -2
- data/Rakefile +0 -4
- data/lib/gerbilcharts/public/brushmetal.css +0 -284
- data/lib/gerbilcharts/public/gerbil.js +0 -421
- data/setup.rb +0 -1585
- data/test/test_Scratch.rb +0 -21
- data/test/test_bar.rb +0 -39
- data/test/test_bubble.rb +0 -52
- data/test/test_charts.rb +0 -122
- data/test/test_conversation.rb +0 -34
- data/test/test_embed_styles.rb +0 -35
- data/test/test_gerbilcharts.rb +0 -11
- data/test/test_helper.rb +0 -2
- data/test/test_lines.rb +0 -46
- data/test/test_matrix.rb +0 -34
- data/test/test_models.rb +0 -118
- data/test/test_negatives.rb +0 -39
- data/test/test_noob.rb +0 -86
- data/test/test_pie.rb +0 -43
- data/test/test_ranges.rb +0 -169
- data/test/test_render_string.rb +0 -38
- data/test/test_sa.rb +0 -88
- data/test/test_scaling.rb +0 -57
- data/test/test_svgdc.rb +0 -221
- data/test/trafgen.rb +0 -25
data/test/test_scaling.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
require 'trafgen'
|
4
|
-
|
5
|
-
# Test scaling options :auto, :auto_0, [min,max]
|
6
|
-
|
7
|
-
class TestChartsScaling < Test::Unit::TestCase
|
8
|
-
|
9
|
-
|
10
|
-
# test scaling
|
11
|
-
def test_scale_1
|
12
|
-
|
13
|
-
tend = Time.now
|
14
|
-
tbegin = tend - 3600*24
|
15
|
-
|
16
|
-
# random between 2M and 6M
|
17
|
-
model1 = GerbilCharts::Models::BucketizedTimeSeriesGraphModel.new( "eth0", 3600 )
|
18
|
-
TimeSeriesDataGenerator.new(tbegin,tend,300,2000000, 6000000).each_tuple do |t,v|
|
19
|
-
model1.add(t,v)
|
20
|
-
end
|
21
|
-
|
22
|
-
# random between 4M and 10M
|
23
|
-
model2 = GerbilCharts::Models::BucketizedTimeSeriesGraphModel.new( "wan1", 3600 )
|
24
|
-
TimeSeriesDataGenerator.new(tbegin,tend,300,4000000, 10000000).each_tuple do |t,v|
|
25
|
-
model2.add(t,v)
|
26
|
-
end
|
27
|
-
|
28
|
-
modelgroup = GerbilCharts::Models::GraphModelGroup.new( "External Traffic")
|
29
|
-
modelgroup.add model2
|
30
|
-
modelgroup.add model1
|
31
|
-
|
32
|
-
|
33
|
-
# area chart with auto scaling
|
34
|
-
myareachart = GerbilCharts::Charts::AreaChart.new( :width => 450, :height => 200, :style => 'brushmetal.css',
|
35
|
-
:scaling_y => :auto )
|
36
|
-
myareachart.modelgroup=modelgroup
|
37
|
-
myareachart.render('/tmp/n_scale_auto.svg')
|
38
|
-
|
39
|
-
# line chart with auto_0 scaling
|
40
|
-
myareachart = GerbilCharts::Charts::LineChart.new( :width => 450, :height => 200, :style => 'brushmetal.css',
|
41
|
-
:scaling_y => :auto_0 )
|
42
|
-
myareachart.modelgroup=modelgroup
|
43
|
-
myareachart.render('/tmp/n_scale_auto_0.svg')
|
44
|
-
|
45
|
-
# impulse chart with manual scaling
|
46
|
-
myareachart = GerbilCharts::Charts::ImpulseChart.new( :width => 450, :height => 200, :style => 'brushmetal.css',
|
47
|
-
:scaling_y => [2000000,8000000] )
|
48
|
-
myareachart.modelgroup=modelgroup
|
49
|
-
myareachart.render('/tmp/n_scale_manual.svg')
|
50
|
-
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
|
data/test/test_svgdc.rb
DELETED
@@ -1,221 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
class TestSVGDC < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
end
|
7
|
-
|
8
|
-
def teardown
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
# basic test
|
13
|
-
# a circle, rectangle, save
|
14
|
-
def test_basic
|
15
|
-
|
16
|
-
g=GerbilCharts::SVGDC::SVGDC.new(300,200)
|
17
|
-
g.circle(40,50,20)
|
18
|
-
1.upto(10) do |w|
|
19
|
-
g.rectangle(80+w*4,10+w*4,10*w,45)
|
20
|
-
end
|
21
|
-
g.render( :file => "/tmp/tbasic1.svg")
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
# with presentation
|
27
|
-
# select a pen and brush for this DC, all drawing will use it !
|
28
|
-
def test_presentation
|
29
|
-
|
30
|
-
g=GerbilCharts::SVGDC::SVGDC.new(350,200)
|
31
|
-
|
32
|
-
# will show up clear black
|
33
|
-
g.rectangle(0,0,50,40)
|
34
|
-
|
35
|
-
g.select_presentation(:pen => GerbilCharts::SVGDC::PPen.new(:color=>"red", :width=>3) )
|
36
|
-
g.select_presentation(:brush => GerbilCharts::SVGDC::PBrush.new(:color=>"blue") )
|
37
|
-
|
38
|
-
# these will be stroked with new pen and brush selected above
|
39
|
-
g.rectangle(10,10,300,100)
|
40
|
-
g.line(200,0,100,200)
|
41
|
-
g.render( :file => "/tmp/tbasic3.svg")
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
# test a polyline
|
46
|
-
def test_polyline
|
47
|
-
g=GerbilCharts::SVGDC::SVGDC.new(400,200)
|
48
|
-
|
49
|
-
# will show up clear black
|
50
|
-
g.rectangle(0,0,400,200)
|
51
|
-
|
52
|
-
# points
|
53
|
-
g.lineto(10,10)
|
54
|
-
g.lineto(11,40)
|
55
|
-
g.lineto(12,80)
|
56
|
-
g.lineto(80,70)
|
57
|
-
g.lineto(56,10)
|
58
|
-
g.lineto(255,80)
|
59
|
-
g.endline
|
60
|
-
|
61
|
-
# thick and purple
|
62
|
-
10.times do
|
63
|
-
g.lineto( rand * 400, 100 + rand * 100)
|
64
|
-
end
|
65
|
-
g.endline( "stroke" => 'purple', 'stroke-width' => 5 )
|
66
|
-
|
67
|
-
g.render( :file => "/tmp/tpolyline1.svg")
|
68
|
-
end
|
69
|
-
|
70
|
-
# test a polygon
|
71
|
-
def test_polygon
|
72
|
-
g=GerbilCharts::SVGDC::SVGDC.new(100,100)
|
73
|
-
|
74
|
-
[ [10,10], [16,19], [45, 70], [80,75], [17,80] ].each do |c|
|
75
|
-
g.polygon_point(c[0],c[1])
|
76
|
-
end
|
77
|
-
g.end_polygon( 'stroke-width' => 4 )
|
78
|
-
g.render( :file => "/tmp/tpolygon1.svg")
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
# test with a stylesheet
|
84
|
-
def test_css1
|
85
|
-
g=GerbilCharts::SVGDC::SVGDC.new(400,500)
|
86
|
-
g.set_stylesheet "teststyle1.css"
|
87
|
-
g.rectangle(10,10,100,300, {:class => "surface"})
|
88
|
-
g.render( :file => "/tmp/tcss1.svg")
|
89
|
-
end
|
90
|
-
|
91
|
-
|
92
|
-
# test with stylesheet and a bunch of transformations
|
93
|
-
def test_css2
|
94
|
-
|
95
|
-
g=GerbilCharts::SVGDC::SVGDC.new(400,200)
|
96
|
-
g.set_stylesheet "teststyle1.css"
|
97
|
-
|
98
|
-
# this window is rotated (2.4 radians)
|
99
|
-
w=g.newwin("rot_1")
|
100
|
-
w.add_transformation(GerbilCharts::SVGDC::TRotate.new(2.4))
|
101
|
-
g.setactivewindow(w)
|
102
|
-
g.rectangle(10,10,300,50, {:class => "surface"})
|
103
|
-
g.setactivewindow
|
104
|
-
|
105
|
-
# this window is rotated -15 and shifted 25 x 10 y
|
106
|
-
w=g.newwin("rot_2")
|
107
|
-
w.add_transformation(GerbilCharts::SVGDC::TRotate.new(-15.0))
|
108
|
-
w.add_transformation(GerbilCharts::SVGDC::TTranslate.new(25,10))
|
109
|
-
g.setactivewindow(w)
|
110
|
-
g.rectangle(0,80,300,50, :fill => 'yellow' )
|
111
|
-
g.setactivewindow
|
112
|
-
|
113
|
-
|
114
|
-
g.render( :file => "/tmp/tcss2.svg")
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
|
119
|
-
# test subwindows , these show up as group (g) elements in the svg
|
120
|
-
def test_group2
|
121
|
-
|
122
|
-
g=GerbilCharts::SVGDC::SVGDC.new(400,500)
|
123
|
-
g.set_stylesheet "teststyle1.css"
|
124
|
-
|
125
|
-
# group 1
|
126
|
-
w1=g.newwin("xaxisgroup")
|
127
|
-
w1.add_transformation(GerbilCharts::SVGDC::TRotate.new(1.4))
|
128
|
-
g.setactivewindow(w1)
|
129
|
-
g.rectangle(0,0,100,60, {:class => "surface"})
|
130
|
-
g.setactivewindow
|
131
|
-
|
132
|
-
# group 2
|
133
|
-
w2=g.newwin("yaxisgroup")
|
134
|
-
w2.add_transformation(GerbilCharts::SVGDC::TRotate.new(2.4))
|
135
|
-
w2.add_transformation(GerbilCharts::SVGDC::TTranslate.new(50,10))
|
136
|
-
g.setactivewindow(w2)
|
137
|
-
g.rectangle(0,0,100,60, {:class => "surface"})
|
138
|
-
|
139
|
-
g.line(10,10,30,10, {:id => "item1"})
|
140
|
-
g.setactivewindow
|
141
|
-
|
142
|
-
|
143
|
-
g.render( :file => "/tmp/tg2.svg")
|
144
|
-
|
145
|
-
|
146
|
-
end
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
# basic text output
|
151
|
-
# No stylesheet
|
152
|
-
def test_text1
|
153
|
-
g=GerbilCharts::SVGDC::SVGDC.new(800,200)
|
154
|
-
|
155
|
-
|
156
|
-
# group wise all textouts will inherit the font family
|
157
|
-
w1=g.newwin("fixed_font_win", "stroke" => "none", "fill" => "black" , "font-family" => "monospace" )
|
158
|
-
g.setactivewindow(w1)
|
159
|
-
g.rectangle(0,0,800,60,'fill' => 'gray')
|
160
|
-
g.textout(10,15,"Fixed font test 1 (font family = fixed)")
|
161
|
-
g.textout(10,25,"second line of monospace ")
|
162
|
-
g.textout(10,40,"third line of monospace font (larger size) ", "font-size" => "14" )
|
163
|
-
g.setactivewindow(nil)
|
164
|
-
|
165
|
-
|
166
|
-
# unknown font ?
|
167
|
-
w1=g.newwin("lucida_win", "font-face" => "Lucida Console", "font-size" => 18 )
|
168
|
-
g.setactivewindow(w1)
|
169
|
-
g.textout(10,80,"Fixed font test 2 hollow (font face = lucida console)")
|
170
|
-
g.setactivewindow(nil)
|
171
|
-
|
172
|
-
|
173
|
-
# directly draw a font (no containing window)
|
174
|
-
g.textout(10,100,"Directly textout with size 10, red monospace", "font-family" => "monospace", "stroke" => "none", "fill" =>'red' )
|
175
|
-
|
176
|
-
# using the monospace helper
|
177
|
-
g.textout_monospace(10,120,"Using the monospace helper with defaults" )
|
178
|
-
|
179
|
-
# using the monospace helper (override color and size)
|
180
|
-
g.textout_monospace(10,140,"Monospace helper blue size 14", "fill" => "blue", "font-size" => "14" )
|
181
|
-
|
182
|
-
g.render( :file => "/tmp/ttxt1.svg")
|
183
|
-
|
184
|
-
|
185
|
-
end
|
186
|
-
|
187
|
-
|
188
|
-
# text output with a rotation
|
189
|
-
def test_text1rot
|
190
|
-
|
191
|
-
g=GerbilCharts::SVGDC::SVGDC.new(200,250)
|
192
|
-
g.set_stylesheet "teststyle1.css"
|
193
|
-
|
194
|
-
# group 1
|
195
|
-
w1=g.newwin("xaxisgroup")
|
196
|
-
w1.add_transformation(GerbilCharts::SVGDC::TRotate.new(90.0))
|
197
|
-
g.setactivewindow(w1)
|
198
|
-
g.rectangle(0,0,100,60, {:class => "surface"})
|
199
|
-
g.textout(40,40,"Text rotated +90 degrees ?", {:class => "axislabel"})
|
200
|
-
g.setactivewindow
|
201
|
-
|
202
|
-
g.render( :file => "/tmp/ttxt1rot.svg")
|
203
|
-
|
204
|
-
end
|
205
|
-
|
206
|
-
# text output with css
|
207
|
-
def test_text2
|
208
|
-
|
209
|
-
g=GerbilCharts::SVGDC::SVGDC.new(400,500)
|
210
|
-
g.set_stylesheet "teststyle1.css"
|
211
|
-
|
212
|
-
# group 1
|
213
|
-
g.rectangle(0,0,100,60, {:class => "surface"})
|
214
|
-
g.textout(40,40,"Om !", {:class => "axislabel"})
|
215
|
-
g.textout(40,240,"Host: 192.168.1.1 (18%)", {:class => "axislabel"})
|
216
|
-
|
217
|
-
g.render( :file => "/tmp/ttxtcss.svg")
|
218
|
-
|
219
|
-
|
220
|
-
end
|
221
|
-
end
|
data/test/trafgen.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# generate time series data for test purposes
|
2
|
-
class TimeSeriesDataGenerator
|
3
|
-
|
4
|
-
attr_reader :tuples_array
|
5
|
-
|
6
|
-
# allows you to generate controlled random data
|
7
|
-
def initialize(tm_from, tm_to, avg_resolution_secs, min_val, max_val)
|
8
|
-
@tuples_array=[]
|
9
|
-
tm_tmp = tm_from
|
10
|
-
|
11
|
-
while tm_tmp < tm_to
|
12
|
-
@tuples_array << [ tm_tmp, min_val + (max_val - min_val)*rand ]
|
13
|
-
tm_tmp = tm_tmp + avg_resolution_secs *( 1 + (rand-0.5)/4)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# iterator
|
18
|
-
def each_tuple
|
19
|
-
@tuples_array.each do |t,v|
|
20
|
-
yield t,v
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
end
|