diff options
Diffstat (limited to 'lib/SVG/Graph/BarBase.rb')
-rw-r--r-- | lib/SVG/Graph/BarBase.rb | 278 |
1 files changed, 139 insertions, 139 deletions
diff --git a/lib/SVG/Graph/BarBase.rb b/lib/SVG/Graph/BarBase.rb index acc9fecdd..7b7dda887 100644 --- a/lib/SVG/Graph/BarBase.rb +++ b/lib/SVG/Graph/BarBase.rb @@ -1,139 +1,139 @@ -require 'rexml/document'
-require 'SVG/Graph/Graph'
-
-module SVG
- module Graph
- # = Synopsis
- #
- # A superclass for bar-style graphs. Do not attempt to instantiate
- # directly; use one of the subclasses instead.
- #
- # = Author
- #
- # Sean E. Russell <serATgermaneHYPHENsoftwareDOTcom>
- #
- # Copyright 2004 Sean E. Russell
- # This software is available under the Ruby license[LICENSE.txt]
- #
- class BarBase < SVG::Graph::Graph
- # Ensures that :fields are provided in the configuration.
- def initialize config
- raise "fields was not supplied or is empty" unless config[:fields] &&
- config[:fields].kind_of?(Array) &&
- config[:fields].length > 0
- super
- end
-
- # In addition to the defaults set in Graph::initialize, sets
- # [bar_gap] true
- # [stack] :overlap
- def set_defaults
- init_with( :bar_gap => true, :stack => :overlap )
- end
-
- # Whether to have a gap between the bars or not, default
- # is true, set to false if you don't want gaps.
- attr_accessor :bar_gap
- # How to stack data sets. :overlap overlaps bars with
- # transparent colors, :top stacks bars on top of one another,
- # :side stacks the bars side-by-side. Defaults to :overlap.
- attr_accessor :stack
-
-
- protected
-
- def max_value
- @data.collect{|x| x[:data].max}.max
- end
-
- def min_value
- min = 0
- if min_scale_value.nil?
- min = @data.collect{|x| x[:data].min}.min
- min = min > 0 ? 0 : min
- else
- min = min_scale_value
- end
- return min
- end
-
- def get_css
- return <<EOL
-/* default fill styles for multiple datasets (probably only use a single dataset on this graph though) */
-.key1,.fill1{
- fill: #ff0000;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 0.5px;
-}
-.key2,.fill2{
- fill: #0000ff;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key3,.fill3{
- fill: #00ff00;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key4,.fill4{
- fill: #ffcc00;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key5,.fill5{
- fill: #00ccff;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key6,.fill6{
- fill: #ff00ff;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key7,.fill7{
- fill: #00ffff;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key8,.fill8{
- fill: #ffff00;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key9,.fill9{
- fill: #cc6666;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key10,.fill10{
- fill: #663399;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key11,.fill11{
- fill: #339900;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-.key12,.fill12{
- fill: #9966FF;
- fill-opacity: 0.5;
- stroke: none;
- stroke-width: 1px;
-}
-EOL
- end
- end
- end
-end
+require 'rexml/document' +require 'SVG/Graph/Graph' + +module SVG + module Graph + # = Synopsis + # + # A superclass for bar-style graphs. Do not attempt to instantiate + # directly; use one of the subclasses instead. + # + # = Author + # + # Sean E. Russell <serATgermaneHYPHENsoftwareDOTcom> + # + # Copyright 2004 Sean E. Russell + # This software is available under the Ruby license[LICENSE.txt] + # + class BarBase < SVG::Graph::Graph + # Ensures that :fields are provided in the configuration. + def initialize config + raise "fields was not supplied or is empty" unless config[:fields] && + config[:fields].kind_of?(Array) && + config[:fields].length > 0 + super + end + + # In addition to the defaults set in Graph::initialize, sets + # [bar_gap] true + # [stack] :overlap + def set_defaults + init_with( :bar_gap => true, :stack => :overlap ) + end + + # Whether to have a gap between the bars or not, default + # is true, set to false if you don't want gaps. + attr_accessor :bar_gap + # How to stack data sets. :overlap overlaps bars with + # transparent colors, :top stacks bars on top of one another, + # :side stacks the bars side-by-side. Defaults to :overlap. + attr_accessor :stack + + + protected + + def max_value + @data.collect{|x| x[:data].max}.max + end + + def min_value + min = 0 + if min_scale_value.nil? + min = @data.collect{|x| x[:data].min}.min + min = min > 0 ? 0 : min + else + min = min_scale_value + end + return min + end + + def get_css + return <<EOL +/* default fill styles for multiple datasets (probably only use a single dataset on this graph though) */ +.key1,.fill1{ + fill: #ff0000; + fill-opacity: 0.5; + stroke: none; + stroke-width: 0.5px; +} +.key2,.fill2{ + fill: #0000ff; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key3,.fill3{ + fill: #00ff00; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key4,.fill4{ + fill: #ffcc00; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key5,.fill5{ + fill: #00ccff; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key6,.fill6{ + fill: #ff00ff; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key7,.fill7{ + fill: #00ffff; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key8,.fill8{ + fill: #ffff00; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key9,.fill9{ + fill: #cc6666; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key10,.fill10{ + fill: #663399; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key11,.fill11{ + fill: #339900; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +.key12,.fill12{ + fill: #9966FF; + fill-opacity: 0.5; + stroke: none; + stroke-width: 1px; +} +EOL + end + end + end +end |