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_negatives.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
class TestLines < Test::Unit::TestCase
|
4
|
-
|
5
|
-
attr_reader :test_vector_tm1
|
6
|
-
attr_reader :test_vector_tm2
|
7
|
-
attr_reader :mod1, :mod2, :modbucket1
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@test_vector_tm3 = []
|
11
|
-
tbeg = Time.local( 1978, "jun", 5, 9, 10, 0, 0)
|
12
|
-
sbeg = tbeg
|
13
|
-
sec_inc = 50
|
14
|
-
|
15
|
-
range = (-7000..+4000)
|
16
|
-
for i in (0..20)
|
17
|
-
@test_vector_tm3 << [sbeg + i*sec_inc, range.min + range.count * rand() ]
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
@mod3 = GerbilCharts::Models::TimeSeriesGraphModel.new("udldev Print Server")
|
22
|
-
@mod3.add_tuples @test_vector_tm3
|
23
|
-
|
24
|
-
@modgroup = GerbilCharts::Models::GraphModelGroup.new("Hosts")
|
25
|
-
@modgroup.add(@mod3)
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
# test a line chart
|
30
|
-
def test_line_1
|
31
|
-
|
32
|
-
mychart = GerbilCharts::Charts::AreaChart.new( :width => 350, :height => 200, :style => 'inline:brushmetal.css',
|
33
|
-
:enabletimetracker => true )
|
34
|
-
mychart.setmodelgroup(@modgroup)
|
35
|
-
mychart.render('/tmp/neg_linechart1.svg')
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
data/test/test_noob.rb
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
require './trafgen'
|
4
|
-
|
5
|
-
# tests some easy to use mods
|
6
|
-
# newbies enter here
|
7
|
-
class TestChartsNoob < Test::Unit::TestCase
|
8
|
-
|
9
|
-
|
10
|
-
# test sales figures of 3 sales people
|
11
|
-
# use a simple timeseries model
|
12
|
-
def test_monthly_sales
|
13
|
-
|
14
|
-
mychart = GerbilCharts::Charts::SquareLineChart.new( :width => 350, :height => 200, :style => 'inline:brushmetal.css',
|
15
|
-
:circle_data_points => true, :scaling_y => :auto,
|
16
|
-
:javascripts => ['/tmp/gerbil.js','/tmp/prototype.js'] )
|
17
|
-
|
18
|
-
modelgroup = GerbilCharts::Models::SimpleTimeSeriesModelGroup.new(
|
19
|
-
:title => "Sales figures",
|
20
|
-
:timeseries => (1..6).collect { |month| Time.local(2008,month) },
|
21
|
-
:models => [ ["Bruce", 1, 10, 18, 28, 80, 122],
|
22
|
-
["Rex" , 112,22, 45, 70, 218, 309],
|
23
|
-
["Buzo" , 0, 23, 25, 40, 18, 59]
|
24
|
-
]
|
25
|
-
)
|
26
|
-
|
27
|
-
mychart.modelgroup=modelgroup
|
28
|
-
|
29
|
-
mychart.render('/tmp/n_monthly_sales.svg')
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
# test daily traffic
|
34
|
-
def test_daily_traf_1
|
35
|
-
|
36
|
-
mychart = GerbilCharts::Charts::ImpulseChart.new( :width => 450, :height => 200, :style => 'brushmetal.css')
|
37
|
-
|
38
|
-
tend = Time.now
|
39
|
-
tbegin = tend - 3600*24
|
40
|
-
|
41
|
-
model1 = GerbilCharts::Models::BucketizedTimeSeriesGraphModel.new( "eth0", 3600 )
|
42
|
-
TimeSeriesDataGenerator.new(tbegin,tend,300,200000, 6000000).each_tuple do |t,v|
|
43
|
-
model1.add(t,v)
|
44
|
-
end
|
45
|
-
|
46
|
-
model2 = GerbilCharts::Models::BucketizedTimeSeriesGraphModel.new( "wan1", 3600 )
|
47
|
-
TimeSeriesDataGenerator.new(tbegin,tend,300,200000, 6000000).each_tuple do |t,v|
|
48
|
-
model2.add(t,v)
|
49
|
-
end
|
50
|
-
|
51
|
-
modelgroup = GerbilCharts::Models::GraphModelGroup.new( "External Traffic")
|
52
|
-
modelgroup.add model2
|
53
|
-
# modelgroup.add model1
|
54
|
-
|
55
|
-
mychart.modelgroup=modelgroup
|
56
|
-
mychart.render('/tmp/n_daily_traffic.svg')
|
57
|
-
|
58
|
-
# demo resuses the model in a different view (an area chart this time)
|
59
|
-
myareachart = GerbilCharts::Charts::AreaChart.new( :width => 450, :height => 200, :style => 'inline:brushmetal.css',
|
60
|
-
:scaling_y => :auto, :auto_tooltips => true ,
|
61
|
-
:javascripts => ['/tmp/gerbil.js' , '/tmp/prototype.js' ],
|
62
|
-
:filter => 'LikeButton' )
|
63
|
-
myareachart.modelgroup=modelgroup
|
64
|
-
myareachart.render('/tmp/n_daily_traffic_area.svg')
|
65
|
-
|
66
|
-
# demo to reuse the model ina bar
|
67
|
-
mybarchart = GerbilCharts::Charts::BarChart.new( :width => 450, :height => 200, :style => 'brushmetal.css', :auto_tooltips => true)
|
68
|
-
mybarchart.modelgroup=modelgroup
|
69
|
-
mybarchart.render('/tmp/n_daily_traffic_bar.svg')
|
70
|
-
|
71
|
-
|
72
|
-
# demo stacked area
|
73
|
-
mysachart = GerbilCharts::Charts::StackedAreaChart.new( :width => 450, :height => 200, :style => 'inline:brushmetal.css',
|
74
|
-
:scaling_y => :auto, :auto_tooltips => true ,
|
75
|
-
:javascripts => ['/tmp/gerbil.js' , '/tmp/prototype.js' ])
|
76
|
-
mysachart.modelgroup=modelgroup
|
77
|
-
mysachart.render('/tmp/n_daily_traffic_sa.svg')
|
78
|
-
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
|
data/test/test_pie.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
require 'trafgen'
|
4
|
-
|
5
|
-
# test pie chart
|
6
|
-
class TestPie < Test::Unit::TestCase
|
7
|
-
|
8
|
-
|
9
|
-
# test sales figures of 3 sales people
|
10
|
-
# show in a pie chart
|
11
|
-
def test_monthly_sales
|
12
|
-
|
13
|
-
|
14
|
-
modelgroup = GerbilCharts::Models::SimpleTimeSeriesModelGroup.new(
|
15
|
-
:title => "Sales figures",
|
16
|
-
:timeseries => (1..6).collect { |month| Time.local(2008,month) },
|
17
|
-
:models => [ ["Bruce", 1, 10, 18, 28, 80, 1340.7890]
|
18
|
-
#["Rex" , 112,22, 45, 70, 218, 3098.98]
|
19
|
-
# ["Sharmila", 112,22, 45, 70, 218, 245]
|
20
|
-
#["Wasim", 112,22, 45, 70, 218, 145],
|
21
|
-
# ["Buzo" , 0, 23, 25, 40, 18, 59],
|
22
|
-
#["Vipin", 145,112, 22, 45, 18, 70],
|
23
|
-
# ["label", 145,112, 22, 45, 18, 240],
|
24
|
-
# ["9th item ", 145,112, 22, 45, 18, 45],
|
25
|
-
# ["Others ", 145,112, 22, 45, 18, 15],
|
26
|
-
# ["VIVEK", 145,112, 22, 45, 18, 170]
|
27
|
-
]
|
28
|
-
)
|
29
|
-
|
30
|
-
mychart = GerbilCharts::Charts::PieChart.new( :width => 350, :height => 200,
|
31
|
-
:style => 'inline:brushmetal.css', :auto_tooltips => true ,
|
32
|
-
:javascripts => ['/tmp/gerbil.js' , '/tmp/prototype.js' ],
|
33
|
-
:filter => 'LikeButton'
|
34
|
-
)
|
35
|
-
mychart.modelgroup=modelgroup
|
36
|
-
mychart.render("/tmp/pie_monthly_sales.svg")
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
|
data/test/test_ranges.rb
DELETED
@@ -1,169 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
class TestRanges < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
# test vector
|
7
|
-
@tvector = []
|
8
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,0), 0 ]
|
9
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,10), 0.5 ]
|
10
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,11), 18 ]
|
11
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,15), 911 ]
|
12
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,18), 100 ]
|
13
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,19), 80 ]
|
14
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,20), 98 ]
|
15
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,45), 1002 ]
|
16
|
-
@tvector << [ Time.local(1973,"Apr",2,8,30,58), 3014 ]
|
17
|
-
@tvector << [ Time.local(1973,"Apr",2,8,31,0), 1002 ]
|
18
|
-
@tvector << [ Time.local(1973,"Apr",2,8,32,0), 88 ]
|
19
|
-
@tvector << [ Time.local(1973,"Apr",2,8,32,20), 882]
|
20
|
-
@tvector << [ Time.local(1973,"Apr",2,8,32,21), 3015 ]
|
21
|
-
@tvector << [ Time.local(1973,"Apr",2,8,36,0), 10 ]
|
22
|
-
@tvector << [ Time.local(1973,"Apr",2,8,46,0), 1 ]
|
23
|
-
@tvector << [ Time.local(1973,"Apr",2,8,47,0), 2 ]
|
24
|
-
@tvector << [ Time.local(1973,"Apr",2,8,47,1), 3 ]
|
25
|
-
@tvector << [ Time.local(1973,"Apr",2,8,47,5), 4 ]
|
26
|
-
@tvector << [ Time.local(1973,"Apr",2,8,50,0), 59 ]
|
27
|
-
@tvector << [ Time.local(1973,"Apr",2,8,58,0), 188 ]
|
28
|
-
@tvector << [ Time.local(1973,"Apr",2,9,00,17), 4017 ]
|
29
|
-
@tvector << [ Time.local(1973,"Apr",2,9,20,18), 18 ]
|
30
|
-
@tvector << [ Time.local(1973,"Apr",2,9,40,20), 10 ]
|
31
|
-
@tvector << [ Time.local(1973,"Apr",2,10,13,7), 100 ]
|
32
|
-
@tvector << [ Time.local(1973,"Apr",2,10,14,7), 100 ]
|
33
|
-
@tvector << [ Time.local(1973,"Apr",2,10,15,7), 100 ]
|
34
|
-
@tvector << [ Time.local(1973,"Apr",2,10,17,7), 100 ]
|
35
|
-
|
36
|
-
end
|
37
|
-
|
38
|
-
# test raw range - simple version
|
39
|
-
def test_raw_range_1
|
40
|
-
r = GerbilCharts::Models::RawRange.new
|
41
|
-
|
42
|
-
[10,20,10,0,0,1001,19920,882991.22].each do |v|
|
43
|
-
r.update v
|
44
|
-
end
|
45
|
-
|
46
|
-
r.min_max do |mn,mx|
|
47
|
-
assert mn==0
|
48
|
-
assert mx==882991.22
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# test - various methods
|
53
|
-
def test_raw_range_2
|
54
|
-
r = GerbilCharts::Models::RawRange.new
|
55
|
-
[10,20,10,0,0,1001,19920,20001].each do |v|
|
56
|
-
r.update v
|
57
|
-
end
|
58
|
-
|
59
|
-
# update from another range
|
60
|
-
r2 = GerbilCharts::Models::RawRange.new
|
61
|
-
r2.update(-10)
|
62
|
-
r2.update 20002
|
63
|
-
r.update_r r2
|
64
|
-
|
65
|
-
# check if updated correctly
|
66
|
-
assert r.rmax == 20002
|
67
|
-
assert r.rmin == -10
|
68
|
-
|
69
|
-
# check scaling
|
70
|
-
fv = r.scale_factor(20002)
|
71
|
-
assert_in_delta(fv,1,0.001)
|
72
|
-
fv = r.scale_factor(10000)
|
73
|
-
assert_in_delta(fv,0.5,0.001)
|
74
|
-
|
75
|
-
# check if reset works
|
76
|
-
r.reset
|
77
|
-
assert_nil(r.rmax)
|
78
|
-
assert_nil(r.rmin)
|
79
|
-
end
|
80
|
-
|
81
|
-
# test round range
|
82
|
-
def test_round_range_1
|
83
|
-
r = GerbilCharts::Models::RawRange.new
|
84
|
-
[10,20,10,0,0,1001,19920,20001].each do |v|
|
85
|
-
r.update v
|
86
|
-
end
|
87
|
-
|
88
|
-
rr = GerbilCharts::Models::RoundRange.new(r)
|
89
|
-
assert_equal(rr.rmax,50000)
|
90
|
-
assert_equal(rr.rmin,0)
|
91
|
-
assert_equal(rr.lmax,10000,"checking ideal label interval")
|
92
|
-
|
93
|
-
r.update(50001)
|
94
|
-
rr = GerbilCharts::Models::RoundRange.new(r)
|
95
|
-
assert_equal(rr.rmax,100000)
|
96
|
-
assert_equal(rr.lmax,25000,"checking ideal label interval for a 100K interval")
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
# test time hours
|
101
|
-
def test_round_time_range_1
|
102
|
-
r = GerbilCharts::Models::RawRange.new
|
103
|
-
tbase = Time.local(1973,"Apr",2,8,30,0)
|
104
|
-
|
105
|
-
@tvector.each do |t|
|
106
|
-
r.update t[0]
|
107
|
-
end
|
108
|
-
|
109
|
-
rr = GerbilCharts::Models::RoundTimeRange.new(r)
|
110
|
-
rr.each_label do |v,s|
|
111
|
-
# p "v = #{v} s=#{s}"
|
112
|
-
end
|
113
|
-
assert_equal(rr.rdelta,7200) # 3 hr range
|
114
|
-
assert_equal(rr.ldelta,1800) # label every 30 mins
|
115
|
-
|
116
|
-
# add a 4 hr gap (9hr range + 2 hr labels)
|
117
|
-
r.update( @tvector.last[0] + 4*3600)
|
118
|
-
rr = GerbilCharts::Models::RoundTimeRange.new(r)
|
119
|
-
rr.each_label do |v,s|
|
120
|
-
# p "v = #{v} s=#{s}"
|
121
|
-
end
|
122
|
-
assert_equal(rr.rdelta,6*3600)
|
123
|
-
assert_equal(rr.ldelta,2*3600)
|
124
|
-
|
125
|
-
# add a new 10hr gap
|
126
|
-
r.update( @tvector.last[0] + 10*3600)
|
127
|
-
rr = GerbilCharts::Models::RoundTimeRange.new(r)
|
128
|
-
rr.each_label do |v,s|
|
129
|
-
# p "v = #{v} s=#{s}"
|
130
|
-
end
|
131
|
-
assert_equal(rr.rdelta,43200)
|
132
|
-
assert_equal(rr.ldelta,10800)
|
133
|
-
end
|
134
|
-
|
135
|
-
def test_negative_range
|
136
|
-
|
137
|
-
r = GerbilCharts::Models::RawRange.new
|
138
|
-
[-11000,19920,20001].each do |v|
|
139
|
-
r.update v
|
140
|
-
end
|
141
|
-
|
142
|
-
rr = GerbilCharts::Models::RoundRange.new(r)
|
143
|
-
assert_equal(rr.rmax,50000)
|
144
|
-
assert_equal(rr.rmin,-20000)
|
145
|
-
assert_equal(rr.lmax,25000,"checking ideal label interval")
|
146
|
-
|
147
|
-
r.update(-18000)
|
148
|
-
rr = GerbilCharts::Models::RoundRange.new(r)
|
149
|
-
assert_equal(rr.lmax,25000,"checking ideal label interval for a 100K interval")
|
150
|
-
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_long_time_range
|
154
|
-
|
155
|
-
r = GerbilCharts::Models::RawRange.new
|
156
|
-
tbase = Time.local(1973,"Apr",2,8,30,0)
|
157
|
-
r.update tbase
|
158
|
-
r.update(tbase+100000)
|
159
|
-
|
160
|
-
rr = GerbilCharts::Models::RoundTimeRange.new(r)
|
161
|
-
|
162
|
-
rr.each_label do |v,s|
|
163
|
-
p "v = #{v} s=#{s}"
|
164
|
-
end
|
165
|
-
|
166
|
-
end
|
167
|
-
|
168
|
-
|
169
|
-
end
|
data/test/test_render_string.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
require 'trafgen'
|
4
|
-
|
5
|
-
# test if render to string works correctly
|
6
|
-
class TestRenderString < Test::Unit::TestCase
|
7
|
-
|
8
|
-
|
9
|
-
# test sales figures of 3 sales people
|
10
|
-
# use a simple timeseries model
|
11
|
-
# output to string finally
|
12
|
-
def test_string_render
|
13
|
-
|
14
|
-
mychart = GerbilCharts::Charts::LineChart.new( :width => 350, :height => 200, :style => 'brushmetal.css',
|
15
|
-
:circle_data_points => true )
|
16
|
-
|
17
|
-
modelgroup = GerbilCharts::Models::SimpleTimeSeriesModelGroup.new(
|
18
|
-
:title => "Sales figures",
|
19
|
-
:timeseries => (1..6).collect { |month| Time.local(2008,month) },
|
20
|
-
:models => [ ["Bruce", 1, 10, 18, 28, 80, 122],
|
21
|
-
["Rex" , 112,22, 45, 70, 218, 309],
|
22
|
-
["Buzo" , 0, 23, 25, 40, 18, 59]
|
23
|
-
]
|
24
|
-
)
|
25
|
-
|
26
|
-
mychart.modelgroup=modelgroup
|
27
|
-
|
28
|
-
strout = mychart.render_string
|
29
|
-
|
30
|
-
# a large enough string (basic test a large enough string generated)
|
31
|
-
assert strout.size > 1000
|
32
|
-
|
33
|
-
# the string SVG is present in the out (very basic test)
|
34
|
-
assert strout.match("SVG")
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
data/test/test_sa.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
-
|
3
|
-
require './trafgen'
|
4
|
-
|
5
|
-
# tests some easy to use mods
|
6
|
-
# newbies enter here
|
7
|
-
class TestChartsNoob < Test::Unit::TestCase
|
8
|
-
|
9
|
-
def setup
|
10
|
-
|
11
|
-
@test_vectors = {
|
12
|
-
"eth0"=> [100, 200, 4000,4001, 2001, 2999,8000, 19000,38000,3173000, 78000,1200,1000010] ,
|
13
|
-
"wlan0"=> [600,1200,84000,14001,22001,2209,48000,1900, 3800, 873000,478000,1121200,4000010] ,
|
14
|
-
}
|
15
|
-
|
16
|
-
@tbegin = Time.local( 1978, "jun", 5, 9, 10, 0, 0)
|
17
|
-
@tend = @tbegin + 10000 # for more than 1 hour
|
18
|
-
#@tend = @tbegin + 4000 # for more than 1 hour
|
19
|
-
#@tend = @tbegin + 22*86400 # for more than 1 hour
|
20
|
-
end
|
21
|
-
|
22
|
-
def mk_models1
|
23
|
-
modelarr = []
|
24
|
-
@test_vectors.each_pair do |k,v|
|
25
|
-
tb = @tbegin.clone
|
26
|
-
mod = GerbilCharts::Models::BucketizedTimeSeriesGraphModel.new( k, 300 )
|
27
|
-
v.each do | val |
|
28
|
-
mod.add(tb,val)
|
29
|
-
tb = tb + 300
|
30
|
-
end
|
31
|
-
modelarr << mod
|
32
|
-
end
|
33
|
-
modelarr
|
34
|
-
end
|
35
|
-
|
36
|
-
def mk_models2
|
37
|
-
|
38
|
-
# between 200K and 6M
|
39
|
-
%w(eth0 eth1 eth2 wlan0 wlan1 br0:1 bridge0:2).collect do |n|
|
40
|
-
mk_mod(n,200000,6000000)
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
def mk_mod(name,min,max)
|
46
|
-
model1 = GerbilCharts::Models::BucketizedTimeSeriesGraphModel.new(name, 300 )
|
47
|
-
TimeSeriesDataGenerator.new(@tbegin,@tend,300,min, max).each_tuple do |t,v|
|
48
|
-
model1.add(t,v)
|
49
|
-
end
|
50
|
-
return model1
|
51
|
-
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
# test daily traffic
|
56
|
-
def test_daily_traf_1
|
57
|
-
|
58
|
-
|
59
|
-
modelarr = []
|
60
|
-
#modelarr = mk_models2
|
61
|
-
modelarr << mk_mod("fixed-11",11000000,11000000)
|
62
|
-
modelarr << mk_mod("fixed-3", 3000000, 3000000)
|
63
|
-
|
64
|
-
refmod = mk_mod("ref", 60000000, 75000000)
|
65
|
-
|
66
|
-
# modelgroup
|
67
|
-
modelgroup = GerbilCharts::Models::GraphModelGroup.new( "External Traffic")
|
68
|
-
modelarr.each { |m| modelgroup.add(m) }
|
69
|
-
#modelgroup.ref_model=refmod
|
70
|
-
|
71
|
-
# stacked area
|
72
|
-
mysachart = GerbilCharts::Charts::StackedAreaChart.new( :width => 750, :height => 400,
|
73
|
-
:style => 'inline:brushmetal.css',
|
74
|
-
:javascripts => ['/tmp/gerbil.js' , '/tmp/prototype.js' ],
|
75
|
-
:toolhrefs => [ ["View Trends", "/trends"],
|
76
|
-
["Retro analysis", "/retro"],
|
77
|
-
] )
|
78
|
-
mysachart.modelgroup=modelgroup
|
79
|
-
mysachart.render('/tmp/n_daily_traffic_sa.svg')
|
80
|
-
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
end
|
87
|
-
|
88
|
-
|