<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/yui4rails/widgets/chart.rb</filename>
    </added>
    <added>
      <filename>spec/models/chart_spec.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -7,4 +7,4 @@ ActionView::Base.send(:include, Yui4Rails::IncludeExtension)
 ActionView::Base.send(:include, Yui4Rails::HelpersExtension)
 ActionController::Base.send(:prepend_before_filter) do
 	Yui4Rails::AssetManager.reset
-end
+end
\ No newline at end of file</diff>
      <filename>lib/yui4rails.rb</filename>
    </modified>
    <modified>
      <diff>@@ -39,49 +39,17 @@ module Yui4Rails
 		
 		def process_components			
 			@yui_stylesheets = []
-			@yui_javascript = []
-			
+			@yui_javascript = []			
+
 			@components.flatten!
 			@components.uniq!
-
-			@yui_stylesheets &lt;&lt; &quot;reset/reset-min&quot; if @components.include?(:reset)
-			@yui_stylesheets &lt;&lt; &quot;fonts/fonts-min&quot; if @components.include?(:fonts)
-
 			@components.each{ |c| add_component(c) }
-			
-			add_datatable_includes if @components.include?(:datatable)
-			add_charts_includes if @components.include?(:charts)
-			add_carousel_includes if @components.include?(:carousel)
 
+			# A future enhancement would be to look at individual components that can be combined into a more efficient library
+			# such as how yahoo, dom and event are commonly included as the yahoo-dom-event
 			@stylesheets = @yui_stylesheets.flatten.uniq
 			@javascripts = @yui_javascript.flatten.uniq
-		end
-		
-		
-	  def add_datatable_includes
-			@yui_stylesheets &lt;&lt; &quot;datatable/assets/skins/sam/datatable&quot;
-			@yui_javascript &lt;&lt; &quot;utilities/utilities&quot;
-			@yui_javascript &lt;&lt; &quot;datasource/datasource-min&quot;
-			@yui_javascript &lt;&lt; &quot;datatable/datatable-min&quot;	
-	  end
-
-	  def add_charts_includes
-			@yui_javascript &lt;&lt; &quot;utilities/utilities&quot;
-			@yui_javascript &lt;&lt; &quot;yahoo-dom-event/yahoo-dom-event&quot;
-			@yui_javascript &lt;&lt; &quot;json/json-min&quot;
-      @yui_javascript &lt;&lt; &quot;element/element-beta-min.js&quot;
-			@yui_javascript &lt;&lt; &quot;datasource/datasource-min&quot;
-			@yui_javascript &lt;&lt; &quot;charts/charts-experimental-min&quot;	
-			add_script %{YAHOO.widget.Chart.SWFURL = &quot;/yui/charts/assets/charts.swf&quot;;}
-	  end
-		
-		def add_carousel_includes
-			@yui_stylesheets &lt;&lt; &quot;carousel/assets/carousel&quot;
-			@yui_javascript &lt;&lt; &quot;yahoo-dom-event/yahoo-dom-event&quot;
-			@yui_javascript &lt;&lt; &quot;animation/animation-min&quot;
-			@yui_javascript &lt;&lt; &quot;container/container-min&quot;
-			@yui_javascript &lt;&lt; &quot;carousel/carousel_min&quot;	
-		end		
+		end	
 		
 		def add_component(component)
 			return false unless COMPONENTS.has_key?(component)
@@ -92,6 +60,12 @@ module Yui4Rails
 		end
 		
 		COMPONENTS = {
+      :reset =&gt; {
+        :css =&gt; [&quot;reset/reset-min&quot;]
+      },
+      :fonts =&gt; {
+        :css =&gt; [&quot;fonts/fonts-min&quot;]
+      },
 			:panel =&gt; {
 				:css =&gt; [&quot;container/assets/skins/sam/container&quot;],
 				:js =&gt; [&quot;yahoo-dom-event/yahoo-dom-event&quot;, &quot;animation/animation-min&quot;, &quot;container/container-min&quot;]
@@ -99,7 +73,42 @@ module Yui4Rails
 			:tooltip =&gt; {
 				:css =&gt; [&quot;container/assets/container&quot;],
 				:js =&gt; [&quot;yahoo-dom-event/yahoo-dom-event&quot;, &quot;animation/animation-min&quot;, &quot;container/container-min&quot;]
+			},
+			:datatable =&gt; {
+			  :css =&gt; [&quot;datatable/assets/skins/sam/datatable&quot;],
+			  :js =&gt; [&quot;utilities/utilities&quot;, &quot;datasource/datasource-min&quot;, &quot;datatable/datatable-min&quot;]
+			},
+			:charts =&gt; {
+			  :js =&gt; [&quot;utilities/utilities&quot;, &quot;yahoo-dom-event/yahoo-dom-event&quot;, &quot;json/json-min&quot;, &quot;element/element-beta-min&quot;, &quot;datasource/datasource-min&quot;, &quot;charts/charts-experimental-min&quot;]
+			},
+			:carousel =&gt; {
+			  :css =&gt; [&quot;carousel/assets/carousel&quot;],
+			  :js =&gt; [&quot;yahoo-dom-event/yahoo-dom-event&quot;, &quot;animation/animation-min&quot;, &quot;container/container-min&quot;, &quot;carousel/carousel_min&quot;]
 			}
 		}
 	end
+		
+  def add_datatable_includes
+		@yui_stylesheets &lt;&lt; &quot;datatable/assets/skins/sam/datatable&quot;
+		@yui_javascript &lt;&lt; &quot;utilities/utilities&quot;
+		@yui_javascript &lt;&lt; &quot;datasource/datasource-min&quot;
+		@yui_javascript &lt;&lt; &quot;datatable/datatable-min&quot;	
+  end
+
+  def add_charts_includes
+		@yui_javascript &lt;&lt; &quot;utilities/utilities&quot;
+		@yui_javascript &lt;&lt; &quot;yahoo-dom-event/yahoo-dom-event&quot;
+		@yui_javascript &lt;&lt; &quot;json/json-min&quot;
+    @yui_javascript &lt;&lt; &quot;element/element-beta-min.js&quot;
+		@yui_javascript &lt;&lt; &quot;datasource/datasource-min&quot;
+		@yui_javascript &lt;&lt; &quot;charts/charts-experimental-min&quot;	
+  end
+	
+	def add_carousel_includes
+		@yui_stylesheets &lt;&lt; &quot;carousel/assets/carousel&quot;
+		@yui_javascript &lt;&lt; &quot;yahoo-dom-event/yahoo-dom-event&quot;
+		@yui_javascript &lt;&lt; &quot;animation/animation-min&quot;
+		@yui_javascript &lt;&lt; &quot;container/container-min&quot;
+		@yui_javascript &lt;&lt; &quot;carousel/carousel_min&quot;	
+	end	
 end</diff>
      <filename>lib/yui4rails/asset_manager.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,11 @@ module Yui4Rails
     end
   
     def yui_chart(chart_type, chart_id, rows, options = {})
-      Yui4Rails::Widgets::Chart.new(chart_type, chart_id, rows, options).render_chart
+      # Redo fields as an option in data
+      @fields = rows.map{ |row| row.keys.map(&amp;:to_s) }.flatten.uniq
+      data = {:fields =&gt; @fields, :rows =&gt; rows}
+      
+      Yui4Rails::Widgets::Chart.new(chart_type, chart_id, data, options).render
     end
 
     def yui_datatable(statistics, div_id, options = {})</diff>
      <filename>lib/yui4rails/helpers_extension.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 require 'yui4rails/widgets/datatable'
-require 'yui4rails/widgets/charts'
+require 'yui4rails/widgets/chart'
 require 'yui4rails/widgets/carousel'
 require 'yui4rails/widgets/tooltip'
 
-ActionView::Base.send(:include, Yui4Rails::Widgets)
\ No newline at end of file
+ActionView::Base.send(:include, Yui4Rails::Widgets)</diff>
      <filename>lib/yui4rails/widgets.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,9 +15,9 @@ module Yui4Rails
       end
     end
 
-    def self.extract_keys(data_rows)
-      keys = []
-      return keys if data_rows.empty?
+	  def self.extract_keys(data_rows)
+	    keys = []
+	    return keys if data_rows.nil? || data_rows.empty?
 
       data_rows.first.each do |k, v|
         keys &lt;&lt; { :key =&gt; k.to_s }</diff>
      <filename>lib/yui4rails/widgets/datatable.rb</filename>
    </modified>
    <modified>
      <diff>@@ -149,21 +149,9 @@ describe Yui4Rails::AssetManager do
 			@manager.send(:process_components)
 	  end
 
-		it &quot;should use add_container_includes for :datatable&quot; do
+		it &quot;should use add_component for :datatable&quot; do
 			@manager.instance_variable_set(:@components, [:datatable])
-			@manager.should_receive(:add_datatable_includes)
-			@manager.send(:process_components)
-	  end
-
-		it &quot;should use add_container_includes for :charts&quot; do
-			@manager.instance_variable_set(:@components, [:charts])
-			@manager.should_receive(:add_charts_includes)
-			@manager.send(:process_components)
-	  end
-
-		it &quot;should use add_container_includes for :carousel&quot; do
-			@manager.instance_variable_set(:@components, [:carousel])
-			@manager.should_receive(:add_carousel_includes)
+			@manager.should_receive(:add_component).once.with(:datatable)
 			@manager.send(:process_components)
 	  end
 	end</diff>
      <filename>spec/models/asset_manager_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,10 @@
 $:.unshift(File.dirname(__FILE__) + '/../lib')
 require 'spec'
+require 'active_support'
 require 'yui4rails/helpers_extension'
 require 'yui4rails/include_extension'
 require 'yui4rails/widgets/datatable'
-require 'yui4rails/widgets/charts'
+require 'yui4rails/widgets/chart'
 require 'yui4rails/widgets/carousel'
 require 'yui4rails/widgets/tooltip'
 require 'yui4rails/asset_manager'</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/yui4rails/widgets/charts.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>927a5ec7f2ce36a5238e252c4d6c5bcd12efd190</id>
    </parent>
  </parents>
  <author>
    <name>Marty Haught</name>
    <email>mghaught@gmail.com</email>
  </author>
  <url>http://github.com/mghaught/yui4rails/commit/274306eb2d77fc761730e418a9443440bfd5d7af</url>
  <id>274306eb2d77fc761730e418a9443440bfd5d7af</id>
  <committed-date>2008-11-24T09:46:41-08:00</committed-date>
  <authored-date>2008-11-24T09:46:41-08:00</authored-date>
  <message>Merged chart changes into smc application</message>
  <tree>2bc39998491d219e599bd6e524677682b7e4bb72</tree>
  <committer>
    <name>Marty Haught</name>
    <email>mghaught@gmail.com</email>
  </committer>
</commit>
