33 lines
		
	
	
		
			903 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			903 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
module CompletionsConcern
 | 
						|
  extend ActiveSupport::Concern
 | 
						|
 | 
						|
  def pad(n)
 | 
						|
    if n > 9
 | 
						|
      return n.to_s
 | 
						|
    end
 | 
						|
    "0" + n.to_s
 | 
						|
  end
 | 
						|
 | 
						|
  def display_time(time)
 | 
						|
    h = time / 3600
 | 
						|
    m = (time % 3600) / 60
 | 
						|
    s = (time % 3600) % 60
 | 
						|
    if h > 0
 | 
						|
      return h.to_s + ":" + pad(m) + ":" + pad(s)
 | 
						|
    elsif m > 0
 | 
						|
      return m.to_s + ":" + pad(s)
 | 
						|
    end
 | 
						|
    s.to_s
 | 
						|
  end
 | 
						|
 | 
						|
  def extend_completions!(contestant)
 | 
						|
    current_time_from_start = 0
 | 
						|
    contestant.completions.order(:time_seconds).each do |completion|
 | 
						|
      completion.update(display_time_from_start: display_time(completion.time_seconds),
 | 
						|
                        display_relative_time: display_time(completion.time_seconds - current_time_from_start))
 | 
						|
      current_time_from_start = completion.time_seconds
 | 
						|
    end
 | 
						|
    contestant.update(display_time: display_time(current_time_from_start), time_seconds: current_time_from_start)
 | 
						|
  end
 | 
						|
end
 |