avatar

33

drier total weight calculations in Activity model; display total weight per activity on today's workout page

by chrisk, 20 Jun, 2007 08:36 PM
32 33  
11 class Activity < ActiveRecord::Base
22   has_many :exercises, :order => 'created_at desc', :dependent => :destroy
33   
4   def total_weight_from_previous_day
5     prev = self.previous_active_date
6     sets = exercises.find(:all, :conditions => ["created_at >= ? AND created_at <= ?", prev.beginning_of_day, prev.end_of_day])
7     sets.collect(&:total_weight).sum
8   end
9   
104   def last_active_date
115     exercises.find(:first).created_at.to_date
126   end
------
148   def previous_active_date
159     previous_date = exercises.find(:first, :conditions => ["created_at < ?", last_active_date.beginning_of_day]).created_at.to_date
1610   end
11   
12   def total_weight_on(date)
13     sets = exercises.find(:all, :conditions => ["created_at >= ? AND created_at <= ?", date.beginning_of_day, date.end_of_day])
14     sets.collect(&:total_weight).sum
15   end
1716 end
32 33  
88     <% if cur_activity != exercise.activity.name %>
99       <tr><td colspan="4" style="padding-top: 1em">
1010         <strong><%= link_to((cur_activity = exercise.activity.name), activity_path(exercise.activity)) %></strong>
11         <small>(<%= exercise.activity.previous_active_date.to_s(:short) %>: <%= exercise.activity.total_weight_from_previous_day %> lbs.)</small>
11         <small>(today: <strong><%= exercise.activity.total_weight_on(Date.today) %> lbs.</strong>,
12                 <%= exercise.activity.previous_active_date.to_s(:short) %>: <strong><%= exercise.activity.total_weight_on(exercise.activity.previous_active_date) %> lbs.</strong>)
13         </small>
1214       </td></tr>
1315     <% end %>
1416