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
data/charts/charts.swf
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/fred.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# GAUGE IDEAS ??
|
2
|
+
|
3
|
+
css_parser for ruby
|
4
|
+
|
5
|
+
gauge = Ziya::Gauges::Base.new( :id => 'volume' )
|
6
|
+
gauge.add( Ziya::Gauges::Support::RadialTicks.new( :id => 'ticks' ) )
|
7
|
+
|
8
|
+
gauge 'volume'
|
9
|
+
radial_ticks 'volume_ticks'
|
10
|
+
rotate( circle( :circle_1), circle( :circle_2 ) )
|
11
|
+
|
12
|
+
|
13
|
+
gauge#volume {
|
14
|
+
x: 100;
|
15
|
+
y: 100;
|
16
|
+
radius: 35;
|
17
|
+
}
|
18
|
+
|
19
|
+
gauge#volume rotate {
|
20
|
+
x: 100;
|
21
|
+
y: 75;
|
22
|
+
}
|
23
|
+
|
24
|
+
gauge = Ziya::Gauges::Base.new( :id => "fred" )
|
25
|
+
gauge.add( :ticks, :volume_ticks )
|
26
|
+
gauge.add( :circle, :circle_1 )
|
27
|
+
gauge.add( :circle, :circle_2 )
|
28
|
+
gauge.add( :rotate, :circle_1, :circle_2 )
|
29
|
+
gauge.to_xml
|
30
|
+
|
31
|
+
gauge#fred {
|
32
|
+
}
|
33
|
+
|
34
|
+
gauge#fred circle#volume_ticks {
|
35
|
+
|
36
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%= gauge :base %>
|
2
|
+
<%= dial :circle, :circle_1 %>
|
3
|
+
x: 10
|
4
|
+
y: 20
|
5
|
+
radius: 30
|
6
|
+
fill_alpha: 0
|
7
|
+
line_thickness: 5
|
8
|
+
|
9
|
+
<%= dial :text, :title %>
|
10
|
+
rotation: -90
|
11
|
+
size: 78
|
12
|
+
alpha: 10
|
13
|
+
x: -15
|
14
|
+
y: 300
|
15
|
+
color: ffffff
|
16
|
+
width: 300
|
17
|
+
text: Hello World
|
18
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= gauge :signal %>
|
2
|
+
<%= dial :text, :signal %>
|
3
|
+
x: 20
|
4
|
+
y: 30
|
5
|
+
width: 40
|
6
|
+
size: 16
|
7
|
+
align: center
|
8
|
+
color: <%= colorizer( options[:signal] ) %>
|
9
|
+
text: <%= options[:signal] %>
|
10
|
+
|
11
|
+
# show current signal
|
12
|
+
<%= signal_indicator( options[:x], options[:y], 20, 30, 10, 0, 360, 10, 20, "88ff00" ) %>
|
13
|
+
# shows delta from previous signal
|
14
|
+
<%= delta_indicator( options[:x]+35, options[:y]-22 ) %>
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# Thermometer design
|
3
|
+
# -----------------------------------------------------------------------------
|
4
|
+
<%= gauge :thermo %>
|
5
|
+
# -----------------------------------------------------------------------------
|
6
|
+
# Gauge Title
|
7
|
+
<%= dial :text, :gauge_title %>
|
8
|
+
rotation: -90
|
9
|
+
size: 75
|
10
|
+
alpha: 10
|
11
|
+
x: <%= options[:x] - 150 %>
|
12
|
+
y: <%= options[:y] + 270 %>
|
13
|
+
color: ffffff
|
14
|
+
width: 300
|
15
|
+
text: <%= options[:title] %>
|
16
|
+
|
17
|
+
# -----------------------------------------------------------------------------
|
18
|
+
# Thermo tube
|
19
|
+
<%= dial :rect, :neck %>
|
20
|
+
x: <%= options[:x] + 20 %>
|
21
|
+
y: <%= options[:y] + 20 %>
|
22
|
+
height: 150
|
23
|
+
width: 40
|
24
|
+
fill_alpha: 20
|
25
|
+
fill_color: <%= options[:gauge_color] %>
|
26
|
+
line_thickness: 8
|
27
|
+
|
28
|
+
# -----------------------------------------------------------------------------
|
29
|
+
# Thermo bottom
|
30
|
+
<%= dial :circle, :vase %>
|
31
|
+
x: <%= options[:x] + 40 %>
|
32
|
+
y: <%= options[:y] + 190 %>
|
33
|
+
radius: 48
|
34
|
+
line_thickness: 8
|
35
|
+
fill_color: <%= options[:gauge_color] %>
|
36
|
+
fill_alpha: 100
|
37
|
+
|
38
|
+
# main
|
39
|
+
<%= dial :circle, :vase_main %>
|
40
|
+
radius: 40
|
41
|
+
x: <%= options[:x] + 40 %>
|
42
|
+
y: <%= options[:y] + 190 %>
|
43
|
+
fill_color: <%= options[:gauge_color] %>
|
44
|
+
|
45
|
+
# reflection
|
46
|
+
<%= dial :circle, :vase_reflection_1 %>
|
47
|
+
x: <%= options[:x] + 40 %>
|
48
|
+
y: <%= options[:y] + 190 %>
|
49
|
+
radius: 27
|
50
|
+
fill_alpha: 50
|
51
|
+
fill_color: ffff00
|
52
|
+
|
53
|
+
# inside
|
54
|
+
<%= dial :circle, :vase_reflection_2 %>
|
55
|
+
x: <%= options[:x] + 35 %>
|
56
|
+
y: <%= options[:y] + 190 %>
|
57
|
+
radius: 28
|
58
|
+
fill_color: <%= options[:gauge_color] %>
|
59
|
+
|
60
|
+
# -----------------------------------------------------------------------------
|
61
|
+
# Scale Legends
|
62
|
+
<%= dial :text, :legend %>
|
63
|
+
x: <%= options[:x] %>
|
64
|
+
y: <%= options[:y] %>
|
65
|
+
size: 14
|
66
|
+
color: cccccc
|
67
|
+
width: 200
|
68
|
+
text: C F
|
69
|
+
|
70
|
+
# degree
|
71
|
+
<%= dial :circle, :degrees %>
|
72
|
+
x: <%= options[:x] %>
|
73
|
+
y: <%= options[:y] + 5 %>
|
74
|
+
radius: 2
|
75
|
+
fill_alpha: 0
|
76
|
+
line_color: cccccc
|
77
|
+
line_thickness: 1
|
78
|
+
|
79
|
+
# farenheit
|
80
|
+
<%= dial :circle, :farenheit %>
|
81
|
+
x: <%= options[:x] + 65 %>
|
82
|
+
y: <%= options[:y] + 5 %>
|
83
|
+
radius: 2
|
84
|
+
fill_alpha: 0
|
85
|
+
line_color: cccccc
|
86
|
+
line_thickness: 1
|
87
|
+
|
88
|
+
# -----------------------------------------------------------------------------
|
89
|
+
# Current Temperature
|
90
|
+
<%= dial :scale, :animation %>
|
91
|
+
x: <%= options[:x] + 40 %>
|
92
|
+
y: <%= options[:y] + 133 %>
|
93
|
+
direction: vertical
|
94
|
+
step: 5
|
95
|
+
start_scale: 100
|
96
|
+
end_scale: <%= options[:end_scale] %>
|
97
|
+
shake_span: 1
|
98
|
+
shake_frequency: 10
|
99
|
+
shadow_alpha: 0
|
100
|
+
<%= dials %>
|
101
|
+
<%= dial :rect, :due_point %>
|
102
|
+
x: <%= options[:x] + 24 %>
|
103
|
+
y: <%= options[:y] + 32 %>
|
104
|
+
height: 100
|
105
|
+
width: 32
|
106
|
+
fill_color: <%= options[:gauge_color] %>
|
107
|
+
|
108
|
+
# hides to of thermo base circle
|
109
|
+
<%= dial :rect, :z_patch %>
|
110
|
+
x: <%= options[:x] + 24 %>
|
111
|
+
y: <%= options[:y] + 132 %>
|
112
|
+
height: 30
|
113
|
+
width: 32
|
114
|
+
fill_alpha: 100
|
115
|
+
# fill_color: ff0000
|
116
|
+
fill_color: <%= options[:gauge_color] %>
|
117
|
+
|
118
|
+
<%= draw_celsius_scale( -10, 50 ) %>
|
119
|
+
<%= draw_farenheit_scale( 20, 120 ) %>
|
data/gauges/gauge.swf
ADDED
Binary file
|
data/lib/ziya.rb
CHANGED
@@ -11,7 +11,7 @@ unless defined? Ziya
|
|
11
11
|
PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
|
12
12
|
|
13
13
|
def self.default_configuration
|
14
|
-
{ :themes_dir => File.join( File.dirname(__FILE__), %w[.. themes] ),
|
14
|
+
{ :themes_dir => File.join( File.dirname(__FILE__), %w[.. charts themes] ),
|
15
15
|
:log_file => $stdout,
|
16
16
|
:log_level => :info }
|
17
17
|
end
|
@@ -22,8 +22,14 @@ unless defined? Ziya
|
|
22
22
|
@config = default_configuration.merge( opts )
|
23
23
|
@logger = opts[:logger] if opts[:logger]
|
24
24
|
|
25
|
-
# Verify existance of themes and helper dirs if any
|
26
|
-
|
25
|
+
# Verify existance of themes, designs and helper dirs if any
|
26
|
+
if themes_dir
|
27
|
+
raise "Unable to find themes directory `#{themes_dir}" unless File.exists?( themes_dir )
|
28
|
+
end
|
29
|
+
|
30
|
+
if designs_dir
|
31
|
+
raise "Unable to find designs directory `#{designs_dir}" unless File.exists?( designs_dir )
|
32
|
+
end
|
27
33
|
|
28
34
|
if helpers_dir
|
29
35
|
raise "Unable to find helper directory `#{helpers_dir}" unless File.exists?( helpers_dir )
|
@@ -31,8 +37,9 @@ unless defined? Ziya
|
|
31
37
|
|
32
38
|
# Add the ziya/lib to the ruby path...
|
33
39
|
$: << libpath
|
34
|
-
Ziya.require_all_libs_relative_to __FILE__
|
35
|
-
|
40
|
+
Ziya.require_all_libs_relative_to __FILE__
|
41
|
+
|
42
|
+
dump if config[:log_level] == :debug
|
36
43
|
end
|
37
44
|
|
38
45
|
# ZiYa configuration
|
@@ -49,6 +56,11 @@ unless defined? Ziya
|
|
49
56
|
def self.themes_dir
|
50
57
|
config[:themes_dir]
|
51
58
|
end
|
59
|
+
|
60
|
+
# the gauges designs root directory location
|
61
|
+
def self.designs_dir
|
62
|
+
config[:designs_dir]
|
63
|
+
end
|
52
64
|
|
53
65
|
# Debug
|
54
66
|
def self.dump #:nodoc:
|
data/lib/ziya/charts/area.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# -----------------------------------------------------------------------------
|
2
2
|
# Generates necessary xml for area chart
|
3
|
+
#
|
4
|
+
# Author: Fernand
|
3
5
|
# -----------------------------------------------------------------------------
|
4
6
|
require 'ziya/charts/base'
|
5
7
|
|
6
8
|
module Ziya::Charts
|
7
9
|
class Area < Base
|
8
|
-
|
10
|
+
# Creates an area chart
|
11
|
+
# <tt>:license</tt>:: the XML/SWF charts license
|
12
|
+
# <tt>:chart_id</tt>:: the name of the chart style sheet.
|
13
|
+
def initialize( license=nil, chart_id=nil )
|
9
14
|
super( license, chart_id )
|
10
15
|
@type = "area"
|
11
16
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -----------------------------------------------------------------------------
|
2
|
+
# Generates necessary xml for a 3d area chart
|
3
|
+
#
|
4
|
+
# Author: Fernand
|
5
|
+
# -----------------------------------------------------------------------------
|
6
|
+
module Ziya::Charts
|
7
|
+
class AreaThreed < Base
|
8
|
+
# Creates a 3d area chart
|
9
|
+
# <tt>:license</tt>:: the XML/SWF charts license
|
10
|
+
# <tt>:chart_id</tt>:: the name of the chart style sheet.
|
11
|
+
def initialize( license=nil, chart_id=nil )
|
12
|
+
super( license, chart_id )
|
13
|
+
@type = "3d area"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/ziya/charts/bar.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# -----------------------------------------------------------------------------
|
2
|
-
# Generates necessary xml for a
|
2
|
+
# Generates necessary xml for a Bar chart
|
3
|
+
#
|
4
|
+
# Author: Fernand
|
3
5
|
# -----------------------------------------------------------------------------
|
4
6
|
module Ziya::Charts
|
5
7
|
class Bar < Base
|
6
|
-
|
8
|
+
# Creates a bar chart
|
9
|
+
# <tt>:license</tt>:: the XML/SWF charts license
|
10
|
+
# <tt>:chart_id</tt>:: the name of the chart style sheet.
|
11
|
+
def initialize( license=nil, chart_id=nil )
|
7
12
|
super( license, chart_id )
|
8
|
-
@type = "bar"
|
13
|
+
@type = "bar"
|
9
14
|
end
|
10
15
|
end
|
11
16
|
end
|
data/lib/ziya/charts/base.rb
CHANGED
@@ -12,20 +12,29 @@
|
|
12
12
|
require 'ziya/helpers/base_helper'
|
13
13
|
require 'yaml'
|
14
14
|
|
15
|
+
# TODO Figure out the equiv require_dep for merb if any ??
|
16
|
+
# TODO Refact and clean up.
|
15
17
|
module Ziya::Charts
|
18
|
+
# The mother ship of all charts. This class figures out how to generate the
|
19
|
+
# correct xml to render the chart on the client side. This class handles loading
|
20
|
+
# style sheets and chart helper for the helper directory specified during
|
21
|
+
# initialization.
|
16
22
|
class Base
|
23
|
+
# blee blee
|
17
24
|
include Ziya::Helpers::BaseHelper
|
18
25
|
|
19
26
|
# =========================================================================
|
20
27
|
protected
|
21
28
|
# defines the various chart components
|
22
|
-
def self.declare_components
|
23
|
-
@components = [
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
+
def self.declare_components # :nodoc:
|
30
|
+
@components = [
|
31
|
+
:axis_category, :axis_ticks, :axis_value,
|
32
|
+
:chart_rect, :chart_border, :chart_grid_h, :chart_grid_v,
|
33
|
+
:chart_transition, :chart_label, :chart_guide, :legend,
|
34
|
+
:filter, :draw,
|
35
|
+
:series_color, :series_gap, :series_switch, :series_explode,
|
36
|
+
:chart_pref, :scroll,
|
37
|
+
:update, :link_data, :link]
|
29
38
|
@components.each { |a| attr_accessor a }
|
30
39
|
end
|
31
40
|
declare_components
|
@@ -33,44 +42,44 @@ module Ziya::Charts
|
|
33
42
|
# =========================================================================
|
34
43
|
public
|
35
44
|
|
36
|
-
attr_accessor :license, :id, :theme, :options, :size
|
37
|
-
attr_reader :type
|
45
|
+
attr_accessor :license, :id, :theme, :options, :size # :nodoc:
|
46
|
+
attr_reader :type # :nodoc:
|
38
47
|
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
42
|
-
#
|
43
|
-
# chart_id - the id of the chart used to associate a style with the chart.
|
44
|
-
# If chart_id is specified the framework will attempt to load the chart styles
|
48
|
+
# create a new chart.
|
49
|
+
# <tt>:license</tt>:: the XML/SWF charts license
|
50
|
+
# <tt>:chart_id</tt>:: the name of the chart style sheet.
|
51
|
+
# NOTE: If chart_id is specified the framework will attempt to load the chart styles
|
45
52
|
# from public/themes/theme_name/chart_id.yml
|
46
53
|
def initialize( license=nil, chart_id=nil )
|
47
54
|
@id = chart_id
|
48
55
|
@license = license
|
49
56
|
@options = {}
|
57
|
+
@series = []
|
50
58
|
@theme = default_theme
|
51
59
|
initialize_components
|
52
60
|
load_helpers( Ziya.helpers_dir ) if Ziya.helpers_dir
|
53
61
|
end
|
54
62
|
|
55
63
|
# class component accessor...
|
56
|
-
def self.components
|
64
|
+
def self.components # :nodoc:
|
57
65
|
@components
|
58
66
|
end
|
59
67
|
|
60
68
|
# -------------------------------------------------------------------------
|
61
69
|
# Default ZiYa theme
|
62
|
-
def default_theme
|
70
|
+
def default_theme # :nodoc:
|
63
71
|
File.join( Ziya.themes_dir, %w[default] )
|
64
72
|
end
|
65
73
|
|
66
74
|
# -------------------------------------------------------------------------
|
67
75
|
# Load up ERB style helpers
|
68
|
-
def load_helpers( helper_dir )
|
76
|
+
def load_helpers( helper_dir ) # :nodoc:
|
69
77
|
Dir.foreach(helper_dir) do |helper_file|
|
70
78
|
next unless helper_file =~ /^([a-z][a-z_]*_helper).rb$/
|
71
79
|
Ziya.logger.debug( ">>> ZiYa loading custom helper `#{$1}" )
|
72
|
-
require_dependency File.join(helper_dir, $1)
|
73
|
-
helper_module_name =
|
80
|
+
require_dependency File.join(helper_dir, $1)
|
81
|
+
helper_module_name = "Ziya::" + $1.gsub(/(^|_)(.)/) { $2.upcase }
|
82
|
+
# helper_module_name = $1.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
74
83
|
# if Ziya::Helpers.const_defined?(helper_module_name)
|
75
84
|
Ziya.logger.debug( "Include module #{helper_module_name}")
|
76
85
|
Ziya::Charts::Base.class_eval("include #{helper_module_name}")
|
@@ -78,14 +87,14 @@ module Ziya::Charts
|
|
78
87
|
end
|
79
88
|
end
|
80
89
|
|
81
|
-
# -------------------------------------------------------------------------
|
82
90
|
# Add chart components such as x and y axis labels, data points and chart
|
83
91
|
# labels.
|
84
92
|
#
|
85
93
|
# Example:
|
94
|
+
# my_chart = Ziya::Charts::Bar.new
|
86
95
|
# my_chart.add( :axis_category_text, ['2004', '2005', '2006'] )
|
87
96
|
# my_chart.add( :series, 'series A', [ 10, 20, 30], [ '10 dogs', '20 cats', '30 rats'] )
|
88
|
-
# my_chart.add( :
|
97
|
+
# my_chart.add( :axis_value_label, [ 'my dogs', 'my cats', 'my rats'] )
|
89
98
|
# my_chart.add( :user_data, :mykey, "Fred" )
|
90
99
|
#
|
91
100
|
# This will display a bar chart with x axis ticks my dogs, my cats, my fox and
|
@@ -97,28 +106,30 @@ module Ziya::Charts
|
|
97
106
|
# <tt>:axis_category_text</tt>:: Array of strings representing the x/y axis
|
98
107
|
# ticks dependending on the chart type. This
|
99
108
|
# value is required.
|
109
|
+
# <tt>:axis_category_label</tt>:: Array of strings representing the x axis
|
110
|
+
# labels. This is supported only for Scatter and Bubble charts.
|
111
|
+
# This value is optional. Specify nil for no label change.
|
100
112
|
# <tt>:series</tt>:: Specifies the series name and chart data points.
|
101
113
|
# The series name will be used to display chart legends.
|
102
114
|
# You must have at least one of these tag defined.
|
103
115
|
# You may also specify an array of strings to identifies the
|
104
116
|
# custom labels that will be used on top of the chart
|
105
|
-
# elements
|
106
|
-
# <tt>:
|
117
|
+
# elements
|
118
|
+
# <tt>:axis_value_label</tt>:: Array of strings representing the ticks on the x/y
|
107
119
|
# axis depending on the chart type. This is symmetrical
|
108
|
-
# to the <tt>
|
109
|
-
# chart axis.
|
120
|
+
# to the <tt>axis_category_label</tt> tag for the opposite
|
121
|
+
# chart axis. Specify nil for no label change.
|
110
122
|
# <tt>:user_data</tt>:: Used to make user data available to the ERB templates in
|
111
123
|
# the chart stylesheet yaml file. You must specify a key symbol
|
112
124
|
# and an ad-hoc value. The key will be used with the @options
|
113
125
|
# hash to access the user data.
|
114
|
-
# <tt>:composites</tt>:: Embeds multiple charts within the given chart.
|
126
|
+
# <tt>:composites</tt>:: Embeds multiple charts within the given chart via the draw image component.
|
115
127
|
# <tt>:chart_types</tt>:: Specify the chart types per series. This option should
|
116
128
|
# only be used with Mixed Charts !!
|
117
129
|
# <tt>:theme</tt>:: Specify the use of a given theme
|
118
130
|
#
|
119
|
-
# TODO Validation categories = series, series = labels, etc...
|
120
|
-
# BOZO !! If you have a series you'll need to define an axis_category for it
|
121
131
|
def add( *args )
|
132
|
+
# TODO Validation categories = series, series = labels, etc...
|
122
133
|
directive = args.shift
|
123
134
|
case directive
|
124
135
|
when :axis_category_text
|
@@ -126,26 +137,29 @@ module Ziya::Charts
|
|
126
137
|
raise ArgumentError, "Must specify an array of categories" if categories.empty?
|
127
138
|
categories.insert( 0, nil )
|
128
139
|
@options[directive] = categories
|
140
|
+
when :axis_category_label
|
141
|
+
labels = args.first.is_a?(Array) ? args.shift : []
|
142
|
+
raise ArgumentError, "Must specify an array of category labels" if labels.empty?
|
143
|
+
@options[directive] = labels
|
129
144
|
when :composites
|
130
145
|
composites = args.first.is_a?(Array) ? args.shift: []
|
131
146
|
raise ArgumentError, "Must specify an array of urls for the composite chart(s)" if composites.empty?
|
132
147
|
@options[directive] = composites
|
133
|
-
when :
|
148
|
+
when :axis_value_label
|
134
149
|
values = args.first.is_a?(Array) ? args.shift : []
|
135
150
|
raise ArgumentError, "Must specify an array of values" if values.empty?
|
136
151
|
@options[directive] = values
|
137
152
|
when :series
|
138
153
|
legend = args.first.is_a?(String) ? args.shift : ""
|
139
154
|
raise ArgumentError, "Must specify a series name" if legend.empty?
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
@options[labels_name.to_sym] = labels unless labels.empty?
|
155
|
+
if args.first.is_a?( Array )
|
156
|
+
points = args.shift || []
|
157
|
+
raise ArgumentError, "Must specify an array of data points" if points.empty?
|
158
|
+
points.insert( 0, legend )
|
159
|
+
@series << points
|
160
|
+
else
|
161
|
+
raise ArgumentError, "Must specify an array of data points"
|
162
|
+
end
|
149
163
|
when :user_data
|
150
164
|
key = args.first.is_a?(Symbol) ? args.shift : ""
|
151
165
|
raise ArgumentError, "Must specify a key" if key.to_s.empty?
|
@@ -155,41 +169,29 @@ module Ziya::Charts
|
|
155
169
|
when :styles
|
156
170
|
styles = args.first.is_a?(String) ? args.shift : ""
|
157
171
|
raise ArgumentError, "Must specify a set of styles" if styles.to_s.empty?
|
158
|
-
@options[
|
172
|
+
@options[directive] = styles
|
159
173
|
when :chart_types
|
160
174
|
types = args.first.is_a?(Array) ? args.shift : []
|
161
175
|
raise ArgumentError, "Must specify a set of chart types" if types.to_s.empty?
|
162
|
-
@options[
|
176
|
+
@options[directive] = types
|
163
177
|
when :theme
|
164
178
|
theme = args.first.is_a?(String) ? args.shift : ""
|
165
179
|
raise ArgumentError, "Must specify a theme name" if theme.to_s.empty?
|
166
180
|
@theme = "#{Ziya.themes_dir}/#{theme}"
|
167
181
|
else raise ArgumentError, "Invalid directive must be one of " +
|
168
|
-
":
|
182
|
+
":axis_category_text, :axis_value, :series, :user_data"
|
169
183
|
end
|
170
184
|
end
|
171
|
-
|
172
|
-
#
|
173
|
-
# Set up theme for overall look and feel
|
174
|
-
# <tt>theme_name</tt> the name of the directory that contains the chart styles
|
175
|
-
def self.theme( theme_name )
|
176
|
-
@theme = "#{Ziya.themes_dir}/#{theme_name}"
|
177
|
-
end
|
178
|
-
|
179
|
-
# -------------------------------------------------------------------------
|
180
|
-
# Return the local theme if set or the global theme otherwise
|
181
|
-
def theme
|
182
|
-
@theme || @@theme
|
183
|
-
end
|
184
|
-
|
185
|
-
# ---------------------------------------------------------------------------
|
186
|
-
# Spews the graph specification to xml
|
185
|
+
|
186
|
+
# spews the graph specification to a string
|
187
187
|
# <tt>:partial</tt>:: You can specify this option to only update parts of the charts
|
188
188
|
# that have actually changed. This is useful for live update and
|
189
189
|
# link update where you may not need to redraw the whole chart.
|
190
190
|
def to_s( options={} )
|
191
191
|
@partial = options[:partial] || false
|
192
192
|
@xml = Builder::XmlMarkup.new
|
193
|
+
# Forces utf8 encoding on xml stream
|
194
|
+
@xml.instruct! :xml, :version => "1.0", :encoding => "UTF-8"
|
193
195
|
@xml.chart do
|
194
196
|
@xml.license( @license ) unless @license.nil?
|
195
197
|
if !@type.nil?
|
@@ -203,23 +205,13 @@ module Ziya::Charts
|
|
203
205
|
setup_series
|
204
206
|
end
|
205
207
|
@xml.to_s.gsub( /<to_s\/>/, '' )
|
206
|
-
end
|
207
|
-
|
208
|
-
# -------------------------------------------------------------------------
|
209
|
-
# Synonym for to_s
|
208
|
+
end
|
209
|
+
# dumps the chart design to xml for client side consumption
|
210
210
|
alias to_xml to_s
|
211
211
|
|
212
212
|
# =========================================================================
|
213
213
|
private
|
214
214
|
|
215
|
-
# -------------------------------------------------------------------------
|
216
|
-
# Make sure series appear in the right order
|
217
|
-
def next_series_count
|
218
|
-
count = 1
|
219
|
-
@options.keys.each{ |k| count+=1 unless k.to_s.index( "series_").nil? }
|
220
|
-
count
|
221
|
-
end
|
222
|
-
|
223
215
|
# -------------------------------------------------------------------------
|
224
216
|
# Inflate object state based on object hierarchy
|
225
217
|
def setup_state( state )
|
@@ -239,6 +231,7 @@ module Ziya::Charts
|
|
239
231
|
file_name = "#{theme}/#{instance}" unless instance.nil?
|
240
232
|
Ziya.logger.debug ">>> Ziya attempt to load style sheet file '#{file_name}"
|
241
233
|
yml = IO.read( "#{file_name}.yml" )
|
234
|
+
# Ziya.logger.debug( yml )
|
242
235
|
load = YAML::load( erb_render( yml ) )
|
243
236
|
Ziya.logger.info ">>> ZiYa [loading styles] -- #{file_name}.yml"
|
244
237
|
return load
|
@@ -260,120 +253,188 @@ module Ziya::Charts
|
|
260
253
|
|
261
254
|
# -------------------------------------------------------------------------
|
262
255
|
# Generates xml element for given data set
|
263
|
-
|
264
|
-
|
256
|
+
# TODO Lame ! Refact...
|
257
|
+
def gen_data_points( series_name, labels=nil )
|
258
|
+
values = @options[series_name]
|
259
|
+
labels.insert( 0, nil ) if labels
|
265
260
|
@xml.row do
|
266
|
-
if
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
261
|
+
if values.respond_to? :each
|
262
|
+
values.each do |c|
|
263
|
+
if c.nil?
|
264
|
+
@xml.null
|
265
|
+
elsif c.instance_of? String
|
266
|
+
if labels and !labels.empty?
|
267
|
+
label = labels.shift
|
268
|
+
if label
|
269
|
+
@xml.string( :label => label ) { |x| x.text!( c ) }
|
270
|
+
else
|
271
|
+
@xml.string( c )
|
272
|
+
end
|
273
|
+
else
|
274
|
+
@xml.string( c )
|
275
|
+
end
|
276
|
+
elsif c.respond_to? :zero?
|
277
|
+
if labels and !labels.empty?
|
278
|
+
label = labels.shift
|
279
|
+
if label
|
280
|
+
@xml.number( :label => label ) { |x| x.text!( c.to_s ) }
|
281
|
+
else
|
282
|
+
@xml.number( c )
|
283
|
+
end
|
284
|
+
else
|
285
|
+
@xml.number( c )
|
286
|
+
end
|
287
|
+
end
|
271
288
|
end
|
272
289
|
else
|
273
|
-
@xml.string(
|
290
|
+
@xml.string( values )
|
274
291
|
end
|
275
292
|
end
|
276
293
|
end
|
277
294
|
|
278
|
-
# -------------------------------------------------------------------------
|
279
|
-
# Generates custom axis values
|
280
|
-
def gen_axis_value_text( values )
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
end
|
295
|
+
# # -------------------------------------------------------------------------
|
296
|
+
# # Generates custom axis values
|
297
|
+
# def gen_axis_value_text( values )
|
298
|
+
# return if values.nil? or values.empty?
|
299
|
+
# @xml.axis_value_text do
|
300
|
+
# values.each { |v| @xml.string( v ) }
|
301
|
+
# end
|
302
|
+
# end
|
286
303
|
|
304
|
+
# # -------------------------------------------------------------------------
|
305
|
+
# # Check if the series are named
|
306
|
+
# def named_series?( names )
|
307
|
+
# names.each do |name|
|
308
|
+
# next unless name.to_s.index( 'series_' )
|
309
|
+
# return @options[name][0].instance_of?(String) if @options[name] and !@options[name].empty?
|
310
|
+
# end
|
311
|
+
# false
|
312
|
+
# end
|
313
|
+
|
314
|
+
# # -------------------------------------------------------------------------
|
315
|
+
# # Check if the options have custom labels ie :label_xxx tag
|
316
|
+
# def has_labels( names )
|
317
|
+
# names.each do |name|
|
318
|
+
# next unless name.to_s.index( 'labels_' )
|
319
|
+
# return @options[name].size if @options[name] and !@options[name].empty?
|
320
|
+
# end
|
321
|
+
# 0
|
322
|
+
# end
|
323
|
+
|
324
|
+
# # -------------------------------------------------------------------------
|
325
|
+
# # Generates custom labels
|
326
|
+
# def gen_labels( series_name, is_default=false )
|
327
|
+
# cltn = @options[series_name]
|
328
|
+
# cltn.insert( 0, nil ) unless is_default
|
329
|
+
# @xml.row do
|
330
|
+
# cltn.each { |c| ((c.nil? or c.to_s.empty?) ? @xml.null : @xml.string( c )) }
|
331
|
+
# end
|
332
|
+
# end
|
333
|
+
|
334
|
+
# # ------------------------------------------------------------------------
|
335
|
+
# # Generates default series labels
|
336
|
+
# def gen_default_labels( size )
|
337
|
+
# labels = []
|
338
|
+
# size.times { |i| labels << nil }
|
339
|
+
# @xml.row do
|
340
|
+
# labels.each { |c| @xml.null }
|
341
|
+
# end
|
342
|
+
# end
|
343
|
+
|
344
|
+
# ------------------------------------------------------------------------
|
345
|
+
# generates chart data row
|
346
|
+
# TODO Validate options !!
|
347
|
+
def gen_row_data( value, opts=nil )
|
348
|
+
if value.instance_of? String
|
349
|
+
gen_string_data( value, opts )
|
350
|
+
elsif value.respond_to? :zero?
|
351
|
+
gen_number_data( value, opts )
|
352
|
+
end
|
353
|
+
end
|
354
|
+
|
287
355
|
# -------------------------------------------------------------------------
|
288
|
-
#
|
289
|
-
def
|
290
|
-
|
291
|
-
|
292
|
-
|
356
|
+
# generates string chart_value
|
357
|
+
def gen_string_data( value, opts )
|
358
|
+
if opts
|
359
|
+
@xml.string( opts ) { |x| x.text!( value ) }
|
360
|
+
else
|
361
|
+
@xml.string( value )
|
293
362
|
end
|
294
|
-
false
|
295
363
|
end
|
296
364
|
|
297
365
|
# -------------------------------------------------------------------------
|
298
|
-
#
|
299
|
-
def
|
300
|
-
|
301
|
-
|
302
|
-
|
366
|
+
# generates number chart_value
|
367
|
+
def gen_number_data( value, opts )
|
368
|
+
if opts
|
369
|
+
@xml.number( opts ) { |x| x.text!( value.to_s ) }
|
370
|
+
else
|
371
|
+
@xml.number( value )
|
303
372
|
end
|
304
|
-
|
305
|
-
end
|
373
|
+
end
|
306
374
|
|
307
375
|
# -------------------------------------------------------------------------
|
308
|
-
#
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
end
|
325
|
-
end
|
376
|
+
# generates chart data points
|
377
|
+
# BOZO !! Check args on hash
|
378
|
+
def gen_chart_data( series )
|
379
|
+
@xml.row do
|
380
|
+
series.each do |row|
|
381
|
+
if row.nil?
|
382
|
+
@xml.null
|
383
|
+
elsif row.instance_of? Hash
|
384
|
+
value = row.delete( :value )
|
385
|
+
gen_row_data( value, row )
|
386
|
+
else
|
387
|
+
gen_row_data( row )
|
388
|
+
end
|
389
|
+
end
|
390
|
+
end
|
391
|
+
end
|
326
392
|
|
327
393
|
# -------------------------------------------------------------------------
|
328
394
|
# Lay down graph data points and labels if any
|
329
395
|
# TODO Validate series sizes/label sizes
|
330
396
|
def setup_series
|
331
|
-
|
332
|
-
named_series = named_series?( keys )
|
397
|
+
raise "You must specify an axis_category_text with your series." if !@series.empty? and ! @options[:axis_category_text]
|
333
398
|
|
334
|
-
|
335
|
-
|
336
|
-
unless @options[:axis_category_text].nil?
|
399
|
+
if @options[:axis_category_text]
|
337
400
|
@xml.chart_data do
|
338
|
-
# Setup axis categories
|
339
|
-
# @options[:axis_category_text].insert( 0, nil ) if named_series
|
340
401
|
gen_data_points( :axis_category_text )
|
341
|
-
|
342
|
-
|
402
|
+
# render xml for each series
|
403
|
+
@series.each do |series|
|
404
|
+
gen_chart_data( series )
|
343
405
|
end
|
344
406
|
end
|
345
407
|
end
|
346
|
-
|
347
|
-
|
348
|
-
if
|
349
|
-
@xml.
|
350
|
-
|
351
|
-
|
352
|
-
@options[:labels] = labels
|
353
|
-
gen_labels( :labels, true )
|
354
|
-
|
355
|
-
# Generates series labels if specified
|
356
|
-
keys.each do |k|
|
357
|
-
next unless k.to_s.index( /^series/ )
|
358
|
-
label = k.to_s.gsub( /series/, 'labels' ).to_sym
|
359
|
-
unless @options[label].nil?
|
360
|
-
gen_labels( label )
|
361
|
-
else
|
362
|
-
gen_default_labels( size )
|
363
|
-
end
|
408
|
+
|
409
|
+
# display category labels if any
|
410
|
+
if @options[:axis_category_label]
|
411
|
+
@xml.axis_category_label do
|
412
|
+
@options[:axis_category_label].each do |label|
|
413
|
+
label ? @xml.string( label ) : @xml.null
|
364
414
|
end
|
365
|
-
end
|
415
|
+
end
|
366
416
|
end
|
417
|
+
|
418
|
+
# display axis value labels if any
|
419
|
+
if @options[:axis_value_label]
|
420
|
+
@xml.axis_value_label do
|
421
|
+
@options[:axis_value_label].each do |label|
|
422
|
+
label ? @xml.string( label ) : @xml.null
|
423
|
+
end
|
424
|
+
end
|
425
|
+
end
|
426
|
+
|
367
427
|
end
|
368
428
|
|
369
429
|
# -------------------------------------------------------------------------
|
370
430
|
# Walk up class hierarchy to find chart inheritance classes
|
371
431
|
def ancestors
|
372
|
-
excludes = [ "Kernel", "Object", "CommonUtils" ]
|
373
432
|
ancestors = self.class.ancestors.reverse
|
374
|
-
|
375
|
-
ancestors.
|
376
|
-
|
433
|
+
allow = false
|
434
|
+
ancestors.map do |k|
|
435
|
+
allow = true if k == Ziya::Charts::Base
|
436
|
+
k if allow
|
437
|
+
end.compact!
|
377
438
|
end
|
378
439
|
|
379
440
|
# -------------------------------------------------------------------------
|
@@ -407,10 +468,6 @@ module Ziya::Charts
|
|
407
468
|
# Generates xml for look and feel data
|
408
469
|
def setup_lnf
|
409
470
|
load_lnf
|
410
|
-
if @options[:axis_value_text] and ! @options[:axis_value_text].empty?
|
411
|
-
gen_axis_value_text( @options[:axis_value_text] )
|
412
|
-
end
|
413
|
-
|
414
471
|
unless @partial
|
415
472
|
Base.components.each do |comp|
|
416
473
|
next unless self.send( comp ).configured? # => Don't include non configured components
|