Skip to content

Commit

Permalink
still refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Fuchs committed Oct 13, 2008
1 parent bdd0fa7 commit 7fa7500
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 32 deletions.
5 changes: 2 additions & 3 deletions app/helpers/activities_helper.rb
Expand Up @@ -55,9 +55,8 @@ def activity_total_time_in_words(activity)
distance_of_time_in_words Time.now + activity.total_minutes.minutes, Time.now, false
end

def activity_hours_on(ticket, day)
minutes = ticket.activity_minutes(day)
def to_hours(minutes)
hours = (minutes.to_f / 60).round(1)
minutes > 0 ? hours : ''
hours > 0 ? hours : ''
end
end
2 changes: 1 addition & 1 deletion app/models/activity.rb
Expand Up @@ -28,7 +28,7 @@ def stop!
end

def start!
user.activities.current.stop! if user
user.activities.current.stop! if user and user.activities.current
self.started_at = Time.zone.now
self.stopped_at = nil
end
Expand Down
13 changes: 10 additions & 3 deletions app/models/burndown.rb
Expand Up @@ -64,12 +64,19 @@ def collect!
rows.clear
end_at = [Time.zone.today, @end_at].min
remaining = (@start_at..end_at).to_a.each do |day|
estimated, actual = collect_attribute(:estimated_at, day), collect_attribute(:actual_at, day)
@rows << Row.new(day, estimated, actual)
@rows << Row.new(day, estimated_at(day), actual_at(day))
end
end

def estimated_at(day)
Array(@scope).map{|ticket| ticket.estimated_at day }.sum
end

def actual_at(day)
Array(@scope).map{|ticket| ticket.activities.total(day) / 60 }.sum
end

def collect_attribute(attribute, day)
Array(@scope).map{|ticket| ticket.send(attribute, day) }.sum

end
end
32 changes: 11 additions & 21 deletions app/models/ticket.rb
Expand Up @@ -6,7 +6,17 @@ class Ticket < ActiveRecord::Base
belongs_to :component
belongs_to :category
belongs_to :user
has_many :activities, :dependent => :destroy
has_many :activities, :dependent => :destroy do
def in_range(from_day, to_day = nil)
return self.to_a if from_day.nil?
range = from_day..(to_day || from_day)
self.select{|a| range.include? a.date }
end

def total(from_day = nil, to_day = nil)
in_range(from_day, to_day).map(&:total_minutes).compact.sum.to_f
end
end

acts_as_versioned :if => :save_version?

Expand Down Expand Up @@ -68,28 +78,8 @@ def number_and_title
"##{remote_id} - #{title}"
end

def activity_minutes(from_day = nil, to_day = nil)
acts = from_day.nil? ? activities : activities_in_range(from_day, to_day)
acts.map(&:total_minutes).compact.sum
end

def activities_in_range(from_day, to_day = nil)
range = from_day..(to_day || from_day)
activities.select{|a| range.include? a.date }
end

def actual_hours(*period)
minutes = activity_minutes *period
minutes.to_f / 60
end

def actual_at(day)
(sprint.start_at..day).map{|d| actual_hours(d) }.sum
end

def estimated_at(day)
versions = self.current_sprint_versions_at(day, :order => 'id DESC')
# versions = self.versions.all(:order => 'id DESC')
versions.each{|v| return v.estimated.to_f if v.created_at.to_date <= day }
versions.first ? versions.first.estimated.to_f : 0
end
Expand Down
8 changes: 4 additions & 4 deletions app/views/sprints/_tickets.html.erb
Expand Up @@ -43,9 +43,9 @@
<td class="remote-url"><%= link_to "##{ticket.remote_id}", ticket.lighthouse_url if ticket.remote_id %></td>
<td class="ticket"><%= link_to ticket.title, edit_ticket_path(ticket, :return_to => request.url) %></td>
<td class="estimated"><%= ticket.estimated.to_i %></td>
<td class="actual"><%= ticket.actual_hours(*@sprint.period) > 0 ? ticket.actual_hours(*@sprint.period).round(1) : 0 %></td>
<td class="actual"><%= to_hours ticket.activities.total(*@sprint.period) %></td>
<% @sprint.scheduled_days.each do |day| %>
<td><%= activity_hours_on(ticket, day) %></td>
<td><%= to_hours ticket.activities.total(day) %></td>
<% end %>
<td class="activity-toggle"><%= toggle_ticket_activity_link(ticket) %></td>
</tr>
Expand All @@ -55,9 +55,9 @@
total
</th>
<td class="estimated"><%= tickets.map{|t| t.estimated.to_f }.sum %></td>
<td class="actual"><%= tickets.map{|t| t.actual_hours(*@sprint.period).to_f }.sum.round(1) %></td>
<td class="actual"><%= to_hours tickets.map{|t| t.activities.total(*@sprint.period) }.sum %></td>
<% @sprint.scheduled_days.each do |day| %>
<td><%= tickets.map{|t| activity_hours_on(t, day).to_f }.sum %></td>
<td><%= to_hours tickets.map{|t| t.activities.total(day) }.sum %></td>
<% end %>
<td></td>
</tr>
Expand Down

0 comments on commit 7fa7500

Please sign in to comment.