autograph 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/README.rdoc +2 -44
- data/Rakefile +1 -5
- data/TODO +12 -16
- data/VERSION +1 -1
- data/bin/autograph +2 -11
- data/lib/autograph.rb +3 -7
- data/lib/autograph/autoperf.rb +32 -27
- data/lib/autograph/configuration.rb +3 -9
- data/lib/autograph/graph.rb +9 -0
- data/lib/autograph/graph_series.rb +2 -4
- data/lib/autograph/html_report.rb +0 -3
- data/lib/autograph/report.html.erb +251 -166
- data/lib/autograph/table.rb +66 -0
- data/test/test_configuration.rb +0 -5
- data/test/test_graph.rb +17 -0
- data/test/test_graph_series.rb +6 -10
- data/test/test_table.rb +131 -0
- metadata +11 -65
- data/lib/autograph/graph_renderers/base_renderer.rb +0 -82
- data/lib/autograph/graph_renderers/flot_renderer.rb +0 -50
- data/lib/autograph/graph_renderers/gchart_renderer.rb +0 -82
- data/lib/autograph/graph_renderers/rasterized_scruffy_renderer.rb +0 -20
- data/lib/autograph/graph_renderers/scruffy_renderer.rb +0 -35
@@ -1,50 +0,0 @@
|
|
1
|
-
class FlotRenderer < BaseRenderer
|
2
|
-
def to_html
|
3
|
-
data = []
|
4
|
-
graph_type = ''
|
5
|
-
if series[0].type.to_sym == :bar
|
6
|
-
graph_type = "bars"
|
7
|
-
series.each_with_index do |s, i|
|
8
|
-
data << "[#{i}, #{s.y_values[0]}]"
|
9
|
-
end
|
10
|
-
else
|
11
|
-
graph_type = "lines"
|
12
|
-
1.upto(series[0].x_values.size.to_i - 1) do |index|
|
13
|
-
data << "[#{series[0].x_values[index]}, #{series[0].y_values[index]}]"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
html = <<GRAPH_HTML
|
18
|
-
<div style="with:600px;height:350px;" id="#{graph_name}"></div>
|
19
|
-
<script language="javascript" type="text/javascript">
|
20
|
-
//#{series.inspect}
|
21
|
-
$('.report').show();
|
22
|
-
$.plot($("##{graph_name}"), [
|
23
|
-
{
|
24
|
-
data: [#{data.join(",")}],
|
25
|
-
#{graph_type}: { show: true, fill: true }
|
26
|
-
}
|
27
|
-
]);
|
28
|
-
$('.report').hide();
|
29
|
-
show_report('overview');
|
30
|
-
</script>
|
31
|
-
GRAPH_HTML
|
32
|
-
html
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.header_html
|
36
|
-
html = <<HEADER_HTML
|
37
|
-
<script type="text/javascript" src="http://127.0.0.1:1234/jquery.js"></script>
|
38
|
-
<script type="text/javascript" src="http://127.0.0.1:1234/jquery.flot.js"></script>
|
39
|
-
HEADER_HTML
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
def format_file_name(desired_name)
|
44
|
-
desired_name.to_s.gsub("/","_").gsub("=","_").gsub("?","_")
|
45
|
-
end
|
46
|
-
|
47
|
-
def graph_name
|
48
|
-
@graph_name ||= "graph_#{format_file_name(path || 'overview')}_#{(rand * 100).to_i}"
|
49
|
-
end
|
50
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'gchart'
|
2
|
-
|
3
|
-
class GChartRenderer < BaseRenderer
|
4
|
-
|
5
|
-
def to_html
|
6
|
-
render_graph
|
7
|
-
"<img src='#{render_graph.to_url}'/>"
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
def available_colors
|
12
|
-
[:red, :yellow, :green, :blue, :black]
|
13
|
-
end
|
14
|
-
|
15
|
-
def render_graph
|
16
|
-
chart_type = series[0].type.to_s
|
17
|
-
chart_type = 'line' if chart_type == 'area'
|
18
|
-
|
19
|
-
chart = GChart.send(chart_type) do |g|
|
20
|
-
|
21
|
-
x_values = series[0].x_values
|
22
|
-
y_values = series[0].y_values
|
23
|
-
|
24
|
-
x_values = series.map{|s| s.x_values} if chart_type.to_sym == :bar
|
25
|
-
|
26
|
-
series_data = series.map{|s| s.y_values}
|
27
|
-
|
28
|
-
g.data = series_data
|
29
|
-
|
30
|
-
# chg, grid lines
|
31
|
-
# chm data point makers
|
32
|
-
# chma, margins
|
33
|
-
# chm, flags :chm => "fMax,FF0000,0,#{y_values.index(y_values.max)},15"
|
34
|
-
# cht, bvg (bar vertical grouped)
|
35
|
-
# chbh, bar spacing
|
36
|
-
# chdlp, legend on bottom, vertical
|
37
|
-
|
38
|
-
# TODO: Should case off of chart types
|
39
|
-
|
40
|
-
extras = {:chg => "#{100/(y_values.size)},20,1,5",
|
41
|
-
:chm => "o,0066FF,0,-1.0,6",
|
42
|
-
:chma => "20,20,20,30|80,20",
|
43
|
-
:chdlp => "bv"}
|
44
|
-
|
45
|
-
if chart_type.to_sym == :bar
|
46
|
-
extras = extras.merge({:chm => '', :chbh => 'a,20,20'})
|
47
|
-
# chm=N*f0*,000000,1,-1,11|N*f0*,000000,2,-1,11|N*f1*,000000,3,-1,11|N*f2*,FF0000,0,0,18
|
48
|
-
g.grouped = true
|
49
|
-
end
|
50
|
-
|
51
|
-
g.extras = extras
|
52
|
-
|
53
|
-
g.axis(:bottom) do |a|
|
54
|
-
a.labels = [0] << x_values
|
55
|
-
a.text_color = :black
|
56
|
-
end
|
57
|
-
|
58
|
-
g.axis(:left) do |a|
|
59
|
-
interval = (y_values.max/10).to_i
|
60
|
-
interval = 1 if interval == 0
|
61
|
-
a.labels = (0..(y_values.max.to_i)).to_a.select{|y| y % interval == 0}
|
62
|
-
a.text_color = :black
|
63
|
-
end
|
64
|
-
|
65
|
-
if chart_type.to_sym == :bar
|
66
|
-
g.orientation = :vertical
|
67
|
-
end
|
68
|
-
|
69
|
-
colors = available_colors
|
70
|
-
g.colors = series.map{|s| colors.pop}
|
71
|
-
|
72
|
-
g.legend = series.map{|s| s.label.gsub("'", "")}
|
73
|
-
|
74
|
-
g.title = title
|
75
|
-
|
76
|
-
g.width = width
|
77
|
-
g.height = height
|
78
|
-
|
79
|
-
g.entire_background = "f4f4f4"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
def rasterize_graphs
|
2
|
-
batik_location = @conf['batik-rasterizer-jar']
|
3
|
-
if File.exist?(batik_location)
|
4
|
-
`java -jar #{batik_location} *.svg > /dev/null 2>&1`
|
5
|
-
|
6
|
-
Dir.glob('*.png').each do |png|
|
7
|
-
if File.size(png) > 0
|
8
|
-
File.delete(png.sub('.png', '.svg'))
|
9
|
-
else
|
10
|
-
puts "Error rasterizing #{png}, leaving SVG intact."
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
@graphs.each do |uri, graph|
|
15
|
-
@graphs[uri].each do |file_name|
|
16
|
-
@graphs[uri] = @graphs[uri].map{|x| File.exist?(x.sub('.svg', '.png')) ? x.sub('.svg', '.png') : x}
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'scruffy'
|
2
|
-
|
3
|
-
class ScruffyRenderer < BaseRenderer
|
4
|
-
SCRUFFY_HEIGHT=360
|
5
|
-
SCRUFFY_WIDTH=600
|
6
|
-
|
7
|
-
def to_html
|
8
|
-
render_graph
|
9
|
-
"<iframe width=\"#{SCRUFFY_WIDTH}\" height=\"#{SCRUFFY_HEIGHT}\" src=\"./#{graph_file_name}\"></iframe>"
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
def format_file_name(desired_name)
|
14
|
-
desired_name.to_s.gsub("/","_").gsub("=","_").gsub("?","_")
|
15
|
-
end
|
16
|
-
|
17
|
-
def graph_file_name
|
18
|
-
@graph_name ||= "graph_#{format_file_name(path || 'overview')}_#{(rand * 100).to_i}.svg"
|
19
|
-
end
|
20
|
-
|
21
|
-
def render_graph
|
22
|
-
graph = Scruffy::Graph.new
|
23
|
-
graph.title = title
|
24
|
-
graph.renderer = Scruffy::Renderers::Standard.new(:values => series[0].x_values.size + 1)
|
25
|
-
graph.point_markers = series[0].x_values
|
26
|
-
|
27
|
-
series.each do |s|
|
28
|
-
graph.add s.type.to_sym, s.label, s.y_values
|
29
|
-
end
|
30
|
-
|
31
|
-
graph.render :to => graph_file_name, :min_value => 0, :max_value => find_max_y_value, :width => SCRUFFY_WIDTH, :height => SCRUFFY_HEIGHT
|
32
|
-
|
33
|
-
graph
|
34
|
-
end
|
35
|
-
end
|