class TrelloLeadTime::List
Public Class Methods
from_trello_list(list)
click to toggle source
# File lib/trello_lead_time/list.rb, line 3 def self.from_trello_list(list) List.new(list) end
new(list)
click to toggle source
# File lib/trello_lead_time/list.rb, line 7 def initialize(list) @trello_list = list end
Public Instance Methods
average_age()
click to toggle source
# File lib/trello_lead_time/list.rb, line 50 def average_age times = done_or_closed_cards.collect(&:age_in_seconds) average(times) end
average_cycle_time()
click to toggle source
# File lib/trello_lead_time/list.rb, line 40 def average_cycle_time times = done_or_closed_cards.collect(&:cycle_time) average(times) end
average_lead_time()
click to toggle source
# File lib/trello_lead_time/list.rb, line 20 def average_lead_time times = done_or_closed_cards.collect(&:lead_time) average(times) end
average_queue_time()
click to toggle source
# File lib/trello_lead_time/list.rb, line 30 def average_queue_time times = done_or_closed_cards.collect(&:queue_time) average(times) end
breakdown_by_labels(labels)
click to toggle source
# File lib/trello_lead_time/list.rb, line 55 def breakdown_by_labels(labels) times = default_breakdown_by_labels(labels) done_or_closed_cards.each do |card| matches = labels & card.labels.map(&:name) matches.each do |label| times[:total][:lead_time][label] += card.lead_time times[:total][:queue_time][label] += card.queue_time times[:total][:cycle_time][label] += card.cycle_time times[:total][:age][label] += card.age_in_seconds times[:average][:lead_time][label] << card.lead_time times[:average][:queue_time][label] << card.queue_time times[:average][:cycle_time][label] << card.cycle_time times[:average][:age][label] << card.age_in_seconds end end labels.each do |label| times[:average][:lead_time][label] = average(times[:average][:lead_time][label]) times[:average][:queue_time][label] = average(times[:average][:queue_time][label]) times[:average][:cycle_time][label] = average(times[:average][:cycle_time][label]) times[:average][:age][label] = average(times[:average][:age][label]) end times end
done_or_closed_cards()
click to toggle source
# File lib/trello_lead_time/list.rb, line 125 def done_or_closed_cards @_done_or_closed_cards ||= cards.select { |c| c.done? || c.closed? } end
name()
click to toggle source
# File lib/trello_lead_time/list.rb, line 11 def name @trello_list.name end
total_age()
click to toggle source
# File lib/trello_lead_time/list.rb, line 45 def total_age times = done_or_closed_cards.collect(&:age_in_seconds) total(times) end
total_cycle_time()
click to toggle source
# File lib/trello_lead_time/list.rb, line 35 def total_cycle_time times = done_or_closed_cards.collect(&:cycle_time) total(times) end
total_lead_time()
click to toggle source
# File lib/trello_lead_time/list.rb, line 15 def total_lead_time times = done_or_closed_cards.collect(&:lead_time) total(times) end
total_queue_time()
click to toggle source
# File lib/trello_lead_time/list.rb, line 25 def total_queue_time times = done_or_closed_cards.collect(&:queue_time) total(times) end
Private Instance Methods
average(times)
click to toggle source
# File lib/trello_lead_time/list.rb, line 139 def average(times) avg = 0.0 if times.size > 0 avg = (times.inject(0.0) { |sum, el| sum + el } / times.size).round(0) end avg end
cards()
click to toggle source
# File lib/trello_lead_time/list.rb, line 131 def cards @_cards ||= @trello_list.cards.map { |c| TrelloLeadTime::Card.from_trello_card(c) } end
default_breakdown_by_labels(labels)
click to toggle source
# File lib/trello_lead_time/list.rb, line 147 def default_breakdown_by_labels(labels) times = { total: { lead_time: {}, queue_time: {}, cycle_time: {}, age: {} }, average: { lead_time: {}, queue_time: {}, cycle_time: {}, age: {} } } labels.each do |label| times[:total][:lead_time][label] = 0 times[:total][:queue_time][label] = 0 times[:total][:cycle_time][label] = 0 times[:total][:age][label] = 0 times[:average][:lead_time][label] = [] times[:average][:queue_time][label] = [] times[:average][:cycle_time][label] = [] times[:average][:age][label] = [] end times end
total(times)
click to toggle source
# File lib/trello_lead_time/list.rb, line 135 def total(times) times.inject(0) { |sum, el| sum + el } end