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