lib/write_xlsx/chart/axis.rb in write_xlsx-0.87.0 vs lib/write_xlsx/chart/axis.rb in write_xlsx-0.88.0
- old
+ new
@@ -7,11 +7,12 @@
class Chart
class Axis < Caption
include Writexlsx::Utility
attr_accessor :defaults
- attr_accessor :min, :max, :num_format, :position, :major_tick_mark
+ attr_accessor :min, :max, :num_format, :position
+ attr_accessor :major_tick_mark, :minor_tick_mark
attr_reader :minor_unit, :major_unit, :minor_unit_type, :major_unit_type
attr_reader :display_units_visible, :display_units
attr_reader :log_base, :crossing, :position_axis, :label_position, :visible
attr_reader :num_format_linked, :num_font, :layout, :interval_unit
attr_reader :interval_tick, :major_gridlines, :minor_gridlines, :reverse
@@ -25,15 +26,15 @@
[
:reverse, :min, :max, :minor_unit, :major_unit, :minor_unit_type,
:major_unit_type, :log_base, :crossing, :position_axis,
:label_position, :num_format, :num_format_linked, :interval_unit,
- :interval_tick, :major_tick_mark, :line, :fill
+ :interval_tick, :line, :fill
].each { |val| instance_variable_set("@#{val}", args[val]) }
- @visible = args[:visible] || 1
-
set_major_minor_gridlines(args)
+
+ @visible = args[:visible] || 1
set_display_units(args)
set_display_units_visible(args)
set_position(args)
set_position_axis
set_font_properties(args)
@@ -42,10 +43,14 @@
set_axis_fill(args)
if ptrue?(args[:text_axis])
@chart.date_category = false
@text_axis = true
end
+
+ # Set the tick marker types.
+ @major_tick_mark = get_tick_type(params[:major_tick_mark])
+ @minor_tick_mark = get_tick_type(params[:minor_tick_mark])
end
#
# Write the <c:numberFormat> element. Note: It is assumed that if a user
# defined number format is supplied (i.e., non-default) then the sourceLinked
@@ -124,18 +129,38 @@
# warn "Unknown display_units type '$display_units'\n"
return
end
end
+ #
+ # Convert user tick types to internal units.
+ #
+ def get_tick_type(tick_type)
+ return if !ptrue?(tick_type)
+
+ types = {
+ 'outside' => 'out',
+ 'inside' => 'in',
+ 'none' => 'none',
+ 'cross' => 'cross'
+ }
+
+ if(types[tick_type])
+ return types[tick_type]
+ else
+ raise "Unknown tick_type type '#{tick_type}'\n"
+ end
+ end
+
def set_display_units(args)
@display_units = get_display_units(args[:display_units])
end
def set_display_units_visible(args)
if args[:display_units_visible]
@display_units_visible = args[:display_units_visible]
else
- @display_units_visible = 1;
+ @display_units_visible = 1
end
end
def set_position(args)
# Only use the first letter of bottom, top, left or right.