Class: Durt::Issue
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Durt::Issue
- Defined in:
- lib/durt/issue.rb
Instance Method Summary collapse
- #estimation_ratio ⇒ Object
- #estimation_result_label ⇒ Object
- #label ⇒ Object
- #overestimated? ⇒ Boolean
- #plugin ⇒ Object
- #puts_stats ⇒ Object
- #start_tracking! ⇒ Object
-
#stats ⇒ Object
Presenters.
- #stop_tracking! ⇒ Object
- #to_s ⇒ Object
- #total_tracked_time ⇒ Object
- #tracking? ⇒ Boolean
- #underestimated? ⇒ Boolean
Methods inherited from ApplicationRecord
Instance Method Details
#estimation_ratio ⇒ Object
39 40 41 42 43 |
# File 'lib/durt/issue.rb', line 39 def estimation_ratio return Float::INFINITY if total_tracked_time.zero? estimate.to_f / total_tracked_time end |
#estimation_result_label ⇒ Object
71 72 73 74 75 76 |
# File 'lib/durt/issue.rb', line 71 def estimation_result_label return 'Underestimated' if underestimated? return 'Overestimated' if overestimated? 'Who are you?' end |
#label ⇒ Object
78 79 80 |
# File 'lib/durt/issue.rb', line 78 def label "[#{key}]" end |
#overestimated? ⇒ Boolean
45 46 47 |
# File 'lib/durt/issue.rb', line 45 def overestimated? estimation_ratio > 1 end |
#plugin ⇒ Object
27 28 29 |
# File 'lib/durt/issue.rb', line 27 def plugin project.plugins.find { |p| p.plugin_name == source } end |
#puts_stats ⇒ Object
67 68 69 |
# File 'lib/durt/issue.rb', line 67 def puts_stats puts stats end |
#start_tracking! ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/durt/issue.rb', line 18 def start_tracking! if tracking? puts 'Already tracking' return sessions.tracking.last end sessions.create(open_at: Time.now) end |
#stats ⇒ Object
Presenters
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/durt/issue.rb', line 55 def stats <<~MSG -- #{self} -- Estimated: #{ChronicDuration.output(estimate || 0, format: :long)}. Tracked: #{ChronicDuration.output(total_tracked_time, format: :long)}. Estimation ratio: #{estimation_ratio} (#{estimation_result_label}) ----------------------------------- MSG end |
#stop_tracking! ⇒ Object
31 32 33 |
# File 'lib/durt/issue.rb', line 31 def stop_tracking! sessions.tracking.update_all(closed_at: Time.now) end |
#to_s ⇒ Object
82 83 84 |
# File 'lib/durt/issue.rb', line 82 def to_s "#{label} #{summary}" end |
#total_tracked_time ⇒ Object
35 36 37 |
# File 'lib/durt/issue.rb', line 35 def total_tracked_time sessions.map(&:tracked_time).sum end |
#tracking? ⇒ Boolean
14 15 16 |
# File 'lib/durt/issue.rb', line 14 def tracking? !sessions.tracking.empty? end |
#underestimated? ⇒ Boolean
49 50 51 |
# File 'lib/durt/issue.rb', line 49 def underestimated? estimation_ratio < 1 end |