Move calculation out of view

This commit is contained in:
Katrina Owen 2013-03-02 12:15:30 -05:00
parent 27ba50b460
commit 03282638af
3 changed files with 22 additions and 8 deletions

View file

@ -9,15 +9,15 @@ module Stats
end end
def avg def avg
@avg ||= (sum / count) / SECONDS_PER_DAY @avg ||= to_days(sum / count)
end end
def max def max
@max ||= max_in_seconds / SECONDS_PER_DAY @max ||= to_days(max_in_seconds)
end end
def min def min
@min ||= min_in_seconds / SECONDS_PER_DAY @min ||= to_days(min_in_seconds)
end end
def min_sec def min_sec
@ -29,6 +29,10 @@ module Stats
private private
def to_days(value)
(value * 10 / SECONDS_PER_DAY).round / 10.0
end
def min_in_seconds def min_in_seconds
@min_in_seconds ||= durations.min || 0 @min_in_seconds ||= durations.min || 0
end end

View file

@ -1,4 +1,4 @@
<p><%= t('stats.actions_avg_completion_time', :count => (ttc.avg*10).round/10.0) %> <p><%= t('stats.actions_avg_completion_time', :count => ttc.avg) %>
<%= t('stats.actions_min_max_completion_days', :max => (ttc.max*10).round/10.0, :min => (ttc.min*10).round/10.0) %> <%= t('stats.actions_min_max_completion_days', :max => ttc.max, :min => ttc.min) %>
<%= t('stats.actions_min_completion_time', :time => ttc.min_sec) %></p> <%= t('stats.actions_min_completion_time', :time => ttc.min_sec) %></p>

View file

@ -52,15 +52,15 @@ class TimeToCompleteTest < Test::Unit::TestCase
end end
def test_minimum def test_minimum
assert_equal 2.127835648148148, Stats::TimeToComplete.new(fake_tasks).min assert_equal 2.1, Stats::TimeToComplete.new(fake_tasks).min
end end
def test_maximum def test_maximum
assert_equal 6.127835648148148, Stats::TimeToComplete.new(fake_tasks).max assert_equal 6.1, Stats::TimeToComplete.new(fake_tasks).max
end end
def test_avg def test_avg
assert_equal 4.127835648148148, Stats::TimeToComplete.new(fake_tasks).avg assert_equal 4.1, Stats::TimeToComplete.new(fake_tasks).avg
end end
def test_min_sec def test_min_sec
@ -71,5 +71,15 @@ class TimeToCompleteTest < Test::Unit::TestCase
task = FakeTask.new(day0, now) task = FakeTask.new(day0, now)
assert_equal '03:04:05', Stats::TimeToComplete.new([task]).min_sec assert_equal '03:04:05', Stats::TimeToComplete.new([task]).min_sec
end end
def test_rounding
start_time = Time.utc(2012, 12, 31, 8, 0, 0)
task = FakeTask.new(start_time, now)
ttc = Stats::TimeToComplete.new([task])
assert_equal 1.8, ttc.avg
assert_equal 1.8, ttc.min
assert_equal 1.8, ttc.max
end
end end