ziya 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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