axlsx-alt 3.0.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.
- checksums.yaml +7 -0
- data/.yardopts +9 -0
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +244 -0
- data/LICENSE +22 -0
- data/README.md +180 -0
- data/Rakefile +29 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/auto_filter.rb +25 -0
- data/examples/basic_charts.rb +58 -0
- data/examples/chart_colors.rb +88 -0
- data/examples/colored_links.rb +59 -0
- data/examples/conditional_formatting/example_conditional_formatting.rb +89 -0
- data/examples/conditional_formatting/getting_barred.rb +37 -0
- data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
- data/examples/conditional_formatting/scaled_colors.rb +39 -0
- data/examples/conditional_formatting/stop_and_go.rb +37 -0
- data/examples/data_validation.rb +67 -0
- data/examples/example.rb +885 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/merge_cells.rb +17 -0
- data/examples/no_grid_with_borders.rb +18 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/pivot_test.rb +63 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/split.rb +16 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +171 -0
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
- data/lib/axlsx/content_type/content_type.rb +26 -0
- data/lib/axlsx/content_type/default.rb +25 -0
- data/lib/axlsx/content_type/override.rb +25 -0
- data/lib/axlsx/doc_props/app.rb +235 -0
- data/lib/axlsx/doc_props/core.rb +39 -0
- data/lib/axlsx/drawing/area_chart.rb +99 -0
- data/lib/axlsx/drawing/area_series.rb +110 -0
- data/lib/axlsx/drawing/ax_data_source.rb +26 -0
- data/lib/axlsx/drawing/axes.rb +61 -0
- data/lib/axlsx/drawing/axis.rb +190 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_chart.rb +143 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/bubble_chart.rb +59 -0
- data/lib/axlsx/drawing/bubble_series.rb +63 -0
- data/lib/axlsx/drawing/cat_axis.rb +85 -0
- data/lib/axlsx/drawing/chart.rb +276 -0
- data/lib/axlsx/drawing/d_lbls.rb +90 -0
- data/lib/axlsx/drawing/drawing.rb +167 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +100 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
- data/lib/axlsx/drawing/line_chart.rb +99 -0
- data/lib/axlsx/drawing/line_series.rb +110 -0
- data/lib/axlsx/drawing/marker.rb +84 -0
- data/lib/axlsx/drawing/num_data.rb +52 -0
- data/lib/axlsx/drawing/num_data_source.rb +62 -0
- data/lib/axlsx/drawing/num_val.rb +34 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -0
- data/lib/axlsx/drawing/pic.rb +211 -0
- data/lib/axlsx/drawing/picture_locking.rb +42 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
- data/lib/axlsx/drawing/pie_series.rb +74 -0
- data/lib/axlsx/drawing/scaling.rb +60 -0
- data/lib/axlsx/drawing/scatter_chart.rb +74 -0
- data/lib/axlsx/drawing/scatter_series.rb +98 -0
- data/lib/axlsx/drawing/ser_axis.rb +45 -0
- data/lib/axlsx/drawing/series.rb +69 -0
- data/lib/axlsx/drawing/series_title.rb +23 -0
- data/lib/axlsx/drawing/str_data.rb +42 -0
- data/lib/axlsx/drawing/str_val.rb +34 -0
- data/lib/axlsx/drawing/title.rb +96 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -0
- data/lib/axlsx/drawing/val_axis.rb +37 -0
- data/lib/axlsx/drawing/view_3D.rb +115 -0
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +66 -0
- data/lib/axlsx/package.rb +358 -0
- data/lib/axlsx/rels/relationship.rb +137 -0
- data/lib/axlsx/rels/relationships.rb +32 -0
- data/lib/axlsx/stylesheet/border.rb +71 -0
- data/lib/axlsx/stylesheet/border_pr.rb +71 -0
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
- data/lib/axlsx/stylesheet/cell_style.rb +72 -0
- data/lib/axlsx/stylesheet/color.rb +76 -0
- data/lib/axlsx/stylesheet/dxf.rb +79 -0
- data/lib/axlsx/stylesheet/fill.rb +35 -0
- data/lib/axlsx/stylesheet/font.rb +148 -0
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -0
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
- data/lib/axlsx/stylesheet/styles.rb +420 -0
- data/lib/axlsx/stylesheet/table_style.rb +54 -0
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
- data/lib/axlsx/stylesheet/table_styles.rb +46 -0
- data/lib/axlsx/stylesheet/xf.rb +147 -0
- data/lib/axlsx/util/accessors.rb +64 -0
- data/lib/axlsx/util/constants.rb +400 -0
- data/lib/axlsx/util/mime_type_utils.rb +11 -0
- data/lib/axlsx/util/options_parser.rb +16 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +89 -0
- data/lib/axlsx/util/simple_typed_list.rb +179 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/validators.rb +312 -0
- data/lib/axlsx/version.rb +3 -0
- data/lib/axlsx/workbook/defined_name.rb +128 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
- data/lib/axlsx/workbook/workbook.rb +379 -0
- data/lib/axlsx/workbook/workbook_view.rb +80 -0
- data/lib/axlsx/workbook/workbook_views.rb +22 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +478 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -0
- data/lib/axlsx/workbook/worksheet/col.rb +141 -0
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +97 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -0
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +289 -0
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -0
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -0
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -0
- data/lib/axlsx/workbook/worksheet/row.rb +161 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
- data/lib/axlsx/workbook/worksheet/table.rb +102 -0
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +756 -0
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
- data/lib/schema/dc.xsd +118 -0
- data/lib/schema/dcmitype.xsd +52 -0
- data/lib/schema/dcterms.xsd +331 -0
- data/lib/schema/dml-chart.xsd +1499 -0
- data/lib/schema/dml-chartDrawing.xsd +146 -0
- data/lib/schema/dml-compatibility.xsd +14 -0
- data/lib/schema/dml-diagram.xsd +1091 -0
- data/lib/schema/dml-lockedCanvas.xsd +11 -0
- data/lib/schema/dml-main.xsd +3048 -0
- data/lib/schema/dml-picture.xsd +23 -0
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
- data/lib/schema/opc-contentTypes.xsd +42 -0
- data/lib/schema/opc-coreProperties.xsd +54 -0
- data/lib/schema/opc-digSig.xsd +49 -0
- data/lib/schema/opc-relationships.xsd +33 -0
- data/lib/schema/pml.xsd +1676 -0
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
- data/lib/schema/shared-bibliography.xsd +144 -0
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
- data/lib/schema/shared-math.xsd +582 -0
- data/lib/schema/shared-relationshipReference.xsd +25 -0
- data/lib/schema/sml.xsd +4434 -0
- data/lib/schema/vml-main.xsd +569 -0
- data/lib/schema/vml-officeDrawing.xsd +509 -0
- data/lib/schema/vml-presentationDrawing.xsd +12 -0
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
- data/lib/schema/wml.xsd +3644 -0
- data/lib/schema/xml.xsd +116 -0
- data/test/benchmark.rb +72 -0
- data/test/content_type/tc_content_type.rb +76 -0
- data/test/content_type/tc_default.rb +16 -0
- data/test/content_type/tc_override.rb +14 -0
- data/test/doc_props/tc_app.rb +43 -0
- data/test/doc_props/tc_core.rb +42 -0
- data/test/drawing/tc_area_chart.rb +39 -0
- data/test/drawing/tc_area_series.rb +71 -0
- data/test/drawing/tc_axes.rb +8 -0
- data/test/drawing/tc_axis.rb +112 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -0
- data/test/drawing/tc_bubble_chart.rb +44 -0
- data/test/drawing/tc_bubble_series.rb +21 -0
- data/test/drawing/tc_cat_axis.rb +31 -0
- data/test/drawing/tc_cat_axis_data.rb +27 -0
- data/test/drawing/tc_chart.rb +123 -0
- data/test/drawing/tc_d_lbls.rb +57 -0
- data/test/drawing/tc_data_source.rb +23 -0
- data/test/drawing/tc_drawing.rb +80 -0
- data/test/drawing/tc_graphic_frame.rb +27 -0
- data/test/drawing/tc_hyperlink.rb +64 -0
- data/test/drawing/tc_line_3d_chart.rb +47 -0
- data/test/drawing/tc_line_chart.rb +39 -0
- data/test/drawing/tc_line_series.rb +71 -0
- data/test/drawing/tc_marker.rb +44 -0
- data/test/drawing/tc_named_axis_data.rb +27 -0
- data/test/drawing/tc_num_data.rb +31 -0
- data/test/drawing/tc_num_val.rb +29 -0
- data/test/drawing/tc_one_cell_anchor.rb +66 -0
- data/test/drawing/tc_pic.rb +103 -0
- data/test/drawing/tc_picture_locking.rb +72 -0
- data/test/drawing/tc_pie_3D_chart.rb +28 -0
- data/test/drawing/tc_pie_series.rb +32 -0
- data/test/drawing/tc_scaling.rb +36 -0
- data/test/drawing/tc_scatter_chart.rb +48 -0
- data/test/drawing/tc_scatter_series.rb +56 -0
- data/test/drawing/tc_ser_axis.rb +31 -0
- data/test/drawing/tc_series.rb +23 -0
- data/test/drawing/tc_series_title.rb +33 -0
- data/test/drawing/tc_str_data.rb +18 -0
- data/test/drawing/tc_str_val.rb +30 -0
- data/test/drawing/tc_title.rb +54 -0
- data/test/drawing/tc_two_cell_anchor.rb +36 -0
- data/test/drawing/tc_val_axis.rb +24 -0
- data/test/drawing/tc_view_3D.rb +54 -0
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +106 -0
- data/test/profile.rb +24 -0
- data/test/rels/tc_relationship.rb +44 -0
- data/test/rels/tc_relationships.rb +37 -0
- data/test/stylesheet/tc_border.rb +37 -0
- data/test/stylesheet/tc_border_pr.rb +32 -0
- data/test/stylesheet/tc_cell_alignment.rb +81 -0
- data/test/stylesheet/tc_cell_protection.rb +29 -0
- data/test/stylesheet/tc_cell_style.rb +57 -0
- data/test/stylesheet/tc_color.rb +43 -0
- data/test/stylesheet/tc_dxf.rb +81 -0
- data/test/stylesheet/tc_fill.rb +18 -0
- data/test/stylesheet/tc_font.rb +121 -0
- data/test/stylesheet/tc_gradient_fill.rb +72 -0
- data/test/stylesheet/tc_gradient_stop.rb +31 -0
- data/test/stylesheet/tc_num_fmt.rb +30 -0
- data/test/stylesheet/tc_pattern_fill.rb +43 -0
- data/test/stylesheet/tc_styles.rb +235 -0
- data/test/stylesheet/tc_table_style.rb +44 -0
- data/test/stylesheet/tc_table_style_element.rb +45 -0
- data/test/stylesheet/tc_table_styles.rb +29 -0
- data/test/stylesheet/tc_xf.rb +120 -0
- data/test/tc_axlsx.rb +103 -0
- data/test/tc_helper.rb +12 -0
- data/test/tc_package.rb +245 -0
- data/test/util/tc_mime_type_utils.rb +13 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +77 -0
- data/test/util/tc_validators.rb +210 -0
- data/test/workbook/tc_defined_name.rb +49 -0
- data/test/workbook/tc_shared_strings_table.rb +59 -0
- data/test/workbook/tc_workbook.rb +160 -0
- data/test/workbook/tc_workbook_view.rb +50 -0
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
- data/test/workbook/worksheet/tc_break.rb +49 -0
- data/test/workbook/worksheet/tc_cell.rb +387 -0
- data/test/workbook/worksheet/tc_cfvo.rb +31 -0
- data/test/workbook/worksheet/tc_col.rb +78 -0
- data/test/workbook/worksheet/tc_color_scale.rb +58 -0
- data/test/workbook/worksheet/tc_comment.rb +72 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
- data/test/workbook/worksheet/tc_data_bar.rb +46 -0
- data/test/workbook/worksheet/tc_data_validation.rb +265 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
- data/test/workbook/worksheet/tc_header_footer.rb +151 -0
- data/test/workbook/worksheet/tc_icon_set.rb +45 -0
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
- data/test/workbook/worksheet/tc_page_setup.rb +143 -0
- data/test/workbook/worksheet/tc_pane.rb +54 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +135 -0
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
- data/test/workbook/worksheet/tc_print_options.rb +72 -0
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_rich_text.rb +44 -0
- data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
- data/test/workbook/worksheet/tc_row.rb +122 -0
- data/test/workbook/worksheet/tc_selection.rb +55 -0
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -0
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
- data/test/workbook/worksheet/tc_table.rb +67 -0
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +597 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +601 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# The BarChart is a three dimentional barchart (who would have guessed?) that you can add to your worksheet.
|
|
5
|
+
# @see Worksheet#add_chart
|
|
6
|
+
# @see Chart#add_series
|
|
7
|
+
# @see Package#serialize
|
|
8
|
+
# @see README for an example
|
|
9
|
+
class BarChart < Chart
|
|
10
|
+
|
|
11
|
+
# the category axis
|
|
12
|
+
# @return [CatAxis]
|
|
13
|
+
def cat_axis
|
|
14
|
+
axes[:cat_axis]
|
|
15
|
+
end
|
|
16
|
+
alias :catAxis :cat_axis
|
|
17
|
+
|
|
18
|
+
# the value axis
|
|
19
|
+
# @return [ValAxis]
|
|
20
|
+
def val_axis
|
|
21
|
+
axes[:val_axis]
|
|
22
|
+
end
|
|
23
|
+
alias :valAxis :val_axis
|
|
24
|
+
|
|
25
|
+
# The direction of the bars in the chart
|
|
26
|
+
# must be one of [:bar, :col]
|
|
27
|
+
# @return [Symbol]
|
|
28
|
+
def bar_dir
|
|
29
|
+
@bar_dir ||= :bar
|
|
30
|
+
end
|
|
31
|
+
alias :barDir :bar_dir
|
|
32
|
+
|
|
33
|
+
# space between bar or column clusters, as a percentage of the bar or column width.
|
|
34
|
+
# @return [String]
|
|
35
|
+
attr_reader :gap_depth
|
|
36
|
+
alias :gapDepth :gap_depth
|
|
37
|
+
|
|
38
|
+
# space between bar or column clusters, as a percentage of the bar or column width.
|
|
39
|
+
# @return [String]
|
|
40
|
+
def gap_width
|
|
41
|
+
@gap_width ||= 150
|
|
42
|
+
end
|
|
43
|
+
alias :gapWidth :gap_width
|
|
44
|
+
|
|
45
|
+
#grouping for a column, line, or area chart.
|
|
46
|
+
# must be one of [:percentStacked, :clustered, :standard, :stacked]
|
|
47
|
+
# @return [Symbol]
|
|
48
|
+
def grouping
|
|
49
|
+
@grouping ||= :clustered
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# The shabe of the bars or columns
|
|
53
|
+
# must be one of [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax]
|
|
54
|
+
# @return [Symbol]
|
|
55
|
+
def shape
|
|
56
|
+
@shape ||= :box
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# validation regex for gap amount percent
|
|
60
|
+
GAP_AMOUNT_PERCENT = /0*(([0-9])|([1-9][0-9])|([1-4][0-9][0-9])|500)%/
|
|
61
|
+
|
|
62
|
+
# Creates a new bar chart object
|
|
63
|
+
# @param [GraphicFrame] frame The workbook that owns this chart.
|
|
64
|
+
# @option options [Cell, String] title
|
|
65
|
+
# @option options [Boolean] show_legend
|
|
66
|
+
# @option options [Symbol] bar_dir
|
|
67
|
+
# @option options [Symbol] grouping
|
|
68
|
+
# @option options [String] gap_width
|
|
69
|
+
# @option options [String] gap_depth
|
|
70
|
+
# @option options [Symbol] shape
|
|
71
|
+
# @see Chart
|
|
72
|
+
def initialize(frame, options={})
|
|
73
|
+
@vary_colors = true
|
|
74
|
+
@gap_width, @gap_depth, @shape = nil, nil, nil
|
|
75
|
+
super(frame, options)
|
|
76
|
+
@series_type = BarSeries
|
|
77
|
+
@d_lbls = nil
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# The direction of the bars in the chart
|
|
81
|
+
# must be one of [:bar, :col]
|
|
82
|
+
def bar_dir=(v)
|
|
83
|
+
RestrictionValidator.validate "BarChart.bar_dir", [:bar, :col], v
|
|
84
|
+
@bar_dir = v
|
|
85
|
+
end
|
|
86
|
+
alias :barDir= :bar_dir=
|
|
87
|
+
|
|
88
|
+
#grouping for a column, line, or area chart.
|
|
89
|
+
# must be one of [:percentStacked, :clustered, :standard, :stacked]
|
|
90
|
+
def grouping=(v)
|
|
91
|
+
RestrictionValidator.validate "BarChart.grouping", [:percentStacked, :clustered, :standard, :stacked], v
|
|
92
|
+
@grouping = v
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# space between bar or column clusters, as a percentage of the bar or column width.
|
|
96
|
+
def gap_width=(v)
|
|
97
|
+
RegexValidator.validate "BarChart.gap_width", GAP_AMOUNT_PERCENT, v
|
|
98
|
+
@gap_width=(v)
|
|
99
|
+
end
|
|
100
|
+
alias :gapWidth= :gap_width=
|
|
101
|
+
|
|
102
|
+
# space between bar or column clusters, as a percentage of the bar or column width.
|
|
103
|
+
def gap_depth=(v)
|
|
104
|
+
RegexValidator.validate "BarChart.gap_didth", GAP_AMOUNT_PERCENT, v
|
|
105
|
+
@gap_depth=(v)
|
|
106
|
+
end
|
|
107
|
+
alias :gapDepth= :gap_depth=
|
|
108
|
+
|
|
109
|
+
# The shabe of the bars or columns
|
|
110
|
+
# must be one of [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax]
|
|
111
|
+
def shape=(v)
|
|
112
|
+
RestrictionValidator.validate "BarChart.shape", [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax], v
|
|
113
|
+
@shape = v
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Serializes the object
|
|
117
|
+
# @param [String] str
|
|
118
|
+
# @return [String]
|
|
119
|
+
def to_xml_string(str = '')
|
|
120
|
+
super(str) do
|
|
121
|
+
str << '<c:barChart>'
|
|
122
|
+
str << ('<c:barDir val="' << bar_dir.to_s << '"/>')
|
|
123
|
+
str << ('<c:grouping val="' << grouping.to_s << '"/>')
|
|
124
|
+
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
|
125
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
|
126
|
+
@d_lbls.to_xml_string(str) if @d_lbls
|
|
127
|
+
str << ('<c:gapWidth val="' << @gap_width.to_s << '"/>') unless @gap_width.nil?
|
|
128
|
+
str << ('<c:gapDepth val="' << @gap_depth.to_s << '"/>') unless @gap_depth.nil?
|
|
129
|
+
str << ('<c:shape val="' << @shape.to_s << '"/>') unless @shape.nil?
|
|
130
|
+
axes.to_xml_string(str, :ids => true)
|
|
131
|
+
str << '</c:barChart>'
|
|
132
|
+
axes.to_xml_string(str)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# A hash of axes used by this chart. Bar charts have a value and
|
|
137
|
+
# category axes specified via axes[:val_axes] and axes[:cat_axis]
|
|
138
|
+
# @return [Axes]
|
|
139
|
+
def axes
|
|
140
|
+
@axes ||= Axes.new(:cat_axis => CatAxis, :val_axis => ValAxis)
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
# A BarSeries defines the title, data and labels for bar charts
|
|
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 BarSeries < Series
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# The data for this series.
|
|
11
|
+
# @return [NumDataSource]
|
|
12
|
+
attr_reader :data
|
|
13
|
+
|
|
14
|
+
# The labels for this series.
|
|
15
|
+
# @return [Array, SimpleTypedList]
|
|
16
|
+
attr_reader :labels
|
|
17
|
+
|
|
18
|
+
# The shabe of the bars or columns
|
|
19
|
+
# must be one of [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax]
|
|
20
|
+
# @return [Symbol]
|
|
21
|
+
attr_reader :shape
|
|
22
|
+
|
|
23
|
+
# An array of rgb colors to apply to your bar chart.
|
|
24
|
+
attr_reader :colors
|
|
25
|
+
|
|
26
|
+
# Creates a new series
|
|
27
|
+
# @option options [Array, SimpleTypedList] data
|
|
28
|
+
# @option options [Array, SimpleTypedList] labels
|
|
29
|
+
# @option options [String] title
|
|
30
|
+
# @option options [String] shape
|
|
31
|
+
# @option options [String] colors an array of colors to use when rendering each data point
|
|
32
|
+
# @param [Chart] chart
|
|
33
|
+
def initialize(chart, options={})
|
|
34
|
+
@shape = :box
|
|
35
|
+
@colors = []
|
|
36
|
+
super(chart, options)
|
|
37
|
+
self.labels = AxDataSource.new({:data => options[:labels]}) unless options[:labels].nil?
|
|
38
|
+
self.data = NumDataSource.new(options) unless options[:data].nil?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @see colors
|
|
42
|
+
def colors=(v) DataTypeValidator.validate "BarSeries.colors", [Array], v; @colors = v end
|
|
43
|
+
|
|
44
|
+
# The shabe of the bars or columns
|
|
45
|
+
# must be one of [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax]
|
|
46
|
+
def shape=(v)
|
|
47
|
+
RestrictionValidator.validate "BarSeries.shape", [:cone, :coneToMax, :box, :cylinder, :pyramid, :pyramidToMax], v
|
|
48
|
+
@shape = v
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Serializes the object
|
|
52
|
+
# @param [String] str
|
|
53
|
+
# @return [String]
|
|
54
|
+
def to_xml_string(str = '')
|
|
55
|
+
super(str) do
|
|
56
|
+
|
|
57
|
+
colors.each_with_index do |c, index|
|
|
58
|
+
str << '<c:dPt>'
|
|
59
|
+
str << ('<c:idx val="' << index.to_s << '"/>')
|
|
60
|
+
str << '<c:spPr><a:solidFill>'
|
|
61
|
+
str << ('<a:srgbClr val="' << c << '"/>')
|
|
62
|
+
str << '</a:solidFill></c:spPr></c:dPt>'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
@labels.to_xml_string(str) unless @labels.nil?
|
|
66
|
+
@data.to_xml_string(str) unless @data.nil?
|
|
67
|
+
# this is actually only required for shapes other than box
|
|
68
|
+
str << ('<c:shape val="' << shape.to_s << '"></c:shape>')
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
# assigns the data for this series
|
|
75
|
+
def data=(v) DataTypeValidator.validate "Series.data", [NumDataSource], v; @data = v; end
|
|
76
|
+
|
|
77
|
+
# assigns the labels for this series
|
|
78
|
+
def labels=(v) DataTypeValidator.validate "Series.labels", [AxDataSource], v; @labels = v; end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# The BubbleChart allows you to insert a bubble chart into your worksheet
|
|
5
|
+
# @see Worksheet#add_chart
|
|
6
|
+
# @see Chart#add_series
|
|
7
|
+
# @see README for an example
|
|
8
|
+
class BubbleChart < Chart
|
|
9
|
+
|
|
10
|
+
include Axlsx::OptionsParser
|
|
11
|
+
|
|
12
|
+
# the x value axis
|
|
13
|
+
# @return [ValAxis]
|
|
14
|
+
def x_val_axis
|
|
15
|
+
axes[:x_val_axis]
|
|
16
|
+
end
|
|
17
|
+
alias :xValAxis :x_val_axis
|
|
18
|
+
|
|
19
|
+
# the y value axis
|
|
20
|
+
# @return [ValAxis]
|
|
21
|
+
def y_val_axis
|
|
22
|
+
axes[:y_val_axis]
|
|
23
|
+
end
|
|
24
|
+
alias :yValAxis :y_val_axis
|
|
25
|
+
|
|
26
|
+
# Creates a new bubble chart
|
|
27
|
+
def initialize(frame, options={})
|
|
28
|
+
@vary_colors = 0
|
|
29
|
+
|
|
30
|
+
super(frame, options)
|
|
31
|
+
@series_type = BubbleSeries
|
|
32
|
+
@d_lbls = nil
|
|
33
|
+
parse_options options
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Serializes the object
|
|
37
|
+
# @param [String] str
|
|
38
|
+
# @return [String]
|
|
39
|
+
def to_xml_string(str = '')
|
|
40
|
+
super(str) do
|
|
41
|
+
str << '<c:bubbleChart>'
|
|
42
|
+
str << ('<c:varyColors val="' << vary_colors.to_s << '"/>')
|
|
43
|
+
@series.each { |ser| ser.to_xml_string(str) }
|
|
44
|
+
d_lbls.to_xml_string(str) if @d_lbls
|
|
45
|
+
axes.to_xml_string(str, :ids => true)
|
|
46
|
+
str << '</c:bubbleChart>'
|
|
47
|
+
axes.to_xml_string(str)
|
|
48
|
+
end
|
|
49
|
+
str
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# The axes for the bubble chart. BubbleChart has an x_val_axis and
|
|
53
|
+
# a y_val_axis
|
|
54
|
+
# @return [Axes]
|
|
55
|
+
def axes
|
|
56
|
+
@axes ||= Axes.new(:x_val_axis => ValAxis, :y_val_axis => ValAxis)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# A BubbleSeries defines the x/y position and bubble size 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 BubbleSeries < Series
|
|
10
|
+
|
|
11
|
+
# The x data for this series.
|
|
12
|
+
# @return [AxDataSource]
|
|
13
|
+
attr_reader :xData
|
|
14
|
+
|
|
15
|
+
# The y data for this series.
|
|
16
|
+
# @return [NumDataSource]
|
|
17
|
+
attr_reader :yData
|
|
18
|
+
|
|
19
|
+
# The bubble size for this series.
|
|
20
|
+
# @return [NumDataSource]
|
|
21
|
+
attr_reader :bubbleSize
|
|
22
|
+
|
|
23
|
+
# The fill color for this series.
|
|
24
|
+
# Red, green, and blue is expressed as sequence of hex digits, RRGGBB. A perceptual gamma of 2.2 is used.
|
|
25
|
+
# @return [String]
|
|
26
|
+
attr_reader :color
|
|
27
|
+
|
|
28
|
+
# Creates a new BubbleSeries
|
|
29
|
+
def initialize(chart, options={})
|
|
30
|
+
@xData, @yData, @bubbleSize = nil
|
|
31
|
+
super(chart, options)
|
|
32
|
+
@xData = AxDataSource.new(:tag_name => :xVal, :data => options[:xData]) unless options[:xData].nil?
|
|
33
|
+
@yData = NumDataSource.new({:tag_name => :yVal, :data => options[:yData]}) unless options[:yData].nil?
|
|
34
|
+
@bubbleSize = NumDataSource.new({:tag_name => :bubbleSize, :data => options[:bubbleSize]}) unless options[:bubbleSize].nil?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @see color
|
|
38
|
+
def color=(v)
|
|
39
|
+
@color = v
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Serializes the object
|
|
43
|
+
# @param [String] str
|
|
44
|
+
# @return [String]
|
|
45
|
+
def to_xml_string(str = '')
|
|
46
|
+
super(str) do
|
|
47
|
+
# needs to override the super color here to push in ln/and something else!
|
|
48
|
+
if color
|
|
49
|
+
str << '<c:spPr><a:solidFill>'
|
|
50
|
+
str << ('<a:srgbClr val="' << color << '"/>')
|
|
51
|
+
str << '</a:solidFill>'
|
|
52
|
+
str << '<a:ln><a:solidFill>'
|
|
53
|
+
str << ('<a:srgbClr val="' << color << '"/></a:solidFill></a:ln>')
|
|
54
|
+
str << '</c:spPr>'
|
|
55
|
+
end
|
|
56
|
+
@xData.to_xml_string(str) unless @xData.nil?
|
|
57
|
+
@yData.to_xml_string(str) unless @yData.nil?
|
|
58
|
+
@bubbleSize.to_xml_string(str) unless @bubbleSize.nil?
|
|
59
|
+
end
|
|
60
|
+
str
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
#A CatAxis object defines a chart category axis
|
|
4
|
+
class CatAxis < Axis
|
|
5
|
+
|
|
6
|
+
# Creates a new CatAxis object
|
|
7
|
+
# @option options [Integer] tick_lbl_skip
|
|
8
|
+
# @option options [Integer] tick_mark_skip
|
|
9
|
+
def initialize(options={})
|
|
10
|
+
@tick_lbl_skip = 1
|
|
11
|
+
@tick_mark_skip = 1
|
|
12
|
+
self.auto = 1
|
|
13
|
+
self.lbl_algn = :ctr
|
|
14
|
+
self.lbl_offset = "100"
|
|
15
|
+
super(options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# From the docs: This element specifies that this axis is a date or text axis based on the data that is used for the axis labels, not a specific choice.
|
|
19
|
+
# @return [Boolean]
|
|
20
|
+
attr_reader :auto
|
|
21
|
+
|
|
22
|
+
# specifies how the perpendicular axis is crossed
|
|
23
|
+
# must be one of [:ctr, :l, :r]
|
|
24
|
+
# @return [Symbol]
|
|
25
|
+
attr_reader :lbl_algn
|
|
26
|
+
alias :lblAlgn :lbl_algn
|
|
27
|
+
|
|
28
|
+
# The offset of the labels
|
|
29
|
+
# must be between a string between 0 and 1000
|
|
30
|
+
# @return [Integer]
|
|
31
|
+
attr_reader :lbl_offset
|
|
32
|
+
alias :lblOffset :lbl_offset
|
|
33
|
+
|
|
34
|
+
# The number of tick lables to skip between labels
|
|
35
|
+
# @return [Integer]
|
|
36
|
+
attr_reader :tick_lbl_skip
|
|
37
|
+
alias :tickLblSkip :tick_lbl_skip
|
|
38
|
+
|
|
39
|
+
# The number of tickmarks to be skipped before the next one is rendered.
|
|
40
|
+
# @return [Boolean]
|
|
41
|
+
attr_reader :tick_mark_skip
|
|
42
|
+
alias :tickMarkSkip :tick_mark_skip
|
|
43
|
+
|
|
44
|
+
# regex for validating label offset
|
|
45
|
+
LBL_OFFSET_REGEX = /0*(([0-9])|([1-9][0-9])|([1-9][0-9][0-9])|1000)/
|
|
46
|
+
|
|
47
|
+
# @see tick_lbl_skip
|
|
48
|
+
def tick_lbl_skip=(v) Axlsx::validate_unsigned_int(v); @tick_lbl_skip = v; end
|
|
49
|
+
alias :tickLblSkip= :tick_lbl_skip=
|
|
50
|
+
|
|
51
|
+
# @see tick_mark_skip
|
|
52
|
+
def tick_mark_skip=(v) Axlsx::validate_unsigned_int(v); @tick_mark_skip = v; end
|
|
53
|
+
alias :tickMarkSkip= :tick_mark_skip=
|
|
54
|
+
|
|
55
|
+
# From the docs: This element specifies that this axis is a date or text axis based on the data that is used for the axis labels, not a specific choice.
|
|
56
|
+
def auto=(v) Axlsx::validate_boolean(v); @auto = v; end
|
|
57
|
+
|
|
58
|
+
# specifies how the perpendicular axis is crossed
|
|
59
|
+
# must be one of [:ctr, :l, :r]
|
|
60
|
+
def lbl_algn=(v) RestrictionValidator.validate "#{self.class}.lbl_algn", [:ctr, :l, :r], v; @lbl_algn = v; end
|
|
61
|
+
alias :lblAlgn= :lbl_algn=
|
|
62
|
+
|
|
63
|
+
# The offset of the labels
|
|
64
|
+
# must be between a string between 0 and 1000
|
|
65
|
+
def lbl_offset=(v) RegexValidator.validate "#{self.class}.lbl_offset", LBL_OFFSET_REGEX, v; @lbl_offset = v; end
|
|
66
|
+
alias :lblOffset= :lbl_offset=
|
|
67
|
+
|
|
68
|
+
# Serializes the object
|
|
69
|
+
# @param [String] str
|
|
70
|
+
# @return [String]
|
|
71
|
+
def to_xml_string(str = '')
|
|
72
|
+
str << '<c:catAx>'
|
|
73
|
+
super(str)
|
|
74
|
+
str << ('<c:auto val="' << @auto.to_s << '"/>')
|
|
75
|
+
str << ('<c:lblAlgn val="' << @lbl_algn.to_s << '"/>')
|
|
76
|
+
str << ('<c:lblOffset val="' << @lbl_offset.to_i.to_s << '"/>')
|
|
77
|
+
str << ('<c:tickLblSkip val="' << @tick_lbl_skip.to_s << '"/>')
|
|
78
|
+
str << ('<c:tickMarkSkip val="' << @tick_mark_skip.to_s << '"/>')
|
|
79
|
+
str << '</c:catAx>'
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
end
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
module Axlsx
|
|
3
|
+
|
|
4
|
+
# A Chart is the superclass for specific charts
|
|
5
|
+
# @note Worksheet#add_chart is the recommended way to create charts for your worksheets.
|
|
6
|
+
# @see README for examples
|
|
7
|
+
class Chart
|
|
8
|
+
|
|
9
|
+
include Axlsx::OptionsParser
|
|
10
|
+
# Creates a new chart object
|
|
11
|
+
# @param [GraphicalFrame] frame The frame that holds this chart.
|
|
12
|
+
# @option options [Cell, String] title
|
|
13
|
+
# @option options [Boolean] show_legend
|
|
14
|
+
# @option options [Symbol] legend_position
|
|
15
|
+
# @option options [Array|String|Cell] start_at The X, Y coordinates defining the top left corner of the chart.
|
|
16
|
+
# @option options [Array|String|Cell] end_at The X, Y coordinates defining the bottom right corner of the chart.
|
|
17
|
+
def initialize(frame, options={})
|
|
18
|
+
@style = 18
|
|
19
|
+
@view_3D = nil
|
|
20
|
+
@graphic_frame=frame
|
|
21
|
+
@graphic_frame.anchor.drawing.worksheet.workbook.charts << self
|
|
22
|
+
@series = SimpleTypedList.new Series
|
|
23
|
+
@show_legend = true
|
|
24
|
+
@legend_position = :r
|
|
25
|
+
@display_blanks_as = :gap
|
|
26
|
+
@series_type = Series
|
|
27
|
+
@title = Title.new
|
|
28
|
+
@bg_color = nil
|
|
29
|
+
parse_options options
|
|
30
|
+
start_at(*options[:start_at]) if options[:start_at]
|
|
31
|
+
end_at(*options[:end_at]) if options[:end_at]
|
|
32
|
+
yield self if block_given?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# The 3D view properties for the chart
|
|
36
|
+
attr_reader :view_3D
|
|
37
|
+
alias :view3D :view_3D
|
|
38
|
+
|
|
39
|
+
# A reference to the graphic frame that owns this chart
|
|
40
|
+
# @return [GraphicFrame]
|
|
41
|
+
attr_reader :graphic_frame
|
|
42
|
+
|
|
43
|
+
# A collection of series objects that are applied to the chart
|
|
44
|
+
# @return [SimpleTypedList]
|
|
45
|
+
attr_reader :series
|
|
46
|
+
|
|
47
|
+
# The type of series to use for this chart.
|
|
48
|
+
# @return [Series]
|
|
49
|
+
attr_reader :series_type
|
|
50
|
+
|
|
51
|
+
#TODO data labels!
|
|
52
|
+
def d_lbls
|
|
53
|
+
@d_lbls ||= DLbls.new(self.class)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Indicates that colors should be varied by datum
|
|
57
|
+
# @return [Boolean]
|
|
58
|
+
attr_reader :vary_colors
|
|
59
|
+
|
|
60
|
+
# Configures the vary_colors options for this chart
|
|
61
|
+
# @param [Boolean] v The value to set
|
|
62
|
+
def vary_colors=(v) Axlsx::validate_boolean(v); @vary_colors = v; end
|
|
63
|
+
|
|
64
|
+
# The title object for the chart.
|
|
65
|
+
# @return [Title]
|
|
66
|
+
attr_reader :title
|
|
67
|
+
|
|
68
|
+
# The style for the chart.
|
|
69
|
+
# see ECMA Part 1 §21.2.2.196
|
|
70
|
+
# @return [Integer]
|
|
71
|
+
attr_reader :style
|
|
72
|
+
|
|
73
|
+
# Show the legend in the chart
|
|
74
|
+
# @return [Boolean]
|
|
75
|
+
attr_reader :show_legend
|
|
76
|
+
|
|
77
|
+
# Set the location of the chart's legend
|
|
78
|
+
# @return [Symbol] The position of this legend
|
|
79
|
+
# @note
|
|
80
|
+
# The following are allowed
|
|
81
|
+
# :b
|
|
82
|
+
# :l
|
|
83
|
+
# :r
|
|
84
|
+
# :t
|
|
85
|
+
# :tr
|
|
86
|
+
attr_reader :legend_position
|
|
87
|
+
|
|
88
|
+
# How to display blank values
|
|
89
|
+
# Options are
|
|
90
|
+
# * gap: Display nothing
|
|
91
|
+
# * span: Not sure what this does
|
|
92
|
+
# * zero: Display as if the value were zero, not blank
|
|
93
|
+
# @return [Symbol]
|
|
94
|
+
# Default :gap (although this really should vary by chart type and grouping)
|
|
95
|
+
attr_reader :display_blanks_as
|
|
96
|
+
|
|
97
|
+
# Background color for the chart
|
|
98
|
+
# @return [String]
|
|
99
|
+
attr_reader :bg_color
|
|
100
|
+
|
|
101
|
+
# The relationship object for this chart.
|
|
102
|
+
# @return [Relationship]
|
|
103
|
+
def relationship
|
|
104
|
+
Relationship.new(self, CHART_R, "../#{pn}")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# The index of this chart in the workbooks charts collection
|
|
108
|
+
# @return [Integer]
|
|
109
|
+
def index
|
|
110
|
+
@graphic_frame.anchor.drawing.worksheet.workbook.charts.index(self)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# The part name for this chart
|
|
114
|
+
# @return [String]
|
|
115
|
+
def pn
|
|
116
|
+
"#{CHART_PN % (index+1)}"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# The title object for the chart.
|
|
120
|
+
# @param [String, Cell] v
|
|
121
|
+
# @return [Title]
|
|
122
|
+
def title=(v)
|
|
123
|
+
DataTypeValidator.validate "#{self.class}.title", [String, Cell], v
|
|
124
|
+
if v.is_a?(String)
|
|
125
|
+
@title.text = v
|
|
126
|
+
elsif v.is_a?(Cell)
|
|
127
|
+
@title.cell = v
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# The size of the Title object of the chart.
|
|
132
|
+
# @param [String] v The size for the title object
|
|
133
|
+
# @see Title
|
|
134
|
+
def title_size=(v)
|
|
135
|
+
@title.text_size = v unless v.to_s.empty?
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Show the legend in the chart
|
|
139
|
+
# @param [Boolean] v
|
|
140
|
+
# @return [Boolean]
|
|
141
|
+
def show_legend=(v) Axlsx::validate_boolean(v); @show_legend = v; end
|
|
142
|
+
|
|
143
|
+
# How to display blank values
|
|
144
|
+
# @see display_blanks_as
|
|
145
|
+
# @param [Symbol] v
|
|
146
|
+
# @return [Symbol]
|
|
147
|
+
def display_blanks_as=(v) Axlsx::validate_display_blanks_as(v); @display_blanks_as = v; end
|
|
148
|
+
|
|
149
|
+
# The style for the chart.
|
|
150
|
+
# see ECMA Part 1 §21.2.2.196
|
|
151
|
+
# @param [Integer] v must be between 1 and 48
|
|
152
|
+
def style=(v) DataTypeValidator.validate "Chart.style", Integer, v, lambda { |arg| arg >= 1 && arg <= 48 }; @style = v; end
|
|
153
|
+
|
|
154
|
+
# @see legend_position
|
|
155
|
+
def legend_position=(v) RestrictionValidator.validate "Chart.legend_position", [:b, :l, :r, :t, :tr], v; @legend_position = v; end
|
|
156
|
+
|
|
157
|
+
# backwards compatibility to allow chart.to and chart.from access to anchor markers
|
|
158
|
+
# @note This will be disconinued in version 2.0.0. Please use the end_at method
|
|
159
|
+
def to
|
|
160
|
+
@graphic_frame.anchor.to
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# backwards compatibility to allow chart.to and chart.from access to anchor markers
|
|
164
|
+
# @note This will be disconinued in version 2.0.0. please use the start_at method
|
|
165
|
+
def from
|
|
166
|
+
@graphic_frame.anchor.from
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Adds a new series to the chart's series collection.
|
|
170
|
+
# @return [Series]
|
|
171
|
+
# @see Series
|
|
172
|
+
def add_series(options={})
|
|
173
|
+
@series_type.new(self, options)
|
|
174
|
+
@series.last
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Assigns a background color to chart area
|
|
178
|
+
def bg_color=(v)
|
|
179
|
+
DataTypeValidator.validate(:color, Color, Color.new(:rgb => v))
|
|
180
|
+
@bg_color = v
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Serializes the object
|
|
184
|
+
# @param [String] str
|
|
185
|
+
# @return [String]
|
|
186
|
+
def to_xml_string(str = '')
|
|
187
|
+
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
188
|
+
str << ('<c:chartSpace xmlns:c="' << XML_NS_C << '" xmlns:a="' << XML_NS_A << '" xmlns:r="' << XML_NS_R << '">')
|
|
189
|
+
str << ('<c:date1904 val="' << Axlsx::Workbook.date1904.to_s << '"/>')
|
|
190
|
+
str << ('<c:style val="' << style.to_s << '"/>')
|
|
191
|
+
str << '<c:chart>'
|
|
192
|
+
@title.to_xml_string str
|
|
193
|
+
str << ('<c:autoTitleDeleted val="' << (@title == nil).to_s << '"/>')
|
|
194
|
+
@view_3D.to_xml_string(str) if @view_3D
|
|
195
|
+
str << '<c:floor><c:thickness val="0"/></c:floor>'
|
|
196
|
+
str << '<c:sideWall><c:thickness val="0"/></c:sideWall>'
|
|
197
|
+
str << '<c:backWall><c:thickness val="0"/></c:backWall>'
|
|
198
|
+
str << '<c:plotArea>'
|
|
199
|
+
str << '<c:layout/>'
|
|
200
|
+
yield if block_given?
|
|
201
|
+
str << '</c:plotArea>'
|
|
202
|
+
if @show_legend
|
|
203
|
+
str << '<c:legend>'
|
|
204
|
+
str << ('<c:legendPos val="' << @legend_position.to_s << '"/>')
|
|
205
|
+
str << '<c:layout/>'
|
|
206
|
+
str << '<c:overlay val="0"/>'
|
|
207
|
+
str << '</c:legend>'
|
|
208
|
+
end
|
|
209
|
+
str << '<c:plotVisOnly val="1"/>'
|
|
210
|
+
str << ('<c:dispBlanksAs val="' << display_blanks_as.to_s << '"/>')
|
|
211
|
+
str << '<c:showDLblsOverMax val="1"/>'
|
|
212
|
+
str << '</c:chart>'
|
|
213
|
+
if bg_color
|
|
214
|
+
str << '<c:spPr>'
|
|
215
|
+
str << '<a:solidFill>'
|
|
216
|
+
str << '<a:srgbClr val="' << bg_color << '"/>'
|
|
217
|
+
str << '</a:solidFill>'
|
|
218
|
+
str << '<a:ln>'
|
|
219
|
+
str << '<a:noFill/>'
|
|
220
|
+
str << '</a:ln>'
|
|
221
|
+
str << '</c:spPr>'
|
|
222
|
+
end
|
|
223
|
+
str << '<c:printSettings>'
|
|
224
|
+
str << '<c:headerFooter/>'
|
|
225
|
+
str << '<c:pageMargins b="1.0" l="0.75" r="0.75" t="1.0" header="0.5" footer="0.5"/>'
|
|
226
|
+
str << '<c:pageSetup/>'
|
|
227
|
+
str << '</c:printSettings>'
|
|
228
|
+
str << '</c:chartSpace>'
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# This is a short cut method to set the anchor start marker position
|
|
232
|
+
# If you need finer granularity in positioning use
|
|
233
|
+
#
|
|
234
|
+
# This helper method acceps a fairly wide range of inputs exampled
|
|
235
|
+
# below
|
|
236
|
+
#
|
|
237
|
+
# @example
|
|
238
|
+
#
|
|
239
|
+
# start_at 0, 5 # The anchor start marker is set to 6th row of
|
|
240
|
+
# the first column
|
|
241
|
+
#
|
|
242
|
+
# start_at [0, 5] # The anchor start marker is set to start on the 6th row
|
|
243
|
+
# of the first column
|
|
244
|
+
#
|
|
245
|
+
# start_at "C1" # The anchor start marker is set to start on the first row
|
|
246
|
+
# of the third column
|
|
247
|
+
#
|
|
248
|
+
# start_at sheet.rows.first.cells.last # The anchor start
|
|
249
|
+
# marker is set to the location of a specific cell.
|
|
250
|
+
#
|
|
251
|
+
# @param [Array|String|Cell] x the column, coordinates, string
|
|
252
|
+
# reference or cell to use in setting the start marker position.
|
|
253
|
+
# @param [Integer] y The row
|
|
254
|
+
# @return [Marker]
|
|
255
|
+
def start_at(x=0, y=0)
|
|
256
|
+
@graphic_frame.anchor.start_at(x, y)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
# This is a short cut method to set the end anchor position
|
|
260
|
+
# If you need finer granularity in positioning use
|
|
261
|
+
# graphic_frame.anchor.to.colOff / rowOff
|
|
262
|
+
# @param [Integer] x The column - default 10
|
|
263
|
+
# @param [Integer] y The row - default 10
|
|
264
|
+
# @return [Marker]
|
|
265
|
+
# @see start_at
|
|
266
|
+
def end_at(x=10, y=10)
|
|
267
|
+
@graphic_frame.anchor.end_at(x, y)
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# sets the view_3D object for the chart
|
|
271
|
+
def view_3D=(v) DataTypeValidator.validate "#{self.class}.view_3D", View3D, v; @view_3D = v; end
|
|
272
|
+
alias :view3D= :view_3D=
|
|
273
|
+
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
end
|