diff .svn/pristine/05/05cdc085e6ab746bd3734a56f879f137f280e27b.svn-base @ 1295:622f24f53b42 redmine-2.3

Update to Redmine SVN revision 11972 on 2.3-stable branch
author Chris Cannam
date Fri, 14 Jun 2013 09:02:21 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.svn/pristine/05/05cdc085e6ab746bd3734a56f879f137f280e27b.svn-base	Fri Jun 14 09:02:21 2013 +0100
@@ -0,0 +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