summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2012-11-16 08:36:56 +0900
committerRandy Morgan <[email protected]>2012-11-16 08:36:56 +0900
commitbffe05e5f218376843d0932e63f2e9f3db81d05a (patch)
tree227d170e724caf0005cbbe275aa2df4a41d64b47
parent3ead1acc36dc8c7a1fe8834972931b6213e6d140 (diff)
downloadcaxlsx-bffe05e5f218376843d0932e63f2e9f3db81d05a.tar.gz
caxlsx-bffe05e5f218376843d0932e63f2e9f3db81d05a.zip
Added sensible defaults for color scale
You can now use Axlsx::ColorScale.three_tone or Axlsx::ColorScale.two_tone to create pretty conditional formatting.
-rwxr-xr-xexamples/example.rb10
-rw-r--r--lib/axlsx/workbook/worksheet/color_scale.rb14
-rw-r--r--test/workbook/worksheet/tc_color_scale.rb14
3 files changed, 30 insertions, 8 deletions
diff --git a/examples/example.rb b/examples/example.rb
index dc56b882..87678a2e 100755
--- a/examples/example.rb
+++ b/examples/example.rb
@@ -23,7 +23,7 @@ examples = []
#examples << :data_types
#examples << :hyperlinks
#examples << :number_currency_format
-examples << :venezuela_currency
+#examples << :venezuela_currency
#examples << :bar_chart
#examples << :chart_gridlines
#examples << :pie_chart
@@ -37,7 +37,7 @@ examples << :venezuela_currency
#examples << :printing
#examples << :comments
#examples << :panes
-#examples << :conditional_formatting
+examples << :conditional_formatting
#examples << :streaming
#examples << :shared_strings
#examples << :no_autowidth
@@ -604,8 +604,10 @@ if examples.include? :conditional_formatting
offset.upto(rows + offset) do |i|
ws.add_row ["Q#{i}", 10000*((rows/2-i) * (rows/2-i)), "=100*B#{i}/SUM(B3:B#{rows+offset})"], :style=>[nil, money, percent]
end
- # Apply conditional formatting to range B3:B100 in the worksheet
- color_scale = Axlsx::ColorScale.new
+ # color scale has two_tone and three_tone class methods to setup the excel defaults (2011)
+ # alternatively, you can pass in {:type => [:min, :max, :percent], :val => [whatever], :color =>[Some RGB String] to create a customized color scale object
+
+ color_scale = Axlsx::ColorScale.three_tone
ws.add_conditional_formatting("B3:B100", { :type => :colorScale, :operator => :greaterThan, :formula => "100000", :dxfId => profitable, :priority => 1, :color_scale => color_scale })
end
diff --git a/lib/axlsx/workbook/worksheet/color_scale.rb b/lib/axlsx/workbook/worksheet/color_scale.rb
index cdeac099..9d1f47cf 100644
--- a/lib/axlsx/workbook/worksheet/color_scale.rb
+++ b/lib/axlsx/workbook/worksheet/color_scale.rb
@@ -9,8 +9,18 @@ module Axlsx
class << self
def default_cfvos
- [{:type => :min, :val => 0, :color => 'FFFF0000'},
- {:type => :max, :val => 0, :color => 'FF0000FF'}]
+ [{:type => :min, :val => 0, :color => 'FFFF7128'},
+ {:type => :max, :val => 0, :color => 'FFFFEF9C'}]
+ end
+
+ def two_tone
+ self.new(*self.default_cfvos)
+ end
+
+ def three_tone
+ self.new({:type => :min, :val => 0, :color => 'FFF8696B'},
+ {:type => :percent, :val => '50', :color => 'FFFFEB84'},
+ {:type => :max, :val => 0, :color => 'FF63BE7B'})
end
end
# A simple typed list of cfvos
diff --git a/test/workbook/worksheet/tc_color_scale.rb b/test/workbook/worksheet/tc_color_scale.rb
index 9dde93ab..75e19cdb 100644
--- a/test/workbook/worksheet/tc_color_scale.rb
+++ b/test/workbook/worksheet/tc_color_scale.rb
@@ -5,15 +5,25 @@ class TestColorScale < Test::Unit::TestCase
@color_scale = Axlsx::ColorScale.new
end
+ def test_three_tone
+ color_scale = Axlsx::ColorScale.three_tone
+ assert_equal 3, color_scale.value_objects.size
+ assert_equal 3, color_scale.colors.size
+ end
+ def two_tone
+ color_scale = Axlsx::ColorScale.two_tone
+ assert_equal 2, color_scale.value_objects.size
+ assert_equal 2, color_scale.colors.size
+ end
def test_default_cfvo
first = Axlsx::ColorScale.default_cfvos.first
second = Axlsx::ColorScale.default_cfvos.last
- assert_equal 'FFFF0000', first[:color]
+ assert_equal 'FFFF7128', first[:color]
assert_equal :min,first[:type]
assert_equal 0, first[:val]
- assert_equal 'FF0000FF', second[:color]
+ assert_equal 'FFFFEF9C', second[:color]
assert_equal :max, second[:type]
assert_equal 0, second[:val]
end