ziya 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +74 -28
- data/README.txt +91 -14
- data/Rakefile +1 -1
- data/bin/ziyafy +2 -0
- data/charts/AC_RunActiveContent.js +292 -0
- data/charts/charts.swf +0 -0
- data/charts/charts_library/ar3d.swf +0 -0
- data/charts/charts_library/arno.swf +0 -0
- data/charts/charts_library/ars3.swf +0 -0
- data/charts/charts_library/arst.swf +0 -0
- data/charts/charts_library/brfl.swf +0 -0
- data/charts/charts_library/brno.swf +0 -0
- data/charts/charts_library/brst.swf +0 -0
- data/charts/charts_library/buno.swf +0 -0
- data/charts/charts_library/cl3d.swf +0 -0
- data/charts/charts_library/clfl.swf +0 -0
- data/charts/charts_library/clno.swf +0 -0
- data/charts/charts_library/clp3.swf +0 -0
- data/charts/charts_library/cls3.swf +0 -0
- data/charts/charts_library/clst.swf +0 -0
- data/charts/charts_library/cnno.swf +0 -0
- data/charts/charts_library/lnno.swf +0 -0
- data/charts/charts_library/mxno.swf +0 -0
- data/charts/charts_library/pi3d.swf +0 -0
- data/charts/charts_library/pino.swf +0 -0
- data/charts/charts_library/pono.swf +0 -0
- data/charts/charts_library/scno.swf +0 -0
- data/charts/full_screen.swf +0 -0
- data/charts/sliders/black.swf +0 -0
- data/charts/sliders/preview_handle_1.swf +0 -0
- data/charts/sliders/preview_handle_2.swf +0 -0
- data/fred.rb +36 -0
- data/gauges/designs/circle.yml +18 -0
- data/gauges/designs/signal.yml +14 -0
- data/gauges/designs/thermo.yml +119 -0
- data/gauges/designs/title.yml +11 -0
- data/gauges/gauge.swf +0 -0
- data/lib/ziya.rb +17 -5
- data/lib/ziya/charts/area.rb +6 -1
- data/lib/ziya/charts/area_threed.rb +16 -0
- data/lib/ziya/charts/bar.rb +8 -3
- data/lib/ziya/charts/base.rb +210 -153
- data/lib/ziya/charts/bubble.rb +18 -0
- data/lib/ziya/charts/candle_stick.rb +6 -1
- data/lib/ziya/charts/column.rb +7 -2
- data/lib/ziya/charts/column_threed.rb +6 -1
- data/lib/ziya/charts/floating_bar.rb +6 -1
- data/lib/ziya/charts/floating_column.rb +7 -2
- data/lib/ziya/charts/line.rb +7 -2
- data/lib/ziya/charts/mixed.rb +5 -0
- data/lib/ziya/charts/parallel_threed_column.rb +6 -1
- data/lib/ziya/charts/pie.rb +7 -2
- data/lib/ziya/charts/pie_threed.rb +7 -2
- data/lib/ziya/charts/polar.rb +6 -1
- data/lib/ziya/charts/scatter.rb +6 -1
- data/lib/ziya/charts/stacked_area.rb +5 -0
- data/lib/ziya/charts/stacked_bar.rb +5 -0
- data/lib/ziya/charts/stacked_column.rb +7 -2
- data/lib/ziya/charts/stacked_threed_area.rb +16 -0
- data/lib/ziya/charts/stacked_threed_column.rb +6 -1
- data/lib/ziya/components/area.rb +5 -2
- data/lib/ziya/components/axis_category.rb +8 -60
- data/lib/ziya/components/axis_ticks.rb +25 -27
- data/lib/ziya/components/axis_value.rb +5 -48
- data/lib/ziya/components/base.rb +59 -17
- data/lib/ziya/components/bevel.rb +15 -0
- data/lib/ziya/components/blur.rb +13 -0
- data/lib/ziya/components/chart_border.rb +4 -23
- data/lib/ziya/components/chart_grid_h.rb +17 -19
- data/lib/ziya/components/chart_grid_v.rb +18 -19
- data/lib/ziya/components/chart_guide.rb +16 -0
- data/lib/ziya/components/chart_label.rb +16 -0
- data/lib/ziya/components/chart_pref.rb +12 -12
- data/lib/ziya/components/chart_rect.rb +27 -26
- data/lib/ziya/components/chart_transition.rb +15 -16
- data/lib/ziya/components/circle.rb +5 -2
- data/lib/ziya/components/draw.rb +12 -11
- data/lib/ziya/components/draw_base.rb +10 -0
- data/lib/ziya/components/filter.rb +26 -0
- data/lib/ziya/components/glow.rb +14 -0
- data/lib/ziya/components/image.rb +5 -1
- data/lib/ziya/components/legend.rb +18 -0
- data/lib/ziya/components/line.rb +6 -2
- data/lib/ziya/components/link.rb +9 -9
- data/lib/ziya/components/link_data.rb +9 -10
- data/lib/ziya/components/rect.rb +7 -2
- data/lib/ziya/components/scroll.rb +26 -0
- data/lib/ziya/components/shadow.rb +14 -0
- data/lib/ziya/components/text.rb +5 -1
- data/lib/ziya/components/update.rb +19 -0
- data/lib/ziya/gauges/base.rb +172 -0
- data/lib/ziya/gauges/radial.rb +18 -0
- data/lib/ziya/gauges/signal.rb +138 -0
- data/lib/ziya/gauges/support/area.rb +13 -0
- data/lib/ziya/gauges/support/base.rb +33 -0
- data/lib/ziya/gauges/support/circle.rb +14 -0
- data/lib/ziya/gauges/support/design.rb +5 -0
- data/lib/ziya/gauges/support/image.rb +12 -0
- data/lib/ziya/gauges/support/line.rb +12 -0
- data/lib/ziya/gauges/support/link.rb +24 -0
- data/lib/ziya/gauges/support/move.rb +15 -0
- data/lib/ziya/gauges/support/point.rb +12 -0
- data/lib/ziya/gauges/support/polygon.rb +13 -0
- data/lib/ziya/gauges/support/radial_base.rb +21 -0
- data/lib/ziya/gauges/support/radial_numbers.rb +41 -0
- data/lib/ziya/gauges/support/radial_ticks.rb +29 -0
- data/lib/ziya/gauges/support/rect.rb +14 -0
- data/lib/ziya/gauges/support/rotate.rb +15 -0
- data/lib/ziya/gauges/support/scale.rb +15 -0
- data/lib/ziya/gauges/support/text.rb +21 -0
- data/lib/ziya/gauges/support/update.rb +12 -0
- data/lib/ziya/gauges/thermo.rb +121 -0
- data/lib/ziya/helpers/base_helper.rb +39 -6
- data/lib/ziya/utils/text.rb +6 -0
- data/lib/ziya/version.rb +1 -1
- data/lib/ziya/ziya_helper.rb +289 -62
- data/spec/charts/base_spec.rb +35 -21
- data/spec/charts/chart_type_spec.rb +24 -3
- data/spec/components/area_spec.rb +9 -2
- data/spec/components/draw_spec.rb +1 -2
- data/spec/components/filter_spec.rb +27 -0
- data/spec/components/link_spec.rb +1 -2
- data/spec/components/series_color_spec.rb +1 -2
- data/spec/components/series_explode_spec.rb +1 -2
- data/spec/components/series_switch_spec.rb +1 -2
- data/spec/designs/circle.yml +7 -0
- data/spec/designs/crapping_out.yml +8 -0
- data/spec/designs/gauge_1.yml +43 -0
- data/spec/designs/gauge_2.yml +11 -0
- data/spec/designs/gauge_no_name.yml +43 -0
- data/spec/designs/gauge_raw.yml +5 -0
- data/spec/designs/thermo.yml +13 -0
- data/spec/gauges/base_spec.rb +90 -0
- data/spec/gauges/signal_spec.rb +36 -0
- data/spec/gauges/support/area_spec.rb +40 -0
- data/spec/gauges/support/circle_spec.rb +78 -0
- data/spec/gauges/support/image_spec.rb +35 -0
- data/spec/gauges/support/line_spec.rb +34 -0
- data/spec/gauges/support/link_spec.rb +35 -0
- data/spec/gauges/support/move_spec.rb +45 -0
- data/spec/gauges/support/polygon_spec.rb +36 -0
- data/spec/gauges/support/radial_numbers_spec.rb +35 -0
- data/spec/gauges/support/radial_ticks_spec.rb +30 -0
- data/spec/gauges/support/rotate_spec.rb +45 -0
- data/spec/gauges/support/scale_spec.rb +46 -0
- data/spec/gauges/support/text_spec.rb +40 -0
- data/spec/gauges/thermo_spec.rb +49 -0
- data/spec/helpers/base_helper_spec.rb +20 -6
- data/spec/spec_helper.rb +4 -1
- data/spec/test_helpers/gauge_2_helper.rb +17 -0
- data/spec/utils/logger_spec.rb +1 -3
- data/spec/utils/text_spec.rb +1 -2
- data/spec/ziya_helper_spec.rb +88 -11
- data/spec/ziya_spec.rb +1 -1
- data/tasks/gem.rake +1 -1
- metadata +79 -32
- data/charts/themes/commando/bar_chart.yml +0 -9
- data/charts/themes/commando/base_chart.yml +0 -65
- data/charts/themes/commando/column_chart.yml +0 -13
- data/charts/themes/commando/column_threed_chart.yml +0 -25
- data/charts/themes/commando/parallel_threed_column_chart.yml +0 -17
- data/charts/themes/commando/pie_chart.yml +0 -22
- data/charts/themes/commando/pie_threed_chart.yml +0 -28
- data/charts/themes/commando/polar_chart.yml +0 -11
- data/charts/themes/commando/stacked_bar_chart.yml +0 -9
- data/charts/themes/commando/stacked_column_chart.yml +0 -14
- data/charts/themes/commando/stacked_threed_column_chart.yml +0 -17
- data/charts/themes/default/bar_chart.yml +0 -3
- data/charts/themes/default/base_chart.yml +0 -67
- data/charts/themes/default/column_chart.yml +0 -13
- data/charts/themes/default/column_threed_chart.yml +0 -25
- data/charts/themes/default/parallel_threed_column_chart.yml +0 -17
- data/charts/themes/default/pie_chart.yml +0 -29
- data/charts/themes/default/pie_threed_chart.yml +0 -28
- data/charts/themes/default/polar_chart.yml +0 -12
- data/charts/themes/default/stacked_bar_chart.yml +0 -3
- data/charts/themes/default/stacked_column_chart.yml +0 -14
- data/charts/themes/default/stacked_threed_column_chart.yml +0 -17
- data/charts/themes/default/test.yml +0 -4
- data/lib/ziya/components/chart_value.rb +0 -71
- data/lib/ziya/components/legend_label.rb +0 -18
- data/lib/ziya/components/legend_rect.rb +0 -19
- data/lib/ziya/components/legend_transition.rb +0 -18
- data/lib/ziya/components/live_update.rb +0 -21
@@ -0,0 +1,15 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# Create an animation to scale a component
|
3
|
+
#
|
4
|
+
# Author:: Fernand Galiana
|
5
|
+
# -----------------------------------------------------------------------------
|
6
|
+
require 'ziya/gauges/support/base'
|
7
|
+
|
8
|
+
module Ziya::Gauges::Support
|
9
|
+
class Scale < Base
|
10
|
+
has_attribute :x, :y, :start_scale, :end_scale, :step, :direction,
|
11
|
+
:shake_span, :shake_frequency, :shake_snap,
|
12
|
+
:shadow_alpha, :shadow_x_offset, :shadow_y_offset,
|
13
|
+
:components
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# Draws text for a gauge
|
3
|
+
#
|
4
|
+
# Author:: Fernand Galiana
|
5
|
+
# -----------------------------------------------------------------------------
|
6
|
+
require 'ziya/gauges/support/base'
|
7
|
+
|
8
|
+
module Ziya::Gauges::Support
|
9
|
+
class Text < Base
|
10
|
+
has_attribute :x, :y, :width, :height, :rotation, :font, :bold, :size, :align,
|
11
|
+
:color, :alpha, :text
|
12
|
+
|
13
|
+
def flatten( xml )
|
14
|
+
opts = options
|
15
|
+
txt = opts.delete( :text )
|
16
|
+
xml.text( opts ) do
|
17
|
+
xml.text! txt.to_s
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# Draws a rectangle for a gauge
|
3
|
+
#
|
4
|
+
# Author:: Fernand Galiana
|
5
|
+
# -----------------------------------------------------------------------------
|
6
|
+
require 'ziya/gauges/support/base'
|
7
|
+
|
8
|
+
module Ziya::Gauges::Support
|
9
|
+
class Update < Base
|
10
|
+
has_attribute :url, :delay, :delay_type, :stop_sound, :retry, :timeout
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# Thermometer gauge
|
3
|
+
#
|
4
|
+
# TODO Need to figure out ordering different than alpha
|
5
|
+
#
|
6
|
+
# Author: Fernand
|
7
|
+
# -----------------------------------------------------------------------------
|
8
|
+
module Ziya::Gauges
|
9
|
+
class Thermo < Base
|
10
|
+
|
11
|
+
# creates a thermometer gauge.
|
12
|
+
# <tt>license</tt> the xml/swf gauge license key
|
13
|
+
# <tt>design_id</tt> the name of the design file containing components
|
14
|
+
# to override default design.
|
15
|
+
def initialize( license, design_id="thermo" )
|
16
|
+
super( license, design_id )
|
17
|
+
end
|
18
|
+
|
19
|
+
# -----------------------------------------------------------------------
|
20
|
+
# provides for overiding basic functionality
|
21
|
+
#
|
22
|
+
# <tt>title</tt>:: String representing gauge title or null for none.
|
23
|
+
# <tt>gauge_color</tt>:: Legend color
|
24
|
+
# <tt>legend_color</tt>:: Gauge color
|
25
|
+
# <tt>due_point</tt>:: Set temperature level
|
26
|
+
def set_preferences( opts={} )
|
27
|
+
super( opts )
|
28
|
+
options[:end_scale] = normalize_and_scale( options[:due_point] )
|
29
|
+
end
|
30
|
+
|
31
|
+
# =========================================================================
|
32
|
+
protected
|
33
|
+
|
34
|
+
# -------------------------------------------------------------------------
|
35
|
+
# setup thermometer default options
|
36
|
+
def default_options
|
37
|
+
{
|
38
|
+
:x => 20,
|
39
|
+
:y => 20,
|
40
|
+
:due_point => 40,
|
41
|
+
:gauge_color => "ff0000",
|
42
|
+
:legend_color => "cc0000",
|
43
|
+
:title => "weather"
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
# =========================================================================
|
48
|
+
private
|
49
|
+
|
50
|
+
# -----------------------------------------------------------------------
|
51
|
+
# converts temp is F to a %
|
52
|
+
def normalize_and_scale( due_point )
|
53
|
+
return 100 if due_point > 120
|
54
|
+
return 0 if due_point < 20
|
55
|
+
due_point - 20
|
56
|
+
end
|
57
|
+
|
58
|
+
# -----------------------------------------------------------------------
|
59
|
+
# draws farenheit scale
|
60
|
+
def draw_farenheit_scale( start_temp, end_temp )
|
61
|
+
i = start_temp
|
62
|
+
buff = []
|
63
|
+
count = 0
|
64
|
+
x = options[:x] + 60
|
65
|
+
y = options[:y] + 153
|
66
|
+
while( i <= end_temp ) do
|
67
|
+
line = Ziya::Gauges::Support::Line.new(
|
68
|
+
:x1 => x,
|
69
|
+
:y1 => y-i,
|
70
|
+
:x2 => x+8,
|
71
|
+
:y2 => y-i,
|
72
|
+
:thickness => 2 )
|
73
|
+
buff << "#{indent}#{line.to_comp_yaml( "linef_#{count}", 2 )}"
|
74
|
+
text = Ziya::Gauges::Support::Text.new(
|
75
|
+
:x => x+8,
|
76
|
+
:y => (y-8)-i,
|
77
|
+
:width => 100,
|
78
|
+
:align => 'left',
|
79
|
+
:size => 10,
|
80
|
+
:color => 'aaaaaa',
|
81
|
+
:text => i.to_s )
|
82
|
+
buff << "#{indent}#{text.to_comp_yaml( "textf_#{count}", 2 )}"
|
83
|
+
i += 20
|
84
|
+
count += 1
|
85
|
+
end
|
86
|
+
buff.join( "\n" )
|
87
|
+
end
|
88
|
+
|
89
|
+
# -----------------------------------------------------------------------
|
90
|
+
# draws celsius scale
|
91
|
+
def draw_celsius_scale( start_temp, end_temp )
|
92
|
+
i = start_temp
|
93
|
+
ratio = 1.7
|
94
|
+
buff = []
|
95
|
+
count = 0
|
96
|
+
x = options[:x] + 10
|
97
|
+
y = options[:y] + 118
|
98
|
+
while( i <= end_temp ) do
|
99
|
+
line = Ziya::Gauges::Support::Line.new(
|
100
|
+
:x1 => x,
|
101
|
+
:y1 => y-(i*ratio),
|
102
|
+
:x2 => x+8,
|
103
|
+
:y2 => y-(i*ratio),
|
104
|
+
:thickness => 2 )
|
105
|
+
buff << "#{indent}#{line.to_comp_yaml( "linec_#{count}", 2 )}"
|
106
|
+
text = Ziya::Gauges::Support::Text.new(
|
107
|
+
:x => x - 20,
|
108
|
+
:y => (y-8)-(i*ratio),
|
109
|
+
:width => 20,
|
110
|
+
:align => 'right',
|
111
|
+
:size => 10,
|
112
|
+
:color => 'aaaaaa',
|
113
|
+
:text => i.to_s )
|
114
|
+
buff << "#{indent}#{text.to_comp_yaml( "text_c_#{count}", 2 )}"
|
115
|
+
i += 10
|
116
|
+
count += 1
|
117
|
+
end
|
118
|
+
buff.join( "\n" )
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -1,11 +1,42 @@
|
|
1
1
|
require "ziya/utils/text"
|
2
|
+
require "ziya/ziya_helper"
|
2
3
|
|
3
4
|
module Ziya::Helpers
|
4
5
|
module BaseHelper
|
5
|
-
include Ziya::Utils::Text
|
6
|
+
include Ziya::Utils::Text, Ziya::Helper
|
7
|
+
|
8
|
+
# -------------------------------------------------------------------------
|
9
|
+
# generates a swf chart path from the given url. Used as helper to embed
|
10
|
+
# chart
|
11
|
+
def chart_url( url, swf_chart_dir="/charts" )
|
12
|
+
gen_composite_path( swf_chart_dir, url )
|
13
|
+
end
|
14
|
+
|
15
|
+
# -------------------------------------------------------------------------
|
16
|
+
# indent yaml content vy multiples of 2 spaces
|
17
|
+
def indent( multiple= 1 )
|
18
|
+
" " * multiple
|
19
|
+
end
|
20
|
+
|
21
|
+
# -------------------------------------------------------------------------
|
22
|
+
# YAML Convenience for gauge class
|
23
|
+
def gauge( class_name )
|
24
|
+
"--- #{clazz( class_name, 'Gauges' )}\n#{dials}"
|
25
|
+
end
|
6
26
|
|
7
|
-
#
|
8
|
-
#
|
27
|
+
# -------------------------------------------------------------------------
|
28
|
+
# YAML Convenience for gauge component declaration
|
29
|
+
def dial( comp_class, comp_name=nil )
|
30
|
+
clazz = clazz( comp_class, "Gauges::Support" )
|
31
|
+
comp_name ? "- :#{comp_name}: #{clazz}" : "- #{clazz}"
|
32
|
+
end
|
33
|
+
|
34
|
+
# -------------------------------------------------------------------------
|
35
|
+
# YAML dials declaration
|
36
|
+
def dials
|
37
|
+
"components: !omap"
|
38
|
+
end
|
39
|
+
|
9
40
|
# -------------------------------------------------------------------------
|
10
41
|
# YAML Convenience for component declaration
|
11
42
|
def component( component_name )
|
@@ -18,19 +49,21 @@ module Ziya::Helpers
|
|
18
49
|
def drawing( class_name )
|
19
50
|
clazz( class_name, :Components )
|
20
51
|
end
|
21
|
-
|
52
|
+
alias_method :filter_type, :drawing
|
53
|
+
alias_method :area , :drawing
|
54
|
+
|
22
55
|
# -------------------------------------------------------------------------
|
23
56
|
# YAML Convenience for chart class
|
24
57
|
def chart( class_name )
|
25
58
|
"--- #{clazz( class_name, :Charts )}"
|
26
59
|
end
|
27
|
-
|
60
|
+
|
28
61
|
# -------------------------------------------------------------------------
|
29
62
|
# YAML Convenience for chart name setting
|
30
63
|
def clazz( class_name, module_name=nil )
|
31
64
|
buff = "!ruby/object:Ziya::"
|
32
65
|
buff << "#{module_name}::" unless module_name.nil?
|
33
|
-
buff << "#{camelize(class_name.to_s)}
|
66
|
+
buff << "#{camelize(class_name.to_s)}"
|
34
67
|
buff
|
35
68
|
end
|
36
69
|
end
|
data/lib/ziya/utils/text.rb
CHANGED
data/lib/ziya/version.rb
CHANGED
data/lib/ziya/ziya_helper.rb
CHANGED
@@ -10,84 +10,311 @@ require 'erb'
|
|
10
10
|
|
11
11
|
module Ziya
|
12
12
|
module Helper
|
13
|
-
# const accessor...
|
14
|
-
def xml_swf() "%s/charts.swf?library_path=%s/charts_library&xml_source=%s"; end
|
15
13
|
|
14
|
+
# -------------------------------------------------------------------------
|
15
|
+
# generates a javascript tag to include the js script to create object and
|
16
|
+
# embed tags
|
17
|
+
def ziya_javascript_include_tag
|
18
|
+
js = <<-JS
|
19
|
+
<script language="javascript" type="text/javascript">
|
20
|
+
AC_FL_RunContent = 0;
|
21
|
+
DetectFlashVer = 0;
|
22
|
+
</script>
|
23
|
+
<script src="/charts/AC_RunActiveContent.js" language="javascript"></script>
|
24
|
+
<script language="javascript" type="text/javascript">
|
25
|
+
var requiredMajorVersion = 9;
|
26
|
+
var requiredMinorVersion = 0;
|
27
|
+
var requiredRevision = 45;
|
28
|
+
</script>
|
29
|
+
JS
|
30
|
+
end
|
31
|
+
|
32
|
+
# generates necessary object and embed tags to display a flash movie on various
|
33
|
+
# browsers using javascript
|
34
|
+
def ziya_chart_js( url, chart_options={} )
|
35
|
+
options = { :width => "400",
|
36
|
+
:height => "300",
|
37
|
+
:bgcolor => "000000",
|
38
|
+
:wmode => "opaque",
|
39
|
+
:menu => true,
|
40
|
+
:full_screen => true,
|
41
|
+
:align => "l",
|
42
|
+
:salign => "tl",
|
43
|
+
:scale => "noscale",
|
44
|
+
:use_cache => false,
|
45
|
+
:timeout => nil,
|
46
|
+
:retry => 2,
|
47
|
+
:use_stage => false,
|
48
|
+
:id => "ziya_chart",
|
49
|
+
:swf_path => chart_path,
|
50
|
+
}.merge!(chart_options)
|
51
|
+
|
52
|
+
# Setup options for opaque mode
|
53
|
+
setup_wmode( options )
|
54
|
+
|
55
|
+
# setup width and height
|
56
|
+
setup_movie_size( options )
|
57
|
+
|
58
|
+
xml_swf_path = charts_swf % [options[:swf_path], escape_url(url)]
|
59
|
+
xml_swf_path << "×tamp=#{Time.now.to_i}" if options[:cache] == false
|
60
|
+
xml_swf_path << "&timeout=#{options[:timeout]}&retry=#{options[:retry]}" if options[:timeout]
|
61
|
+
xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
|
62
|
+
|
63
|
+
js = <<-JS
|
64
|
+
<script language="javascript" type="text/javascript">
|
65
|
+
if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {
|
66
|
+
alert( "This page requires AC_RunActiveContent.js." );
|
67
|
+
}
|
68
|
+
else {
|
69
|
+
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
|
70
|
+
if( hasRightVersion ) {
|
71
|
+
AC_FL_RunContent(
|
72
|
+
'codebase' , 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
|
73
|
+
'width' , '#{options[:width]}',
|
74
|
+
'height' , '#{options[:height]}',
|
75
|
+
'scale' , '#{options[:scale]}',
|
76
|
+
'salign' , '#{options[:salign]}',
|
77
|
+
'bgcolor' , '#{options[:bgcolor]}',
|
78
|
+
'wmode' , '#{options[:wmode]}',
|
79
|
+
'movie' , '#{options[:swf_path]}/charts',
|
80
|
+
'src' , '#{options[:swf_path]}/charts',
|
81
|
+
'FlashVars' , '#{xml_swf_path}',
|
82
|
+
'id' , '#{options[:id]}',
|
83
|
+
'name' , '#{options[:id]}',
|
84
|
+
'menu' , '#{options[:menu]}',
|
85
|
+
'allowFullScreen' , '#{options[:full_screen]}',
|
86
|
+
'allowScriptAccess','sameDomain',
|
87
|
+
'quality' , 'high',
|
88
|
+
'align' , '#{options[:align]}',
|
89
|
+
'pluginspage' , 'http://www.macromedia.com/go/getflashplayer',
|
90
|
+
'play' , 'true',
|
91
|
+
'devicefont' , 'false'
|
92
|
+
);
|
93
|
+
}
|
94
|
+
else {
|
95
|
+
var alternateContent = 'This content requires the Adobe Flash Player. '
|
96
|
+
+ '<u><a href=http://www.macromedia.com/go/getflash/>Get Flash</a></u>.';
|
97
|
+
document.write(alternateContent);
|
98
|
+
}
|
99
|
+
}
|
100
|
+
</script>
|
101
|
+
JS
|
102
|
+
end
|
103
|
+
|
104
|
+
# -------------------------------------------------------------------------
|
105
|
+
# generates necessary html tags to display a gauge.
|
106
|
+
def ziya_gauge( url, gauge_options={} )
|
107
|
+
options = { :width => "200",
|
108
|
+
:height => "200",
|
109
|
+
:align => "middle",
|
110
|
+
:scale => "noscale",
|
111
|
+
:salign => "",
|
112
|
+
:class => "",
|
113
|
+
:id => "ziya_gauge",
|
114
|
+
:swf_path => gauge_path,
|
115
|
+
:use_cache => false,
|
116
|
+
:timeout => false,
|
117
|
+
:retry => 2,
|
118
|
+
:use_stage => false
|
119
|
+
}.merge!(gauge_options)
|
120
|
+
|
121
|
+
generate_old_style_flash_tag( url, gauges_swf, options )
|
122
|
+
end
|
123
|
+
|
16
124
|
# -------------------------------------------------------------------------------------
|
17
|
-
#
|
18
|
-
# -------------------------------------------------------------------------------------
|
125
|
+
# generates neccessary html tags to display a chart.
|
19
126
|
def ziya_chart( url, chart_options = {} )
|
20
127
|
options = { :width => "400",
|
21
128
|
:height => "300",
|
22
|
-
:
|
23
|
-
:
|
129
|
+
:tag_type => "embed",
|
130
|
+
:align => "l",
|
131
|
+
:salign => "tl",
|
132
|
+
:scale => "noscale",
|
133
|
+
:class => "",
|
24
134
|
:id => "ziya_chart",
|
25
135
|
:swf_path => chart_path,
|
26
|
-
:
|
136
|
+
:use_cache => false,
|
27
137
|
:timeout => nil,
|
28
|
-
:use_stage =>
|
29
|
-
:style => ""
|
138
|
+
:use_stage => false
|
30
139
|
}.merge!(chart_options)
|
140
|
+
|
141
|
+
generate_flash_tag( url, charts_swf, "charts.swf", options )
|
142
|
+
end
|
143
|
+
|
144
|
+
# flash chart library path
|
145
|
+
def gen_composite_path( swf_chart_dir, url )
|
146
|
+
composite_url % [swf_chart_dir, swf_chart_dir, escape_url( url )]
|
147
|
+
end
|
148
|
+
|
149
|
+
# =========================================================================
|
150
|
+
# private
|
31
151
|
|
32
|
-
#
|
33
|
-
|
152
|
+
# Const accessors...
|
153
|
+
def mime() "application/x-shockwave-flash"; end
|
154
|
+
def composite_url() "%s/charts.swf?library_path=%s/charts_library&xml_source=%s" end
|
155
|
+
def charts_swf() "library_path=%s/charts_library&xml_source=%s"; end
|
156
|
+
def plugin_url() "http://www.macromedia.com/go/getflashplayer"; end
|
157
|
+
def gauges_swf() "%s/gauge.swf?xml_source=%s"; end
|
158
|
+
def gauge_path() "/gauges"; end
|
159
|
+
def chart_path() "/charts"; end
|
160
|
+
def class_id() "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" end
|
161
|
+
def codebase() "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0"; end
|
34
162
|
|
35
|
-
#
|
36
|
-
|
37
|
-
|
38
|
-
options[:wmode] = "opaque" unless options[:wmode]
|
39
|
-
else
|
40
|
-
options[:wmode] = "transparent" unless options[:wmode]
|
41
|
-
options[:bgcolor] = "#FFFFFF"
|
163
|
+
# generates swf path
|
164
|
+
def gen_swf_path( path_directive, swf_dir, url )
|
165
|
+
path_directive % [swf_dir, escape_url( url )]
|
42
166
|
end
|
43
|
-
color_param = tag( 'param', {:name => 'bgcolor', :value => options[:bgcolor]}, true )
|
44
|
-
color_param += tag( 'param', {:name => "wmode", :value => options[:wmode]}, true )
|
45
167
|
|
46
|
-
|
47
|
-
|
48
|
-
options
|
49
|
-
|
50
|
-
|
168
|
+
def generate_old_style_flash_tag( url, swf_path, options )
|
169
|
+
# Setup options for opaque mode
|
170
|
+
setup_wmode( options )
|
171
|
+
|
172
|
+
# setup width and height
|
173
|
+
setup_movie_size( options )
|
174
|
+
|
175
|
+
color_param = tag( 'param', {:name => 'bgcolor', :value => options[:bgcolor]}, true )
|
176
|
+
color_param += tag( 'param', {:name => "wmode", :value => options[:wmode]}, true )
|
177
|
+
|
178
|
+
xml_swf_path = swf_path % [options[:swf_path], url]
|
179
|
+
xml_swf_path << "×tamp=#{Time.now.to_i}" if options[:use_cache] == true
|
180
|
+
xml_swf_path << "&timeout=#{options[:timeout]}&retry=#{options[:retry]}" if options[:timeout] == true
|
181
|
+
xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
|
182
|
+
tags = <<-TAGS
|
183
|
+
<object codebase="#{codebase}" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="#{options[:id]}" height="#{options[:height]}" width="#{options[:width]}">
|
184
|
+
<param name="scale" value="noscale">
|
185
|
+
<param name="align" value="#{options[:align]}">
|
186
|
+
<param name="bgcolor" value="#{options[:bgcolor]}">
|
187
|
+
<param name="wmode" value="#{options[:wmode]}">
|
188
|
+
<param name="movie" value="#{xml_swf_path}">
|
189
|
+
<param name="menu" value="true">
|
190
|
+
<param name="allowFullScreen" value="true">
|
191
|
+
<param name="allowScriptAccess" value="sameDomain">
|
192
|
+
<param name="quality" value="high">
|
193
|
+
<param name="play" value="true">
|
194
|
+
<param name="devicefont" value="false">
|
195
|
+
<embed scale="noscale"
|
196
|
+
allowfullscreen="true"
|
197
|
+
allowscriptaccess="sameDomain"
|
198
|
+
bgcolor="#{options[:bgcolor]}"
|
199
|
+
devicefont="false"
|
200
|
+
src="#{xml_swf_path}"
|
201
|
+
menu="true"
|
202
|
+
name="#{options[:id]}"
|
203
|
+
play="true"
|
204
|
+
pluginspage="http://www.macromedia.com/go/getflashplayer"
|
205
|
+
quality="high"
|
206
|
+
salign="#{options[:salign]}"
|
207
|
+
src="#{xml_swf_path}"
|
208
|
+
type="application/x-shockwave-flash"
|
209
|
+
wmode="#{options[:wmode]}"
|
210
|
+
salign="#{options[:salign]}"
|
211
|
+
height="#{options[:height]}"
|
212
|
+
width="#{options[:width]}">
|
213
|
+
</object>
|
214
|
+
TAGS
|
215
|
+
end
|
216
|
+
|
217
|
+
# generated the object and embed tag necessary for the flash movie
|
218
|
+
def generate_flash_tag( url, swf_path, swf_file, options )
|
219
|
+
# Setup options for opaque mode
|
220
|
+
setup_wmode( options )
|
221
|
+
|
222
|
+
# setup width and height
|
223
|
+
setup_movie_size( options )
|
224
|
+
|
225
|
+
color_param = tag( 'param', {:name => 'bgcolor', :value => options[:bgcolor]}, true )
|
226
|
+
color_param += tag( 'param', {:name => "wmode", :value => options[:wmode]}, true )
|
227
|
+
|
228
|
+
xml_swf_path = gen_swf_path( swf_path, options[:swf_path], url )
|
229
|
+
xml_swf_path << "×tamp=#{Time.now.to_i}" if options[:cache] == false
|
230
|
+
xml_swf_path << "&timeout=#{options[:timeout]}" if options[:timeout]
|
231
|
+
xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
|
232
|
+
|
233
|
+
# if options[:tag_type] == "object"
|
234
|
+
tags = <<-TAGS
|
235
|
+
<object codebase="#{codebase}" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="#{options[:id]}" height="#{options[:height]}" width="#{options[:width]}">
|
236
|
+
<param name="scale" value="noscale">
|
237
|
+
<param name="salign" value="#{options[:salign]}">
|
238
|
+
<param name="bgcolor" value="#{options[:bgcolor]}">
|
239
|
+
<param name="wmode" value="#{options[:wmode]}">
|
240
|
+
<param name="movie" value="#{options[:swf_path]}/#{swf_file}">
|
241
|
+
<param name="FlashVars" value="#{xml_swf_path}&chart_id=#{options[:id]}">
|
242
|
+
<param name="menu" value="true">
|
243
|
+
<param name="allowFullScreen" value="true">
|
244
|
+
<param name="allowScriptAccess" value="sameDomain">
|
245
|
+
<param name="quality" value="high">
|
246
|
+
<param name="play" value="true">
|
247
|
+
<param name="devicefont" value="false">
|
248
|
+
<embed scale="noscale"
|
249
|
+
allowfullscreen="true"
|
250
|
+
allowscriptaccess="sameDomain"
|
251
|
+
bgcolor="#{options[:bgcolor]}"
|
252
|
+
devicefont="false"
|
253
|
+
flashvars="#{xml_swf_path}"
|
254
|
+
menu="true"
|
255
|
+
name="#{options[:id]}"
|
256
|
+
play="true"
|
257
|
+
pluginspage="http://www.macromedia.com/go/getflashplayer"
|
258
|
+
quality="high"
|
259
|
+
salign="#{options[:salign]}"
|
260
|
+
src="#{options[:swf_path]}/#{swf_file}"
|
261
|
+
type="application/x-shockwave-flash"
|
262
|
+
wmode="#{options[:wmode]}"
|
263
|
+
align="#{options[:align]}"
|
264
|
+
height="#{options[:height]}"
|
265
|
+
width="#{options[:width]}"/>
|
266
|
+
</object>
|
267
|
+
TAGS
|
268
|
+
# else
|
269
|
+
# tags = <<-TAGS
|
270
|
+
# <embed scale="noscale"
|
271
|
+
# allowfullscreen="true"
|
272
|
+
# allowscriptaccess="sameDomain"
|
273
|
+
# bgcolor="#{options[:bgcolor]}"
|
274
|
+
# devicefont="false"
|
275
|
+
# flashvars="#{xml_swf_path}"
|
276
|
+
# menu="true"
|
277
|
+
# name="#{options[:id]}"
|
278
|
+
# play="true"
|
279
|
+
# pluginspage="http://www.macromedia.com/go/getflashplayer"
|
280
|
+
# quality="high"
|
281
|
+
# salign="#{options[:salign]}"
|
282
|
+
# src="#{options[:swf_path]}/#{swf_file}"
|
283
|
+
# type="application/x-shockwave-flash"
|
284
|
+
# wmode="#{options[:wmode]}"
|
285
|
+
# align="#{options[:align]}"
|
286
|
+
# height="#{options[:height]}"
|
287
|
+
# width="#{options[:width]}"/>
|
288
|
+
# TAGS
|
289
|
+
# end
|
290
|
+
tags
|
291
|
+
end
|
292
|
+
|
293
|
+
# escape url
|
294
|
+
def escape_url( url )
|
295
|
+
CGI.escape( url.gsub( /&/, '&' ) )
|
51
296
|
end
|
52
|
-
|
53
|
-
xml_swf_path = xml_swf % [options[:swf_path], options[:swf_path], url ]
|
54
|
-
xml_swf_path << "×tamp=#{Time.now.to_i}" if options[:cache] == false
|
55
|
-
xml_swf_path << "&timeout=#{options[:timeout]}" if options[:timeout]
|
56
|
-
xml_swf_path << "&stage_width=#{options[:width]}&stage_height=#{options[:height]}" if options[:use_stage] == true
|
57
|
-
content_tag( 'object',
|
58
|
-
tag( 'param',
|
59
|
-
{:name => "movie",
|
60
|
-
:value => xml_swf_path}, true ) +
|
61
|
-
tag( 'param',
|
62
|
-
{:name => "quality",
|
63
|
-
:value => "high"}, true ) +
|
64
|
-
content_tag( 'embed', nil,
|
65
|
-
:src => xml_swf_path,
|
66
|
-
:quality => 'high',
|
67
|
-
:bgcolor => options[:bgcolor],
|
68
|
-
:wmode => options[:wmode],
|
69
|
-
:width => options[:width],
|
70
|
-
:height => options[:height],
|
71
|
-
:name => options[:id],
|
72
|
-
:swLiveConnect => "true",
|
73
|
-
:type => "application/x-shockwave-flash",
|
74
|
-
:pluginspage => "http://www.macromedia.com/go/getflashplayer") +
|
75
|
-
color_param,
|
76
|
-
:classid => class_id,
|
77
|
-
:codebase => codebase,
|
78
|
-
:data => xml_swf_path,
|
79
|
-
:style => options[:style],
|
80
|
-
:width => options[:width], :height => options[:height],
|
81
|
-
:stage_width => options[:width], :stage_height => options[:height], :id => options[:id] )
|
82
|
-
end
|
83
297
|
|
84
|
-
|
85
|
-
|
298
|
+
# setup up wmode
|
299
|
+
# Set the wmode to opaque if a bgcolor is specified. If not set to
|
300
|
+
# transparent mode unless user overrides it
|
301
|
+
def setup_wmode( options )
|
302
|
+
if options[:bgcolor]
|
303
|
+
options[:wmode] = "opaque" unless options[:wmode]
|
304
|
+
else
|
305
|
+
options[:wmode] = "transparent" unless options[:wmode]
|
306
|
+
options[:bgcolor] = "#FFFFFF"
|
307
|
+
end
|
308
|
+
end
|
86
309
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
310
|
+
# Check args for size option in the format wXy (Submitted by Sam Livingston-Gray)
|
311
|
+
def setup_movie_size( options )
|
312
|
+
if options[:size] =~ /(\d+)x(\d+)/
|
313
|
+
options[:width] = $1
|
314
|
+
options[:height] = $2
|
315
|
+
options.delete :size
|
316
|
+
end
|
317
|
+
end
|
91
318
|
|
92
319
|
# All this stolen form rails to make Ziya work with other fmks....
|
93
320
|
def tag(name, options = nil, open = false, escape = true)
|