From c4471f4448799d3980f4db5f1cfaaa4e36d95bee Mon Sep 17 00:00:00 2001 From: Randy Morgan Date: Fri, 20 Jul 2012 21:45:13 +0900 Subject: data labels for bar and line charts --- lib/axlsx/drawing/bar_3D_chart.rb | 18 ++++++++++-------- lib/axlsx/drawing/d_lbls.rb | 4 ++++ lib/axlsx/drawing/line_3D_chart.rb | 19 +++++++++++-------- 3 files changed, 25 insertions(+), 16 deletions(-) (limited to 'lib') diff --git a/lib/axlsx/drawing/bar_3D_chart.rb b/lib/axlsx/drawing/bar_3D_chart.rb index 5db7c1e4..f3eb77e3 100644 --- a/lib/axlsx/drawing/bar_3D_chart.rb +++ b/lib/axlsx/drawing/bar_3D_chart.rb @@ -77,6 +77,7 @@ module Axlsx super(frame, options) @series_type = BarSeries @view_3D = View3D.new({:r_ang_ax=>1}.merge(options)) + @d_lbls = nil end # The direction of the bars in the chart @@ -119,20 +120,14 @@ module Axlsx # @param [String] str # @return [String] def to_xml_string(str = '') + remove_invalid_d_lbls_attributes super(str) do |str_inner| str_inner << '' str_inner << '' str_inner << '' str_inner << '' @series.each { |ser| ser.to_xml_string(str_inner) } - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' + @d_lbls.to_xml_string(str) if @d_lbls str_inner << '' unless @gap_width.nil? str_inner << '' unless @gap_depth.nil? str_inner << '' unless @shape.nil? @@ -144,5 +139,12 @@ module Axlsx @val_axis.to_xml_string str_inner end end + + def remove_invalid_d_lbls_attributes + return unless @d_lbls + @d_lbls.instance_eval{ @d_lbl_pos = nil + @show_leader_lines = nil + } + end end end diff --git a/lib/axlsx/drawing/d_lbls.rb b/lib/axlsx/drawing/d_lbls.rb index 9777aeb5..13882056 100644 --- a/lib/axlsx/drawing/d_lbls.rb +++ b/lib/axlsx/drawing/d_lbls.rb @@ -19,6 +19,10 @@ module Axlsx # These attributes are all boolean so I'm doing a bit of a hand # waving magic show to set up the attriubte accessors + # @note + # not all charts support all methods! + # Bar3DChart and Line3DChart and ScatterChart do not support d_lbl_pos or show_leader_lines + # BOOLEAN_ATTRIBUTES = [:show_legend_key, :show_val, :show_cat_name, :show_ser_name, :show_percent, :show_bubble_size, :show_leader_lines] # creates a new DLbls object diff --git a/lib/axlsx/drawing/line_3D_chart.rb b/lib/axlsx/drawing/line_3D_chart.rb index 5fc3e7c2..2268a6dc 100644 --- a/lib/axlsx/drawing/line_3D_chart.rb +++ b/lib/axlsx/drawing/line_3D_chart.rb @@ -71,6 +71,7 @@ module Axlsx super(frame, options) @series_type = LineSeries @view_3D = View3D.new({:perspective=>30}.merge(options)) + @d_lbls = nil end # @see grouping @@ -89,19 +90,13 @@ module Axlsx # @param [String] str # @return [String] def to_xml_string(str = '') + remove_invalid_d_lbls_attributes super(str) do |str_inner| str_inner << '' str_inner << '' str_inner << '' @series.each { |ser| ser.to_xml_string(str_inner) } - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' - str_inner << '' + @d_lbls.to_xml_string(str) if @d_lbls str_inner << '' unless @gapDepth.nil? str_inner << '' str_inner << '' @@ -112,6 +107,14 @@ module Axlsx @serAxis.to_xml_string str_inner end end + # + # nills out d_lbls attributes that are not allowed in this chart type + def remove_invalid_d_lbls_attributes + return unless @d_lbls + @d_lbls.instance_eval{ @d_lbl_pos = nil + @show_leader_lines = nil + } + end end end -- cgit v1.2.3