ziya 1.0.0 → 2.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 (184) hide show
  1. data/Manifest.txt +74 -28
  2. data/README.txt +91 -14
  3. data/Rakefile +1 -1
  4. data/bin/ziyafy +2 -0
  5. data/charts/AC_RunActiveContent.js +292 -0
  6. data/charts/charts.swf +0 -0
  7. data/charts/charts_library/ar3d.swf +0 -0
  8. data/charts/charts_library/arno.swf +0 -0
  9. data/charts/charts_library/ars3.swf +0 -0
  10. data/charts/charts_library/arst.swf +0 -0
  11. data/charts/charts_library/brfl.swf +0 -0
  12. data/charts/charts_library/brno.swf +0 -0
  13. data/charts/charts_library/brst.swf +0 -0
  14. data/charts/charts_library/buno.swf +0 -0
  15. data/charts/charts_library/cl3d.swf +0 -0
  16. data/charts/charts_library/clfl.swf +0 -0
  17. data/charts/charts_library/clno.swf +0 -0
  18. data/charts/charts_library/clp3.swf +0 -0
  19. data/charts/charts_library/cls3.swf +0 -0
  20. data/charts/charts_library/clst.swf +0 -0
  21. data/charts/charts_library/cnno.swf +0 -0
  22. data/charts/charts_library/lnno.swf +0 -0
  23. data/charts/charts_library/mxno.swf +0 -0
  24. data/charts/charts_library/pi3d.swf +0 -0
  25. data/charts/charts_library/pino.swf +0 -0
  26. data/charts/charts_library/pono.swf +0 -0
  27. data/charts/charts_library/scno.swf +0 -0
  28. data/charts/full_screen.swf +0 -0
  29. data/charts/sliders/black.swf +0 -0
  30. data/charts/sliders/preview_handle_1.swf +0 -0
  31. data/charts/sliders/preview_handle_2.swf +0 -0
  32. data/fred.rb +36 -0
  33. data/gauges/designs/circle.yml +18 -0
  34. data/gauges/designs/signal.yml +14 -0
  35. data/gauges/designs/thermo.yml +119 -0
  36. data/gauges/designs/title.yml +11 -0
  37. data/gauges/gauge.swf +0 -0
  38. data/lib/ziya.rb +17 -5
  39. data/lib/ziya/charts/area.rb +6 -1
  40. data/lib/ziya/charts/area_threed.rb +16 -0
  41. data/lib/ziya/charts/bar.rb +8 -3
  42. data/lib/ziya/charts/base.rb +210 -153
  43. data/lib/ziya/charts/bubble.rb +18 -0
  44. data/lib/ziya/charts/candle_stick.rb +6 -1
  45. data/lib/ziya/charts/column.rb +7 -2
  46. data/lib/ziya/charts/column_threed.rb +6 -1
  47. data/lib/ziya/charts/floating_bar.rb +6 -1
  48. data/lib/ziya/charts/floating_column.rb +7 -2
  49. data/lib/ziya/charts/line.rb +7 -2
  50. data/lib/ziya/charts/mixed.rb +5 -0
  51. data/lib/ziya/charts/parallel_threed_column.rb +6 -1
  52. data/lib/ziya/charts/pie.rb +7 -2
  53. data/lib/ziya/charts/pie_threed.rb +7 -2
  54. data/lib/ziya/charts/polar.rb +6 -1
  55. data/lib/ziya/charts/scatter.rb +6 -1
  56. data/lib/ziya/charts/stacked_area.rb +5 -0
  57. data/lib/ziya/charts/stacked_bar.rb +5 -0
  58. data/lib/ziya/charts/stacked_column.rb +7 -2
  59. data/lib/ziya/charts/stacked_threed_area.rb +16 -0
  60. data/lib/ziya/charts/stacked_threed_column.rb +6 -1
  61. data/lib/ziya/components/area.rb +5 -2
  62. data/lib/ziya/components/axis_category.rb +8 -60
  63. data/lib/ziya/components/axis_ticks.rb +25 -27
  64. data/lib/ziya/components/axis_value.rb +5 -48
  65. data/lib/ziya/components/base.rb +59 -17
  66. data/lib/ziya/components/bevel.rb +15 -0
  67. data/lib/ziya/components/blur.rb +13 -0
  68. data/lib/ziya/components/chart_border.rb +4 -23
  69. data/lib/ziya/components/chart_grid_h.rb +17 -19
  70. data/lib/ziya/components/chart_grid_v.rb +18 -19
  71. data/lib/ziya/components/chart_guide.rb +16 -0
  72. data/lib/ziya/components/chart_label.rb +16 -0
  73. data/lib/ziya/components/chart_pref.rb +12 -12
  74. data/lib/ziya/components/chart_rect.rb +27 -26
  75. data/lib/ziya/components/chart_transition.rb +15 -16
  76. data/lib/ziya/components/circle.rb +5 -2
  77. data/lib/ziya/components/draw.rb +12 -11
  78. data/lib/ziya/components/draw_base.rb +10 -0
  79. data/lib/ziya/components/filter.rb +26 -0
  80. data/lib/ziya/components/glow.rb +14 -0
  81. data/lib/ziya/components/image.rb +5 -1
  82. data/lib/ziya/components/legend.rb +18 -0
  83. data/lib/ziya/components/line.rb +6 -2
  84. data/lib/ziya/components/link.rb +9 -9
  85. data/lib/ziya/components/link_data.rb +9 -10
  86. data/lib/ziya/components/rect.rb +7 -2
  87. data/lib/ziya/components/scroll.rb +26 -0
  88. data/lib/ziya/components/shadow.rb +14 -0
  89. data/lib/ziya/components/text.rb +5 -1
  90. data/lib/ziya/components/update.rb +19 -0
  91. data/lib/ziya/gauges/base.rb +172 -0
  92. data/lib/ziya/gauges/radial.rb +18 -0
  93. data/lib/ziya/gauges/signal.rb +138 -0
  94. data/lib/ziya/gauges/support/area.rb +13 -0
  95. data/lib/ziya/gauges/support/base.rb +33 -0
  96. data/lib/ziya/gauges/support/circle.rb +14 -0
  97. data/lib/ziya/gauges/support/design.rb +5 -0
  98. data/lib/ziya/gauges/support/image.rb +12 -0
  99. data/lib/ziya/gauges/support/line.rb +12 -0
  100. data/lib/ziya/gauges/support/link.rb +24 -0
  101. data/lib/ziya/gauges/support/move.rb +15 -0
  102. data/lib/ziya/gauges/support/point.rb +12 -0
  103. data/lib/ziya/gauges/support/polygon.rb +13 -0
  104. data/lib/ziya/gauges/support/radial_base.rb +21 -0
  105. data/lib/ziya/gauges/support/radial_numbers.rb +41 -0
  106. data/lib/ziya/gauges/support/radial_ticks.rb +29 -0
  107. data/lib/ziya/gauges/support/rect.rb +14 -0
  108. data/lib/ziya/gauges/support/rotate.rb +15 -0
  109. data/lib/ziya/gauges/support/scale.rb +15 -0
  110. data/lib/ziya/gauges/support/text.rb +21 -0
  111. data/lib/ziya/gauges/support/update.rb +12 -0
  112. data/lib/ziya/gauges/thermo.rb +121 -0
  113. data/lib/ziya/helpers/base_helper.rb +39 -6
  114. data/lib/ziya/utils/text.rb +6 -0
  115. data/lib/ziya/version.rb +1 -1
  116. data/lib/ziya/ziya_helper.rb +289 -62
  117. data/spec/charts/base_spec.rb +35 -21
  118. data/spec/charts/chart_type_spec.rb +24 -3
  119. data/spec/components/area_spec.rb +9 -2
  120. data/spec/components/draw_spec.rb +1 -2
  121. data/spec/components/filter_spec.rb +27 -0
  122. data/spec/components/link_spec.rb +1 -2
  123. data/spec/components/series_color_spec.rb +1 -2
  124. data/spec/components/series_explode_spec.rb +1 -2
  125. data/spec/components/series_switch_spec.rb +1 -2
  126. data/spec/designs/circle.yml +7 -0
  127. data/spec/designs/crapping_out.yml +8 -0
  128. data/spec/designs/gauge_1.yml +43 -0
  129. data/spec/designs/gauge_2.yml +11 -0
  130. data/spec/designs/gauge_no_name.yml +43 -0
  131. data/spec/designs/gauge_raw.yml +5 -0
  132. data/spec/designs/thermo.yml +13 -0
  133. data/spec/gauges/base_spec.rb +90 -0
  134. data/spec/gauges/signal_spec.rb +36 -0
  135. data/spec/gauges/support/area_spec.rb +40 -0
  136. data/spec/gauges/support/circle_spec.rb +78 -0
  137. data/spec/gauges/support/image_spec.rb +35 -0
  138. data/spec/gauges/support/line_spec.rb +34 -0
  139. data/spec/gauges/support/link_spec.rb +35 -0
  140. data/spec/gauges/support/move_spec.rb +45 -0
  141. data/spec/gauges/support/polygon_spec.rb +36 -0
  142. data/spec/gauges/support/radial_numbers_spec.rb +35 -0
  143. data/spec/gauges/support/radial_ticks_spec.rb +30 -0
  144. data/spec/gauges/support/rotate_spec.rb +45 -0
  145. data/spec/gauges/support/scale_spec.rb +46 -0
  146. data/spec/gauges/support/text_spec.rb +40 -0
  147. data/spec/gauges/thermo_spec.rb +49 -0
  148. data/spec/helpers/base_helper_spec.rb +20 -6
  149. data/spec/spec_helper.rb +4 -1
  150. data/spec/test_helpers/gauge_2_helper.rb +17 -0
  151. data/spec/utils/logger_spec.rb +1 -3
  152. data/spec/utils/text_spec.rb +1 -2
  153. data/spec/ziya_helper_spec.rb +88 -11
  154. data/spec/ziya_spec.rb +1 -1
  155. data/tasks/gem.rake +1 -1
  156. metadata +79 -32
  157. data/charts/themes/commando/bar_chart.yml +0 -9
  158. data/charts/themes/commando/base_chart.yml +0 -65
  159. data/charts/themes/commando/column_chart.yml +0 -13
  160. data/charts/themes/commando/column_threed_chart.yml +0 -25
  161. data/charts/themes/commando/parallel_threed_column_chart.yml +0 -17
  162. data/charts/themes/commando/pie_chart.yml +0 -22
  163. data/charts/themes/commando/pie_threed_chart.yml +0 -28
  164. data/charts/themes/commando/polar_chart.yml +0 -11
  165. data/charts/themes/commando/stacked_bar_chart.yml +0 -9
  166. data/charts/themes/commando/stacked_column_chart.yml +0 -14
  167. data/charts/themes/commando/stacked_threed_column_chart.yml +0 -17
  168. data/charts/themes/default/bar_chart.yml +0 -3
  169. data/charts/themes/default/base_chart.yml +0 -67
  170. data/charts/themes/default/column_chart.yml +0 -13
  171. data/charts/themes/default/column_threed_chart.yml +0 -25
  172. data/charts/themes/default/parallel_threed_column_chart.yml +0 -17
  173. data/charts/themes/default/pie_chart.yml +0 -29
  174. data/charts/themes/default/pie_threed_chart.yml +0 -28
  175. data/charts/themes/default/polar_chart.yml +0 -12
  176. data/charts/themes/default/stacked_bar_chart.yml +0 -3
  177. data/charts/themes/default/stacked_column_chart.yml +0 -14
  178. data/charts/themes/default/stacked_threed_column_chart.yml +0 -17
  179. data/charts/themes/default/test.yml +0 -4
  180. data/lib/ziya/components/chart_value.rb +0 -71
  181. data/lib/ziya/components/legend_label.rb +0 -18
  182. data/lib/ziya/components/legend_rect.rb +0 -19
  183. data/lib/ziya/components/legend_transition.rb +0 -18
  184. data/lib/ziya/components/live_update.rb +0 -21
@@ -1,25 +1,24 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Sets up a transition when the chart first renders
3
3
  #
4
- # Sets the transition attributes for the chart elements.
5
- #
6
- # <tt>type</tt>: The type of the transition. Valid values are dissolve, drop, spin, scale, zoom,
7
- # blink, slide_right, slide_left, slide_up, slide_down, and none.
8
- # The default is none, which draws the chart immediately without a transition.
9
- # <tt>delay</tt>: The delay in seconds before starting the transition.
10
- # The default is zero.
11
- # <tt>duration</tt>: The transition's duration in seconds.
12
- # The default is 1.
13
- # <tt>order</tt>: The order in which to transition the chart's parts. Valid values are series,
14
- # category, and all.
15
- # The default is all.
16
- #
17
- # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=chart_trasition
18
- # for additional documentation, examples and futher detail.
19
4
  # Author:: Fernand Galiana
20
- # Date:: Dec 15th, 2006
21
5
  # -----------------------------------------------------------------------------
22
6
  module Ziya::Components
7
+ # Sets the transition attributes for the chart elements.
8
+ #
9
+ # <tt>type</tt>: The type of the transition. Valid values are dissolve, drop, spin, scale, zoom,
10
+ # blink, slide_right, slide_left, slide_up, slide_down, and none.
11
+ # The default is none, which draws the chart immediately without a transition.
12
+ # <tt>delay</tt>: The delay in seconds before starting the transition.
13
+ # The default is zero.
14
+ # <tt>duration</tt>: The transition's duration in seconds.
15
+ # The default is 1.
16
+ # <tt>order</tt>: The order in which to transition the chart's parts. Valid values are series,
17
+ # category, and all.
18
+ # The default is all.
19
+ #
20
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=chart_transition
21
+ # for additional documentation, examples and futher detail.
23
22
  class ChartTransition < Base
24
23
  has_attribute :type, :delay, :duration, :order
25
24
  end
@@ -2,12 +2,15 @@
2
2
  # Draws a circle
3
3
  #
4
4
  # Author:: Fernand Galiana
5
- # Date:: Dec 15th, 2006
6
5
  # -----------------------------------------------------------------------------
7
6
  module Ziya::Components
7
+ # Circle component to draw a circle on the chart. Must be set up within the draw
8
+ # component.
9
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
10
+ # for additional documentation, examples and futher detail.
8
11
  class Circle < Base
9
12
  has_attribute :layer, :transition, :delay, :duration, :x, :y, :radius,
10
13
  :fill_color, :fill_alpha, :line_color, :line_alpha,
11
- :line_thickness
14
+ :line_thickness, :shadow, :bevel, :glow, :blur
12
15
  end
13
16
  end
@@ -1,21 +1,22 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Sets up a drawing area on the chart to draw text, rect, circles...
3
3
  #
4
- # Holds any number of elements to draw. A draw element can be a circle, image (JPEG or SWF),
5
- # line, rectangle, or text. Use draw "image" to include SWF flash file with animation,
6
- # roll-over buttons, sounds, scripts, etc.
7
- #
8
- # <tt></tt>:
9
- #
10
- # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
11
- # for additional documentation, examples and futher detail.
12
- #
13
4
  # Author:: Fernand Galiana
14
- # Date:: Dec 15th, 2006
15
5
  # -----------------------------------------------------------------------------
16
6
  require 'ziya/ziya_helper'
17
7
 
18
8
  module Ziya::Components
9
+ # Sets up a drawing area on the chart to draw text, rect, circles...
10
+ #
11
+ # Holds any number of elements to draw. A draw element can be a circle, image (JPEG or SWF),
12
+ # line, rectangle, or text. Use draw "image" to include SWF flash file with animation,
13
+ # roll-over buttons, sounds, scripts, etc.
14
+ #
15
+ # <tt></tt>:
16
+ #
17
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
18
+ # for additional documentation, examples and futher detail.
19
+ #
19
20
  class Draw < Base
20
21
  include Ziya::Helper
21
22
 
@@ -38,7 +39,7 @@ module Ziya::Components
38
39
  def gen_composites( xml, composite_urls )
39
40
  chart_path = "/charts"
40
41
  for url in composite_urls do
41
- xml.image( :url => xml_swf % [ chart_path, chart_path, url] )
42
+ xml.image( :url => composite_url % [ chart_path, chart_path, url] )
42
43
  end
43
44
  end
44
45
  end
@@ -0,0 +1,10 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Draw base class for all draw components
3
+ #
4
+ # Author:: Fernand Galiana
5
+ # -----------------------------------------------------------------------------
6
+ module Ziya::Components
7
+ class DrawBase < Base # :nodoc:
8
+ has_attribute :shadow, :bevel, :glow, :blur
9
+ end
10
+ end
@@ -0,0 +1,26 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Sets various filters for enhancing charts look and feel
3
+ #
4
+ # Holds any number of filters. such as bevel, shadow etc. You must specify
5
+ # and id so that other drawable component can use the filters
6
+ #
7
+ # Author:: Fernand
8
+ # -----------------------------------------------------------------------------
9
+ module Ziya::Components
10
+ # Specifies the various filters that can be reused across components ie blur, bevel, glow, etc...
11
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=filter
12
+ # for additional documentation, examples and futher detail.
13
+ class Filter < Base
14
+ has_attribute :filters
15
+
16
+ # -------------------------------------------------------------------------
17
+ # Dump has_attribute into xml element
18
+ def flatten( xml )
19
+ if filters
20
+ xml.filter do
21
+ filters.each { |comp| comp.flatten( xml ) }
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Create a glow filter
3
+ #
4
+ # Author:: Fernand Galiana
5
+ # -----------------------------------------------------------------------------
6
+ module Ziya::Components
7
+ # Specifies the glow filter to be applied to some component ie chart_rect, axis_value, etc...
8
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=filter
9
+ # for additional documentation, examples and futher detail.
10
+ class Glow < Base
11
+ has_attribute :id, :color, :alpha, :blurX, :blurY, :strength, :quality,
12
+ :inner, :knockout
13
+ end
14
+ end
@@ -6,8 +6,12 @@
6
6
  # Date:: Dec 15th, 2006
7
7
  # -----------------------------------------------------------------------------
8
8
  module Ziya::Components
9
+ # Renders the specified image (jpg/gif) on the chart. Must be set up within the draw
10
+ # component.
11
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
12
+ # for additional documentation, examples and futher detail.
9
13
  class Image < Base
10
14
  has_attribute :layer, :transition, :delay, :duration, :url, :x, :y, :width,
11
- :height, :rotation, :alpha
15
+ :height, :rotation, :alpha, :bevel, :glow, :blur, :timeout, :retry
12
16
  end
13
17
  end
@@ -0,0 +1,18 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Sets up chart legend location
3
+ #
4
+ # Author:: Fernand Galiana
5
+ # -----------------------------------------------------------------------------
6
+ module Ziya::Components
7
+ # Renders a legend on the chart
8
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=legend
9
+ # for additional documentation, examples and futher detail.
10
+
11
+ class Legend < Base
12
+ has_attribute :transition, :delay, :duration,
13
+ :x, :y, :width, :height,
14
+ :toggle, :layout, :margin, :bullet, :font, :bold, :size, :color, :alpha,
15
+ :fill_color, :fill_alpha, :line_color, :line_alpha, :line_thickness,
16
+ :shadow, :bevel, :glow, :blur
17
+ end
18
+ end
@@ -2,11 +2,15 @@
2
2
  # Draw a line on a chart
3
3
  #
4
4
  # Author:: Fernand Galiana
5
- # Date:: Dec 15th, 2006
6
5
  # -----------------------------------------------------------------------------
7
6
  module Ziya::Components
7
+ # Line component to draw a line on the chart. Must be set up within the draw
8
+ # component.
9
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
10
+ # for additional documentation, examples and futher detail.
8
11
  class Line < Base
9
12
  has_attribute :layer, :transition, :delay, :duration, :x1, :y1, :x2, :y2,
10
- :line_color,:line_alpha, :line_thickness
13
+ :line_color,:line_alpha, :line_thickness,
14
+ :bevel, :glow, :blur, :shadow
11
15
  end
12
16
  end
@@ -1,18 +1,18 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Sets up clickable areas on the chart.
3
3
  #
4
- # Holds any number of areas, each defining a rectangle and a URL to go to when the user
5
- # clicks inside the rectangle. This can also be used to make refresh or print buttons.
6
- #
7
- # <tt></tt>:
8
- #
9
- # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=link
10
- # for additional documentation, examples and futher detail.
11
- #
12
4
  # Author:: Fernand Galiana
13
- # Date:: Dec 15th, 2006
14
5
  # -----------------------------------------------------------------------------
15
6
  module Ziya::Components
7
+ # Sets up clickable areas on the chart.
8
+ #
9
+ # Holds any number of areas, each defining a rectangle and a URL to go to when the user
10
+ # clicks inside the rectangle. This can also be used to make refresh or print buttons.
11
+ #
12
+ # <tt></tt>:
13
+ #
14
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=link
15
+ # for additional documentation, examples and futher detail.
16
16
  class Link < Base
17
17
  has_attribute :areas
18
18
 
@@ -1,19 +1,18 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Sets up a handler for clickable chart elements
3
3
  #
4
- # Sets the URL of a script responsible for processing clicks on chart elements.
5
- # This enables drilling down into charts.
6
- #
7
- # <tt></tt>:
8
- #
9
- # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=link_data
10
- # for additional documentation, examples and futher detail.
11
- #
12
4
  # Author:: Fernand Galiana
13
- # Date:: Dec 15th, 2006
14
5
  # -----------------------------------------------------------------------------
15
6
  module Ziya::Components
7
+ # Sets the URL of a script responsible for processing clicks on chart elements.
8
+ # This enables drilling down into charts.
9
+ #
10
+ # <tt></tt>:
11
+ #
12
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=link_data
13
+ # for additional documentation, examples and futher detail.
14
+ #
16
15
  class LinkData < Base
17
- has_attribute :url, :target
16
+ has_attribute :url, :target, :timeout, :retry, :spinning_wheel
18
17
  end
19
18
  end
@@ -2,12 +2,17 @@
2
2
  # Draw a rectangle on a chart
3
3
  #
4
4
  # Author:: Fernand Galiana
5
- # Date:: Dec 15th, 2006
6
5
  # -----------------------------------------------------------------------------
7
6
  module Ziya::Components
7
+ # Rect component to draw a rectangle on the chart. Must be set up within the draw
8
+ # component.
9
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
10
+ # for additional documentation, examples and futher detail.
8
11
  class Rect < Base
9
12
  has_attribute :layer, :transition, :delay, :duration, :x, :y, :width,
10
13
  :height, :fill_color, :fill_alpha, :line_color, :line_alpha,
11
- :line_thickness
14
+ :line_thickness,
15
+ :corner_tl, :corner_tr, :corner_bl, :corner_br,
16
+ :shadow, :bevel, :blur, :bevel
12
17
  end
13
18
  end
@@ -0,0 +1,26 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Embeds a scroller in a given chart
3
+ #
4
+ # Author:: Fernand Galiana
5
+ # Date:: Dec 15th, 2006
6
+ # -----------------------------------------------------------------------------
7
+ require 'ziya/components/base'
8
+
9
+ module Ziya::Components
10
+ # Specifies the ability to scroll a chart by setting single or double sliders
11
+ # on the chart.
12
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=scroll
13
+ # for additional documentation, examples and futher detail.
14
+ #
15
+ class Scroll < Base
16
+ has_attribute :x, :y, :width, :height, :alpha,
17
+ :transition, :delay, :duration,
18
+ :url_button_1_idle, :url_button_1_over, :url_button_1_press,
19
+ :url_button_2_idle, :url_button_2_over, :url_button_2_press,
20
+ :url_slider_body, :url_slider_handle_1, :url_slider_handle_2,
21
+ :button_length, :slider_handle_length, :gap, :button_speed,
22
+ :buttons_together, :start, :span, :drag, :reverse_handle,
23
+ :scroll_detail, :stop_detail,
24
+ :timeout, :retry
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Create a shadow filter
3
+ #
4
+ # Author:: Fernand Galiana
5
+ # -----------------------------------------------------------------------------
6
+ module Ziya::Components
7
+ # Specifies the shadow filter to be applied to some component ie chart_rect, axis_value, etc...
8
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=filter
9
+ # for additional documentation, examples and futher detail.
10
+ class Shadow < Base
11
+ has_attribute :id, :distance, :angle, :color, :alpha,
12
+ :blurX, :blurY, :strength, :quality, :inner, :knockout, :hideObject
13
+ end
14
+ end
@@ -5,9 +5,13 @@
5
5
  # Date:: Dec 15th, 2006
6
6
  # -----------------------------------------------------------------------------
7
7
  module Ziya::Components
8
+ # Text component to draw text on the chart. Must be set up within the draw
9
+ # component.
10
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
11
+ # for additional documentation, examples and futher detail.
8
12
  class Text < Base
9
13
  has_attribute :layer, :transition, :delay, :duration, :x, :y, :width,
10
14
  :height, :h_align, :v_align, :rotation, :font, :bold, :size,
11
- :color, :alpha, :text
15
+ :color, :alpha, :shadow, :bevel, :glow, :blur, :text
12
16
  end
13
17
  end
@@ -0,0 +1,19 @@
1
+ # -----------------------------------------------------------------------------
2
+ # Sets up handler for refresh the chart content. The refresh xml can only refresh
3
+ # parts of the chart that have changed.
4
+ #
5
+ # Author:: Fernand Galiana
6
+ # -----------------------------------------------------------------------------
7
+ module Ziya::Components
8
+ # Updates the chart at intervals, without reloading the web page. This makes it possible
9
+ # to display charts with live data, change the chart's look over time for emphasis, or
10
+ # create a slideshow from different charts.
11
+ #
12
+ # <tt></tt>:
13
+ #
14
+ # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=live_update
15
+ # for additional documentation, examples and futher detail.
16
+ class Update < Base
17
+ has_attribute :url, :delay, :timeout, :retry, :mode, :span
18
+ end
19
+ end
@@ -0,0 +1,172 @@
1
+ module Ziya::Gauges
2
+ class Base
3
+ include Ziya::Helpers::BaseHelper
4
+
5
+ attr_accessor :license, :design_id
6
+ attr_reader :type, :components
7
+ attr_reader :options
8
+
9
+ def initialize( license, design_id )
10
+ @license = license
11
+ @design_id = design_id
12
+
13
+ # load up associated helper
14
+ loaded = load_helper( Ziya.helpers_dir ) if Ziya.helpers_dir
15
+ Ziya.logger.warn( ">>> ZiYa -- no helper for gauge `#{design_id}" ) unless loaded
16
+
17
+ # init defaults
18
+ @options = default_options
19
+ end
20
+
21
+ # -------------------------------------------------------------------------
22
+ # provides for overiding basic functionality
23
+ #
24
+ # <tt>gauge_color</tt>:: Legend color
25
+ # <tt>legend_color</tt>:: Gauge color
26
+ def set_preferences( opts={} )
27
+ options.merge!( opts )
28
+ end
29
+
30
+ # -------------------------------------------------------------------------
31
+ # render gauge to xml
32
+ def to_xml
33
+ render_xml
34
+ end
35
+
36
+ # =========================================================================
37
+ protected
38
+
39
+ # inject update behavior
40
+ def render_extra_components
41
+ if options[:url]
42
+ Ziya::Gauges::Support::Update.new(
43
+ :url => options[:url],
44
+ :retry => options[:retry] || 0,
45
+ :timeout => options[:timeout] || 30,
46
+ :delay_type => options[:delay_type] || 1,
47
+ :delay => options[:delay] || 30 ).flatten( @xml )
48
+ end
49
+ end
50
+
51
+ # -------------------------------------------------------------------------
52
+ # setup thermometer default options
53
+ def default_options
54
+ {
55
+ :x => 20,
56
+ :y => 20,
57
+ :gauge_color => "ff0000",
58
+ :legend_color => "cc0000",
59
+ }
60
+ end
61
+
62
+ # =========================================================================
63
+ private
64
+
65
+ # retrieve bundled design directory
66
+ def bundled_designs_dir
67
+ Ziya.path( %w[gauges designs] )
68
+ end
69
+
70
+ # -----------------------------------------------------------------------
71
+ # Load up ERB style helpers
72
+ def load_helper( helper_dir )
73
+ Dir.foreach(helper_dir) do |helper_file|
74
+ unless helper_file =~ /^(#{design_id}_helper).rb$/ or helper_file =~ /^(base_helper).rb$/
75
+ next
76
+ end
77
+ Ziya.logger.info( ">>> ZiYa loading custom helper `#{$1}" )
78
+ # BOZO !! This will only work in rails ??
79
+ if defined? RAILS_ROOT
80
+ require_dependency File.join(helper_dir, $1)
81
+ else
82
+ require File.join(helper_dir, $1)
83
+ end
84
+ helper_module_name = "Ziya::" + $1.gsub(/(^|_)(.)/) { $2.upcase }
85
+ # helper_module_name = $1.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
86
+ Ziya.logger.debug( "Include module #{helper_module_name}")
87
+ Ziya::Gauges::Base.class_eval("include #{helper_module_name}")
88
+ true
89
+ end
90
+ false
91
+ end
92
+
93
+ # -----------------------------------------------------------------------
94
+ # merge components with user overrides
95
+ def merge_comps( original, override )
96
+ override.each do |k,v|
97
+ if original.has_key? k
98
+ original[k] = v
99
+ else
100
+ original << [k,v]
101
+ end
102
+ end
103
+ end
104
+
105
+ # -----------------------------------------------------------------------
106
+ # renders design components
107
+ def render_components
108
+ # First check bundled design dir for std design
109
+ std_design = inflate( self, bundled_designs_dir, design_id )
110
+ # Now check for user overrides
111
+ usr_design = inflate( self, Ziya.designs_dir, design_id )
112
+
113
+ design = usr_design
114
+ if std_design and usr_design
115
+ design = std_design
116
+ merge_comps( design.components, usr_design.components )
117
+ # design.components.merge!( usr_design.components )
118
+ elsif std_design
119
+ design = std_design
120
+ end
121
+ # Ziya.logger.debug "!!!! Design\n#{design.to_yaml}"
122
+ # flatten components to xml
123
+ design.components.each do |name, value|
124
+ # Ziya.logger.debug "Processing #{name}"
125
+ value.flatten( @xml )
126
+ end
127
+ end
128
+
129
+ # -----------------------------------------------------------------------
130
+ # renders chart to xml
131
+ def render_xml
132
+ @xml = Builder::XmlMarkup.new
133
+ @xml.gauge do
134
+ @xml.license( @license ) unless @license.nil?
135
+ render_extra_components
136
+ render_components
137
+ end
138
+ @xml.to_s.gsub( /<to_s\/>/, '' )
139
+ end
140
+
141
+ # -----------------------------------------------------------------------
142
+ # Parse erb template if any
143
+ def erb_render( yml )
144
+ # b = binding
145
+ ERB.new( yml ).result binding
146
+ end
147
+
148
+ # -----------------------------------------------------------------------
149
+ # Load yaml file associated with class if any
150
+ def inflate( clazz, designs_dir, design )
151
+ class_name = underscore( demodulize( clazz.to_s ) )
152
+ begin
153
+ file_name = "#{designs_dir}/#{design}.yml"
154
+ Ziya.logger.debug ">>> ZiYa attempt to load design file '#{file_name}"
155
+ return nil unless File.exists?( file_name )
156
+ yml = IO.read( file_name )
157
+ # Ziya.logger.debug ">>> Unprocessed yaml...\n#{yml}\n"
158
+ processed = erb_render( yml )
159
+ # Ziya.logger.debug ">>> Processed yaml...\n#{processed}"
160
+ load = YAML::load( processed )
161
+ Ziya.logger.info ">>> ZiYa successfully loaded design file `#{file_name}"
162
+ return load
163
+ rescue SystemCallError => boom
164
+ Ziya.logger.error boom
165
+ rescue => bang
166
+ Ziya.logger.error ">>> ZiYa -- Error encountered loading design file `#{file_name} -- #{bang}"
167
+ bang.backtrace.each { |l| Ziya.logger.error( l ) }
168
+ end
169
+ nil
170
+ end
171
+ end
172
+ end