derailed-ziya 2.0.6 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Manifest.txt +59 -2
 - data/README.txt +63 -54
 - data/Rakefile +2 -2
 - 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/clim.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/dono.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/piim.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/themes/readme.txt +13 -0
 - data/lib/ziya/charts/base.rb +124 -182
 - data/lib/ziya/charts/custom.rb +18 -0
 - data/lib/ziya/charts/image_column.rb +18 -0
 - data/lib/ziya/charts/image_pie.rb +18 -0
 - data/lib/ziya/components/area.rb +2 -3
 - data/lib/ziya/components/button.rb +18 -0
 - data/lib/ziya/components/chart_guide.rb +4 -2
 - data/lib/ziya/components/chart_note.rb +18 -0
 - data/lib/ziya/components/draw.rb +4 -6
 - data/lib/ziya/components/flash_to_javascript.rb +25 -0
 - data/lib/ziya/components/tooltip.rb +20 -0
 - data/lib/ziya/helpers/base_helper.rb +4 -4
 - data/lib/ziya/version.rb +1 -1
 - data/lib/ziya/ziya_helper.rb +32 -19
 - data/release_notes.txt +10 -0
 - data/spec/charts/base_spec.rb +7 -6
 - data/spec/charts/chart_type_spec.rb +8 -0
 - data/spec/components/draw_spec.rb +9 -4
 - data/spec/ziya_helper_spec.rb +1 -1
 - data/tasks/doc.rake +12 -7
 - metadata +132 -3
 
    
        data/lib/ziya/charts/base.rb
    CHANGED
    
    | 
         @@ -5,6 +5,8 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
            #
         
     | 
| 
       6 
6 
     | 
    
         
             
            # TODO !! Match helpers with chart class name
         
     | 
| 
       7 
7 
     | 
    
         
             
            # TODO !! Add accessor for specifying refresh look and data links on comps
         
     | 
| 
      
 8 
     | 
    
         
            +
            # TODO Figure out the equiv require_dep for merb if any ??
         
     | 
| 
      
 9 
     | 
    
         
            +
            # TODO Refact and clean up. 
         
     | 
| 
       8 
10 
     | 
    
         
             
            #
         
     | 
| 
       9 
11 
     | 
    
         
             
            # Author:: Fernand Galiana
         
     | 
| 
       10 
12 
     | 
    
         
             
            # Date::   Dec 15th, 2006
         
     | 
| 
         @@ -12,29 +14,47 @@ 
     | 
|
| 
       12 
14 
     | 
    
         
             
            require 'ziya/helpers/base_helper'
         
     | 
| 
       13 
15 
     | 
    
         
             
            require 'yaml'
         
     | 
| 
       14 
16 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
            # TODO Figure out the equiv require_dep for merb if any ??
         
     | 
| 
       16 
     | 
    
         
            -
            # TODO Refact and clean up. 
         
     | 
| 
       17 
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.  
     | 
| 
       20 
     | 
    
         
            -
              #  
     | 
| 
       21 
     | 
    
         
            -
              #  
     | 
| 
      
 18 
     | 
    
         
            +
              # The mother ship of all charts. This abstract class figures out how to generate the 
         
     | 
| 
      
 19 
     | 
    
         
            +
              # correct xml to render the chart on the client side. It handles loading the look 
         
     | 
| 
      
 20 
     | 
    
         
            +
              # and feel via associated stylesheets. In order to customize the chart look and feel,
         
     | 
| 
      
 21 
     | 
    
         
            +
              # you must create a theme directory in your application public/charts/themes dir. And
         
     | 
| 
      
 22 
     | 
    
         
            +
              # reference it via the #add method using the :theme directive.
         
     | 
| 
       22 
23 
     | 
    
         
             
              class Base
         
     | 
| 
       23 
     | 
    
         
            -
                # blee blee
         
     | 
| 
       24 
24 
     | 
    
         
             
                include Ziya::Helpers::BaseHelper
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
                # =========================================================================                
         
     | 
| 
       27 
27 
     | 
    
         
             
                protected      
         
     | 
| 
       28 
28 
     | 
    
         
             
                  # defines the various chart components
         
     | 
| 
       29 
29 
     | 
    
         
             
                  def self.declare_components # :nodoc:
         
     | 
| 
       30 
     | 
    
         
            -
                    @components =  
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                      : 
     | 
| 
       33 
     | 
    
         
            -
                      : 
     | 
| 
       34 
     | 
    
         
            -
                      : 
     | 
| 
       35 
     | 
    
         
            -
                      : 
     | 
| 
       36 
     | 
    
         
            -
                      : 
     | 
| 
       37 
     | 
    
         
            -
                      : 
     | 
| 
      
 30 
     | 
    
         
            +
                    @components = 
         
     | 
| 
      
 31 
     | 
    
         
            +
                    [
         
     | 
| 
      
 32 
     | 
    
         
            +
                      :axis_category, 
         
     | 
| 
      
 33 
     | 
    
         
            +
                      :axis_ticks, 
         
     | 
| 
      
 34 
     | 
    
         
            +
                      :axis_value, 
         
     | 
| 
      
 35 
     | 
    
         
            +
                      :chart_rect, 
         
     | 
| 
      
 36 
     | 
    
         
            +
                      :chart_border, 
         
     | 
| 
      
 37 
     | 
    
         
            +
                      :chart_grid_h, 
         
     | 
| 
      
 38 
     | 
    
         
            +
                      :chart_grid_v,
         
     | 
| 
      
 39 
     | 
    
         
            +
                      :chart_note, 
         
     | 
| 
      
 40 
     | 
    
         
            +
                      :tooltip,
         
     | 
| 
      
 41 
     | 
    
         
            +
                      :chart_transition, 
         
     | 
| 
      
 42 
     | 
    
         
            +
                      :chart_label, 
         
     | 
| 
      
 43 
     | 
    
         
            +
                      :chart_guide, 
         
     | 
| 
      
 44 
     | 
    
         
            +
                      :legend,
         
     | 
| 
      
 45 
     | 
    
         
            +
                      :filter, 
         
     | 
| 
      
 46 
     | 
    
         
            +
                      :flash_to_javascript,
         
     | 
| 
      
 47 
     | 
    
         
            +
                      :draw, 
         
     | 
| 
      
 48 
     | 
    
         
            +
                      :series_color, 
         
     | 
| 
      
 49 
     | 
    
         
            +
                      :series, 
         
     | 
| 
      
 50 
     | 
    
         
            +
                      :series_explode, 
         
     | 
| 
      
 51 
     | 
    
         
            +
                      :chart_pref, 
         
     | 
| 
      
 52 
     | 
    
         
            +
                      :scroll,
         
     | 
| 
      
 53 
     | 
    
         
            +
                      :update, 
         
     | 
| 
      
 54 
     | 
    
         
            +
                      :link_data, 
         
     | 
| 
      
 55 
     | 
    
         
            +
                      :link, 
         
     | 
| 
      
 56 
     | 
    
         
            +
                      :context_menu
         
     | 
| 
      
 57 
     | 
    
         
            +
                    ]                              
         
     | 
| 
       38 
58 
     | 
    
         
             
                    @components.each { |a| attr_accessor a }      
         
     | 
| 
       39 
59 
     | 
    
         
             
                  end    
         
     | 
| 
       40 
60 
     | 
    
         
             
                  declare_components
         
     | 
| 
         @@ -46,15 +66,16 @@ module Ziya::Charts 
     | 
|
| 
       46 
66 
     | 
    
         
             
                attr_reader   :type # :nodoc:
         
     | 
| 
       47 
67 
     | 
    
         | 
| 
       48 
68 
     | 
    
         
             
                # create a new chart.
         
     | 
| 
       49 
     | 
    
         
            -
                # <tt 
     | 
| 
       50 
     | 
    
         
            -
                # <tt 
     | 
| 
      
 69 
     | 
    
         
            +
                # <tt>license</tt> -- the XML/SWF charts license
         
     | 
| 
      
 70 
     | 
    
         
            +
                # <tt>chart_id</tt> -- the name of the chart style sheet.
         
     | 
| 
       51 
71 
     | 
    
         
             
                # NOTE: If chart_id is specified the framework will attempt to load the chart styles
         
     | 
| 
       52 
72 
     | 
    
         
             
                # from public/themes/theme_name/chart_id.yml 
         
     | 
| 
       53 
     | 
    
         
            -
                def initialize( license=nil, chart_id=nil ) 
         
     | 
| 
      
 73 
     | 
    
         
            +
                def initialize( license=nil, chart_id=nil ) # :nodoc:
         
     | 
| 
       54 
74 
     | 
    
         
             
                  @id          = chart_id
         
     | 
| 
       55 
75 
     | 
    
         
             
                  @license     = license
         
     | 
| 
       56 
76 
     | 
    
         
             
                  @options     = {}
         
     | 
| 
       57 
77 
     | 
    
         
             
                  @series_desc = []
         
     | 
| 
      
 78 
     | 
    
         
            +
                  @annotations = []
         
     | 
| 
       58 
79 
     | 
    
         
             
                  @theme       = default_theme
         
     | 
| 
       59 
80 
     | 
    
         
             
                  @render_mode = Base.mode_reset
         
     | 
| 
       60 
81 
     | 
    
         
             
                  initialize_components
         
     | 
| 
         @@ -66,20 +87,22 @@ module Ziya::Charts 
     | 
|
| 
       66 
87 
     | 
    
         
             
                  @components
         
     | 
| 
       67 
88 
     | 
    
         
             
                end
         
     | 
| 
       68 
89 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                # don't  
     | 
| 
       70 
     | 
    
         
            -
                def self.mode_data()  
     | 
| 
      
 90 
     | 
    
         
            +
                # don't load stylesheets just gen code for chart..
         
     | 
| 
      
 91 
     | 
    
         
            +
                def self.mode_data() #:nodoc:
         
     | 
| 
      
 92 
     | 
    
         
            +
                  1 
         
     | 
| 
      
 93 
     | 
    
         
            +
                end 
         
     | 
| 
       71 
94 
     | 
    
         | 
| 
       72 
95 
     | 
    
         
             
                # renders everything
         
     | 
| 
       73 
     | 
    
         
            -
                def self.mode_reset 
     | 
| 
      
 96 
     | 
    
         
            +
                def self.mode_reset #:nodoc:
         
     | 
| 
      
 97 
     | 
    
         
            +
                  0 
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
       74 
99 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
                #  
     | 
| 
       76 
     | 
    
         
            -
                # Default ZiYa theme
         
     | 
| 
      
 100 
     | 
    
         
            +
                # default ZiYa theme
         
     | 
| 
       77 
101 
     | 
    
         
             
                def default_theme # :nodoc:
         
     | 
| 
       78 
102 
     | 
    
         
             
                  File.join( Ziya.themes_dir, %w[default] )
         
     | 
| 
       79 
103 
     | 
    
         
             
                end
         
     | 
| 
       80 
104 
     | 
    
         | 
| 
       81 
     | 
    
         
            -
                #  
     | 
| 
       82 
     | 
    
         
            -
                # Load up ERB style helpers
         
     | 
| 
      
 105 
     | 
    
         
            +
                # load up ERB style helpers
         
     | 
| 
       83 
106 
     | 
    
         
             
                def load_helpers( helper_dir ) # :nodoc:    
         
     | 
| 
       84 
107 
     | 
    
         
             
                  Dir.foreach(helper_dir) do |helper_file| 
         
     | 
| 
       85 
108 
     | 
    
         
             
                    next unless helper_file =~ /^([a-z][a-z_]*_helper).rb$/
         
     | 
| 
         @@ -99,48 +122,46 @@ module Ziya::Charts 
     | 
|
| 
       99 
122 
     | 
    
         
             
                  end
         
     | 
| 
       100 
123 
     | 
    
         
             
                end    
         
     | 
| 
       101 
124 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
                # Add chart components  
     | 
| 
       103 
     | 
    
         
            -
                # labels.     
         
     | 
| 
      
 125 
     | 
    
         
            +
                # Add chart components to a given chart.  
         
     | 
| 
       104 
126 
     | 
    
         
             
                # 
         
     | 
| 
       105 
     | 
    
         
            -
                # Example:
         
     | 
| 
       106 
     | 
    
         
            -
                #   my_chart = Ziya::Charts::Bar.new
         
     | 
| 
       107 
     | 
    
         
            -
                #   my_chart.add( :axis_category_text, ['2004', '2005', '2006'] ) 
         
     | 
| 
       108 
     | 
    
         
            -
                #   my_chart.add( :axis_category_label, [ '10 dogs', '20 cats', '30 rats'] )
         
     | 
| 
       109 
     | 
    
         
            -
                #   my_chart.add( :series, 'series A', [ 10, 20, 30] )
         
     | 
| 
       110 
     | 
    
         
            -
                #   my_chart.add( :axis_value_label, [ 'my dogs', 'my cats', 'my rats'] )
         
     | 
| 
       111 
     | 
    
         
            -
                #   my_chart.add( :user_data, :mykey, "Fred" )
         
     | 
| 
       112 
     | 
    
         
            -
                #
         
     | 
| 
       113 
     | 
    
         
            -
                #   This will display a bar chart with x axis ticks my dogs, my cats, my fox and
         
     | 
| 
       114 
     | 
    
         
            -
                #   y axis values 2004, 2005, 2006. The labels on the bars will read 10 dogs, 
         
     | 
| 
       115 
     | 
    
         
            -
                #   20 cats, 30 rats
         
     | 
| 
       116 
     | 
    
         
            -
                #
         
     | 
| 
       117 
127 
     | 
    
         
             
                # The <tt>args</tt> must contain certain keys for the chart
         
     | 
| 
       118 
     | 
    
         
            -
                # to be  
     | 
| 
       119 
     | 
    
         
            -
                # 
     | 
| 
       120 
     | 
    
         
            -
                # 
     | 
| 
       121 
     | 
    
         
            -
                # 
     | 
| 
       122 
     | 
    
         
            -
                #  
     | 
| 
       123 
     | 
    
         
            -
                # 
     | 
| 
       124 
     | 
    
         
            -
                # 
     | 
| 
       125 
     | 
    
         
            -
                # <tt>: 
     | 
| 
       126 
     | 
    
         
            -
                # 
     | 
| 
       127 
     | 
    
         
            -
                # 
     | 
| 
       128 
     | 
    
         
            -
                # 
     | 
| 
       129 
     | 
    
         
            -
                # 
     | 
| 
       130 
     | 
    
         
            -
                # 
     | 
| 
       131 
     | 
    
         
            -
                #  
     | 
| 
       132 
     | 
    
         
            -
                # 
     | 
| 
       133 
     | 
    
         
            -
                # 
     | 
| 
       134 
     | 
    
         
            -
                # 
     | 
| 
       135 
     | 
    
         
            -
                #  
     | 
| 
       136 
     | 
    
         
            -
                # 
     | 
| 
       137 
     | 
    
         
            -
                # 
     | 
| 
       138 
     | 
    
         
            -
                # 
     | 
| 
       139 
     | 
    
         
            -
                # <tt>:composites</tt 
     | 
| 
       140 
     | 
    
         
            -
                #  
     | 
| 
       141 
     | 
    
         
            -
                # 
     | 
| 
       142 
     | 
    
         
            -
                #  
     | 
| 
      
 128 
     | 
    
         
            +
                # to be displayed correctly.
         
     | 
| 
      
 129 
     | 
    
         
            +
                #
         
     | 
| 
      
 130 
     | 
    
         
            +
                # === Directives
         
     | 
| 
      
 131 
     | 
    
         
            +
                # * <tt>:axis_category_text</tt> -- Array of strings representing the x/y
         
     | 
| 
      
 132 
     | 
    
         
            +
                #   axis ticks dependending on the chart type. This value is required.
         
     | 
| 
      
 133 
     | 
    
         
            +
                #   In an x/y axis chart setup the category is the x axis unless the chart is
         
     | 
| 
      
 134 
     | 
    
         
            +
                #   a bar chart.
         
     | 
| 
      
 135 
     | 
    
         
            +
                # * <tt>:axis_category_label</tt> -- Array of strings representing the x axis
         
     | 
| 
      
 136 
     | 
    
         
            +
                #   labels. This is supported only for Scatter and Bubble charts.
         
     | 
| 
      
 137 
     | 
    
         
            +
                #   This value is optional. Specify nil for no label change.
         
     | 
| 
      
 138 
     | 
    
         
            +
                # * <tt>:series</tt> -- Specifies the series name and chart data points as an array.
         
     | 
| 
      
 139 
     | 
    
         
            +
                #   The series name will be used to display chart legends. You must have at least one 
         
     | 
| 
      
 140 
     | 
    
         
            +
                #   of these tag defined. The data values may be specified as a straight up array of
         
     | 
| 
      
 141 
     | 
    
         
            +
                #   strings or numbers but also as an array of hash representing the data points and 
         
     | 
| 
      
 142 
     | 
    
         
            +
                #   their attributes such as note, label, tooltip, effect, etc..
         
     | 
| 
      
 143 
     | 
    
         
            +
                # * <tt>:axis_value_label</tt> -- Array of strings representing the ticks on the x/y
         
     | 
| 
      
 144 
     | 
    
         
            +
                #   axis depending on the chart type. This is symmetrical to the <tt>axis_category_label</tt> 
         
     | 
| 
      
 145 
     | 
    
         
            +
                #   tag for the opposite chart axis. Specify nil for no label change.
         
     | 
| 
      
 146 
     | 
    
         
            +
                # * <tt>:user_data</tt>:: -- Used to make user data available to the ERB templates in
         
     | 
| 
      
 147 
     | 
    
         
            +
                #   the chart stylesheet yaml file. You must specify a key symbol and an ad-hoc value. 
         
     | 
| 
      
 148 
     | 
    
         
            +
                #   The key will be used with the @options hash to access the user data.  
         
     | 
| 
      
 149 
     | 
    
         
            +
                # * <tt>:composites</tt> -- Embeds multiple charts within the given chart via the 
         
     | 
| 
      
 150 
     | 
    
         
            +
                #   draw image component. You must specify a hash of chart_id/url pairs.
         
     | 
| 
      
 151 
     | 
    
         
            +
                # * <tt>:chart_types</tt> -- Specify the chart types per series. This option should                        
         
     | 
| 
      
 152 
     | 
    
         
            +
                #   only be used with Mixed Charts !!    
         
     | 
| 
      
 153 
     | 
    
         
            +
                # * <tt>:theme</tt> -- Specify the use of a given named theme. The named theme must 
         
     | 
| 
      
 154 
     | 
    
         
            +
                #   reside in a directory named equaly under your application public/charts/themes.
         
     | 
| 
       143 
155 
     | 
    
         
             
                #
         
     | 
| 
      
 156 
     | 
    
         
            +
                # === Examples
         
     | 
| 
      
 157 
     | 
    
         
            +
                # Setup the category axis to with 3 ticks namely 2004, 2005, 2006
         
     | 
| 
      
 158 
     | 
    
         
            +
                #   my_chart.add( :axis_category_text, ['2004', '2005', '2006'] )
         
     | 
| 
      
 159 
     | 
    
         
            +
                #   
         
     | 
| 
      
 160 
     | 
    
         
            +
                # Plain old series with integer data points
         
     | 
| 
      
 161 
     | 
    
         
            +
                #   my_chart.add( :series, "series A", [ 10, 20, 30] )    
         
     | 
| 
      
 162 
     | 
    
         
            +
                # Specifying custom series labels. You may specify the following attributes in the data point
         
     | 
| 
      
 163 
     | 
    
         
            +
                # hash : :note, :label, :tooltip and effects such as :shadow, :glow, etc...
         
     | 
| 
      
 164 
     | 
    
         
            +
                #   my_chart.add( :series, "series A", [ { :value => 10, :label => 'l1' }, { :value => 20, :label => 'l2' } ] )
         
     | 
| 
       144 
165 
     | 
    
         
             
                def add( *args )
         
     | 
| 
       145 
166 
     | 
    
         
             
                  # TODO Validation categories = series, series = labels, etc...
         
     | 
| 
       146 
167 
     | 
    
         
             
                  directive = args.shift
         
     | 
| 
         @@ -148,15 +169,17 @@ module Ziya::Charts 
     | 
|
| 
       148 
169 
     | 
    
         
             
                    when :axis_category_text
         
     | 
| 
       149 
170 
     | 
    
         
             
                      categories = args.first.is_a?(Array) ? args.shift : []
         
     | 
| 
       150 
171 
     | 
    
         
             
                      raise ArgumentError, "Must specify an array of categories" if categories.empty?
         
     | 
| 
       151 
     | 
    
         
            -
                       
     | 
| 
       152 
     | 
    
         
            -
                       
     | 
| 
      
 172 
     | 
    
         
            +
                      # don't side effect the passed in categs
         
     | 
| 
      
 173 
     | 
    
         
            +
                      categs = categories.clone
         
     | 
| 
      
 174 
     | 
    
         
            +
                      categs.insert( 0, nil )
         
     | 
| 
      
 175 
     | 
    
         
            +
                      @options[directive] = categs
         
     | 
| 
       153 
176 
     | 
    
         
             
                    when :axis_category_label
         
     | 
| 
       154 
177 
     | 
    
         
             
                      labels = args.first.is_a?(Array) ? args.shift : []
         
     | 
| 
       155 
178 
     | 
    
         
             
                      raise ArgumentError, "Must specify an array of category labels" if labels.empty?
         
     | 
| 
       156 
179 
     | 
    
         
             
                      @options[directive] = labels          
         
     | 
| 
       157 
180 
     | 
    
         
             
                    when :composites
         
     | 
| 
       158 
     | 
    
         
            -
                      composites = args.first.is_a?( 
     | 
| 
       159 
     | 
    
         
            -
                      raise ArgumentError, "Must specify  
     | 
| 
      
 181 
     | 
    
         
            +
                      composites = args.first.is_a?(Hash) ? args.shift: []
         
     | 
| 
      
 182 
     | 
    
         
            +
                      raise ArgumentError, "Must specify a hash of id => url pairs for the composite chart(s)" if composites.empty?
         
     | 
| 
       160 
183 
     | 
    
         
             
                      @options[directive] = composites
         
     | 
| 
       161 
184 
     | 
    
         
             
                    when :axis_value_label
         
     | 
| 
       162 
185 
     | 
    
         
             
                      values = args.first.is_a?(Array) ? args.shift : []
         
     | 
| 
         @@ -168,8 +191,10 @@ module Ziya::Charts 
     | 
|
| 
       168 
191 
     | 
    
         
             
                      if args.first.is_a?( Array )
         
     | 
| 
       169 
192 
     | 
    
         
             
                        points = args.shift || []
         
     | 
| 
       170 
193 
     | 
    
         
             
                        raise ArgumentError, "Must specify an array of data points" if points.empty?
         
     | 
| 
       171 
     | 
    
         
            -
                         
     | 
| 
       172 
     | 
    
         
            -
                         
     | 
| 
      
 194 
     | 
    
         
            +
                        # don't side effect the passed in series
         
     | 
| 
      
 195 
     | 
    
         
            +
                        pts = points.clone
         
     | 
| 
      
 196 
     | 
    
         
            +
                        pts.insert( 0, legend )
         
     | 
| 
      
 197 
     | 
    
         
            +
                        series[:points] = pts
         
     | 
| 
       173 
198 
     | 
    
         
             
                      else
         
     | 
| 
       174 
199 
     | 
    
         
             
                        raise ArgumentError, "Must specify an array of data points"
         
     | 
| 
       175 
200 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -233,8 +258,7 @@ module Ziya::Charts 
     | 
|
| 
       233 
258 
     | 
    
         
             
                # =========================================================================
         
     | 
| 
       234 
259 
     | 
    
         
             
                private
         
     | 
| 
       235 
260 
     | 
    
         | 
| 
       236 
     | 
    
         
            -
                #  
     | 
| 
       237 
     | 
    
         
            -
                # Inflate object state based on object hierarchy
         
     | 
| 
      
 261 
     | 
    
         
            +
                # inflate object state based on object hierarchy
         
     | 
| 
       238 
262 
     | 
    
         
             
                def setup_state( state )
         
     | 
| 
       239 
263 
     | 
    
         
             
                  override = self.class.name == state.class.name
         
     | 
| 
       240 
264 
     | 
    
         
             
                  Base.components.each do |comp| 
         
     | 
| 
         @@ -242,8 +266,7 @@ module Ziya::Charts 
     | 
|
| 
       242 
266 
     | 
    
         
             
                  end
         
     | 
| 
       243 
267 
     | 
    
         
             
                end    
         
     | 
| 
       244 
268 
     | 
    
         | 
| 
       245 
     | 
    
         
            -
                #  
     | 
| 
       246 
     | 
    
         
            -
                # Load yaml file associated with class if any
         
     | 
| 
      
 269 
     | 
    
         
            +
                # load yaml file associated with class if any
         
     | 
| 
       247 
270 
     | 
    
         
             
                def inflate( clazz, theme, instance=nil )
         
     | 
| 
       248 
271 
     | 
    
         
             
                  class_name  = underscore(clazz.to_s.gsub( /Ziya::Charts/, '' )).gsub( /\//, '' )      
         
     | 
| 
       249 
272 
     | 
    
         
             
                  class_name += '_chart' unless class_name.match( /.?_chart$/ ) 
         
     | 
| 
         @@ -265,104 +288,28 @@ module Ziya::Charts 
     | 
|
| 
       265 
288 
     | 
    
         
             
                  nil
         
     | 
| 
       266 
289 
     | 
    
         
             
                end
         
     | 
| 
       267 
290 
     | 
    
         | 
| 
       268 
     | 
    
         
            -
                #  
     | 
| 
       269 
     | 
    
         
            -
                # Parse erb template if any
         
     | 
| 
      
 291 
     | 
    
         
            +
                # parse erb template if any
         
     | 
| 
       270 
292 
     | 
    
         
             
                def erb_render(fixture_content)
         
     | 
| 
       271 
293 
     | 
    
         
             
                  b = binding
         
     | 
| 
       272 
294 
     | 
    
         
             
                  ERB.new(fixture_content).result b      
         
     | 
| 
       273 
295 
     | 
    
         
             
                end
         
     | 
| 
       274 
296 
     | 
    
         | 
| 
       275 
     | 
    
         
            -
                #  
     | 
| 
       276 
     | 
    
         
            -
                 
     | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
       278 
     | 
    
         
            -
                def gen_data_points( series_name, labels=nil )
         
     | 
| 
       279 
     | 
    
         
            -
                  values  = @options[series_name]
         
     | 
| 
       280 
     | 
    
         
            -
                  labels.insert( 0, nil ) if labels
         
     | 
| 
      
 297 
     | 
    
         
            +
                # generates category axis data points
         
     | 
| 
      
 298 
     | 
    
         
            +
                def gen_axis_category
         
     | 
| 
      
 299 
     | 
    
         
            +
                  categories = @options[:axis_category_text]
         
     | 
| 
       281 
300 
     | 
    
         
             
                  @xml.row do
         
     | 
| 
       282 
     | 
    
         
            -
                     
     | 
| 
       283 
     | 
    
         
            -
                       
     | 
| 
       284 
     | 
    
         
            -
                         
     | 
| 
       285 
     | 
    
         
            -
             
     | 
| 
       286 
     | 
    
         
            -
                         
     | 
| 
       287 
     | 
    
         
            -
             
     | 
| 
       288 
     | 
    
         
            -
             
     | 
| 
       289 
     | 
    
         
            -
                            if label
         
     | 
| 
       290 
     | 
    
         
            -
                              @xml.string( :label => label ) { |x| x.text!( c ) }
         
     | 
| 
       291 
     | 
    
         
            -
                            else
         
     | 
| 
       292 
     | 
    
         
            -
                              @xml.string( c )
         
     | 
| 
       293 
     | 
    
         
            -
                            end
         
     | 
| 
       294 
     | 
    
         
            -
                          else
         
     | 
| 
       295 
     | 
    
         
            -
                            @xml.string( c )
         
     | 
| 
       296 
     | 
    
         
            -
                          end
         
     | 
| 
       297 
     | 
    
         
            -
                        elsif c.respond_to? :zero?
         
     | 
| 
       298 
     | 
    
         
            -
                          if labels and !labels.empty?
         
     | 
| 
       299 
     | 
    
         
            -
                            label = labels.shift
         
     | 
| 
       300 
     | 
    
         
            -
                            if label
         
     | 
| 
       301 
     | 
    
         
            -
                              @xml.number( :label => label ) { |x| x.text!( c.to_s ) } 
         
     | 
| 
       302 
     | 
    
         
            -
                            else
         
     | 
| 
       303 
     | 
    
         
            -
                              @xml.number( c )
         
     | 
| 
       304 
     | 
    
         
            -
                            end
         
     | 
| 
       305 
     | 
    
         
            -
                          else
         
     | 
| 
       306 
     | 
    
         
            -
                            @xml.number( c )
         
     | 
| 
       307 
     | 
    
         
            -
                          end
         
     | 
| 
       308 
     | 
    
         
            -
                        end
         
     | 
| 
      
 301 
     | 
    
         
            +
                    categories.each do |category|
         
     | 
| 
      
 302 
     | 
    
         
            +
                      case
         
     | 
| 
      
 303 
     | 
    
         
            +
                        when category.nil?                 : @xml.null
         
     | 
| 
      
 304 
     | 
    
         
            +
                        when category.instance_of?(String) : @xml.string( category )
         
     | 
| 
      
 305 
     | 
    
         
            +
                        when category.respond_to?(:zero?)  : @xml.number( category )
         
     | 
| 
      
 306 
     | 
    
         
            +
                        when category.is_a?(Hash)          : categ = category.clone;gen_row_data( categ.delete( :value ), categ, @xml )
         
     | 
| 
      
 307 
     | 
    
         
            +
                        else puts "No match"
         
     | 
| 
       309 
308 
     | 
    
         
             
                      end
         
     | 
| 
       310 
     | 
    
         
            -
                    else
         
     | 
| 
       311 
     | 
    
         
            -
                      @xml.string( values )
         
     | 
| 
       312 
309 
     | 
    
         
             
                    end
         
     | 
| 
       313 
     | 
    
         
            -
                  end 
     | 
| 
      
 310 
     | 
    
         
            +
                  end
         
     | 
| 
       314 
311 
     | 
    
         
             
                end
         
     | 
| 
       315 
312 
     | 
    
         | 
| 
       316 
     | 
    
         
            -
                # # -------------------------------------------------------------------------
         
     | 
| 
       317 
     | 
    
         
            -
                # # Generates custom axis values
         
     | 
| 
       318 
     | 
    
         
            -
                # def gen_axis_value_text( values )
         
     | 
| 
       319 
     | 
    
         
            -
                #   return if values.nil? or values.empty?
         
     | 
| 
       320 
     | 
    
         
            -
                #   @xml.axis_value_text do 
         
     | 
| 
       321 
     | 
    
         
            -
                #     values.each { |v| @xml.string( v ) }
         
     | 
| 
       322 
     | 
    
         
            -
                #   end
         
     | 
| 
       323 
     | 
    
         
            -
                # end
         
     | 
| 
       324 
     | 
    
         
            -
                    
         
     | 
| 
       325 
     | 
    
         
            -
                # # -------------------------------------------------------------------------
         
     | 
| 
       326 
     | 
    
         
            -
                # # Check if the series are named
         
     | 
| 
       327 
     | 
    
         
            -
                # def named_series?( names )
         
     | 
| 
       328 
     | 
    
         
            -
                #   names.each do |name|
         
     | 
| 
       329 
     | 
    
         
            -
                #     next unless name.to_s.index( 'series_' )
         
     | 
| 
       330 
     | 
    
         
            -
                #     return @options[name][0].instance_of?(String) if @options[name] and !@options[name].empty?
         
     | 
| 
       331 
     | 
    
         
            -
                #   end
         
     | 
| 
       332 
     | 
    
         
            -
                #   false
         
     | 
| 
       333 
     | 
    
         
            -
                # end
         
     | 
| 
       334 
     | 
    
         
            -
                
         
     | 
| 
       335 
     | 
    
         
            -
                # # -------------------------------------------------------------------------
         
     | 
| 
       336 
     | 
    
         
            -
                # # Check if the options have custom labels ie :label_xxx tag
         
     | 
| 
       337 
     | 
    
         
            -
                # def has_labels( names )
         
     | 
| 
       338 
     | 
    
         
            -
                #   names.each do |name|
         
     | 
| 
       339 
     | 
    
         
            -
                #     next unless name.to_s.index( 'labels_' )
         
     | 
| 
       340 
     | 
    
         
            -
                #     return @options[name].size if @options[name] and !@options[name].empty?
         
     | 
| 
       341 
     | 
    
         
            -
                #   end
         
     | 
| 
       342 
     | 
    
         
            -
                #   0
         
     | 
| 
       343 
     | 
    
         
            -
                # end    
         
     | 
| 
       344 
     | 
    
         
            -
                
         
     | 
| 
       345 
     | 
    
         
            -
                # # -------------------------------------------------------------------------
         
     | 
| 
       346 
     | 
    
         
            -
                # # Generates custom labels
         
     | 
| 
       347 
     | 
    
         
            -
                # def gen_labels( series_name, is_default=false )
         
     | 
| 
       348 
     | 
    
         
            -
                #   cltn  = @options[series_name]
         
     | 
| 
       349 
     | 
    
         
            -
                #   cltn.insert( 0, nil ) unless is_default
         
     | 
| 
       350 
     | 
    
         
            -
                #   @xml.row do        
         
     | 
| 
       351 
     | 
    
         
            -
                #     cltn.each { |c| ((c.nil? or c.to_s.empty?) ? @xml.null : @xml.string( c )) }
         
     | 
| 
       352 
     | 
    
         
            -
                #   end              
         
     | 
| 
       353 
     | 
    
         
            -
                # end    
         
     | 
| 
       354 
     | 
    
         
            -
                
         
     | 
| 
       355 
     | 
    
         
            -
                # # ------------------------------------------------------------------------
         
     | 
| 
       356 
     | 
    
         
            -
                # # Generates default series labels
         
     | 
| 
       357 
     | 
    
         
            -
                # def gen_default_labels( size )
         
     | 
| 
       358 
     | 
    
         
            -
                #   labels = []
         
     | 
| 
       359 
     | 
    
         
            -
                #   size.times { |i| labels << nil }
         
     | 
| 
       360 
     | 
    
         
            -
                #   @xml.row do        
         
     | 
| 
       361 
     | 
    
         
            -
                #     labels.each { |c| @xml.null }
         
     | 
| 
       362 
     | 
    
         
            -
                #   end     
         
     | 
| 
       363 
     | 
    
         
            -
                # end                
         
     | 
| 
       364 
     | 
    
         
            -
             
     | 
| 
       365 
     | 
    
         
            -
                # ------------------------------------------------------------------------
         
     | 
| 
       366 
313 
     | 
    
         
             
                # generates chart data row
         
     | 
| 
       367 
314 
     | 
    
         
             
                # TODO Validate options !!
         
     | 
| 
       368 
315 
     | 
    
         
             
                def gen_row_data( value, opts=nil, xml=@xml )
         
     | 
| 
         @@ -373,19 +320,16 @@ module Ziya::Charts 
     | 
|
| 
       373 
320 
     | 
    
         
             
                  end        
         
     | 
| 
       374 
321 
     | 
    
         
             
                end
         
     | 
| 
       375 
322 
     | 
    
         | 
| 
       376 
     | 
    
         
            -
                # -------------------------------------------------------------------------
         
     | 
| 
       377 
323 
     | 
    
         
             
                # generates string chart_value
         
     | 
| 
       378 
324 
     | 
    
         
             
                def gen_string_data( value, opts, xml )
         
     | 
| 
       379 
325 
     | 
    
         
             
                  opts ? xml.string( opts ) { |x| x.text!( value ) } : xml.string( value )
         
     | 
| 
       380 
326 
     | 
    
         
             
                end
         
     | 
| 
       381 
327 
     | 
    
         | 
| 
       382 
     | 
    
         
            -
                # -------------------------------------------------------------------------
         
     | 
| 
       383 
328 
     | 
    
         
             
                # generates number chart_value
         
     | 
| 
       384 
329 
     | 
    
         
             
                def gen_number_data( value, opts, xml )
         
     | 
| 
       385 
330 
     | 
    
         
             
                  opts ? xml.number( opts ) { |x| x.text!( value.to_s ) } : xml.number( value )
         
     | 
| 
       386 
331 
     | 
    
         
             
                end
         
     | 
| 
       387 
332 
     | 
    
         | 
| 
       388 
     | 
    
         
            -
                # -------------------------------------------------------------------------
         
     | 
| 
       389 
333 
     | 
    
         
             
                # generates chart data points    
         
     | 
| 
       390 
334 
     | 
    
         
             
                # BOZO !! Check args on hash
         
     | 
| 
       391 
335 
     | 
    
         
             
                def gen_chart_data( series )
         
     | 
| 
         @@ -394,8 +338,10 @@ module Ziya::Charts 
     | 
|
| 
       394 
338 
     | 
    
         
             
                      if row.nil?
         
     | 
| 
       395 
339 
     | 
    
         
             
                        @xml.null 
         
     | 
| 
       396 
340 
     | 
    
         
             
                      elsif row.instance_of? Hash
         
     | 
| 
       397 
     | 
    
         
            -
                         
     | 
| 
       398 
     | 
    
         
            -
                         
     | 
| 
      
 341 
     | 
    
         
            +
                        # don't side effect the original series
         
     | 
| 
      
 342 
     | 
    
         
            +
                        the_clone = row.clone
         
     | 
| 
      
 343 
     | 
    
         
            +
                        value = the_clone.delete( :value )
         
     | 
| 
      
 344 
     | 
    
         
            +
                        gen_row_data( value, the_clone, @xml )
         
     | 
| 
       399 
345 
     | 
    
         
             
                      else
         
     | 
| 
       400 
346 
     | 
    
         
             
                        gen_row_data( row, nil, @xml )
         
     | 
| 
       401 
347 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -409,15 +355,14 @@ module Ziya::Charts 
     | 
|
| 
       409 
355 
     | 
    
         
             
                  end
         
     | 
| 
       410 
356 
     | 
    
         
             
                end
         
     | 
| 
       411 
357 
     | 
    
         | 
| 
       412 
     | 
    
         
            -
                #  
     | 
| 
       413 
     | 
    
         
            -
                # Lay down graph data points and labels if any
         
     | 
| 
      
 358 
     | 
    
         
            +
                # lay down graph data points and labels if any
         
     | 
| 
       414 
359 
     | 
    
         
             
                # TODO Validate series sizes/label sizes
         
     | 
| 
       415 
360 
     | 
    
         
             
                def setup_series
         
     | 
| 
       416 
     | 
    
         
            -
                  raise "You must specify an axis_category_text with your series." if !@series_desc.empty? and ! @options[:axis_category_text]
         
     | 
| 
      
 361 
     | 
    
         
            +
                  # raise "You must specify an axis_category_text with your series." if !@series_desc.empty? and ! @options[:axis_category_text]
         
     | 
| 
       417 
362 
     | 
    
         | 
| 
       418 
363 
     | 
    
         
             
                  if @options[:axis_category_text]
         
     | 
| 
       419 
364 
     | 
    
         
             
                    @xml.chart_data do 
         
     | 
| 
       420 
     | 
    
         
            -
                       
     | 
| 
      
 365 
     | 
    
         
            +
                      gen_axis_category
         
     | 
| 
       421 
366 
     | 
    
         
             
                      # render xml for each series
         
     | 
| 
       422 
367 
     | 
    
         
             
                      @series_desc.each do |series|
         
     | 
| 
       423 
368 
     | 
    
         
             
                        gen_chart_data( series )
         
     | 
| 
         @@ -445,8 +390,7 @@ module Ziya::Charts 
     | 
|
| 
       445 
390 
     | 
    
         | 
| 
       446 
391 
     | 
    
         
             
                end
         
     | 
| 
       447 
392 
     | 
    
         | 
| 
       448 
     | 
    
         
            -
                #  
     | 
| 
       449 
     | 
    
         
            -
                # Walk up class hierarchy to find chart inheritance classes
         
     | 
| 
      
 393 
     | 
    
         
            +
                # walk up class hierarchy to find chart inheritance classes
         
     | 
| 
       450 
394 
     | 
    
         
             
                def ancestors
         
     | 
| 
       451 
395 
     | 
    
         
             
                  ancestors = self.class.ancestors.reverse
         
     | 
| 
       452 
396 
     | 
    
         
             
                  allow = false
         
     | 
| 
         @@ -456,14 +400,12 @@ module Ziya::Charts 
     | 
|
| 
       456 
400 
     | 
    
         
             
                  end.compact!
         
     | 
| 
       457 
401 
     | 
    
         
             
                end
         
     | 
| 
       458 
402 
     | 
    
         | 
| 
       459 
     | 
    
         
            -
                #  
     | 
| 
       460 
     | 
    
         
            -
                # Check if we should do the all monty or just render the instance styles
         
     | 
| 
      
 403 
     | 
    
         
            +
                # check if we should do the all monty or just render the instance styles
         
     | 
| 
       461 
404 
     | 
    
         
             
                def render_parents?      
         
     | 
| 
       462 
405 
     | 
    
         
             
                  (@render_mode == Base.mode_reset)
         
     | 
| 
       463 
406 
     | 
    
         
             
                end
         
     | 
| 
       464 
407 
     | 
    
         | 
| 
       465 
     | 
    
         
            -
                #  
     | 
| 
       466 
     | 
    
         
            -
                # Load up look and feel data
         
     | 
| 
      
 408 
     | 
    
         
            +
                # load up look and feel data
         
     | 
| 
       467 
409 
     | 
    
         
             
                def load_lnf     
         
     | 
| 
       468 
410 
     | 
    
         
             
                  unless @partial
         
     | 
| 
       469 
411 
     | 
    
         
             
                    ancestors.each do |super_class|
         
     | 
| 
         @@ -490,13 +432,13 @@ module Ziya::Charts 
     | 
|
| 
       490 
432 
     | 
    
         
             
                  end
         
     | 
| 
       491 
433 
     | 
    
         
             
                end
         
     | 
| 
       492 
434 
     | 
    
         | 
| 
       493 
     | 
    
         
            -
                #  
     | 
| 
       494 
     | 
    
         
            -
                # Generates xml for look and feel data
         
     | 
| 
      
 435 
     | 
    
         
            +
                # generates xml for look and feel data
         
     | 
| 
       495 
436 
     | 
    
         
             
                def setup_lnf
         
     | 
| 
       496 
437 
     | 
    
         
             
                  load_lnf
         
     | 
| 
       497 
438 
     | 
    
         
             
                  unless @partial
         
     | 
| 
       498 
     | 
    
         
            -
                    Base.components.each do |comp| 
     | 
| 
       499 
     | 
    
         
            -
                       
     | 
| 
      
 439 
     | 
    
         
            +
                    Base.components.each do |comp|               
         
     | 
| 
      
 440 
     | 
    
         
            +
                      # Don't include non configured components
         
     | 
| 
      
 441 
     | 
    
         
            +
                      next unless ( comp == :draw and @options[:composites] ) or self.send( comp ).configured?
         
     | 
| 
       500 
442 
     | 
    
         
             
                      if comp == :draw
         
     | 
| 
       501 
443 
     | 
    
         
             
                        instance_eval "#{comp}.flatten( @xml, @options[:composites] )"
         
     | 
| 
       502 
444 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -506,7 +448,7 @@ module Ziya::Charts 
     | 
|
| 
       506 
448 
     | 
    
         
             
                  end      
         
     | 
| 
       507 
449 
     | 
    
         
             
                end
         
     | 
| 
       508 
450 
     | 
    
         | 
| 
       509 
     | 
    
         
            -
                #  
     | 
| 
      
 451 
     | 
    
         
            +
                # load up the allowable chart components
         
     | 
| 
       510 
452 
     | 
    
         
             
                def initialize_components
         
     | 
| 
       511 
453 
     | 
    
         
             
                  # Setup instance vars
         
     | 
| 
       512 
454 
     | 
    
         
             
                  Base.components.each do |comp|
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Generates necessary xml for an custom chart 
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Author: Fernand
         
     | 
| 
      
 5 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'ziya/charts/base'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Ziya::Charts
         
     | 
| 
      
 9 
     | 
    
         
            +
              class Custom < Base
         
     | 
| 
      
 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 )
         
     | 
| 
      
 14 
     | 
    
         
            +
                  super( license, chart_id )
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @type = ""      
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Generates necessary xml for an image column chart 
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Author: Fernand
         
     | 
| 
      
 5 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'ziya/charts/base'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Ziya::Charts
         
     | 
| 
      
 9 
     | 
    
         
            +
              class ImageColumn < Base
         
     | 
| 
      
 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 )
         
     | 
| 
      
 14 
     | 
    
         
            +
                  super( license, chart_id )
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @type = "image column"      
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Generates necessary xml for an image pie chart 
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Author: Fernand
         
     | 
| 
      
 5 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'ziya/charts/base'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Ziya::Charts
         
     | 
| 
      
 9 
     | 
    
         
            +
              class ImagePie < Base
         
     | 
| 
      
 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 )
         
     | 
| 
      
 14 
     | 
    
         
            +
                  super( license, chart_id )
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @type = "image pie"      
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/ziya/components/area.rb
    CHANGED
    
    | 
         @@ -10,8 +10,7 @@ module Ziya::Components 
     | 
|
| 
       10 
10 
     | 
    
         
             
              # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=link
         
     | 
| 
       11 
11 
     | 
    
         
             
              # for additional documentation, examples and futher detail.
         
     | 
| 
       12 
12 
     | 
    
         
             
              class Area < Base  
         
     | 
| 
       13 
     | 
    
         
            -
                has_attribute :x, :y, :width, :height, :url, :priority, :target, : 
     | 
| 
       14 
     | 
    
         
            -
                              : 
     | 
| 
       15 
     | 
    
         
            -
                              :timeout, :retry, :spinning_wheel           
         
     | 
| 
      
 13 
     | 
    
         
            +
                has_attribute :x, :y, :width, :height, :url, :priority, :target, :tooltip,
         
     | 
| 
      
 14 
     | 
    
         
            +
                              :timeout, :retry, :spinning_wheel
         
     | 
| 
       16 
15 
     | 
    
         
             
              end
         
     | 
| 
       17 
16 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Draws a button on a chart
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Author:: Fernand Galiana
         
     | 
| 
      
 5 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
            module Ziya::Components
         
     | 
| 
      
 7 
     | 
    
         
            +
              # Button component to draw a a button on the chart. 
         
     | 
| 
      
 8 
     | 
    
         
            +
              # Must be set up within the draw component.
         
     | 
| 
      
 9 
     | 
    
         
            +
              # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=draw
         
     | 
| 
      
 10 
     | 
    
         
            +
              # for additional documentation, examples and futher detail.            
         
     | 
| 
      
 11 
     | 
    
         
            +
              class Button < Base  
         
     | 
| 
      
 12 
     | 
    
         
            +
                has_attribute :layer, :transition, :delay, :duration,
         
     | 
| 
      
 13 
     | 
    
         
            +
                              :url_idle, :url_over, :url_press, :x, :y,
         
     | 
| 
      
 14 
     | 
    
         
            +
                              :width, :height, :alpha, 
         
     | 
| 
      
 15 
     | 
    
         
            +
                              :bevel, :glow, :blur, :shadow,
         
     | 
| 
      
 16 
     | 
    
         
            +
                              :timeout, :retry
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -9,8 +9,10 @@ module Ziya::Components 
     | 
|
| 
       9 
9 
     | 
    
         
             
              # for additional documentation, examples and futher detail.        
         
     | 
| 
       10 
10 
     | 
    
         
             
              class ChartGuide < Base  
         
     | 
| 
       11 
11 
     | 
    
         
             
                has_attribute :horizontal, :vertical, :thickness, :color, :alpha, :type,
         
     | 
| 
       12 
     | 
    
         
            -
                  :snap_h, :snap_v, : 
     | 
| 
      
 12 
     | 
    
         
            +
                  :snap_h, :snap_v, :connect, 
         
     | 
| 
      
 13 
     | 
    
         
            +
                  :radius, :fill_color, :line_color, :line_alpha, :line_thickness,
         
     | 
| 
       13 
14 
     | 
    
         
             
                  :text_h_alpha, :text_v_alpha, :prefix_h, :prefix_v, :suffix_h, :suffix_v,
         
     | 
| 
       14 
     | 
    
         
            -
                  :decimals, :decimal_char, :separator, :font, :bold, :size, :text_color, 
     | 
| 
      
 15 
     | 
    
         
            +
                  :decimals, :decimal_char, :separator, :font, :bold, :size, :text_color,
         
     | 
| 
      
 16 
     | 
    
         
            +
                  :background_color
         
     | 
| 
       15 
17 
     | 
    
         
             
              end
         
     | 
| 
       16 
18 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Describes the look and feel for a chart annotation. An annotation must be
         
     | 
| 
      
 3 
     | 
    
         
            +
            # added using the Chart#add( :series) call using the hash definition ie
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # chart.add( :series, "fred", [ { :value => 10, :note => "Hi there !"} ] )
         
     | 
| 
      
 6 
     | 
    
         
            +
            #
         
     | 
| 
      
 7 
     | 
    
         
            +
            # Author:: Fernand Galiana
         
     | 
| 
      
 8 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 9 
     | 
    
         
            +
            module Ziya::Components
         
     | 
| 
      
 10 
     | 
    
         
            +
              # Specifies an annotation look and feel on a chart. 
         
     | 
| 
      
 11 
     | 
    
         
            +
              # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=chart_note
         
     | 
| 
      
 12 
     | 
    
         
            +
              # for additional documentation, examples and futher detail.          
         
     | 
| 
      
 13 
     | 
    
         
            +
              class ChartNote < Base  
         
     | 
| 
      
 14 
     | 
    
         
            +
                has_attribute :type, :x, :y, :offset_x, :offset_y,
         
     | 
| 
      
 15 
     | 
    
         
            +
                              :font, :bold, :size, :color, :alpha, 
         
     | 
| 
      
 16 
     | 
    
         
            +
                              :background_color, :background_alpha, :shadow, :bevel, :glow, :blur        
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/ziya/components/draw.rb
    CHANGED
    
    | 
         @@ -26,9 +26,9 @@ module Ziya::Components 
     | 
|
| 
       26 
26 
     | 
    
         
             
                # -------------------------------------------------------------------------
         
     | 
| 
       27 
27 
     | 
    
         
             
                # Dump has_attribute into xml element
         
     | 
| 
       28 
28 
     | 
    
         
             
                def flatten( xml, composite_urls=nil )
         
     | 
| 
       29 
     | 
    
         
            -
                  if components
         
     | 
| 
      
 29 
     | 
    
         
            +
                  if components or composite_urls
         
     | 
| 
       30 
30 
     | 
    
         
             
                    xml.draw do 
         
     | 
| 
       31 
     | 
    
         
            -
                      components.each { |comp| comp.flatten( xml ) }
         
     | 
| 
      
 31 
     | 
    
         
            +
                      components.each { |comp| comp.flatten( xml ) } if components
         
     | 
| 
       32 
32 
     | 
    
         
             
                      gen_composites( xml, composite_urls ) if composite_urls
         
     | 
| 
       33 
33 
     | 
    
         
             
                    end
         
     | 
| 
       34 
34 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -37,10 +37,8 @@ module Ziya::Components 
     | 
|
| 
       37 
37 
     | 
    
         
             
                # -------------------------------------------------------------------------
         
     | 
| 
       38 
38 
     | 
    
         
             
                # Generates Draw component for composite charts
         
     | 
| 
       39 
39 
     | 
    
         
             
                def gen_composites( xml, composite_urls )
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
                    # xml.image( :url => composite_url % [ chart_path, chart_path, url] )
         
     | 
| 
       43 
     | 
    
         
            -
                    xml.image( :url => gen_composite_path( chart_path, url ) )
         
     | 
| 
      
 40 
     | 
    
         
            +
                  composite_urls.each_pair do |id, url|
         
     | 
| 
      
 41 
     | 
    
         
            +
                    xml.image( :url => gen_composite_path( chart_path, url, id ) )
         
     | 
| 
       44 
42 
     | 
    
         
             
                  end
         
     | 
| 
       45 
43 
     | 
    
         
             
                end
         
     | 
| 
       46 
44 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Provide for the toggling of js function callback. You can enable or disable
         
     | 
| 
      
 3 
     | 
    
         
            +
            # some or all the automatic flash to js callbacks using this component
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Author:: Fernand Galiana
         
     | 
| 
      
 6 
     | 
    
         
            +
            # -----------------------------------------------------------------------------
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'ziya/components/base'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            module Ziya::Components
         
     | 
| 
      
 10 
     | 
    
         
            +
              # Toggles flash to js callbacks. 
         
     | 
| 
      
 11 
     | 
    
         
            +
              #
         
     | 
| 
      
 12 
     | 
    
         
            +
              # === Example
         
     | 
| 
      
 13 
     | 
    
         
            +
              # Add this component to your yaml stylesheet. Enables Loaded_Chart callback and disable
         
     | 
| 
      
 14 
     | 
    
         
            +
              # all other callbacks.
         
     | 
| 
      
 15 
     | 
    
         
            +
              #  <%= comp :flash_to_javascript %>
         
     | 
| 
      
 16 
     | 
    
         
            +
              #    Loaded_Chart:   true
         
     | 
| 
      
 17 
     | 
    
         
            +
              #    Render_Count:   false
         
     | 
| 
      
 18 
     | 
    
         
            +
              #    Scrolled_Chart: false
         
     | 
| 
      
 19 
     | 
    
         
            +
              # 
         
     | 
| 
      
 20 
     | 
    
         
            +
              # See http://www.maani.us/xml_charts/index.php?menu=Reference&submenu=Flash_to_Javascript
         
     | 
| 
      
 21 
     | 
    
         
            +
              # for additional documentation, examples and further detail.
         
     | 
| 
      
 22 
     | 
    
         
            +
              class FlashToJavascript < Base  
         
     | 
| 
      
 23 
     | 
    
         
            +
                has_attribute :Loaded_Chart, :Render_Count, :Scrolled_Chart, :Stopped_Scrolling
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     |