caxlsx 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +394 -354
  5. data/LICENSE +21 -21
  6. data/README.md +184 -168
  7. data/Rakefile +28 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
  10. data/lib/axlsx/content_type/content_type.rb +22 -26
  11. data/lib/axlsx/content_type/default.rb +21 -25
  12. data/lib/axlsx/content_type/override.rb +21 -25
  13. data/lib/axlsx/doc_props/app.rb +230 -235
  14. data/lib/axlsx/doc_props/core.rb +34 -39
  15. data/lib/axlsx/drawing/area_chart.rb +96 -99
  16. data/lib/axlsx/drawing/area_series.rb +107 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +21 -26
  18. data/lib/axlsx/drawing/axes.rb +60 -61
  19. data/lib/axlsx/drawing/axis.rb +185 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +135 -138
  22. data/lib/axlsx/drawing/bar_series.rb +91 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +56 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +60 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +80 -85
  26. data/lib/axlsx/drawing/chart.rb +294 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +92 -90
  28. data/lib/axlsx/drawing/drawing.rb +163 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +51 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +97 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
  32. data/lib/axlsx/drawing/line_chart.rb +96 -99
  33. data/lib/axlsx/drawing/line_series.rb +107 -110
  34. data/lib/axlsx/drawing/marker.rb +80 -84
  35. data/lib/axlsx/drawing/num_data.rb +47 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +58 -62
  37. data/lib/axlsx/drawing/num_val.rb +31 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
  39. data/lib/axlsx/drawing/pic.rb +244 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +39 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
  42. data/lib/axlsx/drawing/pie_series.rb +69 -74
  43. data/lib/axlsx/drawing/scaling.rb +57 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +71 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +126 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +41 -45
  47. data/lib/axlsx/drawing/series.rb +67 -69
  48. data/lib/axlsx/drawing/series_title.rb +23 -25
  49. data/lib/axlsx/drawing/str_data.rb +37 -42
  50. data/lib/axlsx/drawing/str_val.rb +31 -34
  51. data/lib/axlsx/drawing/title.rb +104 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
  53. data/lib/axlsx/drawing/val_axis.rb +34 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +39 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +63 -66
  57. data/lib/axlsx/package.rb +397 -388
  58. data/lib/axlsx/rels/relationship.rb +127 -130
  59. data/lib/axlsx/rels/relationships.rb +29 -32
  60. data/lib/axlsx/stylesheet/border.rb +70 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +69 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +68 -72
  65. data/lib/axlsx/stylesheet/color.rb +77 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +75 -79
  67. data/lib/axlsx/stylesheet/fill.rb +31 -35
  68. data/lib/axlsx/stylesheet/font.rb +157 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
  73. data/lib/axlsx/stylesheet/styles.rb +543 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +51 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +42 -46
  77. data/lib/axlsx/stylesheet/xf.rb +144 -147
  78. data/lib/axlsx/util/accessors.rb +62 -64
  79. data/lib/axlsx/util/constants.rb +414 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +24 -11
  81. data/lib/axlsx/util/options_parser.rb +15 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +88 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +180 -179
  84. data/lib/axlsx/util/storage.rb +142 -146
  85. data/lib/axlsx/util/validators.rb +315 -312
  86. data/lib/axlsx/util/zip_command.rb +71 -73
  87. data/lib/axlsx/version.rb +4 -5
  88. data/lib/axlsx/workbook/defined_name.rb +129 -128
  89. data/lib/axlsx/workbook/defined_names.rb +20 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
  91. data/lib/axlsx/workbook/workbook.rb +430 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +75 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +20 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +32 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +16 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +142 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +173 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
  139. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  140. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
  141. data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
  142. data/lib/axlsx/workbook/worksheet/table.rb +100 -102
  143. data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
  144. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  145. data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
  146. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
  149. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  150. data/lib/axlsx.rb +218 -185
  151. data/lib/caxlsx.rb +1 -2
  152. data/lib/schema/dc.xsd +118 -118
  153. data/lib/schema/dcmitype.xsd +51 -51
  154. data/lib/schema/dcterms.xsd +331 -331
  155. data/lib/schema/dml-chartDrawing.xsd +146 -146
  156. data/lib/schema/dml-compatibility.xsd +14 -14
  157. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  158. data/lib/schema/dml-main.xsd +3048 -3048
  159. data/lib/schema/dml-picture.xsd +23 -23
  160. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  161. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  162. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  163. data/lib/schema/shared-bibliography.xsd +144 -144
  164. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  165. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  166. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  167. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  168. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  169. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  170. data/lib/schema/shared-relationshipReference.xsd +25 -25
  171. data/lib/schema/vml-main.xsd +569 -569
  172. data/lib/schema/vml-officeDrawing.xsd +509 -509
  173. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  174. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  175. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  176. data/lib/schema/xml.xsd +116 -116
  177. metadata +5 -252
  178. data/test/benchmark.rb +0 -72
  179. data/test/content_type/tc_content_type.rb +0 -76
  180. data/test/content_type/tc_default.rb +0 -16
  181. data/test/content_type/tc_override.rb +0 -14
  182. data/test/doc_props/tc_app.rb +0 -43
  183. data/test/doc_props/tc_core.rb +0 -42
  184. data/test/drawing/tc_area_chart.rb +0 -39
  185. data/test/drawing/tc_area_series.rb +0 -71
  186. data/test/drawing/tc_axes.rb +0 -8
  187. data/test/drawing/tc_axis.rb +0 -112
  188. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  189. data/test/drawing/tc_bar_chart.rb +0 -86
  190. data/test/drawing/tc_bar_series.rb +0 -46
  191. data/test/drawing/tc_bubble_chart.rb +0 -44
  192. data/test/drawing/tc_bubble_series.rb +0 -21
  193. data/test/drawing/tc_cat_axis.rb +0 -31
  194. data/test/drawing/tc_cat_axis_data.rb +0 -27
  195. data/test/drawing/tc_chart.rb +0 -123
  196. data/test/drawing/tc_d_lbls.rb +0 -57
  197. data/test/drawing/tc_data_source.rb +0 -23
  198. data/test/drawing/tc_drawing.rb +0 -80
  199. data/test/drawing/tc_graphic_frame.rb +0 -27
  200. data/test/drawing/tc_hyperlink.rb +0 -64
  201. data/test/drawing/tc_line_3d_chart.rb +0 -47
  202. data/test/drawing/tc_line_chart.rb +0 -39
  203. data/test/drawing/tc_line_series.rb +0 -71
  204. data/test/drawing/tc_marker.rb +0 -44
  205. data/test/drawing/tc_named_axis_data.rb +0 -27
  206. data/test/drawing/tc_num_data.rb +0 -31
  207. data/test/drawing/tc_num_val.rb +0 -29
  208. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  209. data/test/drawing/tc_pic.rb +0 -103
  210. data/test/drawing/tc_picture_locking.rb +0 -72
  211. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  212. data/test/drawing/tc_pie_series.rb +0 -33
  213. data/test/drawing/tc_scaling.rb +0 -36
  214. data/test/drawing/tc_scatter_chart.rb +0 -48
  215. data/test/drawing/tc_scatter_series.rb +0 -74
  216. data/test/drawing/tc_ser_axis.rb +0 -31
  217. data/test/drawing/tc_series.rb +0 -23
  218. data/test/drawing/tc_series_title.rb +0 -54
  219. data/test/drawing/tc_str_data.rb +0 -18
  220. data/test/drawing/tc_str_val.rb +0 -30
  221. data/test/drawing/tc_title.rb +0 -70
  222. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  223. data/test/drawing/tc_val_axis.rb +0 -24
  224. data/test/drawing/tc_view_3D.rb +0 -54
  225. data/test/drawing/tc_vml_drawing.rb +0 -25
  226. data/test/drawing/tc_vml_shape.rb +0 -106
  227. data/test/fixtures/image1.gif +0 -0
  228. data/test/fixtures/image1.jpeg +0 -0
  229. data/test/fixtures/image1.jpg +0 -0
  230. data/test/fixtures/image1.png +0 -0
  231. data/test/fixtures/image1_fake.jpg +0 -0
  232. data/test/profile.rb +0 -24
  233. data/test/rels/tc_relationship.rb +0 -52
  234. data/test/rels/tc_relationships.rb +0 -37
  235. data/test/stylesheet/tc_border.rb +0 -37
  236. data/test/stylesheet/tc_border_pr.rb +0 -32
  237. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  238. data/test/stylesheet/tc_cell_protection.rb +0 -29
  239. data/test/stylesheet/tc_cell_style.rb +0 -57
  240. data/test/stylesheet/tc_color.rb +0 -43
  241. data/test/stylesheet/tc_dxf.rb +0 -81
  242. data/test/stylesheet/tc_fill.rb +0 -18
  243. data/test/stylesheet/tc_font.rb +0 -133
  244. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  245. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  246. data/test/stylesheet/tc_num_fmt.rb +0 -30
  247. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  248. data/test/stylesheet/tc_styles.rb +0 -309
  249. data/test/stylesheet/tc_table_style.rb +0 -44
  250. data/test/stylesheet/tc_table_style_element.rb +0 -45
  251. data/test/stylesheet/tc_table_styles.rb +0 -29
  252. data/test/stylesheet/tc_xf.rb +0 -120
  253. data/test/tc_axlsx.rb +0 -109
  254. data/test/tc_helper.rb +0 -10
  255. data/test/tc_package.rb +0 -317
  256. data/test/util/tc_mime_type_utils.rb +0 -13
  257. data/test/util/tc_serialized_attributes.rb +0 -19
  258. data/test/util/tc_simple_typed_list.rb +0 -77
  259. data/test/util/tc_validators.rb +0 -210
  260. data/test/workbook/tc_defined_name.rb +0 -49
  261. data/test/workbook/tc_shared_strings_table.rb +0 -59
  262. data/test/workbook/tc_workbook.rb +0 -165
  263. data/test/workbook/tc_workbook_view.rb +0 -50
  264. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  265. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  266. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  267. data/test/workbook/worksheet/tc_break.rb +0 -49
  268. data/test/workbook/worksheet/tc_cell.rb +0 -465
  269. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  270. data/test/workbook/worksheet/tc_col.rb +0 -93
  271. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  272. data/test/workbook/worksheet/tc_comment.rb +0 -72
  273. data/test/workbook/worksheet/tc_comments.rb +0 -57
  274. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  275. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  276. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  277. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  278. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  279. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  280. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  281. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  282. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  283. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  284. data/test/workbook/worksheet/tc_pane.rb +0 -54
  285. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  286. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  287. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  288. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  289. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  290. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  291. data/test/workbook/worksheet/tc_row.rb +0 -160
  292. data/test/workbook/worksheet/tc_selection.rb +0 -55
  293. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  294. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  295. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  296. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  297. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  298. data/test/workbook/worksheet/tc_table.rb +0 -77
  299. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  300. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  301. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,190 +1,185 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
-
4
- # the access class defines common properties and values for a chart axis.
5
- class Axis
6
-
7
- include Axlsx::OptionsParser
8
-
9
- # Creates an Axis object
10
- # @option options [Axis] cross_axis the perpendicular axis
11
- # @option options [Symbol] ax_pos
12
- # @option options [Symbol] crosses
13
- # @option options [Symbol] tick_lbl_pos
14
- # @raise [ArgumentError] If axi_id or cross_ax are not unsigned integers
15
- def initialize(options={})
16
- @id = rand(8 ** 8)
17
- @format_code = "General"
18
- @delete = @label_rotation = 0
19
- @scaling = Scaling.new(:orientation=>:minMax)
20
- @title = @color = nil
21
- self.ax_pos = :b
22
- self.tick_lbl_pos = :nextTo
23
- self.format_code = "General"
24
- self.crosses = :autoZero
25
- self.gridlines = true
26
- parse_options options
27
- end
28
-
29
- # the fill color to use in the axis shape properties. This should be a 6 character long hex string
30
- # e.g. FF0000 for red
31
- # @return [String]
32
- attr_reader :color
33
-
34
- # the id of the axis.
35
- # @return [Integer]
36
- attr_reader :id
37
- alias :axID :id
38
-
39
- # The perpendicular axis
40
- # @return [Integer]
41
- attr_reader :cross_axis
42
- alias :crossAx :cross_axis
43
-
44
- # The scaling of the axis
45
- # @see Scaling
46
- # @return [Scaling]
47
- attr_reader :scaling
48
-
49
- # The position of the axis
50
- # must be one of [:l, :r, :t, :b]
51
- # @return [Symbol]
52
- attr_reader :ax_pos
53
- alias :axPos :ax_pos
54
-
55
- # the position of the tick labels
56
- # must be one of [:nextTo, :high, :low]
57
- # @return [Symbol]
58
- attr_reader :tick_lbl_pos
59
- alias :tickLblPos :tick_lbl_pos
60
-
61
- # The number format format code for this axis
62
- # default :General
63
- # @return [String]
64
- attr_reader :format_code
65
-
66
- # specifies how the perpendicular axis is crossed
67
- # must be one of [:autoZero, :min, :max]
68
- # @return [Symbol]
69
- attr_reader :crosses
70
-
71
- # specifies how the degree of label rotation
72
- # @return [Integer]
73
- attr_reader :label_rotation
74
-
75
- # specifies if gridlines should be shown in the chart
76
- # @return [Boolean]
77
- attr_reader :gridlines
78
-
79
- # specifies if gridlines should be shown in the chart
80
- # @return [Boolean]
81
- attr_reader :delete
82
-
83
- # the title for the axis. This can be a cell or a fixed string.
84
- attr_reader :title
85
-
86
- # The color for this axis. This value is used when rendering the axis line in the chart.
87
- # colors should be in 6 character rbg format
88
- # @return [String] the rbg color assinged.
89
- # @see color
90
- def color=(color_rgb)
91
- @color = color_rgb
92
- end
93
-
94
- # The crossing axis for this axis
95
- # @param [Axis] axis
96
- def cross_axis=(axis)
97
- DataTypeValidator.validate "#{self.class}.cross_axis", [Axis], axis
98
- @cross_axis = axis
99
- end
100
-
101
- # The position of the axis
102
- # must be one of [:l, :r, :t, :b]
103
- def ax_pos=(v) RestrictionValidator.validate "#{self.class}.ax_pos", [:l, :r, :b, :t], v; @ax_pos = v; end
104
- alias :axPos= :ax_pos=
105
-
106
- # the position of the tick labels
107
- # must be one of [:nextTo, :high, :low1]
108
- def tick_lbl_pos=(v) RestrictionValidator.validate "#{self.class}.tick_lbl_pos", [:nextTo, :high, :low, :none], v; @tick_lbl_pos = v; end
109
- alias :tickLblPos= :tick_lbl_pos=
110
-
111
- # The number format format code for this axis
112
- # default :General
113
- def format_code=(v) Axlsx::validate_string(v); @format_code = v; end
114
-
115
- # Specify if gridlines should be shown for this axis
116
- # default true
117
- def gridlines=(v) Axlsx::validate_boolean(v); @gridlines = v; end
118
-
119
- # Specify if axis should be removed from the chart
120
- # default false
121
- def delete=(v) Axlsx::validate_boolean(v); @delete = v; end
122
-
123
- # specifies how the perpendicular axis is crossed
124
- # must be one of [:autoZero, :min, :max]
125
- def crosses=(v) RestrictionValidator.validate "#{self.class}.crosses", [:autoZero, :min, :max], v; @crosses = v; end
126
-
127
- # Specify the degree of label rotation to apply to labels
128
- # default true
129
- def label_rotation=(v)
130
- Axlsx::validate_int(v)
131
- adjusted = v.to_i * 60000
132
- Axlsx::validate_angle(adjusted)
133
- @label_rotation = adjusted
134
- end
135
-
136
- # The title object for the chart.
137
- # @param [String, Cell] v
138
- # @return [Title]
139
- def title=(v)
140
- DataTypeValidator.validate "#{self.class}.title", [String, Cell], v
141
- @title ||= Title.new
142
- if v.is_a?(String)
143
- @title.text = v
144
- elsif v.is_a?(Cell)
145
- @title.cell = v
146
- end
147
- end
148
-
149
- # Serializes the object
150
- # @param [String] str
151
- # @return [String]
152
- def to_xml_string(str = '')
153
- str << ('<c:axId val="' << @id.to_s << '"/>')
154
- @scaling.to_xml_string str
155
- str << ('<c:delete val="' << @delete.to_s << '"/>')
156
- str << ('<c:axPos val="' << @ax_pos.to_s << '"/>')
157
- str << '<c:majorGridlines>'
158
- # TODO shape properties need to be extracted into a class
159
- if gridlines == false
160
- str << '<c:spPr>'
161
- str << '<a:ln>'
162
- str << '<a:noFill/>'
163
- str << '</a:ln>'
164
- str << '</c:spPr>'
165
- end
166
- str << '</c:majorGridlines>'
167
- @title.to_xml_string(str) unless @title == nil
168
- # Need to set sourceLinked to 0 if we're setting a format code on this row
169
- # otherwise it will never take, as it will always prefer the 'General' formatting
170
- # of the cells themselves
171
- str << ('<c:numFmt formatCode="' << @format_code << '" sourceLinked="' << (@format_code.eql?('General') ? '1' : '0') << '"/>')
172
- str << '<c:majorTickMark val="none"/>'
173
- str << '<c:minorTickMark val="none"/>'
174
- str << ('<c:tickLblPos val="' << @tick_lbl_pos.to_s << '"/>')
175
- # TODO - this is also being used for series colors
176
- # time to extract this into a class spPr - Shape Properties
177
- if @color
178
- str << '<c:spPr><a:ln><a:solidFill>'
179
- str << ('<a:srgbClr val="' << @color << '"/>')
180
- str << '</a:solidFill></a:ln></c:spPr>'
181
- end
182
- # some potential value in implementing this in full. Very detailed!
183
- str << ('<c:txPr><a:bodyPr rot="' << @label_rotation.to_s << '"/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr/></a:p></c:txPr>')
184
- str << ('<c:crossAx val="' << @cross_axis.id.to_s << '"/>')
185
- str << ('<c:crosses val="' << @crosses.to_s << '"/>')
186
- end
187
-
188
- end
189
-
190
- end
1
+ module Axlsx
2
+ # the access class defines common properties and values for a chart axis.
3
+ class Axis
4
+ include Axlsx::OptionsParser
5
+
6
+ # Creates an Axis object
7
+ # @option options [Axis] cross_axis the perpendicular axis
8
+ # @option options [Symbol] ax_pos
9
+ # @option options [Symbol] crosses
10
+ # @option options [Symbol] tick_lbl_pos
11
+ # @raise [ArgumentError] If axi_id or cross_ax are not unsigned integers
12
+ def initialize(options = {})
13
+ @id = rand(8**8)
14
+ @format_code = "General"
15
+ @delete = @label_rotation = 0
16
+ @scaling = Scaling.new(:orientation => :minMax)
17
+ @title = @color = nil
18
+ self.ax_pos = :b
19
+ self.tick_lbl_pos = :nextTo
20
+ self.format_code = "General"
21
+ self.crosses = :autoZero
22
+ self.gridlines = true
23
+ parse_options options
24
+ end
25
+
26
+ # the fill color to use in the axis shape properties. This should be a 6 character long hex string
27
+ # e.g. FF0000 for red
28
+ # @return [String]
29
+ attr_reader :color
30
+
31
+ # the id of the axis.
32
+ # @return [Integer]
33
+ attr_reader :id
34
+ alias :axID :id
35
+
36
+ # The perpendicular axis
37
+ # @return [Integer]
38
+ attr_reader :cross_axis
39
+ alias :crossAx :cross_axis
40
+
41
+ # The scaling of the axis
42
+ # @see Scaling
43
+ # @return [Scaling]
44
+ attr_reader :scaling
45
+
46
+ # The position of the axis
47
+ # must be one of [:l, :r, :t, :b]
48
+ # @return [Symbol]
49
+ attr_reader :ax_pos
50
+ alias :axPos :ax_pos
51
+
52
+ # the position of the tick labels
53
+ # must be one of [:nextTo, :high, :low]
54
+ # @return [Symbol]
55
+ attr_reader :tick_lbl_pos
56
+ alias :tickLblPos :tick_lbl_pos
57
+
58
+ # The number format format code for this axis
59
+ # default :General
60
+ # @return [String]
61
+ attr_reader :format_code
62
+
63
+ # specifies how the perpendicular axis is crossed
64
+ # must be one of [:autoZero, :min, :max]
65
+ # @return [Symbol]
66
+ attr_reader :crosses
67
+
68
+ # specifies how the degree of label rotation
69
+ # @return [Integer]
70
+ attr_reader :label_rotation
71
+
72
+ # specifies if gridlines should be shown in the chart
73
+ # @return [Boolean]
74
+ attr_reader :gridlines
75
+
76
+ # specifies if gridlines should be shown in the chart
77
+ # @return [Boolean]
78
+ attr_reader :delete
79
+
80
+ # the title for the axis. This can be a cell or a fixed string.
81
+ attr_reader :title
82
+
83
+ # The color for this axis. This value is used when rendering the axis line in the chart.
84
+ # colors should be in 6 character rbg format
85
+ # @return [String] the rbg color assinged.
86
+ # @see color
87
+ def color=(color_rgb)
88
+ @color = color_rgb
89
+ end
90
+
91
+ # The crossing axis for this axis
92
+ # @param [Axis] axis
93
+ def cross_axis=(axis)
94
+ DataTypeValidator.validate "#{self.class}.cross_axis", [Axis], axis
95
+ @cross_axis = axis
96
+ end
97
+
98
+ # The position of the axis
99
+ # must be one of [:l, :r, :t, :b]
100
+ def ax_pos=(v) RestrictionValidator.validate "#{self.class}.ax_pos", [:l, :r, :b, :t], v; @ax_pos = v; end
101
+ alias :axPos= :ax_pos=
102
+
103
+ # the position of the tick labels
104
+ # must be one of [:nextTo, :high, :low1]
105
+ def tick_lbl_pos=(v) RestrictionValidator.validate "#{self.class}.tick_lbl_pos", [:nextTo, :high, :low, :none], v; @tick_lbl_pos = v; end
106
+ alias :tickLblPos= :tick_lbl_pos=
107
+
108
+ # The number format format code for this axis
109
+ # default :General
110
+ def format_code=(v) Axlsx::validate_string(v); @format_code = v; end
111
+
112
+ # Specify if gridlines should be shown for this axis
113
+ # default true
114
+ def gridlines=(v) Axlsx::validate_boolean(v); @gridlines = v; end
115
+
116
+ # Specify if axis should be removed from the chart
117
+ # default false
118
+ def delete=(v) Axlsx::validate_boolean(v); @delete = v; end
119
+
120
+ # specifies how the perpendicular axis is crossed
121
+ # must be one of [:autoZero, :min, :max]
122
+ def crosses=(v) RestrictionValidator.validate "#{self.class}.crosses", [:autoZero, :min, :max], v; @crosses = v; end
123
+
124
+ # Specify the degree of label rotation to apply to labels
125
+ # default true
126
+ def label_rotation=(v)
127
+ Axlsx::validate_int(v)
128
+ adjusted = v.to_i * 60000
129
+ Axlsx::validate_angle(adjusted)
130
+ @label_rotation = adjusted
131
+ end
132
+
133
+ # The title object for the chart.
134
+ # @param [String, Cell] v
135
+ # @return [Title]
136
+ def title=(v)
137
+ DataTypeValidator.validate "#{self.class}.title", [String, Cell], v
138
+ @title ||= Title.new
139
+ if v.is_a?(String)
140
+ @title.text = v
141
+ elsif v.is_a?(Cell)
142
+ @title.cell = v
143
+ end
144
+ end
145
+
146
+ # Serializes the object
147
+ # @param [String] str
148
+ # @return [String]
149
+ def to_xml_string(str = '')
150
+ str << ('<c:axId val="' << @id.to_s << '"/>')
151
+ @scaling.to_xml_string str
152
+ str << ('<c:delete val="' << @delete.to_s << '"/>')
153
+ str << ('<c:axPos val="' << @ax_pos.to_s << '"/>')
154
+ str << '<c:majorGridlines>'
155
+ # TODO shape properties need to be extracted into a class
156
+ if gridlines == false
157
+ str << '<c:spPr>'
158
+ str << '<a:ln>'
159
+ str << '<a:noFill/>'
160
+ str << '</a:ln>'
161
+ str << '</c:spPr>'
162
+ end
163
+ str << '</c:majorGridlines>'
164
+ @title.to_xml_string(str) unless @title == nil
165
+ # Need to set sourceLinked to 0 if we're setting a format code on this row
166
+ # otherwise it will never take, as it will always prefer the 'General' formatting
167
+ # of the cells themselves
168
+ str << ('<c:numFmt formatCode="' << @format_code << '" sourceLinked="' << (@format_code.eql?('General') ? '1' : '0') << '"/>')
169
+ str << '<c:majorTickMark val="none"/>'
170
+ str << '<c:minorTickMark val="none"/>'
171
+ str << ('<c:tickLblPos val="' << @tick_lbl_pos.to_s << '"/>')
172
+ # TODO - this is also being used for series colors
173
+ # time to extract this into a class spPr - Shape Properties
174
+ if @color
175
+ str << '<c:spPr><a:ln><a:solidFill>'
176
+ str << ('<a:srgbClr val="' << @color << '"/>')
177
+ str << '</a:solidFill></a:ln></c:spPr>'
178
+ end
179
+ # some potential value in implementing this in full. Very detailed!
180
+ str << ('<c:txPr><a:bodyPr rot="' << @label_rotation.to_s << '"/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr/></a:p></c:txPr>')
181
+ str << ('<c:crossAx val="' << @cross_axis.id.to_s << '"/>')
182
+ str << ('<c:crosses val="' << @crosses.to_s << '"/>')
183
+ end
184
+ end
185
+ end