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