class Axlsx::DLbls

There are more elements in the dLbls spec that allow for
customizations and formatting. For now, I am just implementing the
basics.

The DLbls class manages serialization of data labels

showLeaderLines and leaderLines are not currently implemented

Attributes

chart_type[R]

The chart type that is using this data lables instance. This affects the xml output as not all chart types support the same data label attributes.

Public Class Methods

new(chart_type, options={}) click to toggle source

creates a new DLbls object

# File lib/axlsx/drawing/d_lbls.rb, line 12
def initialize(chart_type, options={})
  raise ArgumentError, 'chart_type must inherit from Chart' unless [Chart, LineChart].include?(chart_type.superclass)
  @chart_type = chart_type
  initialize_defaults
  parse_options options
end

Public Instance Methods

d_lbl_pos() click to toggle source

The position of the data labels in the chart @see d_lbl_pos= for a list of allowed values @return [Symbol]

# File lib/axlsx/drawing/d_lbls.rb, line 51
def d_lbl_pos
  return unless [Pie3DChart, LineChart].include? @chart_type
  @d_lbl_pos ||= :bestFit
end
d_lbl_pos=(label_position) click to toggle source

@see DLbls#d_lbl_pos Assigns the label postion for this data labels on this chart. Allowed positions are :bestFilt, :b, :ctr, :inBase, :inEnd, :l, :outEnd, :r and :t The default is :bestFit @param [Symbol] label_position the postion you want to use.

# File lib/axlsx/drawing/d_lbls.rb, line 62
def d_lbl_pos=(label_position)
  return unless [Pie3DChart, LineChart].include? @chart_type
  Axlsx::RestrictionValidator.validate 'DLbls#d_lbl_pos',  [:bestFit, :b, :ctr, :inBase, :inEnd, :l, :outEnd, :r, :t], label_position
  @d_lbl_pos = label_position
end
initialize_defaults() click to toggle source

Initialize all the values to false as Excel requires them to explicitly be disabled or all will show.

# File lib/axlsx/drawing/d_lbls.rb, line 35
def initialize_defaults
  [:show_legend_key, :show_val, :show_cat_name, 
   :show_ser_name, :show_percent, :show_bubble_size, 
   :show_leader_lines].each do |attr|
    self.send("#{attr}=", false)
  end
end
to_xml_string(str = '') click to toggle source

serializes the data labels @return [String]

# File lib/axlsx/drawing/d_lbls.rb, line 71
def to_xml_string(str = '')
  validate_attributes_for_chart_type
  str << '<c:dLbls>'
  %w(d_lbl_pos show_legend_key show_val show_cat_name show_ser_name show_percent show_bubble_size show_leader_lines).each do |key|
    next unless instance_values.keys.include?(key) && instance_values[key] != nil
    str <<  "<c:#{Axlsx::camel(key, false)} val='#{instance_values[key]}' />" 
  end
  str << '</c:dLbls>'
end
validate_attributes_for_chart_type() click to toggle source

nills out d_lbl_pos and show_leader_lines as these attributes, while valid in the spec actually chrash excel for any chart type other than pie charts.

# File lib/axlsx/drawing/d_lbls.rb, line 82
def validate_attributes_for_chart_type
  return if [Pie3DChart, LineChart].include? @chart_type
  @d_lbl_pos = nil
  @show_leader_lines = nil
end