lib/write_xlsx/chart/series.rb in write_xlsx-1.11.1 vs lib/write_xlsx/chart/series.rb in write_xlsx-1.11.2

- old
+ new

@@ -57,14 +57,17 @@ end class Trendline < Chartline attr_reader :name, :forward, :backward, :order, :period attr_reader :intercept, :display_equation, :display_r_squared + attr_reader :label def initialize(params) super(params) + @label = trendline_label_properties(params[:label]) + @name = params[:name] @forward = params[:forward] @backward = params[:backward] @order = params[:order] @period = params[:period] @@ -73,9 +76,54 @@ @display_r_squared = params[:display_r_squared] @type = value_or_raise(types, params[:type], 'trendline type') end private + + # + # Convert user defined trendline label properties to the structure required + # internally. + # + def trendline_label_properties(_label) + return unless _label || _label.is_a?(Hash) + + # Copy the user supplied properties. + label = {} + + # Set the font properties for the label. + label[:font] = convert_font_args(_label[:font]) if ptrue?(_label[:font]) + + # Set the line properties for the label. + line = line_properties(_label[:line]) + + # Allow 'border' as a synonym for 'line'. + line = line_properties(_label[:border]) if ptrue?(_label[:border]) + + # Set the fill properties for the label. + fill = fill_properties(_label[:fill]) + + # Set the pattern properties for the label. + pattern = pattern_properties(_label[:pattern]) + + # Set the gradient fill properties for the label. + gradient = gradient_properties(_label[:gradient]) + + # Pattern fill overrides solid fill. + fill = nil if ptrue?(pattern) + + # Gradient fill overrides solid and pattern fills. + if ptrue?(gradient) + pattern = nil + fill = nil + end + + label[:line] = line + label[:fill] = fill + label[:pattern] = pattern + label[:gradient] = gradient + + label + end def types { exponential: 'exp', linear: 'linear',