derailed-ziya 2.0.8 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. data/Manifest.txt +240 -432
  2. data/README.txt +104 -97
  3. data/Rakefile +3 -2
  4. data/bin/ziyafy +33 -10
  5. data/examples/charts/basic_chart.rb +47 -0
  6. data/{charts → examples/charts/public/charts}/AC_RunActiveContent.js +0 -0
  7. data/{charts → examples/charts/public/charts}/charts.swf +0 -0
  8. data/{charts → examples/charts/public/charts}/charts_library/ar3d.swf +0 -0
  9. data/{charts → examples/charts/public/charts}/charts_library/arno.swf +0 -0
  10. data/{charts → examples/charts/public/charts}/charts_library/ars3.swf +0 -0
  11. data/{charts → examples/charts/public/charts}/charts_library/arst.swf +0 -0
  12. data/{charts → examples/charts/public/charts}/charts_library/brfl.swf +0 -0
  13. data/{charts → examples/charts/public/charts}/charts_library/brno.swf +0 -0
  14. data/{charts → examples/charts/public/charts}/charts_library/brst.swf +0 -0
  15. data/{charts → examples/charts/public/charts}/charts_library/buno.swf +0 -0
  16. data/{charts → examples/charts/public/charts}/charts_library/cl3d.swf +0 -0
  17. data/{charts → examples/charts/public/charts}/charts_library/clfl.swf +0 -0
  18. data/{charts → examples/charts/public/charts}/charts_library/clim.swf +0 -0
  19. data/{charts → examples/charts/public/charts}/charts_library/clno.swf +0 -0
  20. data/{charts → examples/charts/public/charts}/charts_library/clp3.swf +0 -0
  21. data/{charts → examples/charts/public/charts}/charts_library/cls3.swf +0 -0
  22. data/{charts → examples/charts/public/charts}/charts_library/clst.swf +0 -0
  23. data/{charts → examples/charts/public/charts}/charts_library/cnno.swf +0 -0
  24. data/{charts → examples/charts/public/charts}/charts_library/dono.swf +0 -0
  25. data/{charts → examples/charts/public/charts}/charts_library/lnno.swf +0 -0
  26. data/{charts → examples/charts/public/charts}/charts_library/mxno.swf +0 -0
  27. data/{charts → examples/charts/public/charts}/charts_library/pi3d.swf +0 -0
  28. data/{charts → examples/charts/public/charts}/charts_library/piim.swf +0 -0
  29. data/{charts → examples/charts/public/charts}/charts_library/pino.swf +0 -0
  30. data/{charts → examples/charts/public/charts}/charts_library/pono.swf +0 -0
  31. data/{charts → examples/charts/public/charts}/charts_library/scno.swf +0 -0
  32. data/{charts → examples/charts/public/charts}/full_screen.swf +0 -0
  33. data/{charts → examples/charts/public/charts}/scripts/output_jpg.php +0 -0
  34. data/{charts → examples/charts/public/charts}/sliders/black.swf +0 -0
  35. data/{charts → examples/charts/public/charts}/sliders/preview_handle_1.swf +0 -0
  36. data/{charts → examples/charts/public/charts}/sliders/preview_handle_2.swf +0 -0
  37. data/examples/charts/public/charts/themes/cool_theme/column_chart.yml +150 -0
  38. data/{charts → examples/charts/public/charts}/themes/readme.txt +0 -0
  39. data/examples/charts/views/index.erb +12 -0
  40. data/examples/maps/basic_map.rb +72 -0
  41. data/examples/maps/helpers/map_helper.rb +15 -0
  42. data/examples/maps/models/confidential_herpes_report.rb +78 -0
  43. data/examples/maps/public/javascripts/jquery-1.3.2.js +4376 -0
  44. data/examples/maps/public/map.xml +336 -0
  45. data/examples/maps/public/maps/js/Exception.js +45 -0
  46. data/examples/maps/public/maps/js/FlashProxy.js +72 -0
  47. data/examples/maps/public/maps/js/FlashSerializer.js +165 -0
  48. data/examples/maps/public/maps/js/FlashTag.js +111 -0
  49. data/examples/maps/public/maps/js/JavaScriptFlashGateway.js +455 -0
  50. data/examples/maps/public/maps/js/JavaScriptFlashGateway.swf +0 -0
  51. data/examples/maps/public/maps/map_library/australia.swf +0 -0
  52. data/examples/maps/public/maps/map_library/belgium.swf +0 -0
  53. data/examples/maps/public/maps/map_library/brazil.swf +0 -0
  54. data/examples/maps/public/maps/map_library/canada.swf +0 -0
  55. data/examples/maps/public/maps/map_library/europe.swf +0 -0
  56. data/examples/maps/public/maps/map_library/france.swf +0 -0
  57. data/examples/maps/public/maps/map_library/germany.swf +0 -0
  58. data/examples/maps/public/maps/map_library/italy.swf +0 -0
  59. data/examples/maps/public/maps/map_library/mexico.swf +0 -0
  60. data/examples/maps/public/maps/map_library/sweden.swf +0 -0
  61. data/examples/maps/public/maps/map_library/uk_ireland.swf +0 -0
  62. data/examples/maps/public/maps/map_library/us.swf +0 -0
  63. data/examples/maps/public/maps/map_library/us_canada.swf +0 -0
  64. data/examples/maps/public/maps/map_library/world.swf +0 -0
  65. data/examples/maps/public/maps/themes/default/base_map.yml +27 -0
  66. data/examples/maps/public/maps/themes/default/us_map.yml +20 -0
  67. data/examples/maps/public/maps/themes/default/us_map_2.yml +17 -0
  68. data/examples/maps/public/maps/themes/readme.txt +13 -0
  69. data/examples/maps/public/stylesheets/map.css +16 -0
  70. data/examples/maps/views/index.erb +26 -0
  71. data/examples/maps/views/layout.erb +21 -0
  72. data/lib/ziya/charts/base.rb +15 -14
  73. data/lib/ziya/{components → charts/support}/area.rb +2 -2
  74. data/lib/ziya/{components → charts/support}/axis_category.rb +1 -1
  75. data/lib/ziya/{components → charts/support}/axis_ticks.rb +1 -1
  76. data/lib/ziya/{components → charts/support}/axis_value.rb +1 -1
  77. data/lib/ziya/{components → charts/support}/base.rb +9 -21
  78. data/lib/ziya/{components → charts/support}/bevel.rb +1 -1
  79. data/lib/ziya/{components → charts/support}/blur.rb +1 -1
  80. data/lib/ziya/{components → charts/support}/button.rb +1 -1
  81. data/lib/ziya/{components → charts/support}/chart_border.rb +1 -1
  82. data/lib/ziya/{components → charts/support}/chart_grid_h.rb +1 -1
  83. data/lib/ziya/{components → charts/support}/chart_grid_v.rb +1 -1
  84. data/lib/ziya/{components → charts/support}/chart_guide.rb +1 -1
  85. data/lib/ziya/{components → charts/support}/chart_label.rb +1 -1
  86. data/lib/ziya/{components → charts/support}/chart_note.rb +1 -1
  87. data/lib/ziya/{components → charts/support}/chart_pref.rb +1 -1
  88. data/lib/ziya/{components → charts/support}/chart_rect.rb +1 -1
  89. data/lib/ziya/{components → charts/support}/chart_transition.rb +1 -1
  90. data/lib/ziya/{components → charts/support}/circle.rb +1 -1
  91. data/lib/ziya/{components → charts/support}/context_menu.rb +1 -3
  92. data/lib/ziya/{components → charts/support}/draw.rb +31 -8
  93. data/lib/ziya/{components → charts/support}/draw_base.rb +1 -1
  94. data/lib/ziya/{components → charts/support}/filter.rb +1 -1
  95. data/lib/ziya/{components → charts/support}/flash_to_javascript.rb +1 -3
  96. data/lib/ziya/{components → charts/support}/glow.rb +1 -1
  97. data/lib/ziya/{components → charts/support}/image.rb +1 -1
  98. data/lib/ziya/{components → charts/support}/legend.rb +1 -1
  99. data/lib/ziya/{components → charts/support}/line.rb +1 -1
  100. data/lib/ziya/{components → charts/support}/link.rb +1 -1
  101. data/lib/ziya/{components → charts/support}/link_data.rb +1 -1
  102. data/lib/ziya/{components → charts/support}/rect.rb +1 -1
  103. data/lib/ziya/{components → charts/support}/scroll.rb +1 -3
  104. data/lib/ziya/{components → charts/support}/series.rb +1 -3
  105. data/lib/ziya/{components → charts/support}/series_color.rb +1 -1
  106. data/lib/ziya/{components → charts/support}/series_explode.rb +1 -1
  107. data/lib/ziya/{components → charts/support}/shadow.rb +1 -1
  108. data/lib/ziya/{components → charts/support}/text.rb +9 -1
  109. data/lib/ziya/{components → charts/support}/tooltip.rb +1 -1
  110. data/lib/ziya/{components → charts/support}/update.rb +1 -1
  111. data/lib/ziya/core_ext/string.rb +31 -0
  112. data/lib/ziya/gauges/base.rb +17 -12
  113. data/lib/ziya/gauges/support/base.rb +4 -12
  114. data/lib/ziya/gauges/support/radial_numbers.rb +1 -1
  115. data/lib/ziya/html_helpers/base.rb +91 -0
  116. data/lib/ziya/html_helpers/charts.rb +200 -0
  117. data/lib/ziya/html_helpers/gauges.rb +90 -0
  118. data/lib/ziya/html_helpers/maps.rb +74 -0
  119. data/lib/ziya/html_helpers.rb +1 -0
  120. data/lib/ziya/maps/australia.rb +9 -0
  121. data/lib/ziya/maps/base.rb +409 -0
  122. data/lib/ziya/maps/belgium.rb +7 -0
  123. data/lib/ziya/maps/brazil.rb +7 -0
  124. data/lib/ziya/maps/canada.rb +7 -0
  125. data/lib/ziya/maps/europe.rb +7 -0
  126. data/lib/ziya/maps/france.rb +7 -0
  127. data/lib/ziya/maps/geocode.rb +18 -0
  128. data/lib/ziya/maps/germany.rb +7 -0
  129. data/lib/ziya/maps/italy.rb +7 -0
  130. data/lib/ziya/maps/mexico.rb +7 -0
  131. data/lib/ziya/maps/support/arc.rb +7 -0
  132. data/lib/ziya/maps/support/arc_color.rb +7 -0
  133. data/lib/ziya/maps/support/arc_range.rb +7 -0
  134. data/lib/ziya/maps/support/background_color.rb +7 -0
  135. data/lib/ziya/maps/support/base.rb +34 -0
  136. data/lib/ziya/maps/support/default_color.rb +7 -0
  137. data/lib/ziya/maps/support/default_point.rb +7 -0
  138. data/lib/ziya/maps/support/first_zoom.rb +7 -0
  139. data/lib/ziya/maps/support/heat_range.rb +35 -0
  140. data/lib/ziya/maps/support/hover.rb +7 -0
  141. data/lib/ziya/maps/support/line.rb +7 -0
  142. data/lib/ziya/maps/support/line_color.rb +7 -0
  143. data/lib/ziya/maps/support/line_range.rb +7 -0
  144. data/lib/ziya/maps/support/outline_color.rb +7 -0
  145. data/lib/ziya/maps/support/point.rb +8 -0
  146. data/lib/ziya/maps/support/point_range.rb +7 -0
  147. data/lib/ziya/maps/support/range.rb +31 -0
  148. data/lib/ziya/maps/support/ranges.rb +18 -0
  149. data/lib/ziya/maps/support/region.rb +7 -0
  150. data/lib/ziya/maps/support/scale_points.rb +7 -0
  151. data/lib/ziya/maps/support/show_name.rb +7 -0
  152. data/lib/ziya/maps/support/state.rb +7 -0
  153. data/lib/ziya/maps/support/state_info_icon.rb +7 -0
  154. data/lib/ziya/maps/support/zoom_mode.rb +7 -0
  155. data/lib/ziya/maps/support/zoom_out_button.rb +7 -0
  156. data/lib/ziya/maps/support/zoom_out_scale.rb +7 -0
  157. data/lib/ziya/maps/sweden.rb +7 -0
  158. data/lib/ziya/maps/uk.rb +7 -0
  159. data/lib/ziya/maps/us.rb +7 -0
  160. data/lib/ziya/maps/world.rb +7 -0
  161. data/lib/ziya/version.rb +3 -3
  162. data/lib/ziya/yaml_helpers/base.rb +20 -0
  163. data/lib/ziya/yaml_helpers/charts.rb +49 -0
  164. data/lib/ziya/yaml_helpers/gauges.rb +33 -0
  165. data/lib/ziya/yaml_helpers/maps.rb +17 -0
  166. data/lib/ziya/yaml_helpers.rb +1 -0
  167. data/lib/ziya.rb +20 -11
  168. data/resources/charts/AC_RunActiveContent.js +292 -0
  169. data/resources/charts/charts.swf +0 -0
  170. data/resources/charts/charts_library/ar3d.swf +0 -0
  171. data/resources/charts/charts_library/arno.swf +0 -0
  172. data/resources/charts/charts_library/ars3.swf +0 -0
  173. data/resources/charts/charts_library/arst.swf +0 -0
  174. data/resources/charts/charts_library/brfl.swf +0 -0
  175. data/resources/charts/charts_library/brno.swf +0 -0
  176. data/resources/charts/charts_library/brst.swf +0 -0
  177. data/resources/charts/charts_library/buno.swf +0 -0
  178. data/resources/charts/charts_library/cl3d.swf +0 -0
  179. data/resources/charts/charts_library/clfl.swf +0 -0
  180. data/resources/charts/charts_library/clim.swf +0 -0
  181. data/resources/charts/charts_library/clno.swf +0 -0
  182. data/resources/charts/charts_library/clp3.swf +0 -0
  183. data/resources/charts/charts_library/cls3.swf +0 -0
  184. data/resources/charts/charts_library/clst.swf +0 -0
  185. data/resources/charts/charts_library/cnno.swf +0 -0
  186. data/resources/charts/charts_library/dono.swf +0 -0
  187. data/resources/charts/charts_library/lnno.swf +0 -0
  188. data/resources/charts/charts_library/mxno.swf +0 -0
  189. data/resources/charts/charts_library/pi3d.swf +0 -0
  190. data/resources/charts/charts_library/piim.swf +0 -0
  191. data/resources/charts/charts_library/pino.swf +0 -0
  192. data/resources/charts/charts_library/pono.swf +0 -0
  193. data/resources/charts/charts_library/scno.swf +0 -0
  194. data/resources/charts/full_screen.swf +0 -0
  195. data/resources/charts/scripts/output_jpg.php +23 -0
  196. data/resources/charts/sliders/black.swf +0 -0
  197. data/resources/charts/sliders/preview_handle_1.swf +0 -0
  198. data/resources/charts/sliders/preview_handle_2.swf +0 -0
  199. data/resources/charts/themes/readme.txt +13 -0
  200. data/{gauges → resources/gauges}/designs/circle.yml +0 -0
  201. data/{gauges → resources/gauges}/designs/signal.yml +0 -0
  202. data/{gauges → resources/gauges}/designs/thermo.yml +0 -0
  203. data/{gauges → resources/gauges}/designs/title.yml +0 -0
  204. data/{gauges → resources/gauges}/gauge.swf +0 -0
  205. data/resources/maps/js/Exception.js +45 -0
  206. data/resources/maps/js/FlashProxy.js +72 -0
  207. data/resources/maps/js/FlashSerializer.js +165 -0
  208. data/resources/maps/js/FlashTag.js +111 -0
  209. data/resources/maps/js/JavaScriptFlashGateway.js +455 -0
  210. data/resources/maps/js/JavaScriptFlashGateway.swf +0 -0
  211. data/resources/maps/map_library/australia.swf +0 -0
  212. data/resources/maps/map_library/belgium.swf +0 -0
  213. data/resources/maps/map_library/brazil.swf +0 -0
  214. data/resources/maps/map_library/canada.swf +0 -0
  215. data/resources/maps/map_library/europe.swf +0 -0
  216. data/resources/maps/map_library/france.swf +0 -0
  217. data/resources/maps/map_library/germany.swf +0 -0
  218. data/resources/maps/map_library/italy.swf +0 -0
  219. data/resources/maps/map_library/mexico.swf +0 -0
  220. data/resources/maps/map_library/sweden.swf +0 -0
  221. data/resources/maps/map_library/uk_ireland.swf +0 -0
  222. data/resources/maps/map_library/us.swf +0 -0
  223. data/resources/maps/map_library/us_canada.swf +0 -0
  224. data/resources/maps/map_library/world.swf +0 -0
  225. data/resources/maps/themes/readme.txt +13 -0
  226. data/spec/charts/base_spec.rb +2 -2
  227. data/spec/charts/chart_type_spec.rb +3 -4
  228. data/spec/{components → charts/support}/area_spec.rb +8 -8
  229. data/spec/charts/support/draw_spec.rb +41 -0
  230. data/spec/{components → charts/support}/filter_spec.rb +6 -6
  231. data/spec/{components → charts/support}/link_spec.rb +6 -6
  232. data/spec/{components → charts/support}/series.rb +4 -4
  233. data/spec/{components → charts/support}/series_color_spec.rb +4 -4
  234. data/spec/{components → charts/support}/series_explode.rb +4 -4
  235. data/spec/{components → charts/support}/series_explode_spec.rb +4 -4
  236. data/spec/core_ext/string_spec.rb +40 -0
  237. data/spec/gauges/base_spec.rb +1 -1
  238. data/spec/html_helpers/base_spec.rb +50 -0
  239. data/spec/html_helpers/charts_spec.rb +23 -0
  240. data/spec/html_helpers/gauges_spec.rb +16 -0
  241. data/spec/html_helpers/maps_spec.rb +20 -0
  242. data/spec/maps/base_spec.rb +82 -0
  243. data/spec/maps/support/default_color_spec.rb +29 -0
  244. data/spec/maps/support/heat_range_spec.rb +29 -0
  245. data/spec/maps/us_spec.rb +12 -0
  246. data/spec/maps/world_spec.rb +18 -0
  247. data/spec/spec_helper.rb +5 -4
  248. data/spec/themes/maps/base_map.yml +81 -0
  249. data/spec/themes/maps/us_map.yml +6 -0
  250. data/spec/themes/maps/world_map.yml +6 -0
  251. data/spec/themes/maps/world_ov_map.yml +6 -0
  252. data/spec/{helpers/base_helper_spec.rb → yaml_helpers/charts_spec.rb} +10 -13
  253. data/spec/yaml_helpers/gauges_spec.rb +15 -0
  254. data/spec/ziya_helper_spec.rb +118 -116
  255. data/tasks/gem.rake +1 -1
  256. data/tasks/setup.rb +1 -1
  257. data/ziya.gemspec +39 -0
  258. metadata +259 -438
  259. data/lib/ziya/helpers/base_helper.rb +0 -91
  260. data/lib/ziya/utils/text.rb +0 -39
  261. data/lib/ziya/ziya_helper.rb +0 -362
  262. data/spec/components/draw_spec.rb +0 -37
  263. data/spec/utils/text_spec.rb +0 -33
@@ -1,91 +0,0 @@
1
- require "ziya/utils/text"
2
- require "ziya/ziya_helper"
3
-
4
- module Ziya::Helpers
5
- module BaseHelper
6
- include Ziya::Utils::Text, Ziya::Helper
7
-
8
- # Defines various helpers to assist in writing ZiYa yaml stylesheets.
9
-
10
- # generates a swf chart path from the given url. Used as helper to embed a chart
11
- # within a chart
12
- # ==== Example
13
- # <%= chart_url( chart_1_path, "fred" ) %>
14
- #
15
- # => /charts/charts.swf?library_path=/charts/charts_library&xml_source=http://fred/load_chart_1.xml&chart_id=fred
16
- def chart_url( url, swf_chart_dir="/charts", id=nil )
17
- gen_composite_path( swf_chart_dir, url, id )
18
- end
19
-
20
- # indent yaml content vy multiples of 2 spaces
21
- def indent( multiple= 1 )
22
- " " * multiple
23
- end
24
-
25
- # generates a gauge yaml class declaration
26
- # ==== Example
27
- # <%= gauge :thermo %>
28
- #
29
- # produces:
30
- #
31
- # --- !ruby/object:Ziya::Gauges::Thermo
32
- # components: !omap
33
- def gauge( class_name )
34
- "--- #{clazz( class_name, 'Gauges' )}\n#{dials}"
35
- end
36
-
37
- # generates a gauge element declaration
38
- # ==== Example
39
- # <%= dial :rect %>
40
- # => --- !ruby/object:Ziya::Gauges::Support::Rect
41
- def dial( comp_class, comp_name=nil )
42
- clazz = clazz( comp_class, "Gauges::Support" )
43
- comp_name ? "- :#{comp_name}: #{clazz}" : "- #{clazz}"
44
- end
45
-
46
- # generates a yaml hash of dials
47
- # ==== Example
48
- # <%= dials %>
49
- # => components: !omap
50
- def dials
51
- "components: !omap"
52
- end
53
-
54
- # generates a component yaml class declaration
55
- # ==== Example
56
- # <%= component :axis_category %>
57
- # => axis_category: --- !ruby/object:Ziya::Components::AxisCategory
58
- def component( component_name )
59
- "#{component_name}: #{clazz component_name, :Components}"
60
- end
61
- alias :comp :component
62
-
63
- # generates a drawing yaml class declaration
64
- # ==== Example
65
- # <%=drawing :rect %>
66
- # => --- !ruby/object:Ziya::Components::Rect
67
- def drawing( class_name )
68
- clazz( class_name, :Components )
69
- end
70
- alias_method :filter_type, :drawing
71
- alias_method :area , :drawing
72
-
73
- # generates a yaml chart declaration
74
- # ==== Example
75
- # <%= chart :bar %>
76
- # => --- !ruby/object:Ziya::Charts::Bar
77
- def chart( class_name )
78
- "--- #{clazz( class_name, :Charts )}"
79
- end
80
-
81
- private
82
-
83
- # generates a yaml class declaration
84
- def clazz( class_name, module_name=nil ) #:nodoc:
85
- buff = "!ruby/object:Ziya::"
86
- buff << "#{module_name}::" unless module_name.nil?
87
- buff << "#{camelize(class_name.to_s)}"
88
- buff
89
- end
90
- end
91
- end
@@ -1,39 +0,0 @@
1
- # -----------------------------------------------------------------------------
2
- # == Ziya::Utils::Text
3
- #
4
- # TODO !! Just make this a core extension to String already...
5
- #
6
- # Various text utils. Yes indeed lifted from Inflecto to remove Inflector
7
- # dependencies...
8
- #
9
- # Author:: Fernand Galiana
10
- # Date:: Dec 15th, 2006
11
- # -----------------------------------------------------------------------------
12
- module Ziya::Utils
13
- module Text
14
- # Pulled from the Rails Inflector class and modified slightly to fit our needs.
15
- def camelize(string)
16
- string.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
17
- end
18
-
19
- # Same as Rails Inflector but eliminating inflector dependency
20
- def underscore(camel_cased_word)
21
- camel_cased_word.to_s.gsub(/::/, '/').
22
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
23
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
24
- tr("-", "_").
25
- downcase
26
- end
27
-
28
- # Pulled from the Rails Inflector class and modified slightly to fit our needs.
29
- def classify(string)
30
- camelize(string.to_s.sub(/.*\./, ''))
31
- end
32
-
33
- # strip out module name and return bare class name
34
- def demodulize( clazz )
35
- clazz.gsub( /^.*::/, '' )
36
- end
37
-
38
- end
39
- end
@@ -1,362 +0,0 @@
1
- # Generates necessary html flash tag to support ZiYa
2
- #
3
- # TODO -- Rewrite to use content tag block instead...
4
- #
5
- # Author: Fernand Galiana
6
- require 'cgi'
7
- require 'erb'
8
-
9
- module Ziya
10
- module Helper
11
-
12
- # generates a javascript tag to include the js script to create object and
13
- # embed tags
14
- def ziya_javascript_include_tag( opts={} )
15
- options = { :swf_path => chart_path,
16
- :major_vers => 9,
17
- :minor_vers => 0,
18
- :req_vers => 45 }.merge!( opts )
19
-
20
- js = <<-JS
21
- <script language="javascript" type="text/javascript">
22
- AC_FL_RunContent = 0;
23
- DetectFlashVer = 0;
24
- </script>
25
- <script src="#{options[:swf_path]}/AC_RunActiveContent.js" language="javascript"></script>
26
- <script language="javascript" type="text/javascript">
27
- var requiredMajorVersion = #{options[:major_vers]};
28
- var requiredMinorVersion = #{options[:minor_vers]};
29
- var requiredRevision = #{options[:req_vers]};
30
- </script>
31
- JS
32
- end
33
-
34
- # generates necessary object and embed tags to display a flash movie on various
35
- # browsers using javascript
36
- def ziya_chart_js( url, chart_options={} )
37
- options = { :width => "400",
38
- :height => "300",
39
- :bgcolor => "000000",
40
- :wmode => "opaque",
41
- :menu => true,
42
- :full_screen => true,
43
- :align => "l",
44
- :salign => "tl",
45
- :scale => "noscale",
46
- :use_cache => false,
47
- :timeout => nil,
48
- :retry => 2,
49
- :use_stage => false,
50
- :id => "ziya_chart",
51
- :swf_path => chart_path,
52
- }.merge!(chart_options)
53
-
54
- # Setup options for opaque mode
55
- setup_wmode( options )
56
-
57
- # setup width and height
58
- setup_movie_size( options )
59
-
60
- flash_vars = url ? charts_swf : charts_swf_base
61
- xml_swf_path = flash_vars % [options[:swf_path], escape_url(url)]
62
- xml_swf_path << "&chart_id=#{options[:id]}"
63
- xml_swf_path << "&timestamp=#{Time.now.to_i}" if options[:cache] == false
64
- xml_swf_path << "&timeout=#{options[:timeout]}&retry=#{options[:retry]}" if options[:timeout]
65
- xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
66
-
67
- js = <<-JS
68
- <script language="javascript" type="text/javascript">
69
- if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
70
- alert( "This page requires AC_RunActiveContent.js." );
71
- }
72
- else {
73
- var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
74
- if( hasRightVersion ) {
75
- AC_FL_RunContent(
76
- 'codebase' , 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
77
- 'width' , '#{options[:width]}',
78
- 'height' , '#{options[:height]}',
79
- 'scale' , '#{options[:scale]}',
80
- 'salign' , '#{options[:salign]}',
81
- 'bgcolor' , '#{options[:bgcolor]}',
82
- 'wmode' , '#{options[:wmode]}',
83
- 'movie' , '#{options[:swf_path]}/charts',
84
- 'src' , '#{options[:swf_path]}/charts',
85
- 'FlashVars' , '#{xml_swf_path}',
86
- 'id' , '#{options[:id]}',
87
- 'name' , '#{options[:id]}',
88
- 'menu' , '#{options[:menu]}',
89
- 'allowFullScreen' , '#{options[:full_screen]}',
90
- 'allowScriptAccess','sameDomain',
91
- 'quality' , 'high',
92
- 'align' , '#{options[:align]}',
93
- 'pluginspage' , 'http://www.macromedia.com/go/getflashplayer',
94
- 'play' , 'true',
95
- 'devicefont' , 'false'
96
- );
97
- }
98
- else {
99
- var alternateContent = 'This content requires the Adobe Flash Player. '
100
- + '<u><a href=http://www.macromedia.com/go/getflash/>Get Flash</a></u>.';
101
- document.write(alternateContent);
102
- }
103
- }
104
- </script>
105
- JS
106
- end
107
-
108
- # generates necessary html tags to display a gauge.
109
- def ziya_gauge( url, gauge_options={} )
110
- options = { :width => "200",
111
- :height => "200",
112
- :align => "middle",
113
- :scale => "noscale",
114
- :salign => "",
115
- :class => "",
116
- :id => "ziya_gauge",
117
- :swf_path => gauge_path,
118
- :use_cache => false,
119
- :timeout => false,
120
- :retry => 2,
121
- :use_stage => false
122
- }.merge!(gauge_options)
123
-
124
- generate_old_style_flash_tag( url, gauges_swf, options )
125
- end
126
-
127
- # generates neccessary html tags to display a chart.
128
- def ziya_chart( url, chart_options = {} )
129
- options = { :width => "400",
130
- :height => "300",
131
- :tag_type => "embed",
132
- :align => "l",
133
- :salign => "tl",
134
- :scale => "noscale",
135
- :class => "",
136
- :id => "ziya_chart",
137
- :swf_path => chart_path,
138
- :use_cache => false,
139
- :timeout => nil,
140
- :use_stage => false
141
- }.merge!(chart_options)
142
-
143
- flash_vars = url ? charts_swf : charts_swf_base
144
- generate_flash_tag( url, flash_vars, "charts.swf", options )
145
- end
146
-
147
- # flash chart library path
148
- def gen_composite_path( swf_chart_dir, url, chart_id=null )
149
- buff = ""
150
- if url
151
- buff = composite_url % [swf_chart_dir, swf_chart_dir, escape_url( url )]
152
- else
153
- buff = composite_base_url % [swf_chart_dir, swf_chart_dir]
154
- end
155
- buff << "&chart_id=#{chart_id}" if chart_id
156
- buff
157
- end
158
-
159
- # =========================================================================
160
- # private
161
-
162
- # Const accessors...
163
- def mime() "application/x-shockwave-flash"; end
164
- def composite_base_url() "%s/charts.swf?library_path=%s/charts_library" end
165
- def composite_url() "#{composite_base_url}&xml_source=%s" end
166
- def charts_swf_base() "library_path=%s/charts_library"; end
167
- def charts_swf() "#{charts_swf_base}&xml_source=%s"; end
168
- def plugin_url() "http://www.macromedia.com/go/getflashplayer"; end
169
- def gauges_swf() "%s/gauge.swf?xml_source=%s"; end
170
- def gauge_path() "/gauges"; end
171
- def chart_path() "/charts"; end
172
- def class_id() "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" end
173
- def codebase() "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0"; end
174
-
175
- # generates swf path
176
- def gen_swf_path( path_directive, swf_dir, url )
177
- path_directive % [swf_dir, escape_url( url )]
178
- end
179
-
180
- def generate_old_style_flash_tag( url, swf_path, options )
181
- # Setup options for opaque mode
182
- setup_wmode( options )
183
-
184
- # setup width and height
185
- setup_movie_size( options )
186
-
187
- color_param = tag( 'param', {:name => 'bgcolor', :value => options[:bgcolor]}, true )
188
- color_param += tag( 'param', {:name => "wmode", :value => options[:wmode]}, true )
189
-
190
- xml_swf_path = swf_path % [options[:swf_path], url]
191
- xml_swf_path << "&timestamp=#{Time.now.to_i}" if options[:use_cache] == true
192
- xml_swf_path << "&timeout=#{options[:timeout]}&retry=#{options[:retry]}" if options[:timeout] == true
193
- xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
194
- tags = <<-TAGS
195
- <object codebase="#{codebase}" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="#{options[:id]}" height="#{options[:height]}" width="#{options[:width]}">
196
- <param name="scale" value="noscale">
197
- <param name="align" value="#{options[:align]}">
198
- <param name="bgcolor" value="#{options[:bgcolor]}">
199
- <param name="wmode" value="#{options[:wmode]}">
200
- <param name="movie" value="#{xml_swf_path}">
201
- <param name="menu" value="true">
202
- <param name="allowFullScreen" value="true">
203
- <param name="allowScriptAccess" value="sameDomain">
204
- <param name="quality" value="high">
205
- <param name="play" value="true">
206
- <param name="devicefont" value="false">
207
- <embed scale="noscale"
208
- allowfullscreen="true"
209
- allowscriptaccess="sameDomain"
210
- bgcolor="#{options[:bgcolor]}"
211
- devicefont="false"
212
- src="#{xml_swf_path}"
213
- menu="true"
214
- name="#{options[:id]}"
215
- play="true"
216
- pluginspage="http://www.macromedia.com/go/getflashplayer"
217
- quality="high"
218
- salign="#{options[:salign]}"
219
- src="#{xml_swf_path}"
220
- type="application/x-shockwave-flash"
221
- wmode="#{options[:wmode]}"
222
- salign="#{options[:salign]}"
223
- height="#{options[:height]}"
224
- width="#{options[:width]}">
225
- </object>
226
- TAGS
227
- end
228
-
229
- # generated the object and embed tag necessary for the flash movie
230
- def generate_flash_tag( url, swf_path, swf_file, options )
231
- # Setup options for opaque mode
232
- setup_wmode( options )
233
-
234
- # setup width and height
235
- setup_movie_size( options )
236
-
237
- color_param = tag( 'param', {:name => 'bgcolor', :value => options[:bgcolor]}, true )
238
- color_param += tag( 'param', {:name => "wmode", :value => options[:wmode]}, true )
239
-
240
- xml_swf_path = gen_swf_path( swf_path, options[:swf_path], url )
241
- xml_swf_path << "&timestamp=#{Time.now.to_i}" if options[:cache] == false
242
- xml_swf_path << "&timeout=#{options[:timeout]}" if options[:timeout]
243
- xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
244
-
245
- tags = <<-TAGS
246
- <object codebase="#{codebase}" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="#{options[:id]}" height="#{options[:height]}" width="#{options[:width]}">
247
- <param name="scale" value="noscale">
248
- <param name="salign" value="#{options[:salign]}">
249
- <param name="bgcolor" value="#{options[:bgcolor]}">
250
- <param name="wmode" value="#{options[:wmode]}">
251
- <param name="movie" value="#{options[:swf_path]}/#{swf_file}">
252
- <param name="Flashvars" value="#{xml_swf_path}&chart_id=#{options[:id]}">
253
- <param name="menu" value="true">
254
- <param name="allowFullScreen" value="true">
255
- <param name="allowScriptAccess" value="sameDomain">
256
- <param name="quality" value="high">
257
- <param name="play" value="true">
258
- <param name="devicefont" value="false">
259
- <embed scale="noscale"
260
- allowfullscreen = "true"
261
- allowscriptaccess = "sameDomain"
262
- bgcolor = "#{options[:bgcolor]}"
263
- devicefont = "false"
264
- flashvars = "#{xml_swf_path}&chart_id=#{options[:id]}"
265
- menu = "true"
266
- name = "#{options[:id]}"
267
- play = "true"
268
- pluginspage = "http://www.macromedia.com/go/getflashplayer"
269
- quality = "high"
270
- salign = "#{options[:salign]}"
271
- src = "#{options[:swf_path]}/#{swf_file}"
272
- type = "application/x-shockwave-flash"
273
- wmode = "#{options[:wmode]}"
274
- align = "#{options[:align]}"
275
- height = "#{options[:height]}"
276
- width = "#{options[:width]}"/>
277
- </object>
278
- TAGS
279
- end
280
-
281
- # escape url
282
- def escape_url( url )
283
- url ? CGI.escape( url.gsub( /&amp;/, '&' ) ) : url
284
- end
285
-
286
- # setup up wmode
287
- # Set the wmode to opaque if a bgcolor is specified. If not set to
288
- # transparent mode unless user overrides it
289
- def setup_wmode( options )
290
- if options[:bgcolor]
291
- options[:wmode] = "opaque" unless options[:wmode]
292
- else
293
- options[:wmode] = "transparent" unless options[:wmode]
294
- options[:bgcolor] = "#FFFFFF"
295
- end
296
- end
297
-
298
- # Check args for size option in the format wXy (Submitted by Sam Livingston-Gray)
299
- def setup_movie_size( options )
300
- if options[:size] =~ /(\d+)x(\d+)/
301
- options[:width] = $1
302
- options[:height] = $2
303
- options.delete :size
304
- end
305
- end
306
-
307
- # All this stolen form rails to make Ziya work with other fmks....
308
- def tag(name, options = nil, open = false, escape = true)
309
- "<#{name}#{tag_options(options, escape) if options}" + (open ? ">" : " />")
310
- end
311
-
312
- def escape_once(html)
313
- html.to_s.gsub(/[\"><]|&(?!([a-zA-Z]+|(#\d+));)/) { |special| escape_chars[special] }
314
- end
315
-
316
- def tag_options(options, escape = true)
317
- unless !options or options.empty?
318
- attrs = []
319
- if escape
320
- options.each do |key, value|
321
- next unless value
322
- key = key.to_s
323
- value = escape_once(value)
324
- attrs << %(#{key}="#{value}")
325
- end
326
- else
327
- attrs = options.map { |key, value| %(#{key}="#{value}") }
328
- end
329
- " #{attrs.sort * ' '}" unless attrs.empty?
330
- end
331
- end
332
-
333
- def content_tag(name, content_or_options_with_block = nil, options = nil, escape = true, &block)
334
- if block_given?
335
- options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
336
- content = capture_block(&block)
337
- content_tag = content_tag_string(name, content, options, escape)
338
- block_is_within_action_view?(block) ? concat(content_tag, block.binding) : content_tag
339
- else
340
- content = content_or_options_with_block
341
- content_tag_string(name, content, options, escape)
342
- end
343
- end
344
-
345
- def capture_block( *args, &block )
346
- block.call(*args)
347
- end
348
-
349
- def content_tag_string(name, content, options, escape = true)
350
- tag_options = tag_options(options, escape) if options
351
- "<#{name}#{tag_options}>#{content}</#{name}>"
352
- end
353
-
354
- def block_is_within_action_view?(block)
355
- eval("defined? _erbout", block.binding)
356
- end
357
-
358
- def escape_chars
359
- { '&' => '&amp;', '"' => '&quot;', '>' => '&gt;', '<' => '&lt;' }
360
- end
361
- end
362
- end
@@ -1,37 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. spec_helper]))
2
-
3
- describe Ziya::Components::Draw do
4
- before( :each ) do
5
- @comp = Ziya::Components::Draw.new
6
- circle = Ziya::Components::Circle.new
7
- circle.radius = 10
8
- image = Ziya::Components::Image.new
9
- image.x = 10
10
- @comp.components = [circle, image]
11
- end
12
-
13
- it "should define the correct attribute methods" do
14
- lambda{ Ziya::Components::Draw.attributes[@comp.class.name].each {
15
- |m| @comp.send( m ) } }.should_not raise_error
16
- end
17
-
18
- describe "#flatten" do
19
- before( :each ) do
20
- @xml = Builder::XmlMarkup.new
21
- end
22
-
23
- it "should flatten component correctly" do
24
- @comp.flatten( @xml ).should == "<draw><circle radius=\"10\"/><image x=\"10\"/></draw>"
25
- end
26
-
27
- it "should support composite charts" do
28
- urls = { :fred => "/fred", :blee => "/blee" }
29
- @comp.flatten( @xml, urls ).should == "<draw><circle radius=\"10\"/><image x=\"10\"/><image url=\"/charts/charts.swf?library_path=/charts/charts_library&amp;xml_source=%2Ffred&amp;chart_id=fred\"/><image url=\"/charts/charts.swf?library_path=/charts/charts_library&amp;xml_source=%2Fblee&amp;chart_id=blee\"/></draw>"
30
- end
31
-
32
- it "should support js based composite chart" do
33
- urls = { :fred => nil }
34
- @comp.flatten( @xml, urls ).should == "<draw><circle radius=\"10\"/><image x=\"10\"/><image url=\"/charts/charts.swf?library_path=/charts/charts_library&amp;chart_id=fred\"/></draw>"
35
- end
36
- end
37
- end
@@ -1,33 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), %w[.. spec_helper]))
2
-
3
- describe Ziya::Utils::Text do
4
- describe "camelize" do
5
- it "should camelize a plain string correctly" do
6
- camelize( "fred" ).should == "Fred"
7
- end
8
-
9
- it "shoud camelize a class name correctly" do
10
- camelize( "hello_world" ).should == "HelloWorld"
11
- end
12
-
13
- it "should camelize a namespace class file correctly" do
14
- camelize( "/blee/fred/hello_world" ).should == "::Blee::Fred::HelloWorld"
15
- end
16
- end
17
-
18
- describe "underscore" do
19
- it "should underscore a plain string" do
20
- underscore( "fred" ).should == "fred"
21
- end
22
-
23
- it "should underscore a camel cased string" do
24
- underscore( "HelloWorld" ).should == "hello_world"
25
- end
26
- end
27
-
28
- describe "classify" do
29
- it "should classify an attribute correctly" do
30
- classify( "fred.blee_duh" ).should == "BleeDuh"
31
- end
32
- end
33
- end