lib/axlsx/drawing/area_series.rb in caxlsx-3.1.1 vs lib/axlsx/drawing/area_series.rb in caxlsx-3.2.0

- old
+ new

@@ -1,110 +1,110 @@ -# encoding: UTF-8 -module Axlsx - # A AreaSeries defines the title, data and labels for line charts - # @note The recommended way to manage series is to use Chart#add_series - # @see Worksheet#add_chart - # @see Chart#add_series - class AreaSeries < Series - - # The data for this series. - # @return [ValAxisData] - attr_reader :data - - # The labels for this series. - # @return [CatAxisData] - attr_reader :labels - - # The fill color for this series. - # Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used. - # @return [String] - attr_reader :color - - # show markers on values - # @return [Boolean] - attr_reader :show_marker - - # custom marker symbol - # @return [String] - attr_reader :marker_symbol - - # line smoothing on values - # @return [Boolean] - attr_reader :smooth - - # Creates a new series - # @option options [Array, SimpleTypedList] data - # @option options [Array, SimpleTypedList] labels - # @param [Chart] chart - def initialize(chart, options={}) - @show_marker = false - @marker_symbol = options[:marker_symbol] ? options[:marker_symbol] : :default - @smooth = false - @labels, @data = nil, nil - super(chart, options) - @labels = AxDataSource.new(:data => options[:labels]) unless options[:labels].nil? - @data = NumDataSource.new(options) unless options[:data].nil? - end - - # @see color - def color=(v) - @color = v - end - - # @see show_marker - def show_marker=(v) - Axlsx::validate_boolean(v) - @show_marker = v - end - - # @see marker_symbol - def marker_symbol=(v) - Axlsx::validate_marker_symbol(v) - @marker_symbol = v - end - - # @see smooth - def smooth=(v) - Axlsx::validate_boolean(v) - @smooth = v - end - - # Serializes the object - # @param [String] str - # @return [String] - def to_xml_string(str = '') - super(str) do - if color - str << '<c:spPr><a:solidFill>' - str << ('<a:srgbClr val="' << color << '"/>') - str << '</a:solidFill>' - str << '<a:ln w="28800">' - str << '<a:solidFill>' - str << ('<a:srgbClr val="' << color << '"/>') - str << '</a:solidFill>' - str << '</a:ln>' - str << '<a:round/>' - str << '</c:spPr>' - end - - if !@show_marker - str << '<c:marker><c:symbol val="none"/></c:marker>' - elsif @marker_symbol != :default - str << '<c:marker><c:symbol val="' + @marker_symbol.to_s + '"/></c:marker>' - end - - @labels.to_xml_string(str) unless @labels.nil? - @data.to_xml_string(str) unless @data.nil? - str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>') - end - end - - private - - # assigns the data for this series - def data=(v) DataTypeValidator.validate "Series.data", [NumDataSource], v; @data = v; end - - # assigns the labels for this series - def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end - - end -end +# encoding: UTF-8 +module Axlsx + # A AreaSeries defines the title, data and labels for line charts + # @note The recommended way to manage series is to use Chart#add_series + # @see Worksheet#add_chart + # @see Chart#add_series + class AreaSeries < Series + + # The data for this series. + # @return [ValAxisData] + attr_reader :data + + # The labels for this series. + # @return [CatAxisData] + attr_reader :labels + + # The fill color for this series. + # Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used. + # @return [String] + attr_reader :color + + # show markers on values + # @return [Boolean] + attr_reader :show_marker + + # custom marker symbol + # @return [String] + attr_reader :marker_symbol + + # line smoothing on values + # @return [Boolean] + attr_reader :smooth + + # Creates a new series + # @option options [Array, SimpleTypedList] data + # @option options [Array, SimpleTypedList] labels + # @param [Chart] chart + def initialize(chart, options={}) + @show_marker = false + @marker_symbol = options[:marker_symbol] ? options[:marker_symbol] : :default + @smooth = false + @labels, @data = nil, nil + super(chart, options) + @labels = AxDataSource.new(:data => options[:labels]) unless options[:labels].nil? + @data = NumDataSource.new(options) unless options[:data].nil? + end + + # @see color + def color=(v) + @color = v + end + + # @see show_marker + def show_marker=(v) + Axlsx::validate_boolean(v) + @show_marker = v + end + + # @see marker_symbol + def marker_symbol=(v) + Axlsx::validate_marker_symbol(v) + @marker_symbol = v + end + + # @see smooth + def smooth=(v) + Axlsx::validate_boolean(v) + @smooth = v + end + + # Serializes the object + # @param [String] str + # @return [String] + def to_xml_string(str = '') + super(str) do + if color + str << '<c:spPr><a:solidFill>' + str << ('<a:srgbClr val="' << color << '"/>') + str << '</a:solidFill>' + str << '<a:ln w="28800">' + str << '<a:solidFill>' + str << ('<a:srgbClr val="' << color << '"/>') + str << '</a:solidFill>' + str << '</a:ln>' + str << '<a:round/>' + str << '</c:spPr>' + end + + if !@show_marker + str << '<c:marker><c:symbol val="none"/></c:marker>' + elsif @marker_symbol != :default + str << '<c:marker><c:symbol val="' + @marker_symbol.to_s + '"/></c:marker>' + end + + @labels.to_xml_string(str) unless @labels.nil? + @data.to_xml_string(str) unless @data.nil? + str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>') + end + end + + private + + # assigns the data for this series + def data=(v) DataTypeValidator.validate "Series.data", [NumDataSource], v; @data = v; end + + # assigns the labels for this series + def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end + + end +end