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