Class: PredictabilityEngine::Calculators::Aging
- Inherits:
-
Object
- Object
- PredictabilityEngine::Calculators::Aging
- Defined in:
- lib/predictability_engine/calculators/aging.rb
Class Method Summary collapse
- .current_wip(work_items, date = PredictabilityEngine.today) ⇒ Object
- .item_age_data(work_items, date = PredictabilityEngine.today) ⇒ Object
- .summary_metrics(work_items, date = PredictabilityEngine.today) ⇒ Object
Class Method Details
.current_wip(work_items, date = PredictabilityEngine.today) ⇒ Object
6 7 8 |
# File 'lib/predictability_engine/calculators/aging.rb', line 6 def self.current_wip(work_items, date = PredictabilityEngine.today) work_items.select { |item| item.in_progress?(date) } end |
.item_age_data(work_items, date = PredictabilityEngine.today) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/predictability_engine/calculators/aging.rb', line 22 def self.item_age_data(work_items, date = PredictabilityEngine.today) data = current_wip(work_items, date).map do |item| { id: item.id, title: item.title, age: item.age(date), start_date: item.start_date, url: item.url } end data.sort_by { |d| d[:age] }.reverse end |
.summary_metrics(work_items, date = PredictabilityEngine.today) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/predictability_engine/calculators/aging.rb', line 10 def self.summary_metrics(work_items, date = PredictabilityEngine.today) wip = current_wip(work_items, date) return nil if wip.empty? ages = wip.map { |item| item.age(date) } { count: wip.size, avg_age: (ages.sum.to_f / ages.size).round(1), max_age: ages.max } end |