scruffy 0.2.1 → 0.2.2
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/CHANGES +10 -0
- data/lib/scruffy/components/base.rb +17 -13
- data/lib/scruffy/components/data_markers.rb +1 -3
- data/lib/scruffy/components/grid.rb +3 -1
- data/lib/scruffy/components/label.rb +1 -2
- data/lib/scruffy/components/legend.rb +1 -3
- data/lib/scruffy/components/style_info.rb +5 -0
- data/lib/scruffy/components/title.rb +1 -2
- data/lib/scruffy/components/value_markers.rb +5 -5
- data/lib/scruffy/components/viewport.rb +0 -2
- data/lib/scruffy/formatters.rb +19 -0
- data/lib/scruffy/graph.rb +10 -1
- data/lib/scruffy/helpers.rb +2 -1
- data/lib/scruffy/helpers/canvas.rb +14 -0
- data/lib/scruffy/helpers/layer_container.rb +7 -4
- data/lib/scruffy/helpers/meta.rb +5 -0
- data/lib/scruffy/layers/area.rb +3 -0
- data/lib/scruffy/layers/bar.rb +8 -0
- data/lib/scruffy/layers/line.rb +12 -2
- data/lib/scruffy/renderers/base.rb +50 -4
- data/lib/scruffy/renderers/cubed.rb +1 -1
- data/lib/scruffy/renderers/cubed3d.rb +1 -1
- data/lib/scruffy/renderers/empty.rb +2 -3
- data/lib/scruffy/renderers/reversed.rb +1 -2
- data/lib/scruffy/renderers/sparkline.rb +1 -2
- data/lib/scruffy/renderers/split.rb +29 -15
- data/lib/scruffy/renderers/standard.rb +31 -15
- data/lib/scruffy/themes.rb +6 -5
- data/lib/scruffy/version.rb +1 -1
- metadata +3 -2
data/CHANGES
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
= Scruffy Changelog
|
2
2
|
|
3
|
+
== Version 0.2.2
|
4
|
+
(August 19th, 2006)
|
5
|
+
|
6
|
+
* Removed all font-family and text-rendering attributes from elements.
|
7
|
+
- These were causing issues with Batik and Adobe Viewer. Horrible font problems.
|
8
|
+
* Added require 'builder' to renderers/base.rb
|
9
|
+
* Added minor shadows to most graph types. Adds some depth perception.
|
10
|
+
* Added graph.layout as an alias of renderer. (graph.layout looks nicer).
|
11
|
+
* Added markers, values, grid options.
|
12
|
+
|
3
13
|
== Version 0.2.1
|
4
14
|
(August 18th, 2006)
|
5
15
|
|
@@ -4,28 +4,32 @@ module Scruffy
|
|
4
4
|
attr_reader :id
|
5
5
|
|
6
6
|
# In terms of percentages: [10, 10] == 10% by 10%
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
attr_accessor :position
|
8
|
+
attr_accessor :size
|
9
|
+
attr_accessor :options
|
10
|
+
attr_accessor :visible
|
10
11
|
|
11
12
|
def initialize(id, options = {})
|
12
13
|
@id = id.to_sym
|
13
|
-
@position = options[:position]
|
14
|
-
@size = options[:size]
|
14
|
+
@position = options[:position] || [0, 0]
|
15
|
+
@size = options[:size] || [100, 100]
|
16
|
+
@visible = options[:visible] || true
|
15
17
|
@options = options
|
16
18
|
end
|
17
19
|
|
18
20
|
def render(svg, bounds, options={})
|
19
|
-
|
20
|
-
|
21
|
+
if @visible
|
22
|
+
unless bounds.nil?
|
23
|
+
@render_height = bounds[:height]
|
21
24
|
|
22
|
-
|
23
|
-
|
25
|
+
svg.g(:id => id.to_s,
|
26
|
+
:transform => "translate(#{bounds.delete(:x)}, #{bounds.delete(:y)})") {
|
24
27
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
28
|
+
draw(svg, bounds, options.merge(@options))
|
29
|
+
}
|
30
|
+
else
|
31
|
+
process(svg, options.merge(@options))
|
32
|
+
end
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
@@ -12,9 +12,7 @@ module Scruffy
|
|
12
12
|
svg.text(options[:point_markers][idx], :x => x_coord, :y => bounds[:height],
|
13
13
|
'font-size' => relative(90),
|
14
14
|
:fill => (options[:theme].marker || 'white').to_s,
|
15
|
-
'text-anchor' => 'middle'
|
16
|
-
'font-family' => options[:theme].font_family,
|
17
|
-
'text-rendering' => 'optimizeLegibility') unless options[:point_markers][idx].nil?
|
15
|
+
'text-anchor' => 'middle') unless options[:point_markers][idx].nil?
|
18
16
|
end
|
19
17
|
end
|
20
18
|
end # draw
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Scruffy
|
2
2
|
module Components
|
3
3
|
class Grid < Base
|
4
|
+
attr_accessor :markers
|
5
|
+
|
4
6
|
def draw(svg, bounds, options={})
|
5
|
-
markers = options[:markers] || 5
|
7
|
+
markers = (options[:markers] || self.markers) || 5
|
6
8
|
|
7
9
|
(0...markers).each do |idx|
|
8
10
|
marker = ((1 / (markers - 1).to_f) * idx) * bounds[:height]
|
@@ -4,8 +4,7 @@ module Scruffy
|
|
4
4
|
def draw(svg, bounds, options={})
|
5
5
|
svg.text(@options[:text], :class => 'text', :x => (bounds[:width] / 2), :y => bounds[:height],
|
6
6
|
'font-size' => relative(100), :fill => options[:theme].marker, :stroke => 'none', 'stroke-width' => '0',
|
7
|
-
'text-anchor' => (@options[:text_anchor] || 'middle')
|
8
|
-
'font-family' => options[:theme].font_family, 'text-rendering' => 'optimizeLegibility')
|
7
|
+
'text-anchor' => (@options[:text_anchor] || 'middle'))
|
9
8
|
end
|
10
9
|
end
|
11
10
|
end
|
@@ -20,9 +20,7 @@ module Scruffy::Components
|
|
20
20
|
:x => offset + point + relative(100),
|
21
21
|
:y => relative(80),
|
22
22
|
'font-size' => relative(80),
|
23
|
-
:fill => (options[:theme].marker || 'white')
|
24
|
-
'font-family' => options[:theme].font_family,
|
25
|
-
'text-rendering' => 'optimizeLegibility')
|
23
|
+
:fill => (options[:theme].marker || 'white'))
|
26
24
|
end
|
27
25
|
end # draw
|
28
26
|
|
@@ -5,6 +5,11 @@ module Scruffy
|
|
5
5
|
# In hindsight, ImageMagick and Mozilla SVG's handling of CSS styling is
|
6
6
|
# extremely inconsistant, so use this at your own risk.
|
7
7
|
class StyleInfo < Base
|
8
|
+
def initialize(*args)
|
9
|
+
super
|
10
|
+
|
11
|
+
@visible = false
|
12
|
+
end
|
8
13
|
def process(svg, options={})
|
9
14
|
svg.defs {
|
10
15
|
svg.style(:type => "text/css") {
|
@@ -4,8 +4,7 @@ module Scruffy
|
|
4
4
|
def draw(svg, bounds, options={})
|
5
5
|
svg.text(options[:title], :class => 'title', :x => (bounds[:width] / 2), :y => bounds[:height],
|
6
6
|
'font-size' => relative(100), :fill => options[:theme].marker, :stroke => 'none', 'stroke-width' => '0',
|
7
|
-
'text-anchor' => (@options[:text_anchor] || 'middle')
|
8
|
-
'font-family' => options[:theme].font_family, 'text-rendering' => 'optimizeLegibility')
|
7
|
+
'text-anchor' => (@options[:text_anchor] || 'middle'))
|
9
8
|
end
|
10
9
|
end
|
11
10
|
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Scruffy
|
2
2
|
module Components
|
3
3
|
class ValueMarkers < Base
|
4
|
+
attr_accessor :markers
|
5
|
+
|
4
6
|
def draw(svg, bounds, options={})
|
5
|
-
markers = options[:markers] || 5
|
7
|
+
markers = (options[:markers] || self.markers) || 5
|
6
8
|
all_values = []
|
7
9
|
|
8
10
|
(0...markers).each do |idx|
|
@@ -18,11 +20,9 @@ module Scruffy
|
|
18
20
|
svg.text( marker_value.to_s,
|
19
21
|
:x => bounds[:width],
|
20
22
|
:y => (bounds[:height] - marker),
|
21
|
-
'font-size' => relative(
|
23
|
+
'font-size' => relative(8),
|
22
24
|
:fill => ((options.delete(:marker_color_override) || options[:theme].marker) || 'white').to_s,
|
23
|
-
'text-anchor' => 'end'
|
24
|
-
'font-family' => options[:theme].font_family,
|
25
|
-
'text-rendering' => 'optimizeLegibility')
|
25
|
+
'text-anchor' => 'end')
|
26
26
|
end
|
27
27
|
|
28
28
|
end
|
data/lib/scruffy/formatters.rb
CHANGED
@@ -46,6 +46,25 @@ module Scruffy::Formatters
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
# Allows you to pass in a Proc for use as a formatter.
|
50
|
+
#
|
51
|
+
# Use:
|
52
|
+
#
|
53
|
+
# graph.value_formatter = Scruffy::Formatters::Custom.new { |value, idx, options| "Displays Returned Value" }
|
54
|
+
class Custom < Base
|
55
|
+
attr_reader :proc
|
56
|
+
|
57
|
+
def initialize(&block)
|
58
|
+
self.proc = block
|
59
|
+
end
|
60
|
+
|
61
|
+
def format(target, idx, options)
|
62
|
+
proc.call(target, idx, options)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
|
49
68
|
# Default number formatter.
|
50
69
|
# Limits precision, beautifies numbers.
|
51
70
|
class Number < Base
|
data/lib/scruffy/graph.rb
CHANGED
@@ -159,11 +159,20 @@ module Scruffy
|
|
159
159
|
options[:as] ? rasterizer.rasterize(svg, options) : svg
|
160
160
|
end
|
161
161
|
|
162
|
-
|
163
162
|
def renderer=(val)
|
164
163
|
raise ArgumentError, "Renderer must include a #render(options) method." unless (val.respond_to?(:render) && val.method(:render).arity.abs > 0)
|
165
164
|
|
166
165
|
@renderer = val
|
167
166
|
end
|
167
|
+
|
168
|
+
alias :layout :renderer
|
169
|
+
|
170
|
+
def component(id)
|
171
|
+
renderer.component(id)
|
172
|
+
end
|
173
|
+
|
174
|
+
def remove(id)
|
175
|
+
renderer.remove(id)
|
176
|
+
end
|
168
177
|
end
|
169
178
|
end
|
data/lib/scruffy/helpers.rb
CHANGED
@@ -7,6 +7,20 @@ module Scruffy::Helpers
|
|
7
7
|
# Provides common methods for canvas objects. Primarily used for providing spacial-type calculations
|
8
8
|
# where necessary.
|
9
9
|
module Canvas
|
10
|
+
attr_accessor :components
|
11
|
+
|
12
|
+
def reset_settings!
|
13
|
+
self.options = {}
|
14
|
+
end
|
15
|
+
|
16
|
+
def component(id, components=self.components)
|
17
|
+
components.find { |elem| elem.id == id }
|
18
|
+
end
|
19
|
+
|
20
|
+
def remove(id, components=self.components)
|
21
|
+
components.delete(component(id))
|
22
|
+
end
|
23
|
+
|
10
24
|
protected
|
11
25
|
# Converts percentage values into actual pixe values based on the known render size.
|
12
26
|
#
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module Scruffy::Helpers
|
2
|
+
|
2
3
|
# ==Scruffy::Helpers::LayerContainer
|
3
4
|
#
|
4
5
|
# Author:: Brasten Sager
|
@@ -8,10 +9,12 @@ module Scruffy::Helpers
|
|
8
9
|
# container for graph layers. The best example of this is the Scruffy::Graph
|
9
10
|
# object itself, but this module is also used by Scruffy::Layer::Stacked.
|
10
11
|
module LayerContainer
|
11
|
-
|
12
|
-
# a
|
13
|
-
#
|
14
|
-
#
|
12
|
+
|
13
|
+
# Adds a Layer to the Graph/Container. Accepts either a list of
|
14
|
+
# arguments used to build a new layer, or a Scruffy::Layers::Base-derived
|
15
|
+
# object. When passing a list of arguments, all arguments are optional,
|
16
|
+
# but the arguments specified must be provided in a particular order:
|
17
|
+
# type (Symbol), title (String), points (Array), options (Hash).
|
15
18
|
#
|
16
19
|
# Both #add and #<< can be used.
|
17
20
|
#
|
data/lib/scruffy/layers/area.rb
CHANGED
@@ -36,6 +36,9 @@ module Scruffy::Layers
|
|
36
36
|
# }
|
37
37
|
# }
|
38
38
|
# }
|
39
|
+
svg.g(:transform => "translate(0, -#{relative(2)})") {
|
40
|
+
svg.polygon(:points => points_value, :style => "fill: black; stroke: black; fill-opacity: 0.06; stroke-opacity: 0.06;")
|
41
|
+
}
|
39
42
|
|
40
43
|
svg.polygon(:points => points_value, :fill => color.to_s, :stroke => color.to_s, 'style' => "opacity: #{opacity}")
|
41
44
|
end
|
data/lib/scruffy/layers/bar.rb
CHANGED
@@ -12,6 +12,14 @@ module Scruffy::Layers
|
|
12
12
|
coords.each do |coord|
|
13
13
|
x, y, bar_height = (coord.first-(@bar_width * 0.5)), coord.last, (height - coord.last)
|
14
14
|
|
15
|
+
svg.g(:transform => "translate(-#{relative(0.5)}, -#{relative(0.5)})") {
|
16
|
+
svg.rect( :x => x, :y => y, :width => @bar_width + relative(1), :height => bar_height + relative(1),
|
17
|
+
:style => "fill: black; fill-opacity: 0.15; stroke: none;" )
|
18
|
+
svg.rect( :x => x+relative(0.5), :y => y+relative(2), :width => @bar_width + relative(1), :height => bar_height - relative(0.5),
|
19
|
+
:style => "fill: black; fill-opacity: 0.15; stroke: none;" )
|
20
|
+
|
21
|
+
}
|
22
|
+
|
15
23
|
svg.rect( :x => x, :y => y, :width => @bar_width, :height => bar_height,
|
16
24
|
:fill => color.to_s, 'style' => "opacity: #{opacity}; stroke: none;" )
|
17
25
|
end
|
data/lib/scruffy/layers/line.rb
CHANGED
@@ -9,11 +9,21 @@ module Scruffy::Layers
|
|
9
9
|
|
10
10
|
# Renders line graph.
|
11
11
|
def draw(svg, coords, options={})
|
12
|
+
svg.g(:class => 'shadow', :transform => "translate(#{relative(0.5)}, #{relative(0.5)})") {
|
13
|
+
svg.polyline( :points => stringify_coords(coords).join(' '), :fill => 'transparent',
|
14
|
+
:stroke => 'black', 'stroke-width' => relative(2),
|
15
|
+
:style => 'fill-opacity: 0; stroke-opacity: 0.35' )
|
16
|
+
|
17
|
+
coords.each { |coord| svg.circle( :cx => coord.first, :cy => coord.last + relative(0.9), :r => relative(2),
|
18
|
+
:style => "stroke-width: #{relative(2)}; stroke: black; opacity: 0.35;" ) }
|
19
|
+
}
|
20
|
+
|
21
|
+
|
12
22
|
svg.polyline( :points => stringify_coords(coords).join(' '), :fill => 'none',
|
13
23
|
:stroke => color.to_s, 'stroke-width' => relative(2) )
|
14
24
|
|
15
|
-
coords.each { |coord| svg.circle( :cx => coord.first, :cy => coord.last, :r => relative(2
|
16
|
-
:
|
25
|
+
coords.each { |coord| svg.circle( :cx => coord.first, :cy => coord.last, :r => relative(2),
|
26
|
+
:style => "stroke-width: #{relative(2)}; stroke: #{color.to_s}; fill: #{color.to_s}" ) }
|
17
27
|
end
|
18
28
|
end
|
19
29
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'builder'
|
1
2
|
module Scruffy::Renderers
|
2
3
|
# ===Scruffy::Renderers::Base
|
3
4
|
#
|
@@ -11,19 +12,29 @@ module Scruffy::Renderers
|
|
11
12
|
class Base
|
12
13
|
include Scruffy::Helpers::Canvas
|
13
14
|
|
14
|
-
attr_accessor :
|
15
|
+
attr_accessor :options
|
16
|
+
|
17
|
+
def initialize(options = {})
|
18
|
+
self.components = []
|
19
|
+
self.options = options
|
20
|
+
define_layout
|
21
|
+
end
|
15
22
|
|
16
23
|
# Renders the graph and all components.
|
17
24
|
def render(options = {})
|
18
25
|
options[:graph_id] ||= 'scruffy_graph'
|
19
26
|
options[:complexity] ||= (global_complexity || :normal)
|
20
27
|
|
28
|
+
# Allow subclasses to muck with components prior to renders.
|
29
|
+
rendertime_renderer = self.clone
|
30
|
+
rendertime_renderer.instance_eval { before_render if respond_to?(:before_render) }
|
31
|
+
|
21
32
|
svg = Builder::XmlMarkup.new(:indent => 2)
|
22
33
|
svg.instruct!
|
23
34
|
svg.instruct! 'DOCTYPE', 'svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" type'
|
24
35
|
svg.svg(:xmlns => "http://www.w3.org/2000/svg", 'xmlns:xlink' => "http://www.w3.org/1999/xlink", :width => options[:size].first, :height => options[:size].last) {
|
25
36
|
svg.g(:id => options[:graph_id]) {
|
26
|
-
|
37
|
+
rendertime_renderer.components.each do |component|
|
27
38
|
component.render(svg,
|
28
39
|
bounds_for( options[:size], component.position, component.size ),
|
29
40
|
options)
|
@@ -32,7 +43,42 @@ module Scruffy::Renderers
|
|
32
43
|
}
|
33
44
|
svg.target!
|
34
45
|
end
|
35
|
-
|
46
|
+
|
47
|
+
def before_render
|
48
|
+
set_values(self.options[:values]) if (self.options[:values] && self.options[:values] != :hide)
|
49
|
+
hide_grid if (self.options[:grid] == :hide)
|
50
|
+
hide_values if (self.options[:values] == :hide)
|
51
|
+
hide_labels if (self.options[:labels] == :hide)
|
52
|
+
end
|
53
|
+
|
54
|
+
def method_missing(sym, *args)
|
55
|
+
self.options = {} if self.options.nil?
|
56
|
+
|
57
|
+
if args.size > 0
|
58
|
+
self.options[sym] = args[0]
|
59
|
+
else
|
60
|
+
return self.options[sym]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
protected
|
65
|
+
def hide_grid
|
66
|
+
grids.each { |grid| grid.visible = false }
|
67
|
+
end
|
68
|
+
|
69
|
+
def set_values(val)
|
70
|
+
values.each { |value| value.markers = val }
|
71
|
+
grids.each { |grid| grid.markers = val }
|
72
|
+
end
|
73
|
+
|
74
|
+
def hide_values
|
75
|
+
values.each { |value| value.visible = false }
|
76
|
+
end
|
77
|
+
|
78
|
+
def hide_labels
|
79
|
+
labels.each { |label| label.visible = false }
|
80
|
+
end
|
81
|
+
|
36
82
|
private
|
37
83
|
def global_complexity
|
38
84
|
if Kernel.const_defined? "SCRUFFY_COMPLEXITY"
|
@@ -41,5 +87,5 @@ module Scruffy::Renderers
|
|
41
87
|
nil
|
42
88
|
end
|
43
89
|
end
|
44
|
-
end
|
90
|
+
end # base
|
45
91
|
end
|
@@ -13,11 +13,10 @@ module Scruffy::Renderers
|
|
13
13
|
#
|
14
14
|
# If a block is provided, the components array is passed to
|
15
15
|
# the block, allowing callers to add components during initialize.
|
16
|
-
def
|
17
|
-
self.components = []
|
16
|
+
def define_layout
|
18
17
|
self.components << Scruffy::Components::Background.new(:background, :position => [0,0], :size =>[100, 100])
|
19
18
|
|
20
|
-
yield(components) if block_given?
|
19
|
+
yield(self.components) if block_given?
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
@@ -2,8 +2,7 @@ module Scruffy
|
|
2
2
|
module Renderers
|
3
3
|
class Reversed < Base
|
4
4
|
|
5
|
-
def
|
6
|
-
self.components = []
|
5
|
+
def define_layout
|
7
6
|
self.components << Scruffy::Components::Background.new(:background, :position => [0,0], :size =>[100, 100])
|
8
7
|
self.components << Scruffy::Components::Title.new(:title, :position => [98, 95], :size => [1, 3], :text_anchor => 'end')
|
9
8
|
#self.components << Scruffy::Components::Grid.new(:grid, :position => [14, 12], :size => [78.5, 70])
|
@@ -2,8 +2,7 @@ module Scruffy
|
|
2
2
|
module Renderers
|
3
3
|
# Experimental, do not use.
|
4
4
|
class Sparkline < Base
|
5
|
-
def
|
6
|
-
self.components = []
|
5
|
+
def define_layout
|
7
6
|
self.components << Scruffy::Components::Graphs.new(:sparkline, :position => [0, 0], :size => [100, 100])
|
8
7
|
end
|
9
8
|
end
|
@@ -1,29 +1,43 @@
|
|
1
1
|
module Scruffy
|
2
2
|
module Renderers
|
3
3
|
# Renderer that splits the graphs up into four other little graphs.
|
4
|
-
class Split <
|
5
|
-
def
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
:position => [30, 54.5], :size => [40, 3])
|
4
|
+
class Split < Empty
|
5
|
+
def define_layout
|
6
|
+
super do |components|
|
7
|
+
components << Scruffy::Components::Title.new(:title, :position => [5, 2], :size => [90, 7])
|
8
|
+
components << Scruffy::Components::Label.new(:label_one, :text => self.options[:split_label] || '',
|
9
|
+
:position => [30, 54.5], :size => [40, 3])
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
# Viewports
|
12
|
+
components << Scruffy::Components::Viewport.new(:top, :position => [3, 20],
|
13
|
+
:size => [90, 30], &graph_block(:top))
|
14
|
+
components << Scruffy::Components::Viewport.new(:bottom, :position => [3, 65],
|
15
|
+
:size => [90, 30], &graph_block(:bottom))
|
17
16
|
|
18
|
-
|
17
|
+
components << Scruffy::Components::Legend.new(:legend, :position => [5, 11], :size => [90, 4])
|
18
|
+
end
|
19
19
|
end
|
20
20
|
|
21
|
+
protected
|
22
|
+
def labels
|
23
|
+
[component(:top).component(:labels), component(:bottom).component(:labels)]
|
24
|
+
end
|
25
|
+
|
26
|
+
def values
|
27
|
+
[component(:top).component(:values), component(:bottom).component(:values)]
|
28
|
+
end
|
29
|
+
|
30
|
+
def grids
|
31
|
+
[component(:top).component(:grid), component(:bottom).component(:grid)]
|
32
|
+
end
|
33
|
+
|
34
|
+
|
21
35
|
private
|
22
36
|
def graph_block(graph_filter)
|
23
37
|
block = Proc.new { |components|
|
24
38
|
components << Scruffy::Components::Grid.new(:grid, :position => [10, 0], :size => [90, 89])
|
25
|
-
components << Scruffy::Components::ValueMarkers.new(:
|
26
|
-
components << Scruffy::Components::DataMarkers.new(:
|
39
|
+
components << Scruffy::Components::ValueMarkers.new(:values, :position => [0, 2], :size => [8, 89])
|
40
|
+
components << Scruffy::Components::DataMarkers.new(:labels, :position => [10, 92], :size => [90, 8])
|
27
41
|
components << Scruffy::Components::Graphs.new(:graphs, :position => [10, 0], :size => [90, 89], :only => graph_filter)
|
28
42
|
}
|
29
43
|
|
@@ -1,20 +1,36 @@
|
|
1
|
-
module Scruffy
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
view << Scruffy::Components::DataMarkers.new(:data_markers, :position => [20, 94], :size => [80, 6])
|
13
|
-
view << Scruffy::Components::Graphs.new(:graphs, :position => [20, 0], :size => [80, 90])
|
1
|
+
module Scruffy::Renderers
|
2
|
+
class Standard < Empty
|
3
|
+
|
4
|
+
def define_layout
|
5
|
+
super do |components|
|
6
|
+
components << Scruffy::Components::Title.new(:title, :position => [5, 2], :size => [90, 7])
|
7
|
+
components << Scruffy::Components::Viewport.new(:view, :position => [2, 26], :size => [89, 66]) do |graph|
|
8
|
+
graph << Scruffy::Components::ValueMarkers.new(:values, :position => [0, 2], :size => [18, 89])
|
9
|
+
graph << Scruffy::Components::Grid.new(:grid, :position => [20, 0], :size => [80, 89])
|
10
|
+
graph << Scruffy::Components::DataMarkers.new(:labels, :position => [20, 92], :size => [80, 8])
|
11
|
+
graph << Scruffy::Components::Graphs.new(:graphs, :position => [20, 0], :size => [80, 89])
|
14
12
|
end
|
15
|
-
|
13
|
+
components << Scruffy::Components::Legend.new(:legend, :position => [5, 13], :size => [90, 6])
|
16
14
|
end
|
17
|
-
|
18
15
|
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
def hide_values
|
19
|
+
super
|
20
|
+
component(:view).position[0] = -10
|
21
|
+
component(:view).size[0] = 100
|
22
|
+
end
|
23
|
+
|
24
|
+
def labels
|
25
|
+
[component(:view).component(:labels)]
|
26
|
+
end
|
27
|
+
|
28
|
+
def values
|
29
|
+
[component(:view).component(:values)]
|
30
|
+
end
|
31
|
+
|
32
|
+
def grids
|
33
|
+
[component(:view).component(:grid)]
|
34
|
+
end
|
19
35
|
end
|
20
36
|
end
|
data/lib/scruffy/themes.rb
CHANGED
@@ -16,10 +16,10 @@ module Scruffy::Themes
|
|
16
16
|
#
|
17
17
|
# See Scruffy::Themes::Base#instantiate for examples.
|
18
18
|
class Base
|
19
|
-
attr_accessor :background
|
20
|
-
attr_accessor :colors
|
21
|
-
attr_accessor :marker
|
22
|
-
attr_accessor :font_family
|
19
|
+
attr_accessor :background # Background color or array of two colors
|
20
|
+
attr_accessor :colors # Array of colors for data graphs
|
21
|
+
attr_accessor :marker # Marker color for grid lines, values, etc.
|
22
|
+
attr_accessor :font_family # Font family: Not really supported. Maybe in the future.
|
23
23
|
|
24
24
|
# Returns a new Scruffy::Themes::Base object.
|
25
25
|
#
|
@@ -28,7 +28,8 @@ module Scruffy::Themes
|
|
28
28
|
# colors:: an array of color values to use for graphs.
|
29
29
|
# marker:: color used for grid lines, values, data points, etc.
|
30
30
|
# font_family:: in general, allows you to change the font used in the graph.
|
31
|
-
# This is not yet supported in most graph elements
|
31
|
+
# This is not yet supported in most graph elements,
|
32
|
+
# and may be deprecated soon anyway.
|
32
33
|
def initialize(descriptor)
|
33
34
|
self.background = descriptor[:background]
|
34
35
|
self.colors = descriptor[:colors]
|
data/lib/scruffy/version.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: scruffy
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2006-08-
|
6
|
+
version: 0.2.2
|
7
|
+
date: 2006-08-19 00:00:00 -07:00
|
8
8
|
summary: A powerful, clean graphing library for Ruby.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/scruffy/components/viewport.rb
|
57
57
|
- lib/scruffy/helpers/canvas.rb
|
58
58
|
- lib/scruffy/helpers/layer_container.rb
|
59
|
+
- lib/scruffy/helpers/meta.rb
|
59
60
|
- lib/scruffy/layers/all_smiles.rb
|
60
61
|
- lib/scruffy/layers/area.rb
|
61
62
|
- lib/scruffy/layers/average.rb
|