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,129 +1,126 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
-
4
- # A ScatterSeries defines the x and y position of data in the chart
5
- # @note The recommended way to manage series is to use Chart#add_series
6
- # @see Worksheet#add_chart
7
- # @see Chart#add_series
8
- # @see examples/example.rb
9
- class ScatterSeries < Series
10
-
11
- # The x data for this series.
12
- # @return [NamedAxisData]
13
- attr_reader :xData
14
-
15
- # The y data for this series.
16
- # @return [NamedAxisData]
17
- attr_reader :yData
18
-
19
- # The fill color for this series.
20
- # Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used.
21
- # @return [String]
22
- attr_reader :color
23
-
24
- # @return [String]
25
- attr_reader :ln_width
26
-
27
- # Line smoothing between data points
28
- # @return [Boolean]
29
- attr_reader :smooth
30
-
31
- # Line markers presence
32
- # @return [Boolean]
33
- attr_reader :show_marker
34
-
35
- # custom marker symbol
36
- # @return [String]
37
- attr_reader :marker_symbol
38
-
39
- # Creates a new ScatterSeries
40
- def initialize(chart, options={})
41
- @xData, @yData = nil
42
- if options[:smooth].nil?
43
- # If caller hasn't specified smoothing or not, turn smoothing on or off based on scatter style
44
- @smooth = [:smooth, :smoothMarker].include?(chart.scatter_style)
45
- else
46
- # Set smoothing according to the option provided
47
- Axlsx::validate_boolean(options[:smooth])
48
- @smooth = options[:smooth]
49
- end
50
- @ln_width = options[:ln_width] unless options[:ln_width].nil?
51
- @show_marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style)
52
- @marker_symbol = :default
53
-
54
- super(chart, options)
55
- @xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil?
56
- @yData = NumDataSource.new({:tag_name => :yVal, :data => options[:yData]}) unless options[:yData].nil?
57
- end
58
-
59
- # @see color
60
- def color=(v)
61
- @color = v
62
- end
63
-
64
- # @see smooth
65
- def smooth=(v)
66
- Axlsx::validate_boolean(v)
67
- @smooth = v
68
- end
69
-
70
- # @see ln_width
71
- def ln_width=(v)
72
- @ln_width = v
73
- end
74
-
75
- # @see marker_symbol
76
- def marker_symbol=(v)
77
- Axlsx::validate_marker_symbol(v)
78
- @marker_symbol = v
79
- end
80
-
81
- # Serializes the object
82
- # @param [String] str
83
- # @return [String]
84
- def to_xml_string(str = '')
85
- super(str) do
86
- # needs to override the super color here to push in ln/and something else!
87
- if color
88
- str << '<c:spPr><a:solidFill>'
89
- str << ('<a:srgbClr val="' << color << '"/>')
90
- str << '</a:solidFill>'
91
- str << '<a:ln><a:solidFill>'
92
- str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
93
- str << '</c:spPr>'
94
- str << '<c:marker>'
95
- str << '<c:spPr><a:solidFill>'
96
- str << ('<a:srgbClr val="' << color << '"/>')
97
- str << '</a:solidFill>'
98
- str << '<a:ln><a:solidFill>'
99
- str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
100
- str << '</c:spPr>'
101
- str << marker_symbol_xml
102
- str << '</c:marker>'
103
- else
104
- str << "<c:marker>#{marker_symbol_xml}</c:marker>"
105
- end
106
-
107
- if ln_width
108
- str << '<c:spPr>'
109
- str << '<a:ln w="' << ln_width.to_s << '"/>'
110
- str << '</c:spPr>'
111
- end
112
- @xData.to_xml_string(str) unless @xData.nil?
113
- @yData.to_xml_string(str) unless @yData.nil?
114
- str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
115
- end
116
- str
117
- end
118
-
119
- private
120
-
121
- def marker_symbol_xml
122
- if !@show_marker
123
- '<c:symbol val="none"/>'
124
- elsif @marker_symbol != :default
125
- '<c:symbol val="' + @marker_symbol.to_s + '"/>'
126
- end.to_s
127
- end
128
- end
129
- end
1
+ module Axlsx
2
+ # A ScatterSeries defines the x and y position of data in the chart
3
+ # @note The recommended way to manage series is to use Chart#add_series
4
+ # @see Worksheet#add_chart
5
+ # @see Chart#add_series
6
+ # @see examples/example.rb
7
+ class ScatterSeries < Series
8
+ # The x data for this series.
9
+ # @return [NamedAxisData]
10
+ attr_reader :xData
11
+
12
+ # The y data for this series.
13
+ # @return [NamedAxisData]
14
+ attr_reader :yData
15
+
16
+ # The fill color for this series.
17
+ # Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used.
18
+ # @return [String]
19
+ attr_reader :color
20
+
21
+ # @return [String]
22
+ attr_reader :ln_width
23
+
24
+ # Line smoothing between data points
25
+ # @return [Boolean]
26
+ attr_reader :smooth
27
+
28
+ # Line markers presence
29
+ # @return [Boolean]
30
+ attr_reader :show_marker
31
+
32
+ # custom marker symbol
33
+ # @return [String]
34
+ attr_reader :marker_symbol
35
+
36
+ # Creates a new ScatterSeries
37
+ def initialize(chart, options = {})
38
+ @xData, @yData = nil
39
+ if options[:smooth].nil?
40
+ # If caller hasn't specified smoothing or not, turn smoothing on or off based on scatter style
41
+ @smooth = [:smooth, :smoothMarker].include?(chart.scatter_style)
42
+ else
43
+ # Set smoothing according to the option provided
44
+ Axlsx::validate_boolean(options[:smooth])
45
+ @smooth = options[:smooth]
46
+ end
47
+ @ln_width = options[:ln_width] unless options[:ln_width].nil?
48
+ @show_marker = [:lineMarker, :marker, :smoothMarker].include?(chart.scatter_style)
49
+ @marker_symbol = :default
50
+
51
+ super(chart, options)
52
+ @xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil?
53
+ @yData = NumDataSource.new({ :tag_name => :yVal, :data => options[:yData] }) unless options[:yData].nil?
54
+ end
55
+
56
+ # @see color
57
+ def color=(v)
58
+ @color = v
59
+ end
60
+
61
+ # @see smooth
62
+ def smooth=(v)
63
+ Axlsx::validate_boolean(v)
64
+ @smooth = v
65
+ end
66
+
67
+ # @see ln_width
68
+ def ln_width=(v)
69
+ @ln_width = v
70
+ end
71
+
72
+ # @see marker_symbol
73
+ def marker_symbol=(v)
74
+ Axlsx::validate_marker_symbol(v)
75
+ @marker_symbol = v
76
+ end
77
+
78
+ # Serializes the object
79
+ # @param [String] str
80
+ # @return [String]
81
+ def to_xml_string(str = '')
82
+ super(str) do
83
+ # needs to override the super color here to push in ln/and something else!
84
+ if color
85
+ str << '<c:spPr><a:solidFill>'
86
+ str << ('<a:srgbClr val="' << color << '"/>')
87
+ str << '</a:solidFill>'
88
+ str << '<a:ln><a:solidFill>'
89
+ str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
90
+ str << '</c:spPr>'
91
+ str << '<c:marker>'
92
+ str << '<c:spPr><a:solidFill>'
93
+ str << ('<a:srgbClr val="' << color << '"/>')
94
+ str << '</a:solidFill>'
95
+ str << '<a:ln><a:solidFill>'
96
+ str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
97
+ str << '</c:spPr>'
98
+ str << marker_symbol_xml
99
+ str << '</c:marker>'
100
+ else
101
+ str << "<c:marker>#{marker_symbol_xml}</c:marker>"
102
+ end
103
+
104
+ if ln_width
105
+ str << '<c:spPr>'
106
+ str << '<a:ln w="' << ln_width.to_s << '"/>'
107
+ str << '</c:spPr>'
108
+ end
109
+ @xData.to_xml_string(str) unless @xData.nil?
110
+ @yData.to_xml_string(str) unless @yData.nil?
111
+ str << ('<c:smooth val="' << ((smooth) ? '1' : '0') << '"/>')
112
+ end
113
+ str
114
+ end
115
+
116
+ private
117
+
118
+ def marker_symbol_xml
119
+ if !@show_marker
120
+ '<c:symbol val="none"/>'
121
+ elsif @marker_symbol != :default
122
+ '<c:symbol val="' + @marker_symbol.to_s + '"/>'
123
+ end.to_s
124
+ end
125
+ end
126
+ end
@@ -1,45 +1,41 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- #A SerAxis object defines a series axis
4
- class SerAxis < Axis
5
-
6
- # The number of tick lables to skip between labels
7
- # @return [Integer]
8
- attr_reader :tick_lbl_skip
9
- alias :tickLblSkip :tick_lbl_skip
10
-
11
- # The number of tickmarks to be skipped before the next one is rendered.
12
- # @return [Boolean]
13
- attr_reader :tick_mark_skip
14
- alias :tickMarkSkip :tick_mark_skip
15
-
16
- # Creates a new SerAxis object
17
- # @option options [Integer] tick_lbl_skip
18
- # @option options [Integer] tick_mark_skip
19
- def initialize(options={})
20
- @tick_lbl_skip, @tick_mark_skip = 1, 1
21
- super(options)
22
- end
23
-
24
- # @see tickLblSkip
25
- def tick_lbl_skip=(v) Axlsx::validate_unsigned_int(v); @tick_lbl_skip = v; end
26
- alias :tickLblSkip= :tick_lbl_skip=
27
-
28
- # @see tickMarkSkip
29
- def tick_mark_skip=(v) Axlsx::validate_unsigned_int(v); @tick_mark_skip = v; end
30
- alias :tickMarkSkip= :tick_mark_skip=
31
-
32
- # Serializes the object
33
- # @param [String] str
34
- # @return [String]
35
- def to_xml_string(str = '')
36
- str << '<c:serAx>'
37
- super(str)
38
- str << ('<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>') unless @tick_lbl_skip.nil?
39
- str << ('<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>') unless @tick_mark_skip.nil?
40
- str << '</c:serAx>'
41
- end
42
- end
43
-
44
-
45
- end
1
+ module Axlsx
2
+ # A SerAxis object defines a series axis
3
+ class SerAxis < Axis
4
+ # The number of tick lables to skip between labels
5
+ # @return [Integer]
6
+ attr_reader :tick_lbl_skip
7
+ alias :tickLblSkip :tick_lbl_skip
8
+
9
+ # The number of tickmarks to be skipped before the next one is rendered.
10
+ # @return [Boolean]
11
+ attr_reader :tick_mark_skip
12
+ alias :tickMarkSkip :tick_mark_skip
13
+
14
+ # Creates a new SerAxis object
15
+ # @option options [Integer] tick_lbl_skip
16
+ # @option options [Integer] tick_mark_skip
17
+ def initialize(options = {})
18
+ @tick_lbl_skip, @tick_mark_skip = 1, 1
19
+ super(options)
20
+ end
21
+
22
+ # @see tickLblSkip
23
+ def tick_lbl_skip=(v) Axlsx::validate_unsigned_int(v); @tick_lbl_skip = v; end
24
+ alias :tickLblSkip= :tick_lbl_skip=
25
+
26
+ # @see tickMarkSkip
27
+ def tick_mark_skip=(v) Axlsx::validate_unsigned_int(v); @tick_mark_skip = v; end
28
+ alias :tickMarkSkip= :tick_mark_skip=
29
+
30
+ # Serializes the object
31
+ # @param [String] str
32
+ # @return [String]
33
+ def to_xml_string(str = '')
34
+ str << '<c:serAx>'
35
+ super(str)
36
+ str << ('<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>') unless @tick_lbl_skip.nil?
37
+ str << ('<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>') unless @tick_mark_skip.nil?
38
+ str << '</c:serAx>'
39
+ end
40
+ end
41
+ end
@@ -1,69 +1,67 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # A Series defines the common series attributes and is the super class for all concrete series types.
4
- # @note The recommended way to manage series is to use Chart#add_series
5
- # @see Worksheet#add_chart
6
- # @see Chart#add_series
7
- class Series
8
-
9
- include Axlsx::OptionsParser
10
-
11
- # The chart that owns this series
12
- # @return [Chart]
13
- attr_reader :chart
14
-
15
- # The title of the series
16
- # @return [SeriesTitle]
17
- attr_reader :title
18
-
19
- # Creates a new series
20
- # @param [Chart] chart
21
- # @option options [Integer] order
22
- # @option options [String] title
23
- def initialize(chart, options={})
24
- @order = nil
25
- self.chart = chart
26
- @chart.series << self
27
- parse_options options
28
- end
29
-
30
- # The index of this series in the chart's series.
31
- # @return [Integer]
32
- def index
33
- @chart.series.index(self)
34
- end
35
-
36
- # The order of this series in the chart's series. By default the order is the index of the series.
37
- # @return [Integer]
38
- def order
39
- @order || index
40
- end
41
-
42
- # @see order
43
- def order=(v) Axlsx::validate_unsigned_int(v); @order = v; end
44
-
45
- # @see title
46
- def title=(v)
47
- v = SeriesTitle.new(v) if v.is_a?(String) || v.is_a?(Cell)
48
- DataTypeValidator.validate "#{self.class}.title", SeriesTitle, v
49
- @title = v
50
- end
51
-
52
- private
53
-
54
- # assigns the chart for this series
55
- def chart=(v) DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end
56
-
57
- # Serializes the object
58
- # @param [String] str
59
- # @return [String]
60
- def to_xml_string(str = '')
61
- str << '<c:ser>'
62
- str << ('<c:idx val="' << index.to_s << '"/>')
63
- str << ('<c:order val="' << (order || index).to_s << '"/>')
64
- title.to_xml_string(str) unless title.nil?
65
- yield if block_given?
66
- str << '</c:ser>'
67
- end
68
- end
69
- end
1
+ module Axlsx
2
+ # A Series defines the common series attributes and is the super class for all concrete series types.
3
+ # @note The recommended way to manage series is to use Chart#add_series
4
+ # @see Worksheet#add_chart
5
+ # @see Chart#add_series
6
+ class Series
7
+ include Axlsx::OptionsParser
8
+
9
+ # The chart that owns this series
10
+ # @return [Chart]
11
+ attr_reader :chart
12
+
13
+ # The title of the series
14
+ # @return [SeriesTitle]
15
+ attr_reader :title
16
+
17
+ # Creates a new series
18
+ # @param [Chart] chart
19
+ # @option options [Integer] order
20
+ # @option options [String] title
21
+ def initialize(chart, options = {})
22
+ @order = nil
23
+ self.chart = chart
24
+ @chart.series << self
25
+ parse_options options
26
+ end
27
+
28
+ # The index of this series in the chart's series.
29
+ # @return [Integer]
30
+ def index
31
+ @chart.series.index(self)
32
+ end
33
+
34
+ # The order of this series in the chart's series. By default the order is the index of the series.
35
+ # @return [Integer]
36
+ def order
37
+ @order || index
38
+ end
39
+
40
+ # @see order
41
+ def order=(v) Axlsx::validate_unsigned_int(v); @order = v; end
42
+
43
+ # @see title
44
+ def title=(v)
45
+ v = SeriesTitle.new(v) if v.is_a?(String) || v.is_a?(Cell)
46
+ DataTypeValidator.validate "#{self.class}.title", SeriesTitle, v
47
+ @title = v
48
+ end
49
+
50
+ private
51
+
52
+ # assigns the chart for this series
53
+ def chart=(v) DataTypeValidator.validate "Series.chart", Chart, v; @chart = v; end
54
+
55
+ # Serializes the object
56
+ # @param [String] str
57
+ # @return [String]
58
+ def to_xml_string(str = '')
59
+ str << '<c:ser>'
60
+ str << ('<c:idx val="' << index.to_s << '"/>')
61
+ str << ('<c:order val="' << (order || index).to_s << '"/>')
62
+ title.to_xml_string(str) unless title.nil?
63
+ yield if block_given?
64
+ str << '</c:ser>'
65
+ end
66
+ end
67
+ end
@@ -1,25 +1,23 @@
1
- # encoding: UTF-8
2
- module Axlsx
3
- # A series title is a Title with a slightly different serialization than chart titles.
4
- class SeriesTitle < Title
5
-
6
- # Serializes the object
7
- # @param [String] str
8
- # @return [String]
9
- def to_xml_string(str = '')
10
- clean_value = Axlsx::trust_input ? @text.to_s : ::CGI.escapeHTML(Axlsx::sanitize(@text.to_s))
11
-
12
- str << '<c:tx>'
13
- str << '<c:strRef>'
14
- str << ('<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>')
15
- str << '<c:strCache>'
16
- str << '<c:ptCount val="1"/>'
17
- str << '<c:pt idx="0">'
18
- str << ('<c:v>' << clean_value << '</c:v>')
19
- str << '</c:pt>'
20
- str << '</c:strCache>'
21
- str << '</c:strRef>'
22
- str << '</c:tx>'
23
- end
24
- end
25
- end
1
+ module Axlsx
2
+ # A series title is a Title with a slightly different serialization than chart titles.
3
+ class SeriesTitle < Title
4
+ # Serializes the object
5
+ # @param [String] str
6
+ # @return [String]
7
+ def to_xml_string(str = '')
8
+ clean_value = Axlsx::trust_input ? @text.to_s : ::CGI.escapeHTML(Axlsx::sanitize(@text.to_s))
9
+
10
+ str << '<c:tx>'
11
+ str << '<c:strRef>'
12
+ str << ('<c:f>' << Axlsx::cell_range([@cell]) << '</c:f>')
13
+ str << '<c:strCache>'
14
+ str << '<c:ptCount val="1"/>'
15
+ str << '<c:pt idx="0">'
16
+ str << ('<c:v>' << clean_value << '</c:v>')
17
+ str << '</c:pt>'
18
+ str << '</c:strCache>'
19
+ str << '</c:strRef>'
20
+ str << '</c:tx>'
21
+ end
22
+ end
23
+ end
@@ -1,42 +1,37 @@
1
- # -*- coding: utf-8 -*-
2
- module Axlsx
3
-
4
- #This specifies the last string data used for a chart. (e.g. strLit and strCache)
5
- # This class is extended for NumData to include the formatCode attribute required for numLit and numCache
6
- class StrData
7
-
8
- include Axlsx::OptionsParser
9
-
10
- # creates a new StrVal object
11
- # @option options [Array] :data
12
- # @option options [String] :tag_name
13
- def initialize(options={})
14
- @tag_prefix = :str
15
- @type = StrVal
16
- @pt = SimpleTypedList.new(@type)
17
- parse_options options
18
- end
19
-
20
- # Creates the val objects for this data set. I am not overly confident this is going to play nicely with time and data types.
21
- # @param [Array] values An array of cells or values.
22
- def data=(values=[])
23
- @tag_name = values.first.is_a?(Cell) ? :strCache : :strLit
24
- values.each do |value|
25
- v = value.is_a?(Cell) ? value.value : value
26
- @pt << @type.new(:v => v)
27
- end
28
- end
29
-
30
- # serialize the object
31
- def to_xml_string(str = "")
32
- str << ('<c:' << @tag_name.to_s << '>')
33
- str << ('<c:ptCount val="' << @pt.size.to_s << '"/>')
34
- @pt.each_with_index do |value, index|
35
- value.to_xml_string index, str
36
- end
37
- str << ('</c:' << @tag_name.to_s << '>')
38
- end
39
-
40
- end
41
-
42
- end
1
+ module Axlsx
2
+ # This specifies the last string data used for a chart. (e.g. strLit and strCache)
3
+ # This class is extended for NumData to include the formatCode attribute required for numLit and numCache
4
+ class StrData
5
+ include Axlsx::OptionsParser
6
+
7
+ # creates a new StrVal object
8
+ # @option options [Array] :data
9
+ # @option options [String] :tag_name
10
+ def initialize(options = {})
11
+ @tag_prefix = :str
12
+ @type = StrVal
13
+ @pt = SimpleTypedList.new(@type)
14
+ parse_options options
15
+ end
16
+
17
+ # Creates the val objects for this data set. I am not overly confident this is going to play nicely with time and data types.
18
+ # @param [Array] values An array of cells or values.
19
+ def data=(values = [])
20
+ @tag_name = values.first.is_a?(Cell) ? :strCache : :strLit
21
+ values.each do |value|
22
+ v = value.is_a?(Cell) ? value.value : value
23
+ @pt << @type.new(:v => v)
24
+ end
25
+ end
26
+
27
+ # serialize the object
28
+ def to_xml_string(str = "")
29
+ str << ('<c:' << @tag_name.to_s << '>')
30
+ str << ('<c:ptCount val="' << @pt.size.to_s << '"/>')
31
+ @pt.each_with_index do |value, index|
32
+ value.to_xml_string index, str
33
+ end
34
+ str << ('</c:' << @tag_name.to_s << '>')
35
+ end
36
+ end
37
+ end