added support for postgres - reportable - Fork of reportable required by WarVox, from hdm/reportable.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit cabd6ea34c0922bdb62628218399f34f7857e2dd
 (DIR) parent 6fa91753578a26722f5dcb1910bb8d771117c316
 (HTM) Author: marcoow <marco.otte-witte@simplabs.com>
       Date:   Thu,  4 Dec 2008 22:02:49 +0800
       
       added support for postgres
       
       Signed-off-by: Marco Otte-Witte <marco.otte-witte@simplabs.com>
       Diffstat:
         M README.rdoc                         |      10 ++++++----
         M lib/kvlr/reports_as_sparkline/grou… |      15 +++++++++++++++
         M lib/kvlr/reports_as_sparkline/repo… |       2 +-
         M lib/kvlr/reports_as_sparkline/repo… |       5 +++--
         M spec/db/database.yml                |      10 ++++++++--
         M spec/db/schema.rb                   |       2 +-
         M spec/other/cumulated_report_spec.rb |       1 +
         M spec/other/report_spec.rb           |       1 +
       
       8 files changed, 36 insertions(+), 10 deletions(-)
       ---
 (DIR) diff --git a/README.rdoc b/README.rdoc
       @@ -1,6 +1,6 @@
       -## ReportsAsSparkline
       += ReportsAsSparkline
        
       -This plugin shall allow you to generate sparklines and do reporting from your database with very little effort.
       +ReportsAsSparkline enables you to generate reports and sparklines from your database with very little effort.
        
        ### Example
        
       @@ -24,12 +24,14 @@ Using *report_as_sparkline* like this will add the following class methods to yo
        ### Implemented features
        * cumulate option that depends on other report
            
       -### Pending points
       +== TODOs/ future plans
        
       -* Create a model to cache results and reuse
       +* support for Oracle and DB2 (and others?) missing
        * Implement data ranges in arguments
        * Limit number of data points to maximum that the google chart api allows
        * Make graph styling configurable
        
       +If you want ot suggest any new features or report bugs, do so at http://simplabs.lighthouseapp.com/projects/21060-reportsassparkline/overview.
       +
        
        &copy; 2008 Martin Kavalar, Marco Otte-Witte (http://simplabs.com/#projects), released under the MIT license
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/grouping.rb b/lib/kvlr/reports_as_sparkline/grouping.rb
       @@ -65,6 +65,8 @@ module Kvlr #:nodoc:
                    mysql_format(date_column_name)
                  when 'ActiveRecord::ConnectionAdapters::SQLite3Adapter'
                    sqlite_format(date_column_name)
       +          when 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'
       +            postgresql_format(date_column_name)
                end
              end
        
       @@ -96,6 +98,19 @@ module Kvlr #:nodoc:
                  end
                end
        
       +        def postgresql_format(date_column_name)
       +          return case @identifier
       +            when :day
       +              "date_trunc('day', #{date_column_name})"
       +            when :week
       +              "date_trunc('week', #{date_column_name})"
       +            when :month
       +              "date_trunc('month', #{date_column_name})"
       +            when :hour
       +              "date_trunc('hour', #{date_column_name})"
       +          end
       +        end
       +
            end
        
          end
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/report.rb b/lib/kvlr/reports_as_sparkline/report.rb
       @@ -34,7 +34,7 @@ module Kvlr #:nodoc:
                    options[:value_column_name].to_s,
                    :conditions => conditions,
                    :group => grouping.to_sql(options[:date_column_name]),
       -            :order => "#{options[:date_column_name].to_s} DESC"
       +            :order => "#{grouping.to_sql(options[:date_column_name])} DESC"
                  )
                end
              end
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/report_cache.rb b/lib/kvlr/reports_as_sparkline/report_cache.rb
       @@ -23,13 +23,14 @@ module Kvlr #:nodoc:
        
                def self.get_last_reporting_period(cached_data, grouping, acc)
                  return acc if cached_data.empty?
       -          period = grouping.to_reporting_period(DateTime.parse(cached_data[0].reporting_period))
       +          puts cached_data[0].reporting_period.class.inspect
       +          period = grouping.to_reporting_period(cached_data[0].reporting_period)
                  cached_data[1..-2].each_with_index do |cached, i|
                    if grouping.next_reporting_period(grouping.to_reporting_period(DateTime.parse(cached.reporting_period))) != grouping.to_reporting_period(DateTime.parse(cached_data[i + 1].reporting_period))
                      return cached
                    end
                  end
       -          return grouping.to_reporting_period(DateTime.parse(cached_data[-1].reporting_period))
       +          return grouping.to_reporting_period(cached_data[-1].reporting_period)
                end
        
                def self.update_cache(new_data, cached_data, report, grouping)
 (DIR) diff --git a/spec/db/database.yml b/spec/db/database.yml
       @@ -8,4 +8,10 @@ mysql:
          username: reports_as_spark
          password: reports_as_spark
          host: localhost
       -  
       -\ No newline at end of file
       +
       +postgresql:
       +  adapter: postgresql
       +  database: reports_as_sparkline_test
       +  username: reports_as_sparkline
       +  password: reports_as_sparkline
       +  host: localhost
       +\ No newline at end of file
 (DIR) diff --git a/spec/db/schema.rb b/spec/db/schema.rb
       @@ -12,7 +12,7 @@ ActiveRecord::Schema.define(:version => 1) do
            t.string   :report_name,      :null => false
            t.string   :report_grouping,  :null => false
            t.float    :value,            :null => false, :default => 0
       -    t.string   :reporting_period, :null => false
       +    t.datetime :reporting_period, :null => false
        
            t.timestamps
          end
 (DIR) diff --git a/spec/other/cumulated_report_spec.rb b/spec/other/cumulated_report_spec.rb
       @@ -39,6 +39,7 @@ describe Kvlr::ReportsAsSparkline::CumulatedReport do
        
              after do
                User.destroy_all
       +        Kvlr::ReportsAsSparkline::ReportCache.destroy_all
              end
        
            end
 (DIR) diff --git a/spec/other/report_spec.rb b/spec/other/report_spec.rb
       @@ -58,6 +58,7 @@ describe Kvlr::ReportsAsSparkline::Report do
        
              after do
                User.destroy_all
       +        Kvlr::ReportsAsSparkline::ReportCache.destroy_all
              end
        
            end