annotate lib/SVG/Graph/BarBase.rb @ 1327:287f201c2802 redmine-2.2-integration

Add italic
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Wed, 19 Jun 2013 20:56:22 +0100
parents 3e4c3460b6ca
children
rev   line source
Chris@1294 1 require 'rexml/document'
Chris@1294 2 require 'SVG/Graph/Graph'
Chris@1294 3
Chris@1294 4 module SVG
Chris@1294 5 module Graph
Chris@1294 6 # = Synopsis
Chris@1294 7 #
Chris@1294 8 # A superclass for bar-style graphs. Do not attempt to instantiate
Chris@1294 9 # directly; use one of the subclasses instead.
Chris@1294 10 #
Chris@1294 11 # = Author
Chris@1294 12 #
Chris@1294 13 # Sean E. Russell <serATgermaneHYPHENsoftwareDOTcom>
Chris@1294 14 #
Chris@1294 15 # Copyright 2004 Sean E. Russell
Chris@1294 16 # This software is available under the Ruby license[LICENSE.txt]
Chris@1294 17 #
Chris@1294 18 class BarBase < SVG::Graph::Graph
Chris@1294 19 # Ensures that :fields are provided in the configuration.
Chris@1294 20 def initialize config
Chris@1294 21 raise "fields was not supplied or is empty" unless config[:fields] &&
Chris@1294 22 config[:fields].kind_of?(Array) &&
Chris@1294 23 config[:fields].length > 0
Chris@1294 24 super
Chris@1294 25 end
Chris@1294 26
Chris@1294 27 # In addition to the defaults set in Graph::initialize, sets
Chris@1294 28 # [bar_gap] true
Chris@1294 29 # [stack] :overlap
Chris@1294 30 def set_defaults
Chris@1294 31 init_with( :bar_gap => true, :stack => :overlap )
Chris@1294 32 end
Chris@1294 33
Chris@1294 34 # Whether to have a gap between the bars or not, default
Chris@1294 35 # is true, set to false if you don't want gaps.
Chris@1294 36 attr_accessor :bar_gap
Chris@1294 37 # How to stack data sets. :overlap overlaps bars with
Chris@1294 38 # transparent colors, :top stacks bars on top of one another,
Chris@1294 39 # :side stacks the bars side-by-side. Defaults to :overlap.
Chris@1294 40 attr_accessor :stack
Chris@1294 41
Chris@1294 42
Chris@1294 43 protected
Chris@1294 44
Chris@1294 45 def max_value
Chris@1294 46 @data.collect{|x| x[:data].max}.max
Chris@1294 47 end
Chris@1294 48
Chris@1294 49 def min_value
Chris@1294 50 min = 0
Chris@1294 51 if min_scale_value.nil?
Chris@1294 52 min = @data.collect{|x| x[:data].min}.min
Chris@1294 53 min = min > 0 ? 0 : min
Chris@1294 54 else
Chris@1294 55 min = min_scale_value
Chris@1294 56 end
Chris@1294 57 return min
Chris@1294 58 end
Chris@1294 59
Chris@1294 60 def get_css
Chris@1294 61 return <<EOL
Chris@1294 62 /* default fill styles for multiple datasets (probably only use a single dataset on this graph though) */
Chris@1294 63 .key1,.fill1{
Chris@1294 64 fill: #ff0000;
Chris@1294 65 fill-opacity: 0.5;
Chris@1294 66 stroke: none;
Chris@1294 67 stroke-width: 0.5px;
Chris@1294 68 }
Chris@1294 69 .key2,.fill2{
Chris@1294 70 fill: #0000ff;
Chris@1294 71 fill-opacity: 0.5;
Chris@1294 72 stroke: none;
Chris@1294 73 stroke-width: 1px;
Chris@1294 74 }
Chris@1294 75 .key3,.fill3{
Chris@1294 76 fill: #00ff00;
Chris@1294 77 fill-opacity: 0.5;
Chris@1294 78 stroke: none;
Chris@1294 79 stroke-width: 1px;
Chris@1294 80 }
Chris@1294 81 .key4,.fill4{
Chris@1294 82 fill: #ffcc00;
Chris@1294 83 fill-opacity: 0.5;
Chris@1294 84 stroke: none;
Chris@1294 85 stroke-width: 1px;
Chris@1294 86 }
Chris@1294 87 .key5,.fill5{
Chris@1294 88 fill: #00ccff;
Chris@1294 89 fill-opacity: 0.5;
Chris@1294 90 stroke: none;
Chris@1294 91 stroke-width: 1px;
Chris@1294 92 }
Chris@1294 93 .key6,.fill6{
Chris@1294 94 fill: #ff00ff;
Chris@1294 95 fill-opacity: 0.5;
Chris@1294 96 stroke: none;
Chris@1294 97 stroke-width: 1px;
Chris@1294 98 }
Chris@1294 99 .key7,.fill7{
Chris@1294 100 fill: #00ffff;
Chris@1294 101 fill-opacity: 0.5;
Chris@1294 102 stroke: none;
Chris@1294 103 stroke-width: 1px;
Chris@1294 104 }
Chris@1294 105 .key8,.fill8{
Chris@1294 106 fill: #ffff00;
Chris@1294 107 fill-opacity: 0.5;
Chris@1294 108 stroke: none;
Chris@1294 109 stroke-width: 1px;
Chris@1294 110 }
Chris@1294 111 .key9,.fill9{
Chris@1294 112 fill: #cc6666;
Chris@1294 113 fill-opacity: 0.5;
Chris@1294 114 stroke: none;
Chris@1294 115 stroke-width: 1px;
Chris@1294 116 }
Chris@1294 117 .key10,.fill10{
Chris@1294 118 fill: #663399;
Chris@1294 119 fill-opacity: 0.5;
Chris@1294 120 stroke: none;
Chris@1294 121 stroke-width: 1px;
Chris@1294 122 }
Chris@1294 123 .key11,.fill11{
Chris@1294 124 fill: #339900;
Chris@1294 125 fill-opacity: 0.5;
Chris@1294 126 stroke: none;
Chris@1294 127 stroke-width: 1px;
Chris@1294 128 }
Chris@1294 129 .key12,.fill12{
Chris@1294 130 fill: #9966FF;
Chris@1294 131 fill-opacity: 0.5;
Chris@1294 132 stroke: none;
Chris@1294 133 stroke-width: 1px;
Chris@1294 134 }
Chris@1294 135 EOL
Chris@1294 136 end
Chris@1294 137 end
Chris@1294 138 end
Chris@1294 139 end