diff options
| author | Randy Morgan <[email protected]> | 2012-11-16 08:36:56 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2012-11-16 08:36:56 +0900 |
| commit | bffe05e5f218376843d0932e63f2e9f3db81d05a (patch) | |
| tree | 227d170e724caf0005cbbe275aa2df4a41d64b47 | |
| parent | 3ead1acc36dc8c7a1fe8834972931b6213e6d140 (diff) | |
| download | caxlsx-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-x | examples/example.rb | 10 | ||||
| -rw-r--r-- | lib/axlsx/workbook/worksheet/color_scale.rb | 14 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_color_scale.rb | 14 |
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 |
