ziya 1.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.
Files changed (128) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +127 -0
  3. data/README.txt +137 -0
  4. data/Rakefile +45 -0
  5. data/bin/ziyafy +51 -0
  6. data/charts/charts.swf +0 -0
  7. data/charts/charts_library/arno.swf +0 -0
  8. data/charts/charts_library/arst.swf +0 -0
  9. data/charts/charts_library/brfl.swf +0 -0
  10. data/charts/charts_library/brno.swf +0 -0
  11. data/charts/charts_library/brst.swf +0 -0
  12. data/charts/charts_library/cl3d.swf +0 -0
  13. data/charts/charts_library/clfl.swf +0 -0
  14. data/charts/charts_library/clno.swf +0 -0
  15. data/charts/charts_library/clp3.swf +0 -0
  16. data/charts/charts_library/cls3.swf +0 -0
  17. data/charts/charts_library/clst.swf +0 -0
  18. data/charts/charts_library/cnno.swf +0 -0
  19. data/charts/charts_library/lnno.swf +0 -0
  20. data/charts/charts_library/mxno.swf +0 -0
  21. data/charts/charts_library/pi3d.swf +0 -0
  22. data/charts/charts_library/pino.swf +0 -0
  23. data/charts/charts_library/pono.swf +0 -0
  24. data/charts/charts_library/scno.swf +0 -0
  25. data/charts/themes/commando/bar_chart.yml +9 -0
  26. data/charts/themes/commando/base_chart.yml +65 -0
  27. data/charts/themes/commando/column_chart.yml +13 -0
  28. data/charts/themes/commando/column_threed_chart.yml +25 -0
  29. data/charts/themes/commando/parallel_threed_column_chart.yml +17 -0
  30. data/charts/themes/commando/pie_chart.yml +22 -0
  31. data/charts/themes/commando/pie_threed_chart.yml +28 -0
  32. data/charts/themes/commando/polar_chart.yml +11 -0
  33. data/charts/themes/commando/stacked_bar_chart.yml +9 -0
  34. data/charts/themes/commando/stacked_column_chart.yml +14 -0
  35. data/charts/themes/commando/stacked_threed_column_chart.yml +17 -0
  36. data/charts/themes/default/bar_chart.yml +3 -0
  37. data/charts/themes/default/base_chart.yml +67 -0
  38. data/charts/themes/default/column_chart.yml +13 -0
  39. data/charts/themes/default/column_threed_chart.yml +25 -0
  40. data/charts/themes/default/parallel_threed_column_chart.yml +17 -0
  41. data/charts/themes/default/pie_chart.yml +29 -0
  42. data/charts/themes/default/pie_threed_chart.yml +28 -0
  43. data/charts/themes/default/polar_chart.yml +12 -0
  44. data/charts/themes/default/stacked_bar_chart.yml +3 -0
  45. data/charts/themes/default/stacked_column_chart.yml +14 -0
  46. data/charts/themes/default/stacked_threed_column_chart.yml +17 -0
  47. data/charts/themes/default/test.yml +4 -0
  48. data/lib/ziya.rb +100 -0
  49. data/lib/ziya/charts/area.rb +13 -0
  50. data/lib/ziya/charts/bar.rb +11 -0
  51. data/lib/ziya/charts/base.rb +435 -0
  52. data/lib/ziya/charts/candle_stick.rb +11 -0
  53. data/lib/ziya/charts/column.rb +11 -0
  54. data/lib/ziya/charts/column_threed.rb +11 -0
  55. data/lib/ziya/charts/floating_bar.rb +11 -0
  56. data/lib/ziya/charts/floating_column.rb +11 -0
  57. data/lib/ziya/charts/line.rb +11 -0
  58. data/lib/ziya/charts/mixed.rb +11 -0
  59. data/lib/ziya/charts/parallel_threed_column.rb +11 -0
  60. data/lib/ziya/charts/pie.rb +11 -0
  61. data/lib/ziya/charts/pie_threed.rb +11 -0
  62. data/lib/ziya/charts/polar.rb +11 -0
  63. data/lib/ziya/charts/scatter.rb +11 -0
  64. data/lib/ziya/charts/stacked_area.rb +11 -0
  65. data/lib/ziya/charts/stacked_bar.rb +11 -0
  66. data/lib/ziya/charts/stacked_column.rb +11 -0
  67. data/lib/ziya/charts/stacked_threed_column.rb +11 -0
  68. data/lib/ziya/components/area.rb +14 -0
  69. data/lib/ziya/components/axis_category.rb +69 -0
  70. data/lib/ziya/components/axis_ticks.rb +37 -0
  71. data/lib/ziya/components/axis_value.rb +59 -0
  72. data/lib/ziya/components/base.rb +100 -0
  73. data/lib/ziya/components/chart_border.rb +33 -0
  74. data/lib/ziya/components/chart_grid_h.rb +28 -0
  75. data/lib/ziya/components/chart_grid_v.rb +28 -0
  76. data/lib/ziya/components/chart_pref.rb +22 -0
  77. data/lib/ziya/components/chart_rect.rb +36 -0
  78. data/lib/ziya/components/chart_transition.rb +26 -0
  79. data/lib/ziya/components/chart_value.rb +71 -0
  80. data/lib/ziya/components/circle.rb +13 -0
  81. data/lib/ziya/components/draw.rb +45 -0
  82. data/lib/ziya/components/image.rb +13 -0
  83. data/lib/ziya/components/legend_label.rb +18 -0
  84. data/lib/ziya/components/legend_rect.rb +19 -0
  85. data/lib/ziya/components/legend_transition.rb +18 -0
  86. data/lib/ziya/components/line.rb +12 -0
  87. data/lib/ziya/components/link.rb +29 -0
  88. data/lib/ziya/components/link_data.rb +19 -0
  89. data/lib/ziya/components/live_update.rb +21 -0
  90. data/lib/ziya/components/rect.rb +13 -0
  91. data/lib/ziya/components/series_color.rb +35 -0
  92. data/lib/ziya/components/series_explode.rb +38 -0
  93. data/lib/ziya/components/series_gap.rb +18 -0
  94. data/lib/ziya/components/series_switch.rb +25 -0
  95. data/lib/ziya/components/text.rb +13 -0
  96. data/lib/ziya/helpers/base_helper.rb +37 -0
  97. data/lib/ziya/utils/logger.rb +125 -0
  98. data/lib/ziya/utils/text.rb +33 -0
  99. data/lib/ziya/version.rb +15 -0
  100. data/lib/ziya/ziya_helper.rb +147 -0
  101. data/spec/charts/base_spec.rb +120 -0
  102. data/spec/charts/chart_type_spec.rb +42 -0
  103. data/spec/components/area_spec.rb +60 -0
  104. data/spec/components/draw_spec.rb +33 -0
  105. data/spec/components/link_spec.rb +23 -0
  106. data/spec/components/series_color_spec.rb +40 -0
  107. data/spec/components/series_explode_spec.rb +40 -0
  108. data/spec/components/series_switch_spec.rb +19 -0
  109. data/spec/helpers/base_helper_spec.rb +22 -0
  110. data/spec/spec_helper.rb +7 -0
  111. data/spec/themes/default/fred.yml +6 -0
  112. data/spec/themes/default/line_chart.yml +6 -0
  113. data/spec/utils/logger_spec.rb +57 -0
  114. data/spec/utils/text_spec.rb +34 -0
  115. data/spec/ziya_helper_spec.rb +40 -0
  116. data/spec/ziya_spec.rb +19 -0
  117. data/tasks/ann.rake +76 -0
  118. data/tasks/annotations.rake +22 -0
  119. data/tasks/doc.rake +48 -0
  120. data/tasks/gem.rake +110 -0
  121. data/tasks/manifest.rake +49 -0
  122. data/tasks/post_load.rake +26 -0
  123. data/tasks/rubyforge.rake +57 -0
  124. data/tasks/setup.rb +227 -0
  125. data/tasks/spec.rake +61 -0
  126. data/tasks/svn.rake +44 -0
  127. data/tasks/test.rake +38 -0
  128. metadata +190 -0
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for candlestick chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class CandleStick < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "candlestick"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for a StackColumn chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class Column < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "column"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for 3D column chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class ColumnThreed < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "3d column"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for floating bar chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class FloatingBar < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "floating bar"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for a floating column chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class FloatingColumn < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "floating column"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for a StackColumn chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class Line < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "line"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for mixed chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class Mixed < Base
6
+ def initialize( license=nil, chart_id=nil )
7
+ super( license, chart_id )
8
+ @type = nil
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for parallel 3D column chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class ParallelThreedColumn < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "parallel 3d column"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ #
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class Pie < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "pie"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for 3D pie chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class PieThreed < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "3d pie"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ #
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class Polar < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "polar"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for scatter chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class Scatter < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "scatter"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for stacked area chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class StackedArea < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "stacked area"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for a stacked bar chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class StackedBar < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "stacked bar"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for a stack column chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class StackedColumn < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "stacked column"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Generates necessary xml for a stacked 3d column chart
3
+ # -----------------------------------------------------------------------------
4
+ module Ziya::Charts
5
+ class StackedThreedColumn < Base
6
+ def initialize( license=nil, chart_id=nil)
7
+ super( license, chart_id )
8
+ @type = "stacked 3d column"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Defines an area on a chart. Typically used to embed links and buttons
3
+ #
4
+ # Author:: Fernand Galiana
5
+ # Date:: Dec 15th, 2006
6
+ # -----------------------------------------------------------------------------
7
+ require 'ziya/components/base'
8
+
9
+ module Ziya::Components
10
+ class Area < Base
11
+ has_attribute :x, :y, :width, :height, :url, :priority, :target, :text,
12
+ :font, :bold, :size, :color, :background_color, :alpha
13
+ end
14
+ end
@@ -0,0 +1,69 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Sets the label attributes for the category-axis.
3
+ #
4
+ # <tt>skip</tt>: If this axis holds too many labels, the skip key allows skipping (hiding) some labels.
5
+ # A zero value doesn't hide any labels. If the skip value is 1, then the first label is
6
+ # displayed, the following label is skipped, and so on. If the skip value is 2, then the
7
+ # first label is displayed, the following 2 are skipped, and so on. Another way to hide
8
+ # labels is by passing empty strings to chart_data in place of category labels.
9
+ # The default is zero.
10
+ # <tt>font</tt>: The font used in the category-axis. See the Fonts section below.
11
+ # The default is Arial.
12
+ # <tt>bold</tt>: A boolean value that indicates whether the font is bold or not.
13
+ # The default is true.
14
+ # <tt>size</tt>: The font's size.
15
+ # The default font size is calculated based on the chart size.
16
+ # <tt>color</tt>: The font's color. This must be a string holding triple hexadecimal values representing
17
+ # the red, green, and blue components for a color.
18
+ # The default is "000000" (black).
19
+ # <tt>alpha</tt>: This affects the labels' transparency, only when the embedded font is used (see the Fonts
20
+ # section below.) Valid values are 0 (fully transparent) to 100 (fully opaque).
21
+ # The default is 90. To hide all labels in this axis, set the alpha to 0
22
+ # <tt>orientation</tt>: This affects the labels' orientation, only when the embedded font is used (see the Fonts
23
+ # section below.) Valid values are horizontal, diagonal_up, diagonal_down, vertical_up, and
24
+ # vertical_down. Polar charts also accept the value circular.
25
+ # The default value is horizontal.
26
+ # <tt>margin</tt>: This applies to area, stacked area, and line charts only. It's a boolean value that
27
+ # indicates whether to leave a margin on the left and right of the graph, or bump it against
28
+ # the left and right chart borders.
29
+ # The default is false (no margin.) In mixed charts, there's always a margin to algin area
30
+ # and line charts with column charts.
31
+ # <tt>min</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
32
+ # This determines the minimum value to start this axis with.
33
+ # The default is calculated from the chart's data.
34
+ # <tt>max</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
35
+ # This determines the maximum value to end this axis with.
36
+ # The default is calculated from the chart's data.
37
+ # <tt>steps</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
38
+ # This determines the number of steps between the minimum and maximum values. If the minimum value
39
+ # is negative, and the maximum value is positive, then 'steps' is the number of steps between zero
40
+ # and the larger of max and absolute min.
41
+ # The default is 4.
42
+ # <tt>prefix</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
43
+ # This determines the characters to add before the value numbers (example: $10).
44
+ # The default is nothing.
45
+ # <tt>suffix</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
46
+ # This determines the characters to add after the value numbers (example: 10%).
47
+ # The default is nothing.
48
+ # <tt>decimals</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
49
+ # This determines the number of decimal places to the right of the decimal point (example: 10.45).
50
+ # The default is zero (no decimals).
51
+ # <tt>decimal_char</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
52
+ # This determines the character to use at the left of a decimal fraction (example: 1.5).
53
+ # The default is '.' (dot or full stop).
54
+ # <tt>separator</tt>: This applies to scatter charts only, when the category-axis is calculated like the value-axis.
55
+ # This determines the character to place between every group of thousands (example: 1,00,000).
56
+ # The default is nothing.
57
+ #
58
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=axis_category
59
+ # for additional documentation, examples and futher detail.
60
+ # Author:: Fernand Galiana
61
+ # Date:: Dec 15th, 2006
62
+ # -----------------------------------------------------------------------------
63
+ module Ziya::Components
64
+ class AxisCategory < Base
65
+ has_attribute :skip, :font, :bold, :size, :color, :alpha, :orientation,
66
+ :margin, :min, :max, :steps, :prefix, :suffix, :decimals,
67
+ :decimal_char, :separator
68
+ end
69
+ end
@@ -0,0 +1,37 @@
1
+ # ------------------------------------------------------------------------------
2
+ # Describe the ticks configuration of the chart axis
3
+ #
4
+ # Sets the tick marks on the chart axes.
5
+ #
6
+ # <tt>value_ticks</tt>: A boolean value that indicates whether the ticks on the value axis are visible or not.
7
+ # The default is false.
8
+ # <tt>category_ticks</tt>: A boolean value that indicates whether the ticks on the category axis are visible or not.
9
+ # The default is true.
10
+ # <tt>position</tt>: A string that determines where on the axis to display the ticks. Valid values are "outside",
11
+ # "inside", and "centered".
12
+ # The default is "outside".
13
+ # <tt>major_thickness</tt>: The thickness of major ticks. Major ticks are those appearing with the axis labels.
14
+ # The default is 2 pixels.
15
+ # <tt>major_color</tt>: The color of major ticks. This must be a string holding triple hexadecimal values representing
16
+ # the red, green, and blue components for a color.
17
+ # The default is "000000" (black).
18
+ # <tt>minor_thickness</tt>: The thickness of minor ticks. Minor ticks are those appearing between major ticks.
19
+ # The default is 1 pixel.
20
+ # <tt>minor_color</tt>: The color of minor ticks. This must be a string holding triple hexadecimal values representing
21
+ # the red, green, and blue components for a color.
22
+ # The default is "000000" (black).
23
+ # <tt>minor_count</tt>: This applies to the value axis only. It sets the number of minor ticks between every 2 major ticks.
24
+ # The default is 4. The category axis displays minor ticks only where its labels get skipped.
25
+ #
26
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=axis_ticks
27
+ # for additional documentation, examples and futher detail.
28
+ #
29
+ # Author:: Fernand Galiana
30
+ # Date:: Dec 15th, 2006
31
+ # ------------------------------------------------------------------------------
32
+ module Ziya::Components
33
+ class AxisTicks < Base
34
+ has_attribute :value_ticks, :category_ticks, :position, :major_thickness,
35
+ :major_color, :minor_thickness, :minor_color, :minor_count
36
+ end
37
+ end
@@ -0,0 +1,59 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Setup configuration on the chart value axis
3
+ #
4
+ # Sets the label attributes for the value-axis.
5
+ #
6
+ # <tt>min</tt>: The minimum value to start the value-axis with.
7
+ # The default is calculated from the chart's data. In 3D column charts, the minimum value
8
+ # is always zero.
9
+ # <tt>max</tt>: The maximum value to end the value-axis with.
10
+ # The default is calculated from the chart's data.
11
+ # <tt>steps</tt>: The number of steps between the minimum and maximum values. If the minimum value is negative,
12
+ # and the maximum value is positive, then 'steps' is the number of steps between zero and the
13
+ # larger of max and absolute min.
14
+ # The default is 4.
15
+ # <tt>prefix</tt>: The characters to add before the value numbers (example: $10).
16
+ # The default is nothing.
17
+ # <tt>suffix</tt>: The characters to add after the value numbers (example: 10%).
18
+ # The default is nothing.
19
+ # <tt>decimals</tt>: The number of decimal places to the right of the decimal point (example: 10.45).
20
+ # The default is zero (no decimals).
21
+ # <tt>decimal_char</tt>: The character to use at the left of a decimal fraction (example: 1.5).
22
+ # The default is '.' (dot or full stop.)
23
+ # <tt>separator</tt>: The character to place between every group of thousands (example: 1,00,000).
24
+ # The default is nothing.
25
+ # <tt>show_min</tt>: A boolean that indicates whether show or hide the first label in the value-axis. Hiding this
26
+ # first label might be necessary if it overlaps with the first label in the category axis.
27
+ # The default is true (show the first label).
28
+ # <tt>font</tt>: The font used in the value-axis.
29
+ # The default is Arial.
30
+ # <tt>bold</tt>: A boolean value that indicates whether the font is bold or not.
31
+ # The default is true.
32
+ # <tt>size</tt>: The font's size.
33
+ # The default font size is calculated based on the chart size.
34
+ # <tt>color</tt>: The font's color. This must be a string holding triple hexadecimal values representing the red,
35
+ # green, and blue components for a color.
36
+ # The default is "000000" (black).
37
+ # <tt>background_color</tt>: This applies to Polar charts only. It determines the labels' background color to make them visible
38
+ # over the graph. When omitted, axis_value labels have no background. This must be a string holding
39
+ # triple hexadecimal values representing the red, green, and blue components for a color.
40
+ # The default is omitted (no background).
41
+ # <tt>alpha</tt>: This affects the labels' transparency, only when the embedded font is used. Valid values are
42
+ # 0 (fully transparent) to 100 (fully opaque).
43
+ # The default is 90. To hide all labels in this axis, set the alpha to 0.
44
+ # <tt>orientation</tt>: This affects the labels' orientation, only when the embedded font is used. Valid values are
45
+ # "horizontal", "diagonal_up", "diagonal_down", "vertical_up", and "vertical_down."
46
+ # The default value is "horizontal".
47
+ #
48
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=axis_value
49
+ # for additional documentation, examples and futher detail.
50
+ # Author:: Fernand Galiana
51
+ # Date:: Dec 15th, 2006
52
+ # -----------------------------------------------------------------------------
53
+ module Ziya::Components
54
+ class AxisValue < Base
55
+ has_attribute :min, :max, :steps, :prefix, :suffix, :decimals,
56
+ :decimal_char, :separator, :show_min, :font, :bold,
57
+ :size, :color, :background_color, :alpha, :orientation
58
+ end
59
+ end
@@ -0,0 +1,100 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Abstract class representing the base class for all chart preferences
3
+ # TODO Not getting parents inherited properties if defined as defaults
4
+ #
5
+ # TODO: Change attributes to be per class instance
6
+ #
7
+ # Author:: Fernand Galiana
8
+ # Date:: Dec 15th, 2006
9
+ # -----------------------------------------------------------------------------
10
+ module Ziya::Components
11
+ class Base
12
+ include Ziya::Utils::Text
13
+
14
+ # class methods...
15
+ class << self
16
+ # -----------------------------------------------------------------------
17
+ # defines attribute accessors for a given component
18
+ def has_attribute(*args)
19
+ class_name = self.to_s
20
+ args.each do |attribute|
21
+ # add the attribute to the collection making sure to create a new array if one doesn't exist
22
+ attributes[class_name] = [] if attributes[class_name].nil?
23
+ attributes[class_name] << attribute
24
+ # create the accessor methods for the attribute
25
+ unless self.instance_methods.include?(attribute.to_s) && self.instance_methods.include?("#{attribute.to_s}=")
26
+ self.module_eval "attr_accessor :#{attribute}"
27
+ end
28
+ end
29
+ end
30
+
31
+ # -----------------------------------------------------------------------
32
+ # Class accessor. Retrieve class level preferences
33
+ def attributes
34
+ @attributes ||= {}
35
+ end
36
+ end
37
+
38
+ # -------------------------------------------------------------------------
39
+ # merge attributes with overriden component
40
+ def merge( parent_attributes, force=false )
41
+ attributes_for(self).each do |attr|
42
+ unless parent_attributes.send(attr).nil?
43
+ send("#{attr}=", parent_attributes.send(attr))
44
+ end
45
+ end
46
+ end
47
+
48
+ # -------------------------------------------------------------------------
49
+ # handles simple flatten operation
50
+ def method_missing(method, *args)
51
+ case method
52
+ when :flatten
53
+ xml = args.first
54
+ clazz = self.class.name.gsub!( /Ziya::Components::/, '' )
55
+ pref = underscore( clazz )
56
+ self.class.module_eval "xml.#{pref}( #{options_as_string} )"
57
+ else
58
+ super.method_missing(method, *args)
59
+ end
60
+ end
61
+
62
+ # -------------------------------------------------------------------------
63
+ # checks if a give component properties have been set.
64
+ # return true if one or more props have been set. False otherwise...
65
+ def configured?
66
+ !options.empty?
67
+ end
68
+
69
+ # -------------------------------------------------------------------------
70
+ # calls all attribute methods and gather the various props into a hash
71
+ def options
72
+ options = {}
73
+ attributes_for(self).each do |p|
74
+ option = self.send(p.to_sym)
75
+ options[p] = option if option
76
+ end
77
+ options
78
+ end
79
+
80
+ # -------------------------------------------------------------------------
81
+ # Turns options hash into string representation
82
+ def options_as_string
83
+ buff = []
84
+ opts = options
85
+ opts.keys.sort{ |a,b| a.to_s <=> b.to_s }.each do |k|
86
+ value = opts[k]
87
+ buff << sprintf( ":%s => '%s'", k, value.to_s ) if value
88
+ end
89
+ buff.join( "," )
90
+ end
91
+
92
+ # -------------------------------------------------------------------------
93
+ # fetch attributes for a give component
94
+ def attributes_for( an_instance )
95
+ attrs = self.class.attributes[an_instance.class.name]
96
+ raise "Unable to get attributes for #{an_instance}" unless attrs
97
+ attrs
98
+ end
99
+ end
100
+ end