Skip to content

Instantly share code, notes, and snippets.

@Heavyblade
Created June 18, 2013 17:19
Show Gist options
  • Select an option

  • Save Heavyblade/5807402 to your computer and use it in GitHub Desktop.

Select an option

Save Heavyblade/5807402 to your computer and use it in GitHub Desktop.
def self.format_lead_time(dates_ago, project)
daily_lead_time = []
zero_lead_time = []
weekly_lead_time = []
upper = []
medium = []
lower = []
clear = []
colors = {:blue => [], :brown => [], :green => [], :orange => [], :red => [], :yellow => [], :purple => []}
a = 7 - dates_ago.cwday
count = days = 0
dates_ago = (dates_ago.sunday?) ? dates_ago : dates_ago + a.days - 1.week
daysold(dates_ago).times do |i|
initial = (dates_ago + i).to_time.beginning_of_day
final = (dates_ago + i).to_time.end_of_day
tasks = project.finished_tasks_between_dates(initial, final)
tasks_count = tasks.count
count += tasks_count
if tasks.count > 0
tasks.each do |task|
days += (task.updated_at.to_date - task.created_at.to_date).to_i
lt = get_cycletime_for(task, :total => true) / 1.day + 1
colors[task.color] << {y: lt, x: (dates_ago + i).to_time.to_i, task_count: tasks_count, i: i}
daily_lead_time << {y: lt, x: (dates_ago + i).to_time.to_i, task_count: tasks_count, i: i}
end
else
daily_lead_time << {y: 0, x: (dates_ago + i).to_time.to_i, task_count: 0, i: i}
zero_lead_time << {y: 0, x: (dates_ago + i).to_time.to_i, task_count: 0, i: i}
colors.each { |k, v| colors[k] << {y: 0, x: (dates_ago + i).to_time.to_i, task_count: 0, i: i} }
end
end
life_time_lead_time = format_lead_time_headers(project.created_at.strftime('%Y-%m-%d').to_date, project)
days_upper = project.average_by_time(life_time_lead_time, 95, 1)
days_medium = project.average_by_time(life_time_lead_time, 85, 1)
days_lower = project.average_by_time(life_time_lead_time, 50, 1)
weeksold(dates_ago).times do |i|
initial = (dates_ago + (i*7)).to_time.beginning_of_week
final = (dates_ago + (i*7)).to_time
tasks = project.finished_tasks_between_dates(initial, final)
tasks_count = tasks.count
lt_average = 0
week = (dates_ago + (i * 7))
end_of_week = (week.sunday?) ? week : week + a.days - 1.week
monday = ((dates_ago + (i*7)).beginning_of_week).strftime('%b %d')
sunday = ((dates_ago + (i*7))).strftime('%b %d')
if tasks.count > 0
tasks.each do |task|
lt = get_cycletime_for(task, :total => true) / 1.day + 1
lt_average += lt
end
lt_average = lt_average / tasks_count
weekly_lead_time << {y: lt_average, x: end_of_week.to_time.to_i, task_count: tasks_count, monday: monday, sunday: sunday, i: i}
else
weekly_lead_time << {y: lt_average, x: end_of_week.to_time.to_i, task_count: 0, monday: monday, sunday: sunday, i: i}
end
upper << {y: days_upper, x:(dates_ago + i).to_time.to_i}
medium << {y: days_medium, x:(dates_ago + i).to_time.to_i}
lower << {y: days_lower, x:(dates_ago + i).to_time.to_i}
end
[weekly_lead_time, daily_lead_time, zero_lead_time, upper, medium, lower] + colors.values
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment