Sha256: 0e19d63abafb2405633ed00c99569014fa2253489031394e67768a7d977bd2ee

Contents?: true

Size: 1.77 KB

Versions: 4

Compression:

Stored size: 1.77 KB

Contents

module Axlsx
  # A Series defines the title, data and labels for chart data.
  # @note The recommended way to manage series is to use Chart#add_series
  # @see Worksheet#add_chart
  # @see Chart#add_series
  class Series

    # The chart that owns this series
    # @return [Chart]
    attr_reader :chart

    # The index of this series in the chart's series.
    # @return [Integer]
    attr_reader :index

    # The order of this series in the chart's series.
    # @return [Integer]
    attr_accessor :order

    # The title of the series
    # @return [String]
    attr_accessor :title

    # Creates a new series
    # @param [Chart] chart
    # @option options [Integer] order
    # @option options [String] title
    def initialize(chart, options={})
      self.chart = chart
      @chart.series << self
      options.each do |o|
        self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
      end
    end    
    
    # retrieves the series index in the chart's series collection
    def index
      @chart.series.index(self)
    end

    def order=(v)  Axlsx::validate_unsigned_int(v); @order = v; end

    def order
      @order || index
    end

    def title=(v)  Axlsx::validate_string(v); @title = v; end
    
    private 
    
    # assigns the chart for this series
    def chart=(v)  DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end    

    # Serializes the series
    # @param [Nokogiri::XML::Builder] xml The document builder instance this objects xml will be added to.
    # @return [String]
    def to_xml(xml)
      xml.send('c:ser') {
        xml.send('c:idx', :val=>index)
        xml.send('c:order', :val=>order || index)
        xml.send('c:tx') {
          xml.send('c:v', self.title)
        }
        yield xml if block_given?
      }
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
axlsx-1.0.4 lib/axlsx/drawing/series.rb
axlsx-1.0.3 lib/axlsx/drawing/series.rb
axlsx-1.0.1 lib/axlsx/drawing/series.rb
axlsx-1.0.0 lib/axlsx/drawing/series.rb