From d74a588a2f5b3e15a4fe94a946f058d0dfaa1c5e Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Mon, 1 Mar 2021 18:20:12 +0200 Subject: feature: scatter series should respect marker preference of parent chart --- lib/axlsx/drawing/scatter_series.rb | 7 +++++++ test/drawing/tc_scatter_series.rb | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index b9ca2c1d..1e116860 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -28,6 +28,10 @@ module Axlsx # @return [Boolean] attr_reader :smooth + # Line markers presence + # @return [Boolean] + attr_reader :marker + # Creates a new ScatterSeries def initialize(chart, options={}) @xData, @yData = nil @@ -40,6 +44,8 @@ module Axlsx @smooth = options[:smooth] end @ln_width = options[:ln_width] unless options[:ln_width].nil? + @marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style) + super(chart, options) @xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil? @yData = NumDataSource.new({:tag_name => :yVal, :data => options[:yData]}) unless options[:yData].nil? @@ -81,6 +87,7 @@ module Axlsx str << '' str << ('') str << '' + str << '' unless marker str << '' end if ln_width diff --git a/test/drawing/tc_scatter_series.rb b/test/drawing/tc_scatter_series.rb index ea3611ab..2139d65f 100644 --- a/test/drawing/tc_scatter_series.rb +++ b/test/drawing/tc_scatter_series.rb @@ -53,4 +53,16 @@ class TestScatterSeries < Test::Unit::TestCase assert_equal(doc.xpath("//a:ln[@w='#{@series.ln_width}']").length, 1) end + def test_chart_style_with_marker + @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Smooth Chart", :scatter_style => :smoothMarker + @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9] + assert(@series.marker, "markers are enabled for marker-related styles") + end + + def test_chart_style_without_marker + @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Line chart", :scatter_style => :line + @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9] + assert(!@series.marker, "markers are disabled for markerless scatter styles") + end + end -- cgit v1.2.3 From 8dd92ebff726f60fbd31f5f0dcb05849745dea39 Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Mon, 1 Mar 2021 18:37:28 +0200 Subject: feature: marker symbol management for scatter series --- lib/axlsx/drawing/scatter_series.rb | 24 ++++++++++++++++++++---- test/drawing/tc_scatter_series.rb | 14 ++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index 1e116860..b62fc006 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -30,11 +30,15 @@ module Axlsx # Line markers presence # @return [Boolean] - attr_reader :marker + attr_reader :show_marker + + # custom marker symbol + # @return [String] + attr_reader :marker_symbol # Creates a new ScatterSeries def initialize(chart, options={}) - @xData, @yData = nil + @xData, @yData, @marker_symbol = nil if options[:smooth].nil? # If caller hasn't specified smoothing or not, turn smoothing on or off based on scatter style @smooth = [:smooth, :smoothMarker].include?(chart.scatter_style) @@ -44,7 +48,7 @@ module Axlsx @smooth = options[:smooth] end @ln_width = options[:ln_width] unless options[:ln_width].nil? - @marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style) + @show_marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style) super(chart, options) @xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil? @@ -67,6 +71,12 @@ module Axlsx @ln_width = v end + # @see marker_symbol + def marker_symbol=(v) + Axlsx::validate_marker_symbol(v) + @marker_symbol = v + end + # Serializes the object # @param [String] str # @return [String] @@ -87,7 +97,13 @@ module Axlsx str << '' str << ('') str << '' - str << '' unless marker + + if !@show_marker + str << '' + elsif @marker_symbol != :default + str << '' + end + str << '' end if ln_width diff --git a/test/drawing/tc_scatter_series.rb b/test/drawing/tc_scatter_series.rb index 2139d65f..bf2fb958 100644 --- a/test/drawing/tc_scatter_series.rb +++ b/test/drawing/tc_scatter_series.rb @@ -53,16 +53,22 @@ class TestScatterSeries < Test::Unit::TestCase assert_equal(doc.xpath("//a:ln[@w='#{@series.ln_width}']").length, 1) end - def test_chart_style_with_marker + def test_false_show_marker @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Smooth Chart", :scatter_style => :smoothMarker @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9] - assert(@series.marker, "markers are enabled for marker-related styles") + assert(@series.show_marker, "markers are enabled for marker-related styles") end - def test_chart_style_without_marker + def test_true_show_marker @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Line chart", :scatter_style => :line @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9] - assert(!@series.marker, "markers are disabled for markerless scatter styles") + assert(!@series.show_marker, "markers are disabled for markerless scatter styles") + end + + def test_marker_symbol + @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Line chart", :scatter_style => :line + @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :marker_symbol => :diamond + assert_equal(@series.marker_symbol, :diamond, "markers are disabled for markerless scatter styles") end end -- cgit v1.2.3 From 61ad9973af22dab37b86d4f3a55ba4eef42b043e Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Mon, 1 Mar 2021 18:39:58 +0200 Subject: feature: spec cleanup --- test/drawing/tc_scatter_series.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/drawing/tc_scatter_series.rb b/test/drawing/tc_scatter_series.rb index bf2fb958..3d1d294d 100644 --- a/test/drawing/tc_scatter_series.rb +++ b/test/drawing/tc_scatter_series.rb @@ -54,21 +54,21 @@ class TestScatterSeries < Test::Unit::TestCase end def test_false_show_marker - @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Smooth Chart", :scatter_style => :smoothMarker + @chart = @ws.add_chart Axlsx::ScatterChart, :title => 'Smooth Chart', :scatter_style => :smoothMarker @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9] - assert(@series.show_marker, "markers are enabled for marker-related styles") + assert(@series.show_marker, 'markers are enabled for marker-related styles') end def test_true_show_marker - @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Line chart", :scatter_style => :line + @chart = @ws.add_chart Axlsx::ScatterChart, :title => 'Line chart', :scatter_style => :line @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9] - assert(!@series.show_marker, "markers are disabled for markerless scatter styles") + assert(!@series.show_marker, 'markers are disabled for markerless scatter styles') end def test_marker_symbol - @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Line chart", :scatter_style => :line + @chart = @ws.add_chart Axlsx::ScatterChart, :title => 'Line chart', :scatter_style => :line @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :marker_symbol => :diamond - assert_equal(@series.marker_symbol, :diamond, "markers are disabled for markerless scatter styles") + assert_equal(@series.marker_symbol, :diamond, 'series could have own custom marker symbol') end end -- cgit v1.2.3 From 9c733720e045ed4bb711053277e0ea817e83332b Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Tue, 2 Mar 2021 16:45:44 +0200 Subject: feature: respect marker preferences without color specification --- lib/axlsx/drawing/scatter_series.rb | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index b62fc006..f60f44fd 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -97,15 +97,12 @@ module Axlsx str << '' str << ('') str << '' - - if !@show_marker - str << '' - elsif @marker_symbol != :default - str << '' - end - + str << marker_xml str << '' + else + str << "#{marker_xml}" end + if ln_width str << '' str << '' @@ -117,5 +114,15 @@ module Axlsx end str end + + private + + def marker_xml + if !@show_marker + '' + elsif @marker_symbol != :default + '' + end + end end end -- cgit v1.2.3 From 1a3efb939ffa7f983aa25dd01a45d12ccf82b77a Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Fri, 5 Mar 2021 12:29:44 +0200 Subject: feature: handle default marker symbol --- lib/axlsx/drawing/scatter_series.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index f60f44fd..fd29053e 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -38,7 +38,7 @@ module Axlsx # Creates a new ScatterSeries def initialize(chart, options={}) - @xData, @yData, @marker_symbol = nil + @xData, @yData = nil if options[:smooth].nil? # If caller hasn't specified smoothing or not, turn smoothing on or off based on scatter style @smooth = [:smooth, :smoothMarker].include?(chart.scatter_style) @@ -49,6 +49,7 @@ module Axlsx end @ln_width = options[:ln_width] unless options[:ln_width].nil? @show_marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style) + @marker_symbol = options[:marker_symbol] || :default super(chart, options) @xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil? -- cgit v1.2.3 From bca4a468f0a1cd8efd89b91c79836464f56e4f0e Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Fri, 5 Mar 2021 13:31:00 +0200 Subject: feature: spec fix --- lib/axlsx/drawing/scatter_series.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index fd29053e..bd03f623 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -123,7 +123,7 @@ module Axlsx '' elsif @marker_symbol != :default '' - end + end.to_s end end end -- cgit v1.2.3 From 39dae25b05cf693119fbb9bab6dc744191b49b5c Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Fri, 5 Mar 2021 14:25:34 +0200 Subject: feature: helper method naming adjustment --- lib/axlsx/drawing/scatter_series.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index bd03f623..6cb077c0 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -98,10 +98,10 @@ module Axlsx str << '' str << ('') str << '' - str << marker_xml + str << marker_symbol_xml str << '' else - str << "#{marker_xml}" + str << "#{marker_symbol_xml}" end if ln_width @@ -118,7 +118,7 @@ module Axlsx private - def marker_xml + def marker_symbol_xml if !@show_marker '' elsif @marker_symbol != :default -- cgit v1.2.3 From f5449be23b39b95adc5d75df3bddf40e4cdb7f2a Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Fri, 5 Mar 2021 14:27:47 +0200 Subject: feature: useless assignment removed --- lib/axlsx/drawing/scatter_series.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/axlsx/drawing/scatter_series.rb b/lib/axlsx/drawing/scatter_series.rb index 6cb077c0..8158c373 100644 --- a/lib/axlsx/drawing/scatter_series.rb +++ b/lib/axlsx/drawing/scatter_series.rb @@ -49,7 +49,7 @@ module Axlsx end @ln_width = options[:ln_width] unless options[:ln_width].nil? @show_marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style) - @marker_symbol = options[:marker_symbol] || :default + @marker_symbol = :default super(chart, options) @xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil? -- cgit v1.2.3 From af8fbd4d095589d31494b6f04ef07ca93de89650 Mon Sep 17 00:00:00 2001 From: Oleg Yakovenko Date: Mon, 7 Feb 2022 10:34:17 +0200 Subject: Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d951aae..e79c88b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ CHANGELOG --------- - **Unreleased** + - [PR #75](https://github.com/caxlsx/caxlsx/pull/85) - Added manageable markers for scatter series - **January.5.21**: 3.0.4 - [PR #72](https://github.com/caxlsx/caxlsx/pull/72) - Relax Ruby dependency to allow for Ruby 3. This required Travis to be upgraded from Ubuntu Trusty to Ubuntu Bionic. rbx-3 was dropped. -- cgit v1.2.3