documentation done; THIS FINALLY IS V0.1 - reportable - Fork of reportable required by WarVox, from hdm/reportable.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit a90c63b9ab845475800848a611f27a91b564bfa8
 (DIR) parent 793ccc345c8f37fa8cbfc3eb8579779d1c248ffa
 (HTM) Author: marcoow <marco.otte-witte@simplabs.com>
       Date:   Fri, 12 Dec 2008 03:19:05 +0800
       
       documentation done; THIS FINALLY IS V0.1
       
       Signed-off-by: Marco Otte-Witte <marco.otte-witte@simplabs.com>
       Diffstat:
         M README.rdoc                         |      36 +++++++++++++++----------------
         M lib/kvlr/reports_as_sparkline.rb    |       2 +-
         M lib/kvlr/reports_as_sparkline/asse… |       8 ++++----
         M lib/kvlr/reports_as_sparkline/grou… |       5 ++---
         M lib/kvlr/reports_as_sparkline/repo… |      18 ++++++++++++++++++
         M lib/kvlr/reports_as_sparkline/repo… |      10 ++++++++++
         M rdoc/classes/Kvlr/CoreExtensions/D… |      12 ++++++------
         M rdoc/classes/Kvlr/ReportsAsSparkli… |      24 ++++++++++++++++--------
         M rdoc/classes/Kvlr/ReportsAsSparkli… |       5 +++--
         M rdoc/classes/Kvlr/ReportsAsSparkli… |      17 ++++++++++-------
         M rdoc/classes/Kvlr/ReportsAsSparkli… |     135 +++++++++----------------------
         M rdoc/classes/Kvlr/ReportsAsSparkli… |     132 ++++++++++++++++++++++---------
         D rdoc/classes/Kvlr/ReportsAsSparkli… |     167 -------------------------------
         M rdoc/classes/Kvlr/ReportsAsSparkli… |     202 ++++++++++++++-----------------
         M rdoc/created.rid                    |       2 +-
         M rdoc/files/README_rdoc.html         |      42 +++++++++++++------------------
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/files/lib/kvlr/reports_as_spa… |       2 +-
         M rdoc/fr_class_index.html            |       1 -
         M rdoc/fr_method_index.html           |      21 ++++++++-------------
       
       25 files changed, 348 insertions(+), 505 deletions(-)
       ---
 (DIR) diff --git a/README.rdoc b/README.rdoc
       @@ -1,29 +1,27 @@
        = ReportsAsSparkline
        
       -ReportsAsSparkline enables you to generate reports and sparklines from your database with very little effort.
       +ReportsAsSparkline enables you to generate reports and sparklines from your model's data with very little effort.
        
       -### Example
       +== Example
        
       -This shows the first basic usage. Consider the following user model, including *created_at* and *activated_at* timestamp fields.
       +This shows the basic usage. Consider the following user model, including +created_at+ and +activated_at+ timestamp fields.
        
       -    class User < ActiveRecord::Base
       -      report_as_sparkline :registrations
       -      report_as_sparkline :activations, :date_column => :activated_at
       -      report_as_sparkline :total_users, :cumulate => :registrations
       +  class User < ActiveRecord::Base
       +    report_as_sparkline :registrations
       +    report_as_sparkline :activations,  :date_column_name => :activated_at
       +    report_as_sparkline :total_users,  :cumulate         => true
            end
        
       -Using *report_as_sparkline* like this will add the following class methods to your User model:
       -
       -    # Generates a sparkline from the google chart api
       -    # so you see the registrations per day
       -    User.registrations_graph
       -    
       -    # Gets an array of the data to use in numerical display
       -    User.registrations_report
       -    
       -### Implemented features
       -* cumulate option that depends on other report
       -    
       +Using +report_as_sparkline+ like this will add the following class methods to your User model:
       +
       +  User.registrations_report
       +  User.activations_report
       +  User.total_users_report
       +
       +You can than render sparklines for these reports with sparkline_tag in your view:
       +
       +  <%= sparkline_tag(User.registrations_report) %>
       +
        == TODOs/ future plans
        
        * support for Oracle and DB2 (and others?) missing
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline.rb b/lib/kvlr/reports_as_sparkline.rb
       @@ -8,7 +8,7 @@ module Kvlr #:nodoc:
        
            module ClassMethods
        
       -      # Generates a report on a model. The report can then be executed via <name>_report
       +      # Generates a report on a model. That report can then be executed via the new method <name>_report (see documentation of Kvlr::ReportsAsSparkline::Report#run).
              # 
              # ==== Parameters
              #
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/asset_tag_helper.rb b/lib/kvlr/reports_as_sparkline/asset_tag_helper.rb
       @@ -8,13 +8,13 @@ module Kvlr #:nodoc:
              #
              # ==== Parameters
              #
       -      # *<tt>data</tt> - The data to render the sparkline for
       +      # * <tt>data</tt> - The data to render the sparkline for
              #
              # ==== Options
              #
       -      # *<tt>width</tt> - The width of the generated image
       -      # *<tt>height</tt> - The height of the generated image
       -      # *<tt>color</tt> - The base color of the generated image (hex code)
       +      # * <tt>width</tt> - The width of the generated image
       +      # * <tt>height</tt> - The height of the generated image
       +      # * <tt>color</tt> - The base color of the generated image (hex code)
              #
              # ==== Example
              # <%= sparkline_tag(User.registrations_report, :width => 200, :height => 100, :color => '000') %>
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/grouping.rb b/lib/kvlr/reports_as_sparkline/grouping.rb
       @@ -3,11 +3,10 @@ module Kvlr #:nodoc:
          module ReportsAsSparkline #:nodoc:
        
            # This is the grouping a report uses to group records in the database
       -    #
       -    # ==== Parameters
       -    #  * <tt>identifier</tt> - The identifier of the grouping - one of :hour, :day, :week or :month
            class Grouping
        
       +      # ==== Parameters
       +      # * <tt>identifier</tt> - The identifier of the grouping - one of :hour, :day, :week or :month
              def initialize(identifier)
                raise ArgumentError.new("Invalid grouping #{grouping}") unless [:hour, :day, :week, :month].include?(identifier)
                @identifier = identifier
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/report.rb b/lib/kvlr/reports_as_sparkline/report.rb
       @@ -2,10 +2,23 @@ module Kvlr #:nodoc:
        
          module ReportsAsSparkline #:nodoc:
        
       +    # The Report class that does all the data retrieval and calculations
            class Report
        
              attr_reader :klass, :name, :date_column_name, :value_column_name, :grouping, :aggregation
        
       +      # ==== Parameters
       +      # * <tt>klass</tt> - The model the report works on (This is the class you invoke Kvlr::ReportsAsSparkline::ClassMethods#report_as_sparkline on)
       +      # * <tt>name</tt> - The name of the report (as in Kvlr::ReportsAsSparkline::ClassMethods#report_as_sparkline)
       +      #
       +      # ==== Options
       +      #
       +      # * <tt>:date_column_name</tt> - The name of the date column on that the records are aggregated
       +      # * <tt>:value_column_name</tt> - The name of the column that holds the value to sum for aggregation :sum
       +      # * <tt>:aggregation</tt> - The aggregation to use (either :count or :sum); when using :sum, :value_column_name must also be specified
       +      # * <tt>:grouping</tt> - The period records are grouped on (:hour, :day, :week, :month)
       +      # * <tt>:limit</tt> - The number of periods to get (see :grouping)
       +      # * <tt>:conditions</tt> - Conditions like in ActiveRecord::Base#find; only records that match there conditions are reported on
              def initialize(klass, name, options = {})
                ensure_valid_options(options)
                @klass             = klass
       @@ -21,6 +34,11 @@ module Kvlr #:nodoc:
                @options.merge!(options)
              end
        
       +      # Runs the report and returns an array of array of DateTimes and Floats
       +      #
       +      # ==== Options
       +      # * <tt>:limit</tt> - The number of periods to get
       +      # * <tt>:conditions</tt> - Conditions like in ActiveRecord::Base#find; only records that match there conditions are reported on (<b>Beware that when you specify conditions here, caching will be disabled</b>)
              def run(options = {})
                ensure_valid_options(options, :run)
                custom_conditions = options.key?(:conditions)
 (DIR) diff --git a/lib/kvlr/reports_as_sparkline/reporting_period.rb b/lib/kvlr/reports_as_sparkline/reporting_period.rb
       @@ -2,15 +2,24 @@ module Kvlr #:nodoc:
        
          module ReportsAsSparkline #:nodoc:
        
       +    # A ReportingPeriod is  - depending on the Grouping - either a specific hour, a day, a month or a year. All records falling into this period will be grouped.
            class ReportingPeriod
        
              attr_reader :date_time, :grouping
        
       +      # ==== Parameters
       +      # * <tt>grouping</tt> - The Kvlr::ReportsAsSparkline::Grouping of the reporting period
       +      # * <tt>date_time</tt> - The DateTime that reporting period is created for
              def initialize(grouping, date_time = DateTime.now)
                @grouping  = grouping
                @date_time = parse_date_time(date_time)
              end
        
       +      # Returns the first reporting period for a grouping and a limit; e.g. the first reporting period for Grouping :day and limit 2 would be Time.now - 2.days
       +      #
       +      # ==== Parameters
       +      # * <tt>grouping</tt> - The Kvlr::ReportsAsSparkline::Grouping of the reporting period
       +      # * <tt>limit</tt> - The number of reporting periods until the first one
              def self.first(grouping, limit)
                return case grouping.identifier
                  when :hour
       @@ -40,6 +49,7 @@ module Kvlr #:nodoc:
                result
              end
        
       +      # Returns the previous reporting period
              def previous
                return case @grouping.identifier
                  when :hour
 (DIR) diff --git a/rdoc/classes/Kvlr/CoreExtensions/DateTime.html b/rdoc/classes/Kvlr/CoreExtensions/DateTime.html
       @@ -80,7 +80,7 @@
              <h3 class="section-bar">Methods</h3>
        
              <div class="name-list">
       -      <a href="#M000016">to_reporting_period</a>&nbsp;&nbsp;
       +      <a href="#M000011">to_reporting_period</a>&nbsp;&nbsp;
              </div>
            </div>
        
       @@ -102,11 +102,11 @@
            <div id="methods">
              <h3 class="section-bar">Public Instance methods</h3>
        
       -      <div id="method-M000016" class="method-detail">
       -        <a name="M000016"></a>
       +      <div id="method-M000011" class="method-detail">
       +        <a name="M000011"></a>
        
                <div class="method-heading">
       -          <a href="#M000016" class="method-signature">
       +          <a href="#M000011" class="method-signature">
                  <span class="method-name">to_reporting_period</span><span class="method-args">(grouping)</span>
                  </a>
                </div>
       @@ -117,8 +117,8 @@ Converts the <a href="DateTime.html">DateTime</a> into a <a
        href="../ReportsAsSparkline/ReportingPeriod.html">Kvlr::ReportsAsSparkline::ReportingPeriod</a>
        </p>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000016-source">
       +            onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000011-source">
        <pre>
            <span class="ruby-comment cmt"># File lib/kvlr/core_extensions/date_time.rb, line 10</span>
        10:         <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_reporting_period</span>(<span class="ruby-identifier">grouping</span>)
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html b/rdoc/classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html
       @@ -116,15 +116,23 @@
        Renders a sparkline with the given data.
        </p>
        <h4>Parameters</h4>
       -<p>
       -*<tt>data</tt> - The data to render the sparkline for
       -</p>
       +<ul>
       +<li><tt>data</tt> - The data to render the sparkline for
       +
       +</li>
       +</ul>
        <h4>Options</h4>
       -<p>
       -*<tt>width</tt> - The width of the generated image *<tt>height</tt> - The
       -height of the generated image *<tt>color</tt> - The base color of the
       -generated image (hex code)
       -</p>
       +<ul>
       +<li><tt>width</tt> - The width of the generated image
       +
       +</li>
       +<li><tt>height</tt> - The height of the generated image
       +
       +</li>
       +<li><tt>color</tt> - The base color of the generated image (hex code)
       +
       +</li>
       +</ul>
        <h4>Example</h4>
        <p>
        &lt;%= <a
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/ClassMethods.html b/rdoc/classes/Kvlr/ReportsAsSparkline/ClassMethods.html
       @@ -113,8 +113,9 @@
              
                <div class="method-description">
                  <p>
       -Generates a report on a model. The report can then be executed via
       -&lt;name&gt;_report
       +Generates a report on a model. That report can then be executed via the new
       +method &lt;name&gt;_report (see documentation of <a
       +href="Report.html#M000010">Kvlr::ReportsAsSparkline::Report#run</a>).
        </p>
        <h4>Parameters</h4>
        <ul>
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/CumulatedReport.html b/rdoc/classes/Kvlr/ReportsAsSparkline/CumulatedReport.html
       @@ -88,9 +88,12 @@ href="Report.html">Kvlr::ReportsAsSparkline::Report</a>)
        <h4>Examples</h4>
        <pre>
         When Kvlr::ReportsAsSparkline::Report returns
       -   [[&lt;DateTime today&gt;, 1], [&lt;DateTime yesterday&gt;, 2]]
       +
       +   [[&lt;DateTime today&gt;, 1], [&lt;DateTime yesterday&gt;, 2], etc.]
       +
         Kvlr::ReportsAsSparkline::CumulatedReport returns
       -   [[&lt;DateTime today&gt;, 3], [&lt;DateTime yesterday&gt;, 2]]
       +
       +   [[&lt;DateTime today&gt;, 3], [&lt;DateTime yesterday&gt;, 2], etc.]
        </pre>
        
            </div>
       @@ -136,16 +139,16 @@ href="Report.html">Kvlr::ReportsAsSparkline::Report</a>)
                <div class="method-description">
                  <p>
        Runs the report (see <a
       -href="Report.html#M000015">Kvlr::ReportsAsSparkline::Report#run</a>)
       +href="Report.html#M000010">Kvlr::ReportsAsSparkline::Report#run</a>)
        </p>
                  <p><a class="source-toggle" href="#"
                    onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
                  <div class="method-source-code" id="M000003-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/cumulated_report.rb, line 16</span>
       -16:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">options</span> = {})
       -17:         <span class="ruby-identifier">cumulate</span>(<span class="ruby-keyword kw">super</span>)
       -18:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/cumulated_report.rb, line 19</span>
       +19:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">options</span> = {})
       +20:         <span class="ruby-identifier">cumulate</span>(<span class="ruby-keyword kw">super</span>)
       +21:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/Grouping.html b/rdoc/classes/Kvlr/ReportsAsSparkline/Grouping.html
       @@ -78,6 +78,12 @@
        
          <div id="contextContent">
        
       +    <div id="description">
       +      <p>
       +This is the grouping a report uses to group records in the database
       +</p>
       +
       +    </div>
        
        
           </div>
       @@ -86,10 +92,8 @@
              <h3 class="section-bar">Methods</h3>
        
              <div class="name-list">
       -      <a href="#M000007">date_parts_from_db_string</a>&nbsp;&nbsp;
       -      <a href="#M000006">identifier</a>&nbsp;&nbsp;
       -      <a href="#M000005">new</a>&nbsp;&nbsp;
       -      <a href="#M000008">to_sql</a>&nbsp;&nbsp;
       +      <a href="#M000005">identifier</a>&nbsp;&nbsp;
       +      <a href="#M000004">new</a>&nbsp;&nbsp;
              </div>
            </div>
        
       @@ -111,25 +115,33 @@
            <div id="methods">
              <h3 class="section-bar">Public Class methods</h3>
        
       -      <div id="method-M000005" class="method-detail">
       -        <a name="M000005"></a>
       +      <div id="method-M000004" class="method-detail">
       +        <a name="M000004"></a>
        
                <div class="method-heading">
       -          <a href="#M000005" class="method-signature">
       -          <span class="method-name">new</span><span class="method-args">(grouping)</span>
       +          <a href="#M000004" class="method-signature">
       +          <span class="method-name">new</span><span class="method-args">(identifier)</span>
                  </a>
                </div>
              
                <div class="method-description">
       +          <h4>Parameters</h4>
       +<ul>
       +<li><tt><a href="Grouping.html#M000005">identifier</a></tt> - The <a
       +href="Grouping.html#M000005">identifier</a> of the grouping - one of :hour,
       +:day, :week or :month
       +
       +</li>
       +</ul>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000005-source">
       +            onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000004-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 7</span>
       - 7:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">grouping</span>)
       - 8:         <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Invalid grouping #{grouping}&quot;</span>) <span class="ruby-keyword kw">unless</span> [<span class="ruby-identifier">:hour</span>, <span class="ruby-identifier">:day</span>, <span class="ruby-identifier">:week</span>, <span class="ruby-identifier">:month</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">grouping</span>)
       - 9:         <span class="ruby-ivar">@identifier</span> = <span class="ruby-identifier">grouping</span>
       -10:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 10</span>
       +10:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">identifier</span>)
       +11:         <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;Invalid grouping #{grouping}&quot;</span>) <span class="ruby-keyword kw">unless</span> [<span class="ruby-identifier">:hour</span>, <span class="ruby-identifier">:day</span>, <span class="ruby-identifier">:week</span>, <span class="ruby-identifier">:month</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">identifier</span>)
       +12:         <span class="ruby-ivar">@identifier</span> = <span class="ruby-identifier">identifier</span>
       +13:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
       @@ -137,95 +149,28 @@
        
              <h3 class="section-bar">Public Instance methods</h3>
        
       -      <div id="method-M000007" class="method-detail">
       -        <a name="M000007"></a>
       -
       -        <div class="method-heading">
       -          <a href="#M000007" class="method-signature">
       -          <span class="method-name">date_parts_from_db_string</span><span class="method-args">(db_string)</span>
       -          </a>
       -        </div>
       -      
       -        <div class="method-description">
       -          <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000007-source">
       -<pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 16</span>
       -16:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">date_parts_from_db_string</span>(<span class="ruby-identifier">db_string</span>)
       -17:         <span class="ruby-keyword kw">if</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'</span>
       -18:           <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@identifier</span>
       -19:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       -20:               <span class="ruby-keyword kw">return</span> (<span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">9</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>) <span class="ruby-operator">+</span> [<span class="ruby-identifier">db_string</span>[<span class="ruby-value">11</span><span class="ruby-operator">..</span><span class="ruby-value">12</span>]]).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       -21:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       -22:               <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">9</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       -23:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       -24:               <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">9</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       -25:               <span class="ruby-identifier">date</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>])
       -26:               <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">date</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">date</span>.<span class="ruby-identifier">cweek</span>]
       -27:             <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       -28:               <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">db_string</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">6</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>)[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       -29:           <span class="ruby-keyword kw">end</span>
       -30:         <span class="ruby-keyword kw">else</span>
       -31:           <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">db_string</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">map</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:to_i</span>)
       -32:           <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">parts</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::MysqlAdapter'</span>
       -33:           <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@identifier</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">:week</span>
       -34:           <span class="ruby-identifier">parts</span>
       -35:         <span class="ruby-keyword kw">end</span>
       -36:       <span class="ruby-keyword kw">end</span>
       -</pre>
       -          </div>
       -        </div>
       -      </div>
       -
       -      <div id="method-M000006" class="method-detail">
       -        <a name="M000006"></a>
       +      <div id="method-M000005" class="method-detail">
       +        <a name="M000005"></a>
        
                <div class="method-heading">
       -          <a href="#M000006" class="method-signature">
       +          <a href="#M000005" class="method-signature">
                  <span class="method-name">identifier</span><span class="method-args">()</span>
                  </a>
                </div>
              
                <div class="method-description">
       +          <p>
       +Returns the <a href="Grouping.html">Grouping</a>&#8216;s <a
       +href="Grouping.html#M000005">identifier</a>
       +</p>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000006-source">
       -<pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 12</span>
       -12:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">identifier</span>
       -13:         <span class="ruby-ivar">@identifier</span>
       -14:       <span class="ruby-keyword kw">end</span>
       -</pre>
       -          </div>
       -        </div>
       -      </div>
       -
       -      <div id="method-M000008" class="method-detail">
       -        <a name="M000008"></a>
       -
       -        <div class="method-heading">
       -          <a href="#M000008" class="method-signature">
       -          <span class="method-name">to_sql</span><span class="method-args">(date_column_name)</span>
       -          </a>
       -        </div>
       -      
       -        <div class="method-description">
       -          <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000008-source">
       +            onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000005-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 38</span>
       -38:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_sql</span>(<span class="ruby-identifier">date_column_name</span>)
       -39:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-constant">ActiveRecord</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">connection</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>
       -40:           <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::MysqlAdapter'</span>
       -41:             <span class="ruby-identifier">mysql_format</span>(<span class="ruby-identifier">date_column_name</span>)
       -42:           <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::SQLite3Adapter'</span>
       -43:             <span class="ruby-identifier">sqlite_format</span>(<span class="ruby-identifier">date_column_name</span>)
       -44:           <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'</span>
       -45:             <span class="ruby-identifier">postgresql_format</span>(<span class="ruby-identifier">date_column_name</span>)
       -46:         <span class="ruby-keyword kw">end</span>
       -47:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/grouping.rb, line 16</span>
       +16:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">identifier</span>
       +17:         <span class="ruby-ivar">@identifier</span>
       +18:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/Report.html b/rdoc/classes/Kvlr/ReportsAsSparkline/Report.html
       @@ -78,6 +78,13 @@
        
          <div id="contextContent">
        
       +    <div id="description">
       +      <p>
       +The <a href="Report.html">Report</a> class that does all the data retrieval
       +and calculations
       +</p>
       +
       +    </div>
        
        
           </div>
       @@ -86,8 +93,8 @@
              <h3 class="section-bar">Methods</h3>
        
              <div class="name-list">
       -      <a href="#M000014">new</a>&nbsp;&nbsp;
       -      <a href="#M000015">run</a>&nbsp;&nbsp;
       +      <a href="#M000009">new</a>&nbsp;&nbsp;
       +      <a href="#M000010">run</a>&nbsp;&nbsp;
              </div>
            </div>
        
       @@ -147,35 +154,74 @@
            <div id="methods">
              <h3 class="section-bar">Public Class methods</h3>
        
       -      <div id="method-M000014" class="method-detail">
       -        <a name="M000014"></a>
       +      <div id="method-M000009" class="method-detail">
       +        <a name="M000009"></a>
        
                <div class="method-heading">
       -          <a href="#M000014" class="method-signature">
       +          <a href="#M000009" class="method-signature">
                  <span class="method-name">new</span><span class="method-args">(klass, name, options = {})</span>
                  </a>
                </div>
              
                <div class="method-description">
       +          <h4>Parameters</h4>
       +<ul>
       +<li><tt>klass</tt> - The model the report works on (This is the class you
       +invoke <a
       +href="ClassMethods.html#M000001">Kvlr::ReportsAsSparkline::ClassMethods#report_as_sparkline</a>
       +on)
       +
       +</li>
       +<li><tt>name</tt> - The name of the report (as in <a
       +href="ClassMethods.html#M000001">Kvlr::ReportsAsSparkline::ClassMethods#report_as_sparkline</a>)
       +
       +</li>
       +</ul>
       +<h4>Options</h4>
       +<ul>
       +<li><tt>:date_column_name</tt> - The name of the date column on that the
       +records are aggregated
       +
       +</li>
       +<li><tt>:value_column_name</tt> - The name of the column that holds the value
       +to sum for aggregation :sum
       +
       +</li>
       +<li><tt>:aggregation</tt> - The aggregation to use (either :count or :sum);
       +when using :sum, :value_column_name must also be specified
       +
       +</li>
       +<li><tt>:grouping</tt> - The period records are grouped on (:hour, :day, :week,
       +:month)
       +
       +</li>
       +<li><tt>:limit</tt> - The number of periods to get (see :grouping)
       +
       +</li>
       +<li><tt>:conditions</tt> - Conditions like in ActiveRecord::Base#find; only
       +records that match there conditions are reported on
       +
       +</li>
       +</ul>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000014-source">
       +            onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000009-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report.rb, line 9</span>
       - 9:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">klass</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span> = {})
       -10:         <span class="ruby-identifier">ensure_valid_options</span>(<span class="ruby-identifier">options</span>)
       -11:         <span class="ruby-ivar">@klass</span>             = <span class="ruby-identifier">klass</span>
       -12:         <span class="ruby-ivar">@name</span>              = <span class="ruby-identifier">name</span>
       -13:         <span class="ruby-ivar">@date_column_name</span>  = (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:date_column_name</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'created_at'</span>).<span class="ruby-identifier">to_s</span>
       -14:         <span class="ruby-ivar">@value_column_name</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:value_column_name</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:aggregation</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">:sum</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">name</span>)).<span class="ruby-identifier">to_s</span>
       -15:         <span class="ruby-ivar">@aggregation</span>       = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:aggregation</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:count</span>
       -16:         <span class="ruby-ivar">@grouping</span>          = <span class="ruby-constant">Grouping</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:grouping</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:day</span>)
       -17:         <span class="ruby-ivar">@options</span> = {
       -18:           <span class="ruby-identifier">:limit</span>             =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit</span>] <span class="ruby-operator">||</span> <span class="ruby-value">100</span>,
       -19:           <span class="ruby-identifier">:conditions</span>        =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:conditions</span>] <span class="ruby-operator">||</span> []
       -20:         }
       -21:         <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">options</span>)
       -22:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report.rb, line 22</span>
       +22:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">klass</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">options</span> = {})
       +23:         <span class="ruby-identifier">ensure_valid_options</span>(<span class="ruby-identifier">options</span>)
       +24:         <span class="ruby-ivar">@klass</span>             = <span class="ruby-identifier">klass</span>
       +25:         <span class="ruby-ivar">@name</span>              = <span class="ruby-identifier">name</span>
       +26:         <span class="ruby-ivar">@date_column_name</span>  = (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:date_column_name</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'created_at'</span>).<span class="ruby-identifier">to_s</span>
       +27:         <span class="ruby-ivar">@value_column_name</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:value_column_name</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:aggregation</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">:sum</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'id'</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">name</span>)).<span class="ruby-identifier">to_s</span>
       +28:         <span class="ruby-ivar">@aggregation</span>       = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:aggregation</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:count</span>
       +29:         <span class="ruby-ivar">@grouping</span>          = <span class="ruby-constant">Grouping</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:grouping</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">:day</span>)
       +30:         <span class="ruby-ivar">@options</span> = {
       +31:           <span class="ruby-identifier">:limit</span>             =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit</span>] <span class="ruby-operator">||</span> <span class="ruby-value">100</span>,
       +32:           <span class="ruby-identifier">:conditions</span>        =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:conditions</span>] <span class="ruby-operator">||</span> []
       +33:         }
       +34:         <span class="ruby-ivar">@options</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">options</span>)
       +35:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
       @@ -183,29 +229,43 @@
        
              <h3 class="section-bar">Public Instance methods</h3>
        
       -      <div id="method-M000015" class="method-detail">
       -        <a name="M000015"></a>
       +      <div id="method-M000010" class="method-detail">
       +        <a name="M000010"></a>
        
                <div class="method-heading">
       -          <a href="#M000015" class="method-signature">
       +          <a href="#M000010" class="method-signature">
                  <span class="method-name">run</span><span class="method-args">(options = {})</span>
                  </a>
                </div>
              
                <div class="method-description">
       +          <p>
       +Runs the report and returns an array of array of DateTimes and Floats
       +</p>
       +<h4>Options</h4>
       +<ul>
       +<li><tt>:limit</tt> - The number of periods to get
       +
       +</li>
       +<li><tt>:conditions</tt> - Conditions like in ActiveRecord::Base#find; only
       +records that match there conditions are reported on (<b>Beware that when
       +you specify conditions here, caching will be disabled</b>)
       +
       +</li>
       +</ul>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000015-source">
       +            onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000010-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report.rb, line 24</span>
       -24:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">options</span> = {})
       -25:         <span class="ruby-identifier">ensure_valid_options</span>(<span class="ruby-identifier">options</span>, <span class="ruby-identifier">:run</span>)
       -26:         <span class="ruby-identifier">custom_conditions</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">:conditions</span>)
       -27:         <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reverse_merge!</span>(<span class="ruby-ivar">@options</span>)
       -28:         <span class="ruby-constant">ReportCache</span>.<span class="ruby-identifier">process</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit</span>], <span class="ruby-identifier">custom_conditions</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">begin_at</span><span class="ruby-operator">|</span>
       -29:           <span class="ruby-identifier">read_data</span>(<span class="ruby-identifier">begin_at</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:conditions</span>])
       -30:         <span class="ruby-keyword kw">end</span>
       -31:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report.rb, line 42</span>
       +42:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>(<span class="ruby-identifier">options</span> = {})
       +43:         <span class="ruby-identifier">ensure_valid_options</span>(<span class="ruby-identifier">options</span>, <span class="ruby-identifier">:run</span>)
       +44:         <span class="ruby-identifier">custom_conditions</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">key?</span>(<span class="ruby-identifier">:conditions</span>)
       +45:         <span class="ruby-identifier">options</span>.<span class="ruby-identifier">reverse_merge!</span>(<span class="ruby-ivar">@options</span>)
       +46:         <span class="ruby-constant">ReportCache</span>.<span class="ruby-identifier">process</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit</span>], <span class="ruby-identifier">custom_conditions</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">begin_at</span><span class="ruby-operator">|</span>
       +47:           <span class="ruby-identifier">read_data</span>(<span class="ruby-identifier">begin_at</span>, <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:conditions</span>])
       +48:         <span class="ruby-keyword kw">end</span>
       +49:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/ReportCache.html b/rdoc/classes/Kvlr/ReportsAsSparkline/ReportCache.html
       @@ -1,166 +0,0 @@
       -<?xml version="1.0" encoding="iso-8859-1"?>
       -<!DOCTYPE html 
       -     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       -     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
       -
       -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
       -<head>
       -  <title>Class: Kvlr::ReportsAsSparkline::ReportCache</title>
       -  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       -  <meta http-equiv="Content-Script-Type" content="text/javascript" />
       -  <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
       -  <script type="text/javascript">
       -  // <![CDATA[
       -
       -  function popupCode( url ) {
       -    window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
       -  }
       -
       -  function toggleCode( id ) {
       -    if ( document.getElementById )
       -      elem = document.getElementById( id );
       -    else if ( document.all )
       -      elem = eval( "document.all." + id );
       -    else
       -      return false;
       -
       -    elemStyle = elem.style;
       -    
       -    if ( elemStyle.display != "block" ) {
       -      elemStyle.display = "block"
       -    } else {
       -      elemStyle.display = "none"
       -    }
       -
       -    return true;
       -  }
       -  
       -  // Make codeblocks hidden by default
       -  document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
       -  
       -  // ]]>
       -  </script>
       -
       -</head>
       -<body>
       -
       -
       -
       -    <div id="classHeader">
       -        <table class="header-table">
       -        <tr class="top-aligned-row">
       -          <td><strong>Class</strong></td>
       -          <td class="class-name-in-header">Kvlr::ReportsAsSparkline::ReportCache</td>
       -        </tr>
       -        <tr class="top-aligned-row">
       -            <td><strong>In:</strong></td>
       -            <td>
       -                <a href="../../../files/lib/kvlr/reports_as_sparkline/report_cache_rb.html">
       -                lib/kvlr/reports_as_sparkline/report_cache.rb
       -                </a>
       -        <br />
       -            </td>
       -        </tr>
       -
       -        <tr class="top-aligned-row">
       -            <td><strong>Parent:</strong></td>
       -            <td>
       -                ActiveRecord::Base
       -            </td>
       -        </tr>
       -        </table>
       -    </div>
       -  <!-- banner header -->
       -
       -  <div id="bodyContent">
       -
       -
       -
       -  <div id="contextContent">
       -
       -
       -
       -   </div>
       -
       -    <div id="method-list">
       -      <h3 class="section-bar">Methods</h3>
       -
       -      <div class="name-list">
       -      <a href="#M000004">process</a>&nbsp;&nbsp;
       -      </div>
       -    </div>
       -
       -  </div>
       -
       -
       -    <!-- if includes -->
       -
       -    <div id="section">
       -
       -
       -
       -
       -
       -      
       -
       -
       -    <!-- if method_list -->
       -    <div id="methods">
       -      <h3 class="section-bar">Public Class methods</h3>
       -
       -      <div id="method-M000004" class="method-detail">
       -        <a name="M000004"></a>
       -
       -        <div class="method-heading">
       -          <a href="#M000004" class="method-signature">
       -          <span class="method-name">process</span><span class="method-args">(report, limit, no_cache = false) {|last_reporting_period_to_read.date_time| ...}</span>
       -          </a>
       -        </div>
       -      
       -        <div class="method-description">
       -          <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000004-source">
       -<pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/report_cache.rb, line 9</span>
       - 9:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">process</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">limit</span>, <span class="ruby-identifier">no_cache</span> = <span class="ruby-keyword kw">false</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
       -10:         <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'A block must be given'</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">block_given?</span>
       -11:         <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">transaction</span> <span class="ruby-keyword kw">do</span>
       -12:           <span class="ruby-identifier">cached_data</span> = []
       -13:           <span class="ruby-identifier">last_reporting_period_to_read</span> = <span class="ruby-constant">ReportingPeriod</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">report</span>.<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">limit</span>)
       -14:           <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">no_cache</span>
       -15:             <span class="ruby-identifier">cached_data</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">find</span>(
       -16:               <span class="ruby-identifier">:all</span>,
       -17:               <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> {
       -18:                 <span class="ruby-identifier">:model_name</span>  =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">klass</span>.<span class="ruby-identifier">to_s</span>,
       -19:                 <span class="ruby-identifier">:report_name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>,
       -20:                 <span class="ruby-identifier">:grouping</span>    =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">to_s</span>,
       -21:                 <span class="ruby-identifier">:aggregation</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">report</span>.<span class="ruby-identifier">aggregation</span>.<span class="ruby-identifier">to_s</span>
       -22:               },
       -23:               <span class="ruby-identifier">:limit</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">limit</span>,
       -24:               <span class="ruby-identifier">:order</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'reporting_period DESC'</span>
       -25:             )
       -26:             <span class="ruby-identifier">last_reporting_period_to_read</span> = <span class="ruby-identifier">cached_data</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">reporting_period</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">cached_data</span>.<span class="ruby-identifier">empty?</span>
       -27:           <span class="ruby-keyword kw">end</span>
       -28:           <span class="ruby-identifier">new_data</span> = <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">last_reporting_period_to_read</span>.<span class="ruby-identifier">date_time</span>)
       -29:           <span class="ruby-identifier">prepare_result</span>(<span class="ruby-identifier">new_data</span>, <span class="ruby-identifier">cached_data</span>, <span class="ruby-identifier">last_reporting_period_to_read</span>, <span class="ruby-identifier">report</span>, <span class="ruby-identifier">no_cache</span>)
       -30:         <span class="ruby-keyword kw">end</span>
       -31:       <span class="ruby-keyword kw">end</span>
       -</pre>
       -          </div>
       -        </div>
       -      </div>
       -
       -
       -    </div>
       -
       -
       -  </div>
       -
       -
       -<div id="validator-badges">
       -  <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
       -</div>
       -
       -</body>
       -</html>
       -\ No newline at end of file
 (DIR) diff --git a/rdoc/classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html b/rdoc/classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html
       @@ -78,6 +78,14 @@
        
          <div id="contextContent">
        
       +    <div id="description">
       +      <p>
       +A <a href="ReportingPeriod.html">ReportingPeriod</a> is - depending on the
       +<a href="Grouping.html">Grouping</a> - either a specific hour, a day, a
       +month or a year. All records falling into this period will be grouped.
       +</p>
       +
       +    </div>
        
        
           </div>
       @@ -86,11 +94,9 @@
              <h3 class="section-bar">Methods</h3>
        
              <div class="name-list">
       -      <a href="#M000013">==</a>&nbsp;&nbsp;
       -      <a href="#M000010">first</a>&nbsp;&nbsp;
       -      <a href="#M000011">from_db_string</a>&nbsp;&nbsp;
       -      <a href="#M000009">new</a>&nbsp;&nbsp;
       -      <a href="#M000012">previous</a>&nbsp;&nbsp;
       +      <a href="#M000007">first</a>&nbsp;&nbsp;
       +      <a href="#M000006">new</a>&nbsp;&nbsp;
       +      <a href="#M000008">previous</a>&nbsp;&nbsp;
              </div>
            </div>
        
       @@ -130,92 +136,88 @@
            <div id="methods">
              <h3 class="section-bar">Public Class methods</h3>
        
       -      <div id="method-M000010" class="method-detail">
       -        <a name="M000010"></a>
       +      <div id="method-M000007" class="method-detail">
       +        <a name="M000007"></a>
        
                <div class="method-heading">
       -          <a href="#M000010" class="method-signature">
       +          <a href="#M000007" class="method-signature">
                  <span class="method-name">first</span><span class="method-args">(grouping, limit)</span>
                  </a>
                </div>
              
                <div class="method-description">
       +          <p>
       +Returns the <a href="ReportingPeriod.html#M000007">first</a> reporting
       +period for a grouping and a limit; e.g. the <a
       +href="ReportingPeriod.html#M000007">first</a> reporting period for <a
       +href="Grouping.html">Grouping</a> :day and limit 2 would be Time.now -
       +2.days
       +</p>
       +<h4>Parameters</h4>
       +<ul>
       +<li><tt>grouping</tt> - The <a
       +href="Grouping.html">Kvlr::ReportsAsSparkline::Grouping</a> of the
       +reporting period
       +
       +</li>
       +<li><tt>limit</tt> - The number of reporting periods until the <a
       +href="ReportingPeriod.html#M000007">first</a> one
       +
       +</li>
       +</ul>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000010-source">
       +            onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000007-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 14</span>
       -14:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">limit</span>)
       -15:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>
       -16:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       -17:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">hours</span>)
       -18:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       -19:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">days</span>)
       -20:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       -21:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">weeks</span>)
       -22:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       -23:             <span class="ruby-identifier">date</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">months</span>
       -24:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">date</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">date</span>.<span class="ruby-identifier">month</span>, <span class="ruby-value">1</span>))
       -25:         <span class="ruby-keyword kw">end</span>
       -26:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 23</span>
       +23:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">limit</span>)
       +24:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>
       +25:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       +26:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">hours</span>)
       +27:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       +28:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">days</span>)
       +29:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       +30:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">weeks</span>)
       +31:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       +32:             <span class="ruby-identifier">date</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">months</span>
       +33:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">date</span>.<span class="ruby-identifier">year</span>, <span class="ruby-identifier">date</span>.<span class="ruby-identifier">month</span>, <span class="ruby-value">1</span>))
       +34:         <span class="ruby-keyword kw">end</span>
       +35:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
              </div>
        
       -      <div id="method-M000011" class="method-detail">
       -        <a name="M000011"></a>
       +      <div id="method-M000006" class="method-detail">
       +        <a name="M000006"></a>
        
                <div class="method-heading">
       -          <a href="#M000011" class="method-signature">
       -          <span class="method-name">from_db_string</span><span class="method-args">(grouping, db_string)</span>
       +          <a href="#M000006" class="method-signature">
       +          <span class="method-name">new</span><span class="method-args">(grouping, date_time = DateTime.now)</span>
                  </a>
                </div>
              
                <div class="method-description">
       -          <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000011-source">
       -<pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 28</span>
       -28:       <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">from_db_string</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">db_string</span>)
       -29:         <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">date_parts_from_db_string</span>(<span class="ruby-identifier">db_string</span>)
       -30:         <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>
       -31:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       -32:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">3</span>], <span class="ruby-value">0</span>, <span class="ruby-value">0</span>))
       -33:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       -34:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">2</span>]))
       -35:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       -36:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">commercial</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>]))
       -37:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       -38:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-constant">Date</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">parts</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">parts</span>[<span class="ruby-value">1</span>], <span class="ruby-value">1</span>))
       -39:         <span class="ruby-keyword kw">end</span>
       -40:         <span class="ruby-identifier">result</span>
       -41:       <span class="ruby-keyword kw">end</span>
       -</pre>
       -          </div>
       -        </div>
       -      </div>
       +          <h4>Parameters</h4>
       +<ul>
       +<li><tt>grouping</tt> - The <a
       +href="Grouping.html">Kvlr::ReportsAsSparkline::Grouping</a> of the
       +reporting period
        
       -      <div id="method-M000009" class="method-detail">
       -        <a name="M000009"></a>
       +</li>
       +<li><tt>date_time</tt> - The DateTime that reporting period is created for
        
       -        <div class="method-heading">
       -          <a href="#M000009" class="method-signature">
       -          <span class="method-name">new</span><span class="method-args">(grouping, date_time = DateTime.now)</span>
       -          </a>
       -        </div>
       -      
       -        <div class="method-description">
       +</li>
       +</ul>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000009-source">
       +            onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000006-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 9</span>
       - 9:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">date_time</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span>)
       -10:         <span class="ruby-ivar">@grouping</span>  = <span class="ruby-identifier">grouping</span>
       -11:         <span class="ruby-ivar">@date_time</span> = <span class="ruby-identifier">parse_date_time</span>(<span class="ruby-identifier">date_time</span>)
       -12:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 13</span>
       +13:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">grouping</span>, <span class="ruby-identifier">date_time</span> = <span class="ruby-constant">DateTime</span>.<span class="ruby-identifier">now</span>)
       +14:         <span class="ruby-ivar">@grouping</span>  = <span class="ruby-identifier">grouping</span>
       +15:         <span class="ruby-ivar">@date_time</span> = <span class="ruby-identifier">parse_date_time</span>(<span class="ruby-identifier">date_time</span>)
       +16:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
       @@ -223,59 +225,37 @@
        
              <h3 class="section-bar">Public Instance methods</h3>
        
       -      <div id="method-M000013" class="method-detail">
       -        <a name="M000013"></a>
       -
       -        <div class="method-heading">
       -          <a href="#M000013" class="method-signature">
       -          <span class="method-name">==</span><span class="method-args">(other)</span>
       -          </a>
       -        </div>
       -      
       -        <div class="method-description">
       -          <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000013-source">
       -<pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 56</span>
       -56:       <span class="ruby-keyword kw">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">other</span>)
       -57:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Kvlr</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportsAsSparkline</span><span class="ruby-operator">::</span><span class="ruby-constant">ReportingPeriod</span>
       -58:           <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@date_time</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">date_time</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@grouping</span>.<span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">other</span>.<span class="ruby-identifier">grouping</span>.<span class="ruby-identifier">identifier</span>.<span class="ruby-identifier">to_s</span>
       -59:         <span class="ruby-keyword kw">end</span>
       -60:         <span class="ruby-keyword kw">false</span>
       -61:       <span class="ruby-keyword kw">end</span>
       -</pre>
       -          </div>
       -        </div>
       -      </div>
       -
       -      <div id="method-M000012" class="method-detail">
       -        <a name="M000012"></a>
       +      <div id="method-M000008" class="method-detail">
       +        <a name="M000008"></a>
        
                <div class="method-heading">
       -          <a href="#M000012" class="method-signature">
       +          <a href="#M000008" class="method-signature">
                  <span class="method-name">previous</span><span class="method-args">()</span>
                  </a>
                </div>
              
                <div class="method-description">
       +          <p>
       +Returns the <a href="ReportingPeriod.html#M000008">previous</a> reporting
       +period
       +</p>
                  <p><a class="source-toggle" href="#"
       -            onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
       -          <div class="method-source-code" id="M000012-source">
       +            onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
       +          <div class="method-source-code" id="M000008-source">
        <pre>
       -    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 43</span>
       -43:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">previous</span>
       -44:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@grouping</span>.<span class="ruby-identifier">identifier</span>
       -45:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       -46:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">hour</span>)
       -47:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       -48:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">day</span>)
       -49:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       -50:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">week</span>)
       -51:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       -52:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">month</span>)
       -53:         <span class="ruby-keyword kw">end</span>
       -54:       <span class="ruby-keyword kw">end</span>
       +    <span class="ruby-comment cmt"># File lib/kvlr/reports_as_sparkline/reporting_period.rb, line 53</span>
       +53:       <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">previous</span>
       +54:         <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@grouping</span>.<span class="ruby-identifier">identifier</span>
       +55:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:hour</span>
       +56:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">hour</span>)
       +57:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:day</span>
       +58:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">day</span>)
       +59:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:week</span>
       +60:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">week</span>)
       +61:           <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:month</span>
       +62:             <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@grouping</span>, <span class="ruby-ivar">@date_time</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>.<span class="ruby-identifier">month</span>)
       +63:         <span class="ruby-keyword kw">end</span>
       +64:       <span class="ruby-keyword kw">end</span>
        </pre>
                  </div>
                </div>
 (DIR) diff --git a/rdoc/created.rid b/rdoc/created.rid
       @@ -1 +1 @@
       -Thu, 11 Dec 2008 19:24:20 +0100
       +Thu, 11 Dec 2008 20:18:31 +0100
 (DIR) diff --git a/rdoc/files/README_rdoc.html b/rdoc/files/README_rdoc.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 04 14:58:12 +0100 2008</td>
       +      <td>Thu Dec 11 20:18:28 +0100 2008</td>
            </tr>
            </table>
          </div>
       @@ -72,42 +72,36 @@
              <h1>ReportsAsSparkline</h1>
        <p>
        ReportsAsSparkline enables you to generate reports and sparklines from your
       -database with very little effort.
       +model&#8216;s data with very little effort.
        </p>
       +<h2>Example</h2>
        <p>
       -### Example
       -</p>
       -<p>
       -This shows the first basic usage. Consider the following user model,
       -including <b>created_at</b> and <b>activated_at</b> timestamp fields.
       +This shows the basic usage. Consider the following user model, including
       +<tt>created_at</tt> and <tt>activated_at</tt> timestamp fields.
        </p>
        <pre>
       -    class User &lt; ActiveRecord::Base
       -      report_as_sparkline :registrations
       -      report_as_sparkline :activations, :date_column =&gt; :activated_at
       -      report_as_sparkline :total_users, :cumulate =&gt; :registrations
       +  class User &lt; ActiveRecord::Base
       +    report_as_sparkline :registrations
       +    report_as_sparkline :activations,  :date_column_name =&gt; :activated_at
       +    report_as_sparkline :total_users,  :cumulate         =&gt; true
            end
        </pre>
        <p>
       -Using <b>report_as_sparkline</b> like this will add the following class
       +Using <tt>report_as_sparkline</tt> like this will add the following class
        methods to your User model:
        </p>
        <pre>
       -    # Generates a sparkline from the google chart api
       -    # so you see the registrations per day
       -    User.registrations_graph
       -
       -    # Gets an array of the data to use in numerical display
       -    User.registrations_report
       +  User.registrations_report
       +  User.activations_report
       +  User.total_users_report
        </pre>
        <p>
       -### Implemented features
       +You can than render sparklines for these reports with sparkline_tag in your
       +view:
        </p>
       -<ul>
       -<li>cumulate option that depends on other report
       -
       -</li>
       -</ul>
       +<pre>
       +  &lt;%= sparkline_tag(User.registrations_report) %&gt;
       +</pre>
        <h2>TODOs/ future plans</h2>
        <ul>
        <li>support for Oracle and DB2 (and others?) missing
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/asset_tag_helper_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/asset_tag_helper_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 11 19:17:16 +0100 2008</td>
       +      <td>Thu Dec 11 20:11:04 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/cumulated_report_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/cumulated_report_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 11 19:24:13 +0100 2008</td>
       +      <td>Thu Dec 11 19:25:14 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/grouping_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/grouping_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 11 18:45:43 +0100 2008</td>
       +      <td>Thu Dec 11 20:11:56 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/report_cache_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/report_cache_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 11 17:45:37 +0100 2008</td>
       +      <td>Thu Dec 11 19:27:42 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/report_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/report_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 11 19:19:10 +0100 2008</td>
       +      <td>Thu Dec 11 20:14:36 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline/reporting_period_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline/reporting_period_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Wed Dec 10 15:35:51 +0100 2008</td>
       +      <td>Thu Dec 11 20:12:58 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/files/lib/kvlr/reports_as_sparkline_rb.html b/rdoc/files/lib/kvlr/reports_as_sparkline_rb.html
       @@ -56,7 +56,7 @@
            </tr>
            <tr class="top-aligned-row">
              <td><strong>Last Update:</strong></td>
       -      <td>Thu Dec 11 19:07:54 +0100 2008</td>
       +      <td>Thu Dec 11 20:06:27 +0100 2008</td>
            </tr>
            </table>
          </div>
 (DIR) diff --git a/rdoc/fr_class_index.html b/rdoc/fr_class_index.html
       @@ -26,7 +26,6 @@
            <a href="classes/Kvlr/ReportsAsSparkline/CumulatedReport.html">Kvlr::ReportsAsSparkline::CumulatedReport</a><br />
            <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html">Kvlr::ReportsAsSparkline::Grouping</a><br />
            <a href="classes/Kvlr/ReportsAsSparkline/Report.html">Kvlr::ReportsAsSparkline::Report</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportCache.html">Kvlr::ReportsAsSparkline::ReportCache</a><br />
            <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html">Kvlr::ReportsAsSparkline::ReportingPeriod</a><br />
          </div>
        </div>
 (DIR) diff --git a/rdoc/fr_method_index.html b/rdoc/fr_method_index.html
       @@ -20,22 +20,17 @@
        <div id="index">
          <h1 class="section-bar">Methods</h1>
          <div id="index-entries">
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000013">== (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000007">date_parts_from_db_string (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000010">first (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000011">from_db_string (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000006">identifier (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000005">new (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/Report.html#M000014">new (Kvlr::ReportsAsSparkline::Report)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000009">new (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000012">previous (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/ReportCache.html#M000004">process (Kvlr::ReportsAsSparkline::ReportCache)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000007">first (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000005">identifier (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000004">new (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000006">new (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Report.html#M000009">new (Kvlr::ReportsAsSparkline::Report)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/ReportingPeriod.html#M000008">previous (Kvlr::ReportsAsSparkline::ReportingPeriod)</a><br />
            <a href="classes/Kvlr/ReportsAsSparkline/ClassMethods.html#M000001">report_as_sparkline (Kvlr::ReportsAsSparkline::ClassMethods)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/Report.html#M000015">run (Kvlr::ReportsAsSparkline::Report)</a><br />
            <a href="classes/Kvlr/ReportsAsSparkline/CumulatedReport.html#M000003">run (Kvlr::ReportsAsSparkline::CumulatedReport)</a><br />
       +    <a href="classes/Kvlr/ReportsAsSparkline/Report.html#M000010">run (Kvlr::ReportsAsSparkline::Report)</a><br />
            <a href="classes/Kvlr/ReportsAsSparkline/AssetTagHelper.html#M000002">sparkline_tag (Kvlr::ReportsAsSparkline::AssetTagHelper)</a><br />
       -    <a href="classes/Kvlr/CoreExtensions/DateTime.html#M000016">to_reporting_period (Kvlr::CoreExtensions::DateTime)</a><br />
       -    <a href="classes/Kvlr/ReportsAsSparkline/Grouping.html#M000008">to_sql (Kvlr::ReportsAsSparkline::Grouping)</a><br />
       +    <a href="classes/Kvlr/CoreExtensions/DateTime.html#M000011">to_reporting_period (Kvlr::CoreExtensions::DateTime)</a><br />
          </div>
        </div>
        </body>